什么是指令集

First of first,你要知道指令集(instruction set)是一个什么东西。指令集就像是计算机硬件和软件之间的桥梁,它定义了处理器可以执行的基本操作。操作系统和应用软件必须根据指令集来编写,才能在特定的处理器上运行。这意味着我们熟悉的操作系统和软件都与CPU的架构密不可分,而CPU的架构本质上就是由其对应的指令集决定的。

通常情况下,当你使用电脑时,操作系统已经预装并与CPU绑定。同样地,商店里提供的软件通常也是预先配置好以支持你的平台的。然而当我们自己去Githup上找一些软件的时候,就会发现琳琅满目的版本:例如:
在这里插入图片描述

如何看自己电脑架构

尽管一般我们无脑选x86_64/x64/AMD64就行了,但是这并不适合所有人,你如何看自己的架构是什么呢。
要确定你的电脑使用的是什么版本的芯片,你可以根据不同的操作系统采取以下步骤:

对于 Windows:

按下 “Win + R” 键,打开 “运行” 对话框。
输入 “msinfo32” 并按下回车键,打开 “系统信息” 窗口。
在 “系统摘要” 部分,查看 “系统类型” 一项,它会显示你的架构信息。
在这里插入图片描述

这里可以看到我们的系统是x64的,

对于 macOS:

点击屏幕左上角的苹果菜单,选择 “关于本机”。
在打开的窗口中,你可以看到你的 Mac 型号和处理器信息。
如果你使用的是较新的 Mac 设备(如采用 Apple M1 芯片的设备),处理器信息将显示为 “Apple M1” 或类似的名称。
在这里插入图片描述

对于 Linux:

打开终端(Terminal)。

  1. 输入以下命令并按下回车键:
  2. lscpu
  3. lscpu 该命令将显示有关你的 CPU 的详细信息,包括架构、型号和速度等。

在这里插入图片描述

这里可以看到我们的服务器是x86_64的,这和前面windows的x64实际上是一个东西。

如何基于架构选择软件

确定了你的架构就可以基于你的架构选对应的软件了,一般情况下,不同的架构常常对应不同用途的设备:
arm64和aarch64对应64位ARM架构(ARMv8),常见于移动设备和嵌入式系统。
armv7l和arm对应32位ARM架构(ARMv7),常见于较旧的移动设备和嵌入式系统。
x86_64、x64和amd64对应64位x86架构,常见于个人电脑和服务器。
x86和i386对应32位x86架构,常见于较旧的个人电脑。(基本上可以淘汰了)
dmg和zip通常表示macOS和Windows平台的安装包格式。

下面是一个常见架构名称的等价关系清单:

ARMv8 = ARM64 = AArch64
ARMv7 = armv7l = ARM
x86_64 = x64 = amd64
x86 = x86_32

x86前世AMD今生

现在进入正题,我们知道了结论,再来看看为什么是这样。1978年6月8日,Intel发布了8086处理器,开启了x86架构的时代。8086是一款16位微处理器,它不仅是Intel最成功的处理器系列的开端,也标志着x86指令集的诞生。x86指令集是一套用于Intel兼容微处理器的计算机语言指令集,它定义了处理器的基本功能和编程模型。随着8086的推出,x86架构开始了其长达数十年的发展历程,并最终成为个人计算机和服务器领域的主流架构。随后,Intel不断发展x86指令集,推出了8086、80186、80286、80386(进入32位时代)、80486、80586等处理器。

其实官方没有用过80586这个名字,80856就是你熟知的Pentium奔腾系列品牌中的第一款CPU,“Pentium” 这个名称最初源于希腊语单词 pente(πεντε),意为 “五”,这是对英特尔之前 80x86 处理器(8086–80486)数字命名方式的引用,并添加了拉丁语词尾 -ium,否则按照之前的命名规则,这个处理器本应被命名为 80586,奔腾在1993年3月22日推出。

我们可以发现之前cpu命名就是 80-x-86的格式,所以也叫80x86,后来叫着叫着就变成了x86。当然后续尽管Pentium改了名字,但是仍然是基于x86的这套指令集下发展的。
在这里插入图片描述
8086图片

在这个过程中,AMD作为Intel的竞争对手,也开始生产兼容x86指令集的处理器。特别是在386和486时代,AMD作为Intel的第二源供应商,为x86架构的发展做出了贡献。

("第二源"是一种历史商业模式:大客户如 IBM 通常要求关键零部件至少有两家供应商,以避免被单一厂商卡脖子,AMD 正是在这种需求下获得了早期生产 x86 芯片的授权。)

进入90年代后,随着计算需求的增长,Intel和AMD都意识到32位架构的局限性,开始着手开发64位扩展。1999 年,AMD 率先公开了 x86_64 指令集规范,并在 2003 年推出了首款基于该架构的处理器——面向服务器的 Opteron 和面向桌面的 Athlon 64。x86_64保持了与现有32位x86代码的兼容性,同时提供了更大的寻址空间和更多的寄存器,使得应用程序可以利用更多的内存。

与此同时,Intel也推出了自己的64位架构IA-64,即安腾(Itanium)。但与x86_64不同,IA-64走了另一条路线。

在那个家用电脑内存通常只有 64MB 到 128MB 的年代,Intel 认为 64 位是属于未来高性能计算的领域——毕竟2642^{64}264字节意味着 16 EiB 的理论寻址空间,在当时是超乎想象的。基于这个判断,IA-64 从设计之初就是一种全新的架构,与 x86 完全不兼容。它采用了 EPIC(Explicitly Parallel Instruction Computing)设计,把指令并行调度的责任交给编译器,押注编译器技术的突破,更侧重于服务器和高性能计算领域。

不过计算机的发展,往往是生态大于技术先进性的,就像 OSI 七层网络模型虽然理论优雅,但市场上 TCP/IP 早已成为事实标准。AMD 的 x86_64 凭借向下兼容和平滑的迁移路径,迅速在市场上占据主导地位——用户的旧软件可以无缝运行,新软件逐步 64 位化,没有任何迁移阵痛。微软、Linux 等主流操作系统都第一时间提供了 x86_64 版本。

相比之下,安腾陷入了一个死循环:没有软件生态 → 没人买 → 厂商更不愿移植软件。即便是 EPIC 想象中引以为傲的"聪明编译器"也迟迟没能兑现承诺——把并行调度的复杂性丢给编译器,在真实世界的工作负载下效果远不如预期。

于是,安腾的死亡,是一场持续了十年的慢性死亡:

  • 2011 年,Oracle 率先宣布停止为安腾开发新软件,引爆了 HP 与 Oracle 的诉讼大战;
  • 2013 年,微软结束Windows Server 对安腾的主流支持;
  • 2017 年,Intel 发布最后一代安腾 “Kittson”,仅仅是为了履行对 HPE的合同义务;
  • 2019 年,Intel 正式发布产品停产通知,安腾不再接受新订单; 2021 年 7月,最后一批安腾芯片出货,硬件生命彻底终结;
  • 2021 年,Linux 内核移除对 IA-64架构的支持代码——连开源社区都不再维护它了。

至此,安腾作为一个商业产品、一个软件平台、一个活着的架构,全部死亡。x86_64 在这场 64 位战争中大获全胜,并一直统治桌面和服务器至今(直到 ARM 的崛起,但那是另一个故事了)。

随着x86_64的成功,AMD将其重命名为AMD64,以强调自己的贡献和品牌。虽然Intel后来也采用了x86_64标准(称为Intel 64),但AMD64这个名字已经深入人心。时至今日,x86_64/AMD64已经成为了服务器、桌面电脑和笔记本电脑的主流架构,而IA-64如前所述已经彻底退出舞台。

AMD64不仅提供了64位计算能力,而且具有出色的向下兼容性。这意味着在AMD64平台上,64位应用程序可以与16位和32位应用程序共存。这一特性在现实世界中非常有利,因为它允许逐步过渡到64位环境,而不会带来兼容性问题。AMD64还以其能够同时支持32位和64位计算而闻名,而且不会影响性能。

从架构设计的角度来看,AMD64展现了兼容性和生态系统的决定性作用。通过在现有x86架构上添加64位扩展,AMD在保持连续性的同时引入了创新,最终赢得了市场的认可。相比之下,Intel的IA-64则因其全新的架构和有限的软件生态,未能获得广泛的成功——甚至最终反过来被迫采用 AMD 设计的指令集,这在整个芯片工业史上都是罕见的一幕。

回顾过去,AMD64的历史反映了Intel和AMD在x86架构发展上的竞争与合作。AMD在关键时刻推出了x86_64,满足了市场对64位计算的需求,并最终成为业界标准。这一历史也表明,在计算机体系结构的发展中,兼容性、连续性和生态系统往往比纯粹的技术创新更为重要。

几十年间,ARM似乎也演绎了类似的传奇, 从嵌入式一路打上了桌面和服务器。最具标志性的一幕,是苹果在 2020 年推出 M1 芯片,短短几年内让整条 Mac 产品线彻底告别 Intel,性能和能效双双碾压同期 x86 处理器;有意思的是,苹果走的同样不是"革命"的路——它先用 Rosetta 2 技术做到了 x86 程序的近乎无缝转译,加上ARM架构几十年的生态积累,让用户几乎无感地完成了架构迁移。

历史再一次证明:无论指令集多么先进,能赢得市场的,永远是那些懂得尊重既有生态、给用户一条平滑迁移路径的方案。但那似乎又是另一个庞大故事了。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐