13

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

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

编辑:我对这个问题的意图是了解商业 CPU(或至少英特尔 cpus)是否可以直接从 ROM 执行代码。这不是出于实际目的,而是为了增加我对计算机体系结构和其他东西的理解。移除 RAM 部分不是我的主要疑问,只是一个例子

4

2 回答 2

17

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

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

现代 BIOS 通常分为两部分:

  1. 引导块(早期 POST)
  2. 压缩区域(POST 中后期)

当处理器退出复位后,它开始在内存中的固定地址处执行指令,称为“复位向量”。BIOS 闪存芯片映射到内存中的这个地址。处理器只是从这个地址开始执行指令。

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

BIOS 引导块通常执行以下操作:

  1. 初始化内存控制器。(如果您从主板收到“未检测到内存”的哔声代码,它会发生在这里。)
  2. 对压缩区域执行校验和,以确保 BIOS 的其余部分没有损坏。
  3. 如果检测到任何损坏,请进入恢复模式。
  4. 如果校验和通过,则将 BIOS 的其余部分解压缩到 RAM 中的某个位置(通常低于 1MB 边界)。
  5. 跳转到 RAM 中的解压缩代码并继续引导。
于 2011-03-18T03:29:28.203 回答
0

If you remove the RAM completely the PC should start to beep incessantly when you turn it on.

Here is a good description of what happens: http://www.pcguide.com/ref/mbsys/bios/boot.htm

There's also Hans-Peter Messmer's 'The Indespensible PC Hardware Book' that describes the process too.

于 2011-03-14T15:19:10.830 回答