关于x86、x86_64、x64、amd64和arm64、aarch64的区别

前言

当我们在安装docker或选择docker image镜像时,都需要根据当前服务器的系统和CPU架构来选择对应的软件包或镜像,比如安装docker-compose:

  • docker-compose-linux-aarch64
  • docker-compose-linux-armv6
  • docker-compose-linux-armv7
  • docker-compose-linux-ppc64le
  • docker-compose-linux-riscv64
  • docker-compose-linux-s390x
  • docker-compose-linux-x86_64

或在hub.docker上选择基础镜像时,考虑OS/ARCH:

  • linux/386
  • linux/amd64
  • linux/arm/v6
  • linux/arm64
  • linux/ppc64le
    ...
    等等,那常用的CPU架构都有哪些呢,下面我们就来进一步认识下常用的CPU架构。

不同CPU架构的区别:

CPU架构描述
i38632位AMD/英特尔CPU
x86_64/x86/amd6464位AMD/英特尔 CPU的别称
AArch32/arm/ARMv1到ARMv732位ARM CPU的别称
AArch64/arm64/ARMv8/ARMv964位ARM CPU的别称
rv64gc/rv64g64位RISC-V CPU的别称
ppc64le64位PowerPC CPU(小端字节序存储)

通常来说,以上列出的术语是描述CPU架构的,但严格讲,他们被计算机工程师视为CPU的指令集架构(ISA)。

CPU的ISA主要有以下几个分类:

  • x86(AMD/英特尔)
  • ARM
  • RISC-V
  • PowerPC(IBM仍在使用)

目前,基本上所有的新的硬件都是64位的了。

x86(AMD/英特尔)

x86 CPU的指令集架构主要源于英特尔,后来AMD加入了这个领域,并且一直紧随英特尔的步伐,直到AMD创建出了自己的超级64位架构,超过了英特尔。

x86架构的子集包括:

  • i386:AMD/英特尔的x86架构的32位版本。
  • x86_64/x86/amd64:这三个术语在不同的项目中可能会被交替使用。但它们都是指x86AMD/英特尔架构的64位版本。x86_64比x86和amd64使用的更广泛。

对于CPU ISA,x86这个字符串是一种特殊的情况。你要知道,在从32位的x86(i386)到64位的x86(x86_64)的过渡过程中,CPU制造商确保了CPU能够运行32位和64位指令。所以,有时你可能会看到x86也被用来表示:这款产品只能运行在64位的计算机上,但如果该计算机能运行32位指令,那么你也可以在它上面运行32位的用户软件。

Windows的兼容模式就是通过这种方式,支持在64位的系统上运行32位的软件。

ARM

ARM不仅是一家为CPU ISA制定规范的公司,它也设计并授权给其它厂商使用其CPU内核,甚至允许其他公司使用ARM CPU ISA设计自己的CPU内核。

最近,苹果从使用x86_64处理器转向了在其笔记本和台式机产品中使用自家设计的ARM处理器。

官方认定的32位和64位ARM架构分别是AArch32和AArch64。这里的AArch字符串表示“Arm架构”。

实际符合ARM的CPU ISA的指令规范被命名为ARMvX,其中X是规范版本的代表数字。目前为止:

  • ARMv1到ARMv7定义了适用于32位CPU的架构。
  • ARMv8、ARMv9是适用于64位CPU的架构。

你可能会困惑,为什么AArch64正式被ARM认定为64位ARM架构后,有些人仍然称其为arm64,原因主要有两点:
(1)arm64这个名称在ARM决定采用AArch64之前就已经广为人知了。
(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)的一个开源规范。

如果你在寻找运行于RISC-V消费级CPU上的软件,你应该寻找“rv64gc”这一字符串。这是许多Linux发行版所公认的。

像所有的CPU架构一样,RISC-V也拥有32位和64位CPU架构。但由于RISC-V是非常新的描述CPU ISA的方式,大部分主流消费端或客户端的CPU核心一般都是64位的。大部分32位的设计都是微控制器,用于非常具体的用例。

PowerPC

PowerPC曾是苹果、IBM、摩托罗拉早期合作时代的一种流行CPU架构。在苹果转向英特尔的x86架构之前,它一直被应用于苹果的全部消费品产品线。

最初,PowerPC采取的是大端字节序的内存排序。后来随着64位架构的引入,增加了使用小端字节排序的选项。这么做的目的是为了与英特尔的内存排序保持兼容(以防止软件错误),因为英特尔自始至终都一直采用的是小端字节序。

由于字节序在此也起到了一定的作用,PowerPC共有三种架构:

  • powerpc:表示32位的PowerPC架构。
  • ppc64:表示拥有大端字节序内存排序的64位PowerPC架构。
  • ppc64le:表示拥有小端字节序内存排序的64位PowerPC架构。

目前ppc64le是被广泛使用的PowerPC架构。

none
最后修改于:2023年11月28日 12:23

添加新评论