x86、x86_64、x64、arm64、aarch64
1.服务器分类
按照 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
指令集的处理器芯片的服务器。目前主要为 Intel 的
Xeon E3
,
E5
,
E7
系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高。
2.CPU 架构
CPU 架构:
x86 架构
和
arm 架构
-
Intel(英特尔)与 AMD(超威半导体)是
x86
架构 CPU 制造商。
-
ARM 公司是
arm
架构 CPU 制造商。
2.1 x86 架构:x86、x86_64、x64
-
x86
和
x86_64
:基于
x86
架构的不同版本, 位数不同
32
32
32
位和
64
64
64
位
-
x86
版本是 Intel 率先研发出
x86
架构。
-
x86_64
版本(也称
x64
)是
x86
的
64
64
64
位版本,由 AMD 率先研发,所以
x86_64
也叫
amd64
。
-
x86_64
=
x64
=
amd64
2.2 arm 架构:arm64 和 aarch64
-
arm64
=
aarch64
-
arm
的历史遗留问题,
arm64
和
aarch
都曾代指过
64
64
64
位
arm
程序,目前
arm64
和
aarch64
概念已合并,新版
64
64
64
位
arm
程序统称
aarch64
。
3.发展历史
x86
是指 Intel 开发的一种
32
32
32
位指令集,从
386
386
386
开始时代开始的,一直沿用至今,是一种 CISC 指令集,所有 Intel 早期的 CPU,AMD 早期的 CPU 都支持这种指令集,Intel 官方文档里面称为
IA-32
。
x86
CPU 开始迈向
64
64
64
位的时候有
2
2
2
种选择:
-
向下兼容
x86
。
-
完全重新设计指令集,不兼容
x86
。
AMD 抢跑了,比 Intel 率先制造出了商用的兼容
x86
的 CPU,AMD 称之为
amd64
,抢了
64
64
64
位 PC 的第一桶金,得到了用户的认同。
Intel 选择了设计一种不兼容
x86
的全新
64
64
64
位指令集,称之为
IA-64
(这玩意似乎就是安腾),但是比 AMD 晚了一步,而且
IA-64
也挺惨淡的,因为是全新设计的 CPU,没有编译器,也不支持 Windows(微软把 Intel 给忽悠了,承诺了会出安腾版
windows server
版,但是迟迟拿不出东西)。后来不得不在时机落后的情况下也开始支持
amd64
的指令集,但是换了个名字,叫
x86_64
,表示是
x86
指令集的
64
64
64
扩展,大概是不愿意承认这玩意是 AMD 设计出来的。
实际上,
x86_64
、
x64
、
AMD64
基本上是同一个东西,我们现在用的 Intel / AMD 的桌面级 CPU 基本上都是
x86_64
,与之相对的
arm
、
ppc
等都不是
x86_64
。
x86
、
x86_64
主要的区别就是
32
32
32
位和
64
64
64
位的问题,
x86
中只有
8
8
8
个
32
32
32
位通用寄存器:
eax
、
ebx
、
ecx
、
edx
、
ebp
、
esp
、
esi
、
edi
。
x86_64
把这
8
8
8
个通用寄存器扩展成了
64
64
64
位的,并且比
x86
增加了若干个寄存器(好像增加了
8
8
8
个,变成了总共
16
16
16
个通用寄存器)。同样的 MMX(MultiMedia eXtensions,多媒体扩展)的寄存器的位数和数量也进行了扩展。此外 CPU 扩展到
64
64
64
位后也能支持更多的内存了,等等许多好处。
对于普通程序来说,CPU 位数的扩展、寄存器数量的增加不会带来明显的性能提升,比如 IE 浏览器、Office 办公这类的软件。特定的程序很能够充分利用
64
64
64
位 CPU、更多的寄存器带来的优势,比如 MMX 除了能提升多媒体程序的性能,对矩阵、多项式、向量计算都能带来提升,更多的 MMX 寄存器、更大的寄存器字长都有利于 SIMD 指令的执行,能够提升 CPU 对数据的吞吐量(RISC 指令集的 CPU 动不动就有数百个寄存器,可以有效的缓存中间计算结果,不需要把中间结果写入内存,从而减少内存访问次数,显著提升性能)。