x86,x64,x86-64,amd64,arm指令集架构之间的关系

2022-08-20 09:14:22 浏览数 (1)

在 知乎 看到下边的问题,之前自己对这些概念也是迷迷糊糊,索性总结一下吧。

没有 x32 的说法, x86x64 都指的是 CPU 的指令集架构。

指令集

所谓指令集,可以理解成硬件对外的接口。我们运行程序是通过操作系统调度,操作系统然后让硬件去计算。

让硬件计算的话,比如一些加法乘法,循环之类的,就需要硬件提供的接口,也就是指令集。这个就是我们常说的机器语言,已经到了计算机的最底层了。

指令集架构主要分两大类。

  • 复杂指令集运算(Complex Instruction Set Computing,CISC) 简单的理解就是提供的指令很多,也都很复杂。 以 intelx86 架构为代表,主要针对的操作系统是微软的 Windows 和苹果的 maxOS。另外 Linux,一些 UNIX 等,都可以运行在复杂指令集架构的微处理器。
  • 精简指令集运算(Reduced Instruction Set Computing,RISC) 简单的理解就是提供的指令很少,也都比较简单,只是一些基础的指令。 以 ARM 公司的 arm 架构为代表。当前有 UNIXLinux 以及包括 iOSAndroidWindows Phone 等在内的大多数移动操作系统运行在精简指令集的处理器上。

复杂指令集和精简指令集比较的话,区别在于我们编程(直接写机器语言代码在 CPU上运行)的时候,比如实现乘法。根据提供的指令,复杂指令集可能一条命令就够了,而简单指令集我们可能需要加法、循环等多条指令。

硬件和软件也就是互补的过程,当硬件提供功能简单了,写软件就复杂些。当硬件提供的功能多了,写软件就简单些。

x86 架构发展

x86 架构于 1978 年推出的 Intel 8086 中央处理器中首度出现,8086 在三年后为 IBM PC 所选用,之后 x86 便成为了个人电脑的标准平台,成为了历来最成功的 CPU 架构。808616 位处理器,接着一系列的处理器进行了 32 位架构的改进,现在 x86 一般指 32 位的架构。

该系列较早期的处理器名称是以数字来表示 80x86。由于以 86 作为结尾,包括 Intel 8086801868028680386 以及 80486,因此其架构被称为 x86

生产 x86 架构的 CPU 除了因特尔,它还把专利授权给了现在比较出名的超微(AMD)。然后在 1999AMD 首次公开 64 位集以扩展 x86,此架构称为 AMD64。后来英特尔也推出了与之兼容的处理器,并命名Intel 64。两者一般被统称为 x86-64x64,开创了 x8664 位时代。

这里会有一个疑问 ,Intel 去哪里了,为什么没有率先做 64 位的?其实 intel 做了,为了不让其他厂商模仿,申请了很多专利,与惠普联合设计了全新的架构 IA-64 ,但最大的问题就是它与之前的 x86 不兼容,且市场反应较冷淡,然后就凉凉了。

苹果公司和 RPM 包管理员以 x86-64x86_64 称呼此 64 位架构。甲骨文公司及 Microsoft 称之为x64BSD 家族及其他 Linux 发行版则使用 amd6432 位版本则称为i386(或 i486/586/686),Arch Linuxx86_64 称呼此 64 位架构。

现在 x86 架构的CPU 的话基本上就是 IntelAMD 两家公司了。

arm 架构发展

arm 架构的话就是 ARM 公司的,这家公司不生产芯片,而是以授权的方式盈利。具体发展可以参考下边的链接。

https://dongka.github.io/2018/11/17/cpu/arm体系架构的发展/

https://www.eefocus.com/mcu-dsp/409079/r0

从诺基亚到苹果手机、安卓手机,奠定了其在智能手机市场的霸主地位。16 年的时候 ARM 公司被日本软银收购了。

现在常听到的高通骁龙系列就是 arm 架构。

软件安装

有时候在 github 上下载安装包的时候需要选择自己 CPU 的架构情况了。会提供不同操作系统的三种架构, x8632 位架构和 64 位架构,以及 arm 架构。

我的 CPU 的话是 intel 的酷睿 i5,架构的话现在基本上是 x64,或者说是 amd64 了。

linux 中使用命令 uname -a 可以查看 CPU 的架构。

代码语言:javascript复制
Linux DESKTOP-68NS8J3 3.4.0  #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

总结

CPU 指令集架构目前主要是两大类。

复杂指令集是 x86x64(也叫 x86-64, amd64) 两种架构,专利在 IntelAMD 两家公司手里, 该架构 CPU 主要是 IntelAMD 两家公司,这种 CPU 常用在 PC 机上,包括 WindowsmacOSLinux

简单指令集是 arm 一种架构,专利在 ARM 公司手里,该架构 CPU 主要有高通、三星、苹果、华为海思、联发科等公司。

再多说一句,之前在 linux 和安卓的关系 的文章里,写了linux 发展的一些历史,就和操作系统一样,我们能设计出一个全新的操作系统,但是各种软件都需要在新的系统上重新开发,软件商愿不愿意就不一定了。

同样的,我们也能设计出一个新的指令集架构,但是还是生态的问题,现在安卓、苹果的操作系统都是在 arm 架构上的,所以你的新指令集架构还需要安卓再适配一个新的操作系统,安卓不愿意的话,你可以自己出一个新的操作系统,但又回到了最初的问题,各种软件也需要重写。

如果兼容之前的指令集架构或者操作系统的话,那可能就绕不开各种专利的问题了。

所以现在各种公司利益都是紧密相连的,合作才能共赢。

0 人点赞