首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >普通的x86或AMD是否直接从只读存储器运行启动/BIOS码,还是先将代码复制到内存中?

普通的x86或AMD是否直接从只读存储器运行启动/BIOS码,还是先将代码复制到内存中?
EN

Stack Overflow用户
提问于 2011-03-14 23:13:52
回答 2查看 4.2K关注 0票数 13

我知道现代计算机已经改造了哈佛的建筑。

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

编辑:我这个问题的目的是了解商用CPUs (或者至少是英特尔cpus)是否可以直接从ROM执行代码。这不是为了实际目的,它是为了增加我对计算机体系结构和东西的理解。removing-RAM-part不是我的主要疑问,只是一个例子

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-18 11:29:28

它把直接从中执行,把东西拷贝到内存中。

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

现代BIOS通常分为两个部分:

  1. 引导块(早期POST)
  2. Compressed区域(中后期开机自检)

)

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

“启动块”指的是从重置向量开始的BIOS代码(加上几个JMP)。这是直接从ROM执行的(内存控制器还没有启动),所以它非常慢。

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

  1. 初始化内存控制器。(如果您从主板得到"memory not corruption.
  2. Jump“蜂鸣音代码,则会在压缩区域执行校验和检查,以确保在检测到任何损坏时,BIOS的其余部分可以自由进入恢复模式。
  3. 如果校验和通过,请将BIOS的其余部分解压缩到内存中的某个位置(通常低于1MB boundary).
  4. Jump到内存中的解压缩代码,然后继续启动。
票数 17
EN

Stack Overflow用户

发布于 2011-03-14 23:19:11

如果您完全卸下RAM,当您打开它时,PC应该会开始发出不间断的蜂鸣声。

下面是对发生的事情的很好的描述:http://www.pcguide.com/ref/mbsys/bios/boot.htm

汉斯-彼得·梅斯默( Hans-Peter Messmer)的“不可缺少的个人电脑硬件书”也描述了这一过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5300527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档