现代 x86 CPU 如何访问 BIOS ROM

现代 x86 CPU 如何访问 BIOS ROM

我知道现代 x86 芯片以 32 位模式启动并从 0xFFFFFFF0(32 位地址空间的最后 16 个字节)开始执行代码。通常,BIOS 固件的内容会内存映射到此位置,类似于较旧的 8086 芯片访问系统 ROM 的方式。

然而,现代 PC 不再将 ROM 芯片直接连接到处理器的内存和数据总线。相反,通常有一个小型闪存芯片通过 SPI、LPC、i2c 或类似总线连接到芯片组。

我的问题是:如果 ROM 是物理内存,处理器如何访问它?每次检测到对映射区域的内存访问时,芯片组是否会发出 SPI/LPC 读取命令?芯片组是否会启动并加载自己的固件由于这个原因而启动处理器?

答案1

我基本上只使用一个 x86 处理器 - Xeon D 1500。它的数据表有 4 个部分。如果你打开第 1 部分并转到第 4.4 节内存映射,有一个表格显示你提到的地址在系统启动后立即指向内部 LPC/SPI 控制器(即始终启用的控制器)。第 4.4.1 节提到了一个小例外,即当你想在开始启动之前下载主 BIOS 时。

相关内容