Arm vs x86: 解释指令集、架构和所有关键差异
【翻译于androidauthority.com 上 Robert Triggs 的《Arm vs x86: Instruction sets, architecture, and all key differences explained》】
Arm 是手机的顶级 CPU 设计师,英特尔是 PC 领域的大牌。两者都制造处理器,但有什么区别?
Android 能够在三种不同类型的处理器架构上运行:Arm、Intel 和 MIPS。前者是英特尔放弃其手机 CPU 后的今天无处不在的架构,而用于手机的 MIPS 处理器已多年未见。Arm 是 Android 和 Apple 生态系统中所有现代智能手机使用的 CPU 架构。Arm 处理器还通过 Windows on Arm和 Apple为 Mac 定制的 M1 CPU 进入 PC 市场。随着 Arm 与 Intel CPU 之争即将升温,以下是您需要了解的有关 Arm 与 x86 的所有信息。
CPU 架构解释
中央处理器 (CPU) 是设备的“大脑”,但它并不完全智能。CPU 仅在给定非常具体的指令(适当地称为指令集)时才能工作,该指令告诉处理器在寄存器和内存之间移动数据或使用特定的执行单元(例如乘法或减法)执行计算。独特的 CPU 硬件块需要不同的指令。这些往往会随着更复杂和更强大的 CPU 进行扩展。所需的指令也可以为硬件设计提供信息,我们稍后会看到。
什么是 SoC? 您需要了解的有关智能手机芯片组的所有信息
在手机上运行的应用程序不是用 CPU 指令编写的;对于今天的大型跨平台应用程序来说,这将是疯狂的,而不是在各种芯片上运行。相反,使用各种高级编程语言(如 Java 或 C++)编写的应用程序针对特定指令集进行编译,以便它们在 Arm、x86 或其他 CPU 上正确运行。这些指令在 CPU 中被进一步解码为微码操作,这需要芯片空间和电源。如果你想要最低功耗的 CPU,保持指令集简单是最重要的。但是,可以从更复杂的硬件和指令中获得更高的性能,但会以功耗为代价。这是 Arm 和 Intel 的 CPU 设计历史方法之间的根本区别。
x86 传统上以最高性能、Arm 能效为目标
Arm 是基于 RISC(精简指令集计算)的,而 Intel (x86) 是 CISC(复杂指令集计算)。Arm 的 CPU 指令具有相当的原子性,指令数量与微操作之间的相关性非常密切。相比之下,CISC 提供了更多指令,其中许多指令执行多个操作(例如优化的数学和数据移动)。这会带来更好的性能,但解码这些复杂指令的功耗会更高。
指令和处理器硬件设计之间的这种联系构成了 CPU 架构。这样,CPU 架构可以针对不同的目的进行设计,例如极端的数字运算、低能耗或最小的硅面积。这是从 CPU 角度来看 Arm 与 x86 的关键区别,因为前者基于更低的功耗、指令集和硬件。
现代 64 位 CPU 架构
如今,64 位架构已成为智能手机和 PC 的主流,但情况并非总是如此。直到 2012 年,手机才开始转换,大约比 PC 晚了 10 年。简而言之,64 位计算利用足够大的寄存器和内存地址来使用 64 位(1 和 0)长数据类型。除了兼容的硬件和说明外,您还需要一个 64 位操作系统,例如 Android。
业内资深人士可能还记得 Apple 在其 Android 竞争对手之前推出其首款 64 位处理器时的喧嚣。转向 64 位并没有改变日常计算。但是,在使用高精度浮点数时有效地运行数学很重要。64 位寄存器还提高了 3D 渲染精度、加密速度,并简化了超过 4GB RAM 的寻址。
今天,这两种架构都支持 64 位,但它在移动设备中是更新的
PC 早在智能手机之前就迁移到 64 位,但并不是英特尔创造了现代 x86-64 架构(也称为 x64)。这一荣誉属于 AMD 于 1999 年发布的声明,该声明对英特尔现有的 x86 架构进行了改造。英特尔的替代 IA64 Itanium 架构被淘汰了。
Arm 在 2011 年推出了 ARMv8 64 位架构。Arm 没有扩展其 32 位指令集,而是提供了一个干净的 64 位实现。为此,ARMv8 架构使用两种执行状态,AArch32 和 AArch64。顾名思义,一种用于运行 32 位代码,一种用于运行 64 位代码。ARM 设计的美妙之处在于处理器可以在正常执行期间从一种模式无缝切换到另一种模式。这意味着 64 位指令的解码器是一种新设计,不需要保持与 32 位时代的兼容性,但处理器作为一个整体保持向后兼容。但是,Arm 表示未来的 ARMv9 到 2023 年,Cortex-A 处理器将只有 64 位,从而切断对这些下一代 CPU 上旧的 32 位应用程序和操作系统的支持。事实上,2021 年的小型 Cortex-A510 和强大的 Cortex-X2 CPU 已经只有 64 位了。
阅读更多: Arm Cortex-X2、A710 和 A510 深入研究:Armv9 CPU 设计解释
Arm 的异构计算战胜了移动
上面讨论的架构差异部分解释了这两个芯片巨头目前的成功和面临的问题。Arm 的低功耗方法非常适合移动设备对 3.5W 热设计功耗 (TDP) 的要求,同时性能也可以扩展以匹配英特尔的笔记本电脑芯片。与此同时,英特尔 100W TDP 典型的 Core i7 和 i9 以及来自 AMD 的竞争对手芯片组在服务器和高性能台式机中大获全胜,但历来难以缩小到 5W 以下。查看可疑的 Atom 阵容。
当然,我们也不能忘记硅制造工艺在过去十年中在大幅提高电源效率方面所发挥的作用。从广义上讲,较小的 CPU 晶体管消耗的功率较少。英特尔一直试图超越其 2014 年的内部 14nm 工艺,10nm 芯片将于 2021 年开始落地。当时,智能手机芯片组已从 20nm 转移到 14、10 和 7nm 设计,市场上的 5nm 为 2021 年。这只是通过利用三星和台积电代工厂之间的竞争来实现的。这也部分帮助 AMD 凭借其最新的 7nm Ryzen 处理器缩小了与 x86-64 竞争对手的差距。
然而,Arm 架构的一项独特功能特别有助于保持移动应用程序的低 TDP——异构计算。这个想法很简单,构建一个允许不同 CPU 部分(在性能和功率方面)协同工作以提高效率的架构。
Arm 在高性能和低性能 CPU 内核之间共享工作负载的能力是提高能效的福音
Arm 在这个想法上的第一次尝试是 big.LITTLE 早在 2011 年,它采用了大 Cortex-A15 和小 Cortex-A7 内核。为要求苛刻的应用程序使用更大的无序 CPU 内核并为后台任务使用高能效的有序 CPU 设计的想法是当今智能手机用户认为理所当然的事情,但需要几次尝试才能解决这个问题。Arm 在 2017 年利用DynamIQ和 ARMAv8.2 架构构建了这一理念,允许不同的 CPU 位于同一个集群中,共享内存资源以实现更高效的处理。DynamIQ 还支持在中端芯片中越来越常见的 2+6 CPU 设计
英特尔的竞争对手 Atom 芯片没有异构计算,无法与 Arm 的性能和效率平衡相媲美。直到 2020 年,英特尔的 Foveros、嵌入式多芯片互连桥 (EMIB) 和混合技术项目才产生了具有竞争力的芯片设计——10nm Lakefield。Lakefield 将单个高性能 Sunny Cove 内核与四个节能 Tremont 内核以及图形和连接功能相结合。然而,即使是这个封装也是针对具有 7W TDP 的联网笔记本电脑,这对于智能手机来说仍然太高了。
如今,在 TDP 低于 10W 的笔记本电脑细分市场中,Arm 与 x86 的竞争越来越激烈,英特尔在该市场缩小规模,而 Arm 越来越成功地扩大规模。Apple 改用自己的 Mac 定制 Arm 芯片是 Arm 架构不断增长的性能范围的一个典型例子,这在一定程度上要归功于异构计算以及 Apple 的定制优化。
定制 Arm 内核和指令集
Arm 和 Intel 的另一个重要区别是后者从头到尾控制其整个过程,并直接销售其芯片。Arm 只是出售许可证。英特尔将其架构、CPU 设计甚至制造完全保持在内部。相比之下,Arm 向苹果、三星和高通等合作伙伴提供各种产品。这些范围包括 Cortex-A78 和 A710 等现成的 CPU 内核设计,通过 Arm CXC 计划合作构建的设计,以及允许 Apple 和三星等公司构建定制 CPU 内核甚至进行调整的定制架构许可证。指令集。
阅读更多: Apple 的第一款基于 Arm 的计算机包括新的 MacBook 和 Mac Mini
在撰写本文时,世界上最强大的超级计算机 Fugaku 在 Arm 上运行
英特尔和 AMD 使用的 x84-64 架构在消费类硬件领域的原始性能方面仍然遥遥领先。但 Arm 现在在高性能和能效仍然是关键的产品领域(包括服务器市场)中具有很强的竞争力。在撰写本文时,世界上最强大的超级计算机有史以来第一次在 Arm CPU 内核上运行。它的 A64FX SoC 是富士通设计的,并且是第一个运行 Armv8-A SVE 架构的。
软件兼容性
正如我们之前提到的,应用程序和软件必须针对它们运行的 CPU 架构进行编译。CPU 和生态系统(例如 Arm 上的 Android 和 x86 上的 Windows)之间的历史结合意味着兼容性从来都不是真正的问题,因为应用程序不需要跨多个平台和架构运行。然而,在多个 CPU 架构上运行的跨平台应用程序和操作系统的增长正在改变这种格局。
Apple 的基于 Arm 的Mac、谷歌的Chrome OS和微软的 Windows on Arm 都是软件需要在 Arm 和 x86-64 架构上运行的现代示例。对于愿意投资重新编译的新应用程序和开发人员来说,为两者编译本机软件是一种选择。为了填补空白,这些平台还依赖于代码仿真。换句话说,翻译为一种 CPU 架构编译的代码以在另一种 CPU 架构上运行。与本机应用程序相比,这效率较低并且会降低性能,但目前可以进行良好的仿真以确保应用程序正常工作。
经过多年的发展,Windows on Arm 仿真对于大多数应用程序来说都处于相当不错的状态。Android 应用程序在大多数情况下也可以在英特尔 Chromebook 上正常运行。Apple 有自己的翻译工具 Rosetta 2 来支持旧版 Mac 应用程序。但是,与本机编译的应用程序相比,这三个应用程序都会遭受性能损失。
Arm vs x86:最终决定
在过去十年 Arm 与 x86 的竞争中,Arm 已成为智能手机等低功耗设备的首选。该架构现在也在向笔记本电脑和其他需要提高能效的设备迈进。尽管在手机上失败了,但英特尔在低功耗方面的努力多年来也有所改进,Lakefield 和 Alder Lake 等混合理念现在与手机中的传统 Arm 处理器有更多共同点。
也就是说,从工程的角度来看,Arm 和 x86 仍然明显不同,它们仍然具有各自的优势和劣势。然而,随着生态系统越来越多地支持这两种架构,两者的消费者用例变得越来越模糊。然而,虽然 Arm 与 x86 的比较存在交叉,但在可预见的未来,Arm 肯定仍是智能手机行业的首选架构。该架构也显示出笔记本电脑级计算和效率的主要承诺。
本文文字及图片出自 InfoQ
你也许感兴趣的:
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
- 【外评】好的重构与不好的重构
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 【外评】代码审查反模式
- 我受够了维护 AI 生成的代码
- 【外评】Linux 桌面市场份额升至 4.45
- 【外评】作为全栈开发人员如何跟上 AI/ML 的发展?
你对本文的反应是: