我一直在处理一个问题,如果我没有在 BIOS 设置中启用“4G 以上解码”,我的服务器系统将无法使用一定数量的存储设备启动。
谷歌结果给出了这个:““4G 以上解码”的定义是允许用户为 64 位 PCIe 设备启用或禁用内存映射 I/O 到 4GB 或更大的地址空间,因为主 VGA 卡应该始终是映射到 4GB 地址以下。” ( https://www.asus.com/support/FAQ/1004170/ )
但这对于不太了解计算机的人来说意味着什么?
小智 14
由于从来没有官方答案,这是第一个谷歌结果之一:
这允许 64 位 PCIe 设备使用 64 位地址空间中的地址。由于 32 位操作系统无法访问 64 位地址空间*,因此该选项是出于兼容性原因。在大多数情况下,它不需要启用。根据我的经验,大多数主板默认关闭此设置。如果您有 64 位操作系统,启用它通常没有坏处。
通常,人们在安装了许多 PCIe 卡时启用它,例如带有三重和四重 SLI 以及使用 GPGPU 计算模块,例如 NVIDIA 的 Tesla。它更常用于工作站和服务器。
由于这两种设置都不会导致 64 位操作系统出现问题,因此大多数情况下您可以启用或禁用它而不会产生任何不良影响。
______________
*?注意32位处理器,或32位模式的处理器,可以访问2 32 个字节,即2 2 ×2 30 = 4?千兆字节?(4?GiB)。
小智 9
在 x86 PC 上,内存空间在系统中是共享的。系统内存从下往上映射(0 -> xGB),PCI 内存空间位于系统内存空间的上部(xxx --> FFFFFFFF 4GB-1)。请注意,“内存空间”不是“内存”。这只是硬件解码和声明事务的地址范围。
这通常是可以的,因为 PCI/PCIe 设备通常为其 PCI BAR(基地址范围)请求合理的内存量,例如 64K 或更少。BAR 是诸如设备特定寄存器之类的东西所在的地方,也是设备驱动程序访问以控制设备的地方。非常大的BAR不适用于大多数设备,因为它们使用DMA引擎来传输数据而不是主机CPU执行PIO访问(性能非常差),因此它们不需要将其内部存储映射到BAR。
例如,一旦开始使用 GPU 类型设备,高端设备就会要求非常大的 PCI BAR 空间,例如 32GB 或更多。如果您的 PCI 内存空间限制为 32 位,则没有可用的地址范围来容纳 32GB。因此,BIOS PCI 枚举开始在枚举期间支持 64 位 PCI BAR 分配。这通常开始于大约 12 年前,一些最早支持它的算法仍然存在错误或限制。如果 BAR 大于 8GB,某些系统会挂起。自那时以来,PCI 枚举算法得到了改进。
因此,“高于 4GB 解码”意味着 BIOS PCI 枚举“允许”分配高于 4GB(最大 32 位)的 PCI BAR 内存范围。它甚至可以对小型 PCI BAR 执行此操作,只要它们将自己报告为 64 位即可。
请注意,在 PCI/PCIe 设备中,PCI BAR 是 32 位的。如果一个PCI BAR想要支持64位,它会“组合”2个32位BAR来存储64位地址。具有“64位PCI BAR 2”的设备意味着其BAR 2位于所分配地址的低32b,而BAR 3则变为高32b。
另请注意,由于 PAE,32 位 x86 仍然可以访问 4GB 以上的 PCI BAR。
| 归档时间: |
|
| 查看次数: |
151122 次 |
| 最近记录: |