普通的x86或AMD PC是直接从ROM运行启动/ BIOS代码,还是先将它们复制到RAM?

时间:2011-03-14 15:13:52

标签: cpu startup boot bios

我了解现代计算机已经改进了哈佛架构。

他们可以从除数据保存位置以外的地方读取指令这一事实是否可以直接从ROM芯片中获取指令?他们首先将BIOS加载到RAM,还是直接从芯片执行?我没有可以在附近打开的计算机,所以...如果我从内存插槽中删除所有RAM,计算机是否能够启动完整的BIOS,运行POST的东西并告诉我需要RAM?有趣的是我从未尝试过......

编辑:我对此问题的意图是了解商用CPU(或至少是intel cpus)是否可以直接从ROM执行代码。它不是出于实际目的,而是为了增加我对计算机体系结构和内容的理解。删除RAM部分不是我的主要疑问,只是一个例子

2 个答案:

答案 0 :(得分:16)

直接从ROM 执行, 将内容复制到RAM中。

在现代x86处理器上,芯片组内存控制器在初次上电时未初始化,因此没有可用的RAM。

现代BIOS通常分为两部分:

  1. Boot Block(早期POST)
  2. 压缩区域(中后期POST)
  3. 当处理器复位时,它开始在内存中的固定地址执行指令,称为“复位向量”。 BIOS闪存芯片映射到内存中的此地址。处理器只是从这个地址开始执行指令。

    “引导块”是指从复位向量(加上一些JMP)开始的BIOS代码。这是直接从ROM执行的(内存控制器尚未启动),因此速度很慢。

    BIOS Boot Block通常会执行以下操作:

    1. 初始化内存控制器。 (如果你从主板上得到“未检测到内存”的哔声代码,就会发生在这里。)
    2. 在压缩区域执行校验和以确保BIOS的其余部分没有损坏。
    3. 如果检测到任何损坏,请跳至恢复模式。
    4. 如果校验和通过,则将其余的BIOS解压缩到某处的RAM(通常低于1MB的边界)。
    5. 跳转到RAM中的解压缩代码并继续启动。

答案 1 :(得分:1)

如果完全取出RAM,打开电源时PC应该会不停地发出哔哔声。

以下是对所发生情况的良好描述: http://www.pcguide.com/ref/mbsys/bios/boot.htm

还有Hans-Peter Messmer的'The Indespensible PC Hardware Book',它也描述了这个过程。