借一步网
作者:
在
近期有一篇文章声称:“x86架构需要退出历史舞台”。这个观点引发了广泛的讨论。在ThePrimeagen的直播节目中,一位资深专栏作家对这个观点进行了深入的探讨。本文将基于参考文献,以通俗易懂的方式详细解读这一观点,并举例说明。
在这篇文章中,有人认为CPU在实模式下的“直接访问内存”的能力给现代x86架构带来了很多遗留问题。但实际上,这些问题与直接内存访问关系不大。问题主要源于早期8086实模式的一些兼容性要求,其中涉及更多的16位段寄存器用于内存地址计算。而要解决的问题是如何正确计算和维护这些寄存器的地址。
然而,不必完全相信我的观点。因为Intel公司已经提出了一份详细的架构改进方案,他们清楚地列出了x64架构中可以简化的部分,包括旧式分段寻址。此外,Intel还提出了其他一些改进,比如移除未使用的特权级等。这些都可以在他们的提案《Envisioning A Simplified Intel Architecture》中找到。
另一个问题是x64指令编码的复杂性,这使得同时解码大量指令变得不够高效。我们可以认为这是x64架构需要改进的主要方面,需要重新排列一些位模式,使得同时解码多条指令更加简单。
举个例子,许多指令都会影响标志位,而条件指令通常会根据这些标志位进行操作。这种设计导致了很多“不必要的依赖性”,即使你可能并不关心某些指令对标志位的修改,CPU仍然需要跟踪这些标志位的变化,而且你(或者更常见的是编译器)也需要小心地避免在你关心的标志位变化和随后依赖它的条件指令之间使用会覆盖标志位的指令。
因此,一个可能的改进是在x64架构中引入一些不影响标志位的指令,比如用于移位操作的指令。这样,当程序员不打算修改标志位时,可以使用保留标志位的移位指令。
同样,不必完全相信我的观点。Intel已经提出了一项指令集扩展方案,称为Advanced Performance Extensions(APX),它解决了这些问题并引入了许多性能改进。该方案允许许多常见指令不写入标志位,并包含许多其他面向性能的功能。
如果我们将目光转向RISC-V这样的新兴架构,我们会发现它在某些方面并不如x86。举例如,最新的RISC-V V扩展是为了在计算密集型工作负载中提供向量支持而设计的,但其指令集设计在第一个版本中存在一些问题。这部分原因在于他们决定不使用可变长度的指令编码。结果,尽管现代的SIMD/向量指令集(如AVX-512、ARM SVE和GPU的自定义指令集)可以根据你选择的掩码寄存器执行指令,但RISC-V V只能在打开或关闭掩码时进行操作,并且只能从v0寄存器读取掩码,没有其他可用的掩码寄存器。
为什么会这样呢?因为他们在32位指令编码中无法腾出足够的位数来引用更多的掩码寄存器!相比之下,当AVX-512引入掩码功能时,它支持从8个掩码寄存器中选择。正如往常一样,x64架构的设计者们选择了支持更复杂的指令解码,而忽略了成本的增加。
因此,我们不应该将问题看作是“固定长度指令好,可变长度指令坏”,而应该将其视为一种权衡。紧凑一致的指令编码需要付出代价,使得在应对行业和计算环境的变化时变得更加困难。这也使得硬件和软件更难以及时提供满足新兴高性能软件领域需求的新指令。你要么牺牲指令质量(如RISC-V所做的),要么像x86/x64一样选择更复杂的解码逻辑。
我们强烈怀疑RISC-V的未来修订版本将会选择后者。RISC-V支持可变长度编码,而且我不会感到意外的是,一旦它的存在时间达到x86的一小部分寿命,为了在高性能类别中保持竞争力,它将需要更多地利用可变长度编码方案。
总的来说,我不认为x86(x64)架构需要退出历史舞台。尽管它有缺点,但在过去的四十年中,x86架构在软件开发领域发挥了巨大作用,为我们提供了稳定性和灵活性。虽然x64有改进的空间,但ARM和RISC-V等架构并不一定比x64更好,它们也有各自的局限性和权衡。此外,x64的未来可能更多地受到商业因素的影响,如许多公司提供ARM和RISC-V处理器的原因是ARM可以被任何人授权,而RISC-V则是免费的。
总而言之,x64架构在技术上并不需要退出历史舞台。虽然有改进的空间,但它仍然在软件开发中发挥着重要的作用。如果将来x64架构被逐渐淘汰,更可能是出于商业原因,而不是技术上的限制。
参考文献:
Intel的Advanced Performance Extensions(APX)是一项指令集扩展方案,旨在提高Intel架构的性能。该方案通过扩展x86指令集,增加寄存器数量和引入新的功能,以提供高效的性能提升,而不会显著增加核心的硅面积或功耗。
以下是APX的一些关键特点和优势:
总的来说,Intel的APX通过增加寄存器数量、优化寄存器访问和扩展条件指令集等方式,提供了显著的性能提升,同时保持了与现有代码的兼容性。
Learn more:
本文基于参考文献[1],采用通俗易懂的语言,详细介绍了英特尔公司正在研究的架构简化方案,重点关注64位纯模式架构(x86S. 。我们将从以下几个方面展开讨论:✅
当前的英特尔64位架构中,处理器需要经过一系列代码转换才能进入64位模式。然而,这些模式在现代应用程序和操作系统中并不常用。在64位纯模式架构中,一些当前在实模式或保护模式下运行的技术需要具备64位的等效替代方案。
举个例子,引导处理器(SIPI)目前从实地址模式开始,但在64位纯模式架构中需要一个64位的替代方案。此外,目前使用5级分页需要禁用分页,回到非分页的传统模式。而在提出的架构中,可以在分页模式下切换到5级分页,无需回到非分页的传统模式。
这些修改可以通过对系统架构进行简单的增强来实现,只会影响操作系统本身。
64位纯模式架构通过移除一些较旧的架构附属物件,降低了软件和硬件架构的整体复杂性。通过探索64位纯模式架构,可以实现与现代软件部署相一致的其他变化。
一些潜在的好处包括:
尽管64位纯模式架构上运行传统的64位操作系统并不是该方案的明确目标,但英特尔架构软件生态系统已经发展成熟,并提供了虚拟化产品。这使得可以使用虚拟化硬件(VMX)来模拟启动传统操作系统所需的功能,从而实现在64位纯模式架构上运行这些操作系统的解决方案。
例如,可以通过虚拟化技术在64位纯模式架构上创建虚拟机,利用虚拟化硬件来模拟传统操作系统所需的功能,以达到在该架构上运行传统操作系统的目的。
英特尔提供了一份64位纯模式架构详细方案的规范,其中包含了本文所述的想法。英特尔发布此规范,以便生态系统评估对软件可能产生的潜在影响。
该规范包括以下内容:
英特尔欢迎生态系统就这一架构提出反馈意见,可以通过电子邮件与他们联系。
英特尔正在探索一种简化的架构方案,即64位纯模式架构(x86S. 。通过移除不再使用的传统模式和附属物件,这种架构可以简化软件和硬件的复杂性,同时实现与现代软件部署相一致的变化。✅
尽管64位纯模式架构并非专门用于运行传统操作系统,但通过虚拟化技术可以实现在该架构上运行这些操作系统的解决方案。
x86s是Intel于2023年公布的一个处理器架构,经由改进及简化x86-64而来。它的目标是降低当代软件和硬件体系结构的整体复杂性,通过移除不常用的部分和遗留概念来提高处理器的性能和能效[1]。
下面是对x86s架构的详细介绍:
下面是x86和x86s架构的比较:
综上所述,x86s架构通过简化和精简化的设计,提高了处理器的性能和能效,同时降低了整体复杂性。它放弃了对16位和32位操作系统的支持,专注于64位模式,并移除了不常用的保护环、特性和接口。这使得x86s成为适用于现代软件和硬件需求的处理器架构。
要发表评论,您必须先登录。
简介
近期有一篇文章声称:“x86架构需要退出历史舞台”。这个观点引发了广泛的讨论。在ThePrimeagen的直播节目中,一位资深专栏作家对这个观点进行了深入的探讨。本文将基于参考文献,以通俗易懂的方式详细解读这一观点,并举例说明。
内存寻址的问题
在这篇文章中,有人认为CPU在实模式下的“直接访问内存”的能力给现代x86架构带来了很多遗留问题。但实际上,这些问题与直接内存访问关系不大。问题主要源于早期8086实模式的一些兼容性要求,其中涉及更多的16位段寄存器用于内存地址计算。而要解决的问题是如何正确计算和维护这些寄存器的地址。
然而,不必完全相信我的观点。因为Intel公司已经提出了一份详细的架构改进方案,他们清楚地列出了x64架构中可以简化的部分,包括旧式分段寻址。此外,Intel还提出了其他一些改进,比如移除未使用的特权级等。这些都可以在他们的提案《Envisioning A Simplified Intel Architecture》中找到。
指令编码的问题
另一个问题是x64指令编码的复杂性,这使得同时解码大量指令变得不够高效。我们可以认为这是x64架构需要改进的主要方面,需要重新排列一些位模式,使得同时解码多条指令更加简单。
举个例子,许多指令都会影响标志位,而条件指令通常会根据这些标志位进行操作。这种设计导致了很多“不必要的依赖性”,即使你可能并不关心某些指令对标志位的修改,CPU仍然需要跟踪这些标志位的变化,而且你(或者更常见的是编译器)也需要小心地避免在你关心的标志位变化和随后依赖它的条件指令之间使用会覆盖标志位的指令。
因此,一个可能的改进是在x64架构中引入一些不影响标志位的指令,比如用于移位操作的指令。这样,当程序员不打算修改标志位时,可以使用保留标志位的移位指令。
同样,不必完全相信我的观点。Intel已经提出了一项指令集扩展方案,称为Advanced Performance Extensions(APX),它解决了这些问题并引入了许多性能改进。该方案允许许多常见指令不写入标志位,并包含许多其他面向性能的功能。
x86是否需要退出历史舞台?
如果我们将目光转向RISC-V这样的新兴架构,我们会发现它在某些方面并不如x86。举例如,最新的RISC-V V扩展是为了在计算密集型工作负载中提供向量支持而设计的,但其指令集设计在第一个版本中存在一些问题。这部分原因在于他们决定不使用可变长度的指令编码。结果,尽管现代的SIMD/向量指令集(如AVX-512、ARM SVE和GPU的自定义指令集)可以根据你选择的掩码寄存器执行指令,但RISC-V V只能在打开或关闭掩码时进行操作,并且只能从v0寄存器读取掩码,没有其他可用的掩码寄存器。
为什么会这样呢?因为他们在32位指令编码中无法腾出足够的位数来引用更多的掩码寄存器!相比之下,当AVX-512引入掩码功能时,它支持从8个掩码寄存器中选择。正如往常一样,x64架构的设计者们选择了支持更复杂的指令解码,而忽略了成本的增加。
因此,我们不应该将问题看作是“固定长度指令好,可变长度指令坏”,而应该将其视为一种权衡。紧凑一致的指令编码需要付出代价,使得在应对行业和计算环境的变化时变得更加困难。这也使得硬件和软件更难以及时提供满足新兴高性能软件领域需求的新指令。你要么牺牲指令质量(如RISC-V所做的),要么像x86/x64一样选择更复杂的解码逻辑。
我们强烈怀疑RISC-V的未来修订版本将会选择后者。RISC-V支持可变长度编码,而且我不会感到意外的是,一旦它的存在时间达到x86的一小部分寿命,为了在高性能类别中保持竞争力,它将需要更多地利用可变长度编码方案。
总的来说,我不认为x86(x64)架构需要退出历史舞台。尽管它有缺点,但在过去的四十年中,x86架构在软件开发领域发挥了巨大作用,为我们提供了稳定性和灵活性。虽然x64有改进的空间,但ARM和RISC-V等架构并不一定比x64更好,它们也有各自的局限性和权衡。此外,x64的未来可能更多地受到商业因素的影响,如许多公司提供ARM和RISC-V处理器的原因是ARM可以被任何人授权,而RISC-V则是免费的。
总而言之,x64架构在技术上并不需要退出历史舞台。虽然有改进的空间,但它仍然在软件开发中发挥着重要的作用。如果将来x64架构被逐渐淘汰,更可能是出于商业原因,而不是技术上的限制。
参考文献:
Intel的Advanced Performance Extensions(APX)是一项指令集扩展方案,旨在提高Intel架构的性能。该方案通过扩展x86指令集,增加寄存器数量和引入新的功能,以提供高效的性能提升,而不会显著增加核心的硅面积或功耗。
以下是APX的一些关键特点和优势:
总的来说,Intel的APX通过增加寄存器数量、优化寄存器访问和扩展条件指令集等方式,提供了显著的性能提升,同时保持了与现有代码的兼容性。
Learn more:
简化英特尔架构:探索64位纯模式架构
本文基于参考文献[1],采用通俗易懂的语言,详细介绍了英特尔公司正在研究的架构简化方案,重点关注64位纯模式架构(x86S. 。我们将从以下几个方面展开讨论:✅
64位纯模式架构的工作原理
当前的英特尔64位架构中,处理器需要经过一系列代码转换才能进入64位模式。然而,这些模式在现代应用程序和操作系统中并不常用。在64位纯模式架构中,一些当前在实模式或保护模式下运行的技术需要具备64位的等效替代方案。
举个例子,引导处理器(SIPI)目前从实地址模式开始,但在64位纯模式架构中需要一个64位的替代方案。此外,目前使用5级分页需要禁用分页,回到非分页的传统模式。而在提出的架构中,可以在分页模式下切换到5级分页,无需回到非分页的传统模式。
这些修改可以通过对系统架构进行简单的增强来实现,只会影响操作系统本身。
64位纯模式架构的好处
64位纯模式架构通过移除一些较旧的架构附属物件,降低了软件和硬件架构的整体复杂性。通过探索64位纯模式架构,可以实现与现代软件部署相一致的其他变化。
一些潜在的好处包括:
64位纯模式架构上的传统操作系统
尽管64位纯模式架构上运行传统的64位操作系统并不是该方案的明确目标,但英特尔架构软件生态系统已经发展成熟,并提供了虚拟化产品。这使得可以使用虚拟化硬件(VMX)来模拟启动传统操作系统所需的功能,从而实现在64位纯模式架构上运行这些操作系统的解决方案。
例如,可以通过虚拟化技术在64位纯模式架构上创建虚拟机,利用虚拟化硬件来模拟传统操作系统所需的功能,以达到在该架构上运行传统操作系统的目的。
64位纯模式架构的详细方案
英特尔提供了一份64位纯模式架构详细方案的规范,其中包含了本文所述的想法。英特尔发布此规范,以便生态系统评估对软件可能产生的潜在影响。
该规范包括以下内容:
英特尔欢迎生态系统就这一架构提出反馈意见,可以通过电子邮件与他们联系。
结论
英特尔正在探索一种简化的架构方案,即64位纯模式架构(x86S. 。通过移除不再使用的传统模式和附属物件,这种架构可以简化软件和硬件的复杂性,同时实现与现代软件部署相一致的变化。✅
尽管64位纯模式架构并非专门用于运行传统操作系统,但通过虚拟化技术可以实现在该架构上运行这些操作系统的解决方案。
参考文献:
x86s是Intel于2023年公布的一个处理器架构,经由改进及简化x86-64而来。它的目标是降低当代软件和硬件体系结构的整体复杂性,通过移除不常用的部分和遗留概念来提高处理器的性能和能效[1]。
下面是对x86s架构的详细介绍:
下面是x86和x86s架构的比较:
综上所述,x86s架构通过简化和精简化的设计,提高了处理器的性能和能效,同时降低了整体复杂性。它放弃了对16位和32位操作系统的支持,专注于64位模式,并移除了不常用的保护环、特性和接口。这使得x86s成为适用于现代软件和硬件需求的处理器架构。
参考文献:
Learn more: