我知道现代 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 时。