BIOS 是从 BIOS 芯片读取还是在启动时复制到 RAM 中?

mri*_*ing 11 bios boot

第一次开机时,是先设置取/执行周期,从BIOS芯片直接取指令到CPU中的指令寄存器,还是有自动电路设置,当检测到开机时,指令中的指令BIOS 芯片会自动加载到 RAM 中吗?

更新

我想我在这里找到了答案:

复位信号关闭后,CPU 开始运行。由于 RAM 为空,因此无法执行 RAM 中的代码。CPU 制造商对处理器进行预编程,使其始终在 ROM 的地址“FFFF:0000”(通常是 ROM BIOS)处开始执行代码。

因此,CPU 在物理上设置为一打开就去获取并执行 ROM 中的内存地址 FFFF:0000。

Jde*_*eBP 21

这是另一个案例psusi,尽管有大量可用的技术参考资料解释了现在的情况,但不幸的是,正如的回答和问题的一部分所体现的那样,关于该主题的民间智慧仍然停留在 1991 年左右的世界中。除此以外。

在 1980 年代后期的世界中,机器固件——IBM PC 兼容世界中被称为“BIOS”的两个东西之一——确实位于 ISA 总线上的 ROM 芯片中;CPU 确实开始在物理地址执行代码,这是000FFFF0通过实模式指针访问的“常规内存”中的一个位置F000:FFF0这个世界早已不复存在。

(您所指的 WWW 页面的作者 S. Ebrahim Shubbar 错误地生活的世界,尽管写于 2002 年,但更古老。自 8086 以来,CPU 还没有开始使用这种CS:IP组合FFFF:0000。80286 将其更改为F000:FFF0.但80286世界本身就是民间智慧仍在流传的1980年代后期高度落伍的世界。)

您的“BIOS 芯片”RAM;并且您的 CPU 不是 16 位的。

在现代 PC 中,机器固件保存在非易失性 RAM 中。NVRAM 芯片连接到 LPC 总线(或专用的“固件集线器”接口),“芯片组”中的 LPC/FWH 桥通常禁用对它的写入周期。“刷新”固件涉及设置芯片组寄存器,以启用写入 NVRAM 然后写入 NVRAM。(例如,在 Intel ICH10 中,允许写循环通过的芯片组寄存器位被命名为BIOSWE“BIOS 写启用”。我将在这里跳过一些其他细节,但这就是它的要点。)

000FFFF0自 80286 时代以来,x86 处理器还没有开始在本地执行。32 位 CPU 以俗称的虚幻模式启动。即使CS复位后寄存器的初始值为 ,F000与该寄存器关联的段描述符最初仍FFFF0000作为其基地址。所以最初对应于 16:16 CS:IP 地址的物理地址F000:FFF0实际上是,并且从 80386 的时代开始,FFFFFFF0.

这就是机器固件主要映射到 32 位和 64 位 x86 机器上的物理地址空间的地方。在“常规内存”区域的固件上有一个 128KiB 的窗口,但是在现代 PC 上,保存机器固件的 NVRAM 可以高达 16MiB(尽管这因芯片组而异)并且主要立即映射到 16MiB 的物理地址空间低于 4GiB 线——即物理地址FF000000FFFFFFFF. (再次以 ICH10 为例:此地址空间中有多少映射到 NVRAM 由称为FWH_DEC_EN“固件集线器解码启用”寄存器的芯片组寄存器控制。固件被编码以重新编程FWH_DEC_EN根据安装在主板上的实际 NVRAM 芯片的大小进行注册。但NVRAM的顶部512KiB被始终映射到物理地址FFF80000FFFFFFF,并且不能被禁用。)的码复位生活的这个16MiB地址范围顶端64KiB后立即由处理器最初执行。

至于 BIOS ROM 遮蔽(这就是所谓的 - 为什么barlop认为 CPU 被遮蔽是个谜):是的,访问 LPC 总线或固件集线器上的 NVRAM 仍然不如访问主系统快(易失性)RAM。但是,随着 OS/2 和 Windows NT 等操作系统的出现——再次出现在 1980 年代末和 1990 年代初,影子之所以重要的原因大大减少了。实模式操作系统,如 MS-DOS、PC-DOS、DR-DOS 等,都位于机器固件提供的 I/O 功能之上。因此,固件的代码和只读数据最终会在运行时被大量访问。 OS/2 和 Windows NT 等保护模式操作系统的依赖程度要低得多在运行时基于固件提供的服务。因此,在 NVRAM 外执行的代码以及其中的只读数据到达处理器的速度比映射到系统 RAM 时更慢,这一事实比以前问题要小得多。

此外,它们依赖的固件代码和数据不一定存在于映射到物理地址空间部分的 NVRAM 部分中,即前面提到的 128KiB“常规内存”窗口,它甚至首先必须是可阴影的。保护模式固件服务并不需要像实模式固件服务那样全部位于物理地址空间中的 1MiB 线以下,有些则不需要。(当然,如果系统 RAM 至少为 4GiB,则只能它们所在的物理地址空间区域执行相同的技巧。)

具有讽刺意味的是,比 S. Ebrahim Shubbar 在 2002 年写的更准确的信息来源是Phil Croucher 的书The BIOS Companion从一年前在 2001 年。M. Croucher 观察到 Unices、Linux、Windows NT 和“大概 (95/ 98)”“从阴影中没有任何好处”。这不一定完全没有好处,但相对于 1989 年在 16 位 80286 机器上以实模式运行 MS-DOS、PC-DOS 和 DR-DOS 的人们来说,它相对来说很少。


psu*_*usi 6

大多数主板过去在 BIOS 中都有一个选项来配置此行为。它通常称为阴影,并且通常默认启用。我认为现在很多董事会都不会费心给你这个选择,只是总是在影子里。原因是 RAM 比 ROM 更快,因此将其复制到 RAM 并从那里运行可以加快速度。

请注意,复制不是由某些魔术电路完成的,它只是由 BIOS 本身在最初开始从 ROM 中执行时完成的,它只是将自身复制到 RAM,然后从那里继续执行。