BIOS 如何确定可用 RAM 的数量?

Pos*_*ain 6 bios memory boot 16-bit

如果 BIOS 是在实模式下运行的 16 位程序,并且在这种模式下只能寻址 1MB,那么 BIOS 如何确定可用 RAM 的数量,例如 1 GB?

Dav*_*ill 8

BIOS 是一个在实模式下运行的 16 位程序,在这种模式下它可以只寻址 1MB。

这是不正确的。

16 位实模式不限制处理器为 1MB 内存。

虽然 x86 处理器确实以实模式启动,并且默认使用 16 位 8086 指令集,但 80286 指令集中有扩展。如果在 8086 指令前加上字节 0x67,这将允许该指令访问 32 位寄存器,该寄存器可以访问 2 32字节或 4GiB 的内存。

如果您使用的是 64 位处理器,则处理器可以使用 PAE(物理地址扩展),它使处理器可以访问 2 52字节的内存,这比任何现代主板上实际安装的内存都要多。

来源BIOS 如何检测完整的扩展内存大小


BIOS 如何确定可用 RAM 的数量,例如 1 GB?

它使用存储控制器(北桥)数据表中记录的方法。

大多数 BIOS 不能使用任何 RAM,直到它们检测到安装的 RAM 类型,然后检测每个内存模块的大小,然后配置芯片组以使用检测到的 RAM。

所有这些都取决于特定于芯片组的方法,并且通常记录在内存控制器(北桥)的数据表中。

在此过程中,RAM 无法用于运行程序。BIOS 最初从 ROM 运行,因此它可以使用 RAM 芯片玩必要的游戏。但是在任何其他程序中完全不可能做到这一点。

检测内存 (x86)

  • 第一个引文既不正确,也不与问题相关。首先,当它应该是“80386”时,有一个拼写错误,上面写着“80286”。其次,使用32位寄存器的能力与寻址内存的能力无关。在实模式下运行时,无论寄存器大小如何,您仍然只能使用 20 位地址线。第三,PAE 可用于许多不支持 64 位扩展的处理器。第四,引文的含义也是错误的。实模式*仅限于寻址 1 MB;只是没有必要*寻址*内存来*计数*它。 (4认同)