在 知乎 看到下边的问题,之前自己对这些概念也是迷迷糊糊,索性总结一下吧。
没有 x32
的说法, x86
、x64
都指的是 CPU
的指令集架构。
指令集
所谓指令集,可以理解成硬件对外的接口。我们运行程序是通过操作系统调度,操作系统然后让硬件去计算。
让硬件计算的话,比如一些加法乘法,循环之类的,就需要硬件提供的接口,也就是指令集。这个就是我们常说的机器语言,已经到了计算机的最底层了。
指令集架构主要分两大类。
- 复杂指令集运算(Complex Instruction Set Computing,CISC)
简单的理解就是提供的指令很多,也都很复杂。
以 intel
的 x86
架构为代表,主要针对的操作系统是微软的 Windows
和苹果的 maxOS
。另外 Linux
,一些 UNIX
等,都可以运行在复杂指令集架构的微处理器。
- 精简指令集运算(Reduced Instruction Set Computing,RISC)
简单的理解就是提供的指令很少,也都比较简单,只是一些基础的指令。
以 ARM
公司的 arm
架构为代表。当前有 UNIX
、Linux
以及包括 iOS
、Android
、Windows Phone
等在内的大多数移动操作系统运行在精简指令集的处理器上。
复杂指令集和精简指令集比较的话,区别在于我们编程(直接写机器语言代码在 CPU
上运行)的时候,比如实现乘法。根据提供的指令,复杂指令集可能一条命令就够了,而简单指令集我们可能需要加法、循环等多条指令。
硬件和软件也就是互补的过程,当硬件提供功能简单了,写软件就复杂些。当硬件提供的功能多了,写软件就简单些。
x86 架构发展
x86
架构于 1978
年推出的 Intel 8086
中央处理器中首度出现,8086
在三年后为 IBM PC
所选用,之后 x86
便成为了个人电脑的标准平台,成为了历来最成功的 CPU
架构。8086
是 16
位处理器,接着一系列的处理器进行了 32
位架构的改进,现在 x86
一般指 32
位的架构。
该系列较早期的处理器名称是以数字来表示 80x86
。由于以 86
作为结尾,包括 Intel 8086
、80186
、80286
、80386
以及 80486
,因此其架构被称为 x86
。
生产 x86
架构的 CPU
除了因特尔,它还把专利授权给了现在比较出名的超微(AMD)。然后在 1999
年 AMD
首次公开 64
位集以扩展 x86
,此架构称为 AMD64
。后来英特尔也推出了与之兼容的处理器,并命名Intel 64
。两者一般被统称为 x86-64
或 x64
,开创了 x86
的 64
位时代。
这里会有一个疑问 ,Intel
去哪里了,为什么没有率先做 64
位的?其实 intel
做了,为了不让其他厂商模仿,申请了很多专利,与惠普联合设计了全新的架构 IA-64
,但最大的问题就是它与之前的 x86
不兼容,且市场反应较冷淡,然后就凉凉了。
苹果公司和 RPM
包管理员以 x86-64
或 x86_64
称呼此 64
位架构。甲骨文公司及 Microsoft
称之为x64
。BSD
家族及其他 Linux
发行版则使用 amd64
,32
位版本则称为i386
(或 i486/586/686
),Arch Linux
用x86_64
称呼此 64
位架构。
现在 x86
架构的CPU
的话基本上就是 Intel
和 AMD
两家公司了。
arm 架构发展
arm
架构的话就是 ARM
公司的,这家公司不生产芯片,而是以授权的方式盈利。具体发展可以参考 这里 和 这里 。从诺基亚到苹果手机、安卓手机,奠定了其在智能手机市场的霸主地位。16
年的时候 ARM
公司被日本软银收购了。
现在常听到的高通骁龙系列就是 arm
架构。
软件安装
有时候在 github
上下载安装包的时候需要选择自己 CPU
的架构情况了。会提供不同操作系统的三种架构, x86
的 32
位架构和 64
位架构,以及 arm
架构。
我的 CPU 的话是 intel
的酷睿 i5
,架构的话现在基本上是 x64
,或者说是 amd64
了。
linux
中使用命令 uname -a
可以查看 CPU
的架构。
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 指令集架构目前主要是两大类。
复杂指令集是 x86
、x64(也叫 x86-64, amd64)
两种架构,专利在 Intel
和 AMD
两家公司手里, 该架构 CPU
主要是 Intel
和 AMD
两家公司,这种 CPU
常用在 PC
机上,包括 Windows
,macOS
和 Linux
。
简单指令集是 arm
一种架构,专利在 ARM
公司手里,该架构 CPU
主要有高通、三星、苹果、华为海思、联发科等公司。这种 CPU
常用在手机上,包括安卓和苹果。
再多说一句,之前也写过 linux 发展的一些历史,就和操作系统一样,我们能设计出一个全新的操作系统,但是各种软件都需要在新的系统上重新开发,软件商愿不愿意就不一定了。
同样的,我们也能设计出一个新的指令集架构,但是还是生态的问题,现在安卓、苹果的操作系统都是在 arm
架构上的,所以你的新指令集架构还需要安卓再适配一个新的操作系统,安卓不愿意的话,你可以自己出一个新的操作系统,但又回到了最初的问题,各种软件也需要重写。
如果兼容之前的指令集架构或者操作系统的话,那可能就绕不开各种专利的问题了。
所以现在各种公司利益都是紧密相连的,合作才能共赢。