我的老师告诉我 BIOS(或传统模式)总是以 16 位启动我的电脑。
换句话说,我可以拥有 23.9GHz 的 Intel Core i291832,但如果我使用传统模式,我的 PC 将以 16 位模式运行。这是真的吗?如果是这样,为什么会发生这种情况?
PS:你可能非常精通技术,我正在学习计算机科学,可能会理解你所说的话。P.S2:我知道 UEFI 和传统模式之间的区别。
答案1
向后兼容。
现代 x86 处理器可以运行为原始处理器编写的软件8088无需借助软件模拟即可运行 MS DOS 等操作系统。请注意,有些程序可能无法运行出色地例如,许多游戏依靠时钟速度来计时,因此过去在 5 MHz 下需要 10 秒才能完成的事情,现在在 2.5 GHz 下只需 0.02 秒左右即可完成。希望您能及时做出反应。
实模式(16 位)的行为与保护模式(32 位)和长模式(64 位)不同。为实模式编写的程序无法在保护模式或长模式下运行,因为它使用不同的指令。
由于向后兼容性是 x86 最重要的特性之一,因此所有 x86 处理器都继续以实模式启动。(否则我们现在可能已经转向不那么疯狂的架构了。请记住,即使是英特尔也想切换到安腾。
BIOS 和 UEFI 是主板的一部分,而不是 CPU 的一部分。因此,BIOS 保持向后兼容原始 IBM PC,并且本身非常简单,在将控制权传递给引导加载程序时,CPU 处于实模式。UEFI 并非为这种向后兼容而设计的,因此可以在传递控制权之前自由切换到保护模式。但是,如果您将相同的 x86 CPU 从 UEFI 计算机中取出,并将其放入具有兼容主板的 BIOS 计算机中,它仍然可以工作,在加载引导加载程序之前跳入 32 位保护模式,现在在引导加载程序之前处于 16 位模式。
答案2
BIOS 已死,UEFI 万岁!
很明显,英特尔已经计划淘汰 BIOS到 2020 年。是的,BIOS 需要是 16 位的,因为它是为 16 位硬件(Intel 8086/8088)设计的,并且由 16 位软件使用。基于 PC 的 DOS 和 PC-DOS 软件使用 BIOS 功能,即 16 位 8086 指令。16 位模式后来被称为实模式,是每个 x86 CPU 启动时的传统 8086 模式,尽管 Intel 在 1982 年引入了 80286 的 16 位保护模式,并在 1985 年引入了 80386 的 32 位保护模式。AMD 在 2003 年的 Opteron 中引入了 64 位长模式(其中包括 32 位保护模式)。
由于不支持从更好的模式切换,即一旦处于保护模式,返回到实模式是不支持(但可能),CPU 在开机时必须处于最低(最旧)模式,否则它将不兼容 8086,也不兼容 BIOS。
在 20 世纪 80 年代和 90 年代,DOS 是最广泛使用的(IBM-PC 兼容)PC 操作系统,其次是基于 DOS 的 Windows 9x。由于 DOS 是真正的 16 位操作系统,因此它需要实模式才能运行。因此,IBM-PC 兼容计算机必须支持 16 位,并且必须具有 BIOS。
千禧年后,随着基于 32 位 Windows NT 操作系统的 Windows XP 的成功,原生的 16 位实模式不再使用,而是 16 位软件使用虚拟 8086 模式,这是 32 位保护模式的一个特性。此虚拟 8086 模式在 64 位 x86 架构“x64”的新长模式中的兼容模式(具有 100% 兼容的 32 位保护模式)中不可用。有人可能会说,既然操作系统不再需要原生 16 位模式,那么 CPU 就可以在 32 位保护模式下启动……但是,那些 32 位(以及早期的 64 位)PC 仍然具有 BIOS(16 位实模式汇编软件),因此 CPU 必须以实模式启动。而且,这样它们就可以与老旧的 DOS 保持兼容……
随着 EFI(后来是 UEFI)在 PC 上的出现,固件将系统置于 32 位保护模式或 64 位长模式。只有在 BIOS 兼容模式下,称为“CSM”(兼容性支持模块),(U)EFI 才必须切换回实模式(同时保持与 DOS 的兼容性)。
真正的问题是:当 2020 年之后 UEFI 的 BIOS 兼容性(CSM)最终消失时,为什么 x86 CPU 仍然需要以实模式启动?
既然 UEFI 是新的 x86 标准固件,并且 2020 年以后大概会一直处于 64 位长模式,为什么不一劳永逸地以这种模式启动 CPU?