欢迎,来自IP地址为:3.135.219.166 的朋友


CPU 架构众多,有 aarch64、x86_64 以及等 amd64 多种。现在,我们来一起了解下他们都是什么意思,以及其中的异同。

当我们在查看软件的支持列表或下载页面时是否对 ARM、AArch64、x86_64、i386 等术语感到困惑?这被称为 CPU 架构。本文将帮助您深入了解这个计算主题。

下表很好地总结了每个架构字符串的含义:

CPU 架构 主要描述
x86_64/x86/amd64 指代 64-bit AMD/Intel CPU
AArch64/arm64/ARMv8/ARMv9 指代 64-bit ARM CPU
i386 指代 32-bit AMD/Intel CPU
AArch32/arm/ARMv1 to ARMv7 指代 32-bit ARM CPU
rv64gc/rv64g 指代 64-bit RISC-V CPU
ppc64le 指代 64-bit PowerPC CPU

从左到右阅读是优先使用该术语来描述 CPU 架构,而不是使用右侧的其他术语。

CPU 架构

一般来说,上面列出的术语都是 CPU 架构,也就是计算机工程师所说的 CPU ISA(指令集架构)。

CPU ISA 定义了 CPU 如何解释二进制的 1 和 0。

以下则是 CPU ISA 的各种超集:

  • x86(AMD/Intel)
  • ARM
  • RISC-V
  • PowerPC(IBM)

还有更多的 CPU ISA,如 MIPS、SPARC、DEC Alpha 等。但上面列出的是使用比较广泛(在某些方面)。

上面列出的 ISA 至少有两个子集,主要是基于内存总线的宽度。内存总线的宽度表示 CPU 和 RAM 之间一次可以传输多少位。内存总线有多种宽度,但最重要的两种宽度是 32 位宽内存总线和 64 位宽内存总线。

需要注意的是:CPU ISA 的 32 位对应产品要么是过去的遗留产品,为了传统支持而保留;要么仅在微控制器中使用。可以合理地假设任何新硬件都是 64 位的(尤其是面向消费者的硬件)。

x86 (AMD/Intel)

x86 CPU ISA 主要来自 Intel,因为 Intel 是第一个使用 8086 微处理器创建它的公司。 8086 微处理器具有 16 位宽的内存总线。 后来AMD也加入进来,追随Intel的脚步,直到AMD创建了自己的超集64位架构,超越了Intel。

x86架构的子集如下:

  • i386:2007 年之前的 CPU广泛采用的架构,它是当前已知的 AMD/Intel x86 架构的 32 位”变体”
  • x86_64/x86/amd64:根据查看项目的不同,以上三个术语可以互换使用。但它们都指的是 x86 AMD/Intel 架构的 64 位”变体”。通常情况下,”x86_64″比”x86″和”amd64″更为广泛使用(也是首选)。例如,FreeBSD 项目将 64 位 x86 架构称为 amd64,而 Linux 和 macOS 则将其称为 x86_64

需要知道的是:由于 AMD 在创建 64 位 ISA 方面击败了 Intel,因此 FreeBSD 等一些项目将 x86 的 64 位变体称为 amd64。但更广泛接受的术语仍然是x86_64。

CPU ISA 的 x86 字符串是一种特殊的字符串。我们可以看到,在从 32 位 x86 (i386) 到 64 位 x86 (x86_64) 的过渡过程中,CPU 供应商确保 CPU 可以运行 32 位和 64 位指令。因此,有时当我们读到 x86 时,它也可以意味着”它只能在 64 位计算机上运行,但如果该计算机可以运行 32 位指令,那么你可以在其上运行 32 位应用软件”。

x86 的这种模糊性(意味着也可以运行 32 位代码的 64 位处理器)主要是因为在 64 位处理器上运行的操作系统,允许该操作系统的用户运行 32 位 软件。Windows 通过称为”兼容模式”的功能来实现这一点。

我们回顾一下,AMD 和 Intel 设计的 CPU 有两种架构,它们是 32 位的 i386 和 64 位的 x86_84。

ARM

ARM 是一家创建自己的 CPU ISA 规范、设计和许可自己的 CPU 内核的公司,还允许其他公司使用 ARM CPU ISA 设计自己的 CPU 内核。

大家可能因为 SBC(单板计算机)(如 Raspberry Pi 系列 SBC)而听说过 ARM。并且 ARM 的CPU也广泛应用于手机中。最近,Apple 在其笔记本电脑和台式机产品中从 x86_64 处理器转向使用自己设计的 ARM 处理器。

与任何 CPU 架构一样,根据内存总线的宽度也有两个子集。

32 位和 64 位 ARM 架构的官方认可名称分别是 AArch32 和 AArch64。”AArch”字符串代表”Arm Architecture”。这些是 CPU 执行指令时可以处于的模式。

符合 ARM CPU ISA 的指令的实际规范被命名为 ARMvX,其中X指规范的代号。迄今为止,该规范已有 9 个主要版本。从ARMv1 到 ARMv7,它定义了32位 CPU 的 CPU 架构规范。而 ARMv8 和 ARMv9 是64位 ARM CPU 的规范。

特别说明:每个 ARM CPU 规范都有进一步的子规范。以 ARMv8 为例,会有有 ARMv8-R、ARMv8-A、ARMv8.1-A、ARMv8.2-A、ARMv8.3-A、ARMv8.4-A、ARMv8.5-A、ARMv8.6- A、ARMv8.7-A、ARMv8.8-A 和 ARMv8.9-A等多种子规范。其中:-A 代表”应用程序核心”,-R 代表”实时核心”。

这里有个疑问,就是经常会用到 arm64,即使 AArch64 是 64 位 ARM 架构的官方认可名称。 原因有两个:

  1. 在 ARM 决定 AArch64 之前,arm64 这个名字就流行起来了。(ARM 在一些官方文档中也将 64 位 ARM 架构称为 arm64)
  2. Linus Torvalds 不喜欢 AArch64 这个名字。因此,Linux 代码库很大程度上将 AArch64 称为 arm64。但当您执行 uname -m 时,它仍然会报告 aarch64

因此,对于 32 位 ARM CPU,应该使用字符串 AArch32,但有时它也可能是 arm 或 armv7。同样,对于 64 位 ARM CPU,应该使用字符串 AArch64,但有时它也可能是 arm64 或 ARMv8 或 ARMv9。

RISC-V

RISC-V 是 CPU ISA 的开源规范。这并不意味着 CPU 本身是开源的!它是一种标准,有点像以太网。以太网规范是开源的,但购买的电缆、路由器和交换机确实要花钱。RISC-V CPU 也是如此。

尽管如此,这并没有阻止人们创建在开源许可下免费提供的 RISC-V 内核(作为设计,而不是作为物理内核/SoC)。

就像其他 CPU 架构一样,RISC-V 也有 32 位和 64 位 CPU 架构。由于 RISC-V 非常新(就 CPU ISA 而言),消费者/客户端的所有主要 CPU 内核通常都是 64 位 CPU。32 位设计主要是具有非常特定用例的微控制器。

在字符串 rv64i 中,rv 代表 RISC-V,64 表示这是 64 位 CPU 架构,i 是强制基本整数指令集的扩展。 之所以将rv64i写在一起,是因为,尽管i扩展是一个“扩展”,但它是强制性的。

PowerPC

PowerPC 是苹果、IBM 和摩托罗拉合作初期非常流行的 CPU 架构。苹果公司在其整个消费产品线中都使用这种 CPU 架构,直到他们从 PowerPC 转向英特尔的 x86。

PowerPC 最初采用大端内存排序。后来,当引入 64 位架构时,添加了使用小端字节序的选项。这样做是为了与 Intel 的内存顺序(以防止软件错误)兼容。

由于字节顺序也是一个因素,PowerPC 有 3 种架构:

  • powerpc:32 位 PowerPC 架构
  • ppc64:采用大端内存排序的 64 位 PowerPC 架构
  • ppc64le:具有小尾数内存排序的 64 位 PowerPC 架构

目前,ppc64le 被广泛使用。

市面上有多种 CPU 架构。对于每种 CPU 架构,都有 32 位和 64 位子集。

有些 CPU 提供 x86、ARM、RISC-V 和 PowerPC 架构。

x86 是最广泛、最容易使用的 CPU 架构,因为 Intel 和 AMD 使用的是 x86。

ARM 的产品几乎专门用于移动电话和可访问的 SBC。

RISC-V 正在不断努力使硬件更易于使用。

PowerPC 主要用于服务器,至少目前是这样。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注