为什么在Intel x86 64位CPU中除了兼容模式还需要保护模式?

8

我正在阅读 intel 软件开发手册(第3.1节)。这里说:

IA-32架构支持三种基本操作模式:保护模式、实地址模式和系统管理模式。

以及

Intel 64架构添加了IA-32e模式。 IA-32e模式有两个子模式。

这两个子模式是兼容性模式64位模式。 因此,Intel 64架构包含4种操作模式(保护模式、实地址模式、系统管理模式、IA-32e模式)。 但我不理解在使用Intel 64时保护模式的作用? IA-32e的兼容性子模式允许在不重新编译为64位操作系统的情况下运行遗留的16位和32位应用程序,并且64位子模式允许操作系统运行访问64位线性地址空间的应用程序。 在我使用64位操作系统时保护模式的用途是什么呢? 应用程序运行由IA-32e模式保证。


它是一种可直接替换那些从未听说过IA-32e模式的操作系统引导机器的解决方案。向后兼容性对于快速推出新芯片设计非常重要。 - Hans Passant
1
事实上,您失去了V8086模式,在IA-32e模式下不支持该模式。我建议您回顾一下x86和Windows的历史,然后您就会得到答案。 - Gary Yin
通常情况下,64位操作系统在启动后根本不使用保护模式。纯保护模式适用于32位操作系统。 - Peter Cordes
1个回答

5
我认为组织结构如下。在任何给定时间,整个CPU必须精确地处于以下模式之一(不包括维护模式):
IA-32实模式:这是处理器的启动方式。
IA-32保护模式:32位执行环境。通常的保护机制正在发挥作用;CPU可以有选择地进入虚拟8086模式。
IA-32e模式:仅适用于64位CPU。CPU可以有选择地在兼容模式和长模式之间移动。
也就是说,如果您想执行任何64位代码,您需要进入IA-32e模式。现在,您可以根据每个段的要求决定是在兼容模式下执行32位代码还是在长模式下执行64位代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接