CPU如何执行存储在主板闪存芯片中的指令?

时间:2014-03-15 16:57:54

标签: cpu boot bios

我已经读过,在启动时,CPU程序计数器寄存器填充了F000。

我想:

PC registers contain the next instruction address.
This address is send to the address bus and value return to the data bus

地址总线只处理RAM吗?显然BIOS并没有存储在RAM中。

那么F000如何针对ROM启动BIOS执行?

3 个答案:

答案 0 :(得分:9)

上电时,芯片组将复位向量(0xffff0)映射到BIOS ROM。 CPU使用称为执行就地(XIP)的技术直接在ROM部分上执行指令。接下来,BIOS可以使用处理器的L2缓存,就好像它是使用称为“无退出模式”或“缓存为RAM”的技术的RAM。最后,初始化主系统RAM并加载操作系统。有关更多信息:

https://en.wikipedia.org/wiki/Reset_vector
https://en.wikipedia.org/wiki/Execute_in_place

Beyond BIOS
Intel® 64 and IA-32 Architectures Software Developer Manuals

答案 1 :(得分:2)

不同的CPU具有不同的起始地址。许多人都有0000作为起始地址。 BIOS ROM,RAM和其他外围设备(例如串行端口)都连接到处理器总线。 BIOS ROM包含CPU在启动时执行的启动指令。当程序加载到RAM中时,BIOS指示CPU开始执行RAM中的指令。

答案 2 :(得分:1)

地址不仅仅用于易失性RAM。

32位CPU可以处理多达40亿个内存地址(4 GB)。如果您购买4 GB的RAM,您的操作系统可能只报告您有3.5 GB,因为其他硬件(如BIOS)需要约6亿个地址。 http://blog.codinghorror.com/dude-wheres-my-4-gigabytes-of-ram/

当CPU启动并被告知要抓取地址x中的下一条指令时,它不知道或不关心x映射到BIOS内存而不是易失性内存。它将遵循相同的获取,解码,执行过程。