概述

架构

指令集

原因

X86

32位

英特尔出的处理习惯以86为结尾,如80186、80286、80386,所以之后被称之为 X86

AMD64

64位

32位向64位演进时,AMD 抢先制造出了兼容 X86 32位指令集的 64位处理器

X86-64

64位

因特尔设计 IA-64,比amd晚了一步,且不兼容 X86 32位指令集,比较惨淡因此后续因特尔也采用AMD64,但在此基础上进行了扩充,并改名为 X86-64所以 x86_64,x64,AMD64基本上是同一个东西现在用的intel/amd的桌面级CPU基本上都是x86_64

ARM

适用于移动通信这种低成本、高性能、低耗电的领域

ARM-V8

AArch64:64位执行状态AArch32:32位执行状态

有两种执行态,适用于 32位和64位

AArch64

64位

从 ARM-V8 中独立出来

一 x86与非x86

按照CPU体系架构,服务器主要分为两类:

非x86服务器:使用RISC(精简指令集)或EPIC(并行指令代码)处理器,并且主要采用UNIX和其他专用操作系统的服务器,指令系统相对简单,它只要求硬件执行有限且常用的部分指令,CPU主要有Compaq的Alpha、HP的PA-RISC、IBM的Power PC、MIPS的MIPS和SUN的Sparc,Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统。
x86服务器:又称CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机的体系结构,使用Intel或其他兼容x86指令集的处理芯片的服务器。目前主要为Interl的E3、E5系列,价格相对便宜,兼容性好,稳定性较差,安全性不算太高。

二 x86与x86_64

x86是指Intek的开发的一种32位指令集,从386时代开始,一直沿用至今,是一种cisc指令集,所有Intel早期的cpu,以及amd早期的cpu都支持这种指令集,在Intel官方文档中称之为(IA-32)。

x86_64是x86 CPU开始迈向64位时面临两种选择:

向下兼容x86
完全重新设计指令集,不兼容x86
AMD先Intel制造出兼容x86的商用CPU,AMD称之为AMD64,且得到用户的认同。

Intel选择设计了一种不兼容x86的全新64位指令集,称之为IA-64(这个就是前面所说的安腾)。由于较AMD晚,同时由于是全新设计的CPU,没有编译器、不支持Windows后来不得不在时机落后的情况下也开始支持AMD64指令集。换了个名字叫x86_64。表示x86指令集的64扩展。

实际上,x86_64、x64、AMD64基本上是同一个东西,我们现在用的Intel/amd的桌面级CPU都是x86_64,与之相对的arm、ppc等都不是x86_64。

x86、x86_64主要区别就是32位和64位的问题,x86中只有8个32位通用寄存器:

eax
ebx
ecx
edx
ebp
esp
esi
edi
x86_64把这8个通用寄存器扩展成了64位的,并且比x86增加了若干个寄存器(好像是增加了8个,具体数量有待考证),同样的MMX的寄存器的位数和数量也进行了扩展。此外cpu扩展到64位后,也能支持更多的内存以及其他的种种好处。

对于普通程序来说,CPU位数的扩展,寄存器数量的增加不会带来明显的性能提升,比如IE浏览器、Office办公软件这些。特定的程序才能够充分利用64位的CPU、以及更多寄存器带来的优势。比如MMX除了提升多媒体程序的性能,对矩阵、多项式、向量计算也能带来提升,更多的MMX寄存器、更大的寄存器都有利于SIMD指令的执行,能够提升CPU对数据的吞吐量(RISC指令集的CPU通常数百例,可以有效的缓存中间计算结果,不需要把中间结果写入内存,从而减少内存的访问次数。显著提升性能)

三 x86

x86架构(The x86 architecture)是微处理器执行的计算机语言指令集,指一个Intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。

1978年6月8日,Intel发布新款16位微处理器“8086”,x86架构诞生。

四 AMD64、x86-64

x86-64有时会简称为x64,是64位微处理器机构及其相应指令集的一种,也是Intel x86架构的延伸产品。

x86-64是1999年由AMD设计,该64位集主要用于扩充IA-32,成为x86-64,后来改为AMD64。AMD64架构在IA-32基上新增64位寄存器,兼容早期的16位和32位软件,可使现有的以x86为对象的编译器转换为AMD64版本。

由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇表达对两种架构的兼容。出于这个目的AMD对这种CPU架构的原始成为由x86_64变体为x86_64。其他公司也使用x64代表x86-64的缩写。

许多操作系统及产品,尤其是那些在Intel进入这块市场之前就引入x86-64支持的,使用amd64同时指代amd64和intel64。

现在的x86CPU在位数上由32/64bit之分,在ARCH上又有x86/x86_64/x64/i386/IA32/IA64/amd64

简单可按照下述理解:

x86=i386=IA32
amd64=x86_64=x64
64bit的CPU都做了向下兼容32bit的特殊设计,所以在64bit CPU上运行32bit的软件(kernel、app、driver)是没有问题的。反之则不行。