如果 BIOS 是在实模式下运行的 16 位程序,并且在此模式下只能寻址 1MB,那么 BIOS 如何确定可用的 RAM 数量,例如 1 GB?
答案1
BIOS 是一个在实模式下运行的 16 位程序,在这种模式下只能寻址 1MB。
这是不正确的。
16 位实模式不会将处理器限制为 1MB 内存。
虽然 x86 处理器确实以实模式启动,并且默认为 16 位 8086 指令集,但 80286 指令集中有扩展。如果在 8086 指令前加上字节 0x67,这将允许该指令访问 32 位寄存器,该寄存器可以访问 2 32字节或 4GiB 内存。
如果您使用的是 64 位处理器,则处理器可以使用 PAE (物理地址扩展),它使处理器能够访问 252字节的内存,比任何现代主板上物理安装的内存都要多。
BIOS 如何确定可用的 RAM 数量,例如 1 GB?
它使用内存控制器数据表中记录的方法(北桥)。
大多数 BIOS 都无法使用任何 RAM,直到它们检测到所安装的 RAM 类型,然后检测每个内存模块的大小,然后配置芯片组以使用检测到的 RAM。
所有这些都取决于芯片组特定的方法,并且通常记录在内存控制器(北桥)的数据表中。
在此过程中,RAM 无法用于运行程序。BIOS 最初从 ROM 运行,因此它可以使用 RAM 芯片玩必要的游戏。但从任何其他程序内部执行此操作是完全不可能的。