x86 指令集应该消亡?
文章目录
在网上看到一个有趣的讨论,关于 x86 指令集是否应该消亡,对于分歧点,本文简单记录一下,作为吃瓜群众学到不少。
1、术语解释
- CISC/RISC。 CISC 是复杂指令集计算机,旨在使用更少、更复杂的指令来完成任务,x86 的指令集设计参照了 CISC 的理念。 而 RISC 是精简指令集计算机,旨在使用更少、更简单的指令来使硬件设计变得更容易,从而使简单的硬件能够运行得更快、性能更高,MIPS 和 ARM 的指令集参照了 RISC 的理念。
- Superscalar(超标量)。 超标量 CPU 在每个时钟周期可以执行多于一条指令,而标量 CPU 一次只能执行一条指令。
- Out-of-order execution(乱序执行)。 支持乱序执行的 CPU 可以不管程序指令的顺序如何,在等待时执行独立无依赖的指令,从而提高执行单元的利用率,减轻缓存和内存延迟的影响。
2、争辩?
-
纯硬件完成?
- Hackaday:x86 通过使用硬件和微代码的混合翻译来实现指令,而不是全部由硬件完成。
- clamchowder:现代高性能 CPU 都不会直接用指令位去控制硬件了,会将指令解码给乱序执行的引擎及功能单元所理解的内部格式。
-
兼容性
- Hackaday:今天,即使是最高端的 x86 CPU 仍然支持古老的 8086 实模式,其中 CPU 可以直接寻址内存,无需任何重定向。具有这种级别的向后兼容性可能会导致问题,特别是在多任务处理和内存保护方面,但这是以前芯片的一个功能,我认为是时候放弃 8086 的许多遗产,让现代处理器自由运行了。
- clamchowder:当滔滔不绝地讨论不同的 CPU 及其提供的性能时,很容易忘记性能所需的用途:运行软件。如果 CPU 不能运行您需要的软件,那么它就是一块小砖头。 x86-64 CPU 保留实模式,以便操作系统可以继续以相同的方式启动。当然,兼容性不可能永远保持,ISA 必须不断发展,但兼容性中断应保持在最低限度,以免让用户受损。
-
获取和解码指令的成本
- Hackaday:指令的代价,如以
mpsadbw
为例,该指令为六到七个字节,这个指令的长度以及无内存对齐会使得获取和解码指令成本更高。 - clamchowder:即使是固定长度的指令,RISC 架构同样也存在解码成本,Arm 使用 micro-op cache、L1 i-cache 缓存来降低解码成本。
- Hackaday:指令的代价,如以
-
指令集扩展和增加指令数量的问题
- Hackaday:尽管很少被用到,如
mpsadbw
,现代 x86 CPU 仍需要支持该指令,占了一定的空间,这种支持的保留还体现在硬件的兼容。而且 x86 的指令扩展和增加数量惊人。 - clamchowder:ARM 也经历了多次的指令集修改和扩展,像 MIPS 没有再更多扩展,是因为使用得少了。现在工程师可以在硬件上做更多的设计和操作,为特定的任务添加更多的合适指令也是加快速度的好方法。
- Hackaday:尽管很少被用到,如
-
奇怪的指令
- Hackaday:如
mpsadbw
用于计算绝对差的多个值的总和,执行了至少 19 次加法,但 CPU 仅在两个时钟周期执行它。 - clamchowder:好好思考这个指令存在的原因,计算绝对差之和对于查看如视频编码的块变化程度是不错的方式,ARM 也有类似的向量指令。
- Hackaday:如
-
寄存器命名和指令调度更复杂
- Hackaday:添加很多指令使得寄存器命名和指令调度更复杂。存在的指令越多,其解决方案逻辑就越复杂。
- clamchowder:尽管
mpsadbw
执行更多低级操作,但它只需要两个寄存器输入和一个目标寄存器。复杂的指令实际上降低了寄存器重命名和调度成本。换成 RISC 处理等效的简单指令序列将需要更多的寄存器重命名和调度工作。
- ARM 蚕食 x86?
- Hackaday:ARM 蚕食 x86 市场份额,在智能手机和平板电脑领域完全占据主导地位,在服务器市场不断增长,RISC-V 也非常流行,因为其简单性。
- clamchowder:设计 ARM CPU 的人了解有效使用获取/解码/重命名带宽的重要性,还了解节省使用寄存器命名和调度程序条目等后端资源的重要性,所以 ARM 如今也有大量复杂的指令了。简单指令通常构成执行程序指令流的大部分,这尤其适用于难以并行化的程序,当今的 CPU 必须能够快速执行简单的操作,同时他们也受益于复杂的指令来加速特定的工作负载。“CISC” 和 “RISC” 绰号仅反映了指令集的遥远起源。它们反映了三十多年前几乎无关紧要的哲学辩论,现在也完全无关紧要。
3、最后
目前 x86 还是拥有一定的市场,有其目标适用性,这个争辩的内容可以在下方参考看原文,本文是乱序把双方观点整理到一起了。另外,文章的评论区也挺精彩的,比原文还长。
参考
文章作者 calssion
上次更新 2024-04-11