我已经读过,在启动时,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执行?
答案 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内存而不是易失性内存。它将遵循相同的获取,解码,执行过程。