在 Linux
系统中,软件包经常分为 i386
和 AMD64
两种架构, AMD64
很容易理解,这个总所皆知,我们电脑都是 64
位的,因为 64
位处理器是 AMD
发明的,所以冠以 AMD64
的名号。
提示
到目前为止,大家的电脑处理器大部分都是 Intel
的,也是 64
位的,可能有人感觉 64
位是 Intel
发明的,这是不对的。或者有人可能感觉,我的电脑是 Intel
的处理器,能用 AMD64
架构的软件吗?当然可以了, Intel
的 64
位授权可是从 AMD
哪里拿到的哦! Intel
自己的 64
位技术很落后,已经被淘汰了。
i386=Intel 80386
。其实 i386
通常被用来作为对 Intel(英特尔)32位微处理器
的统称。
AMD64
,又称 x86-64
或 x64
,是一种 64位元
的电脑处理器架构。它是建基于现有 32位元
的 x86
架构,由 AMD
公司所开发。
提示
以下内容太干燥了,看看得了
x86
架构首度出现在 1978
年推出的 Intel 8086
中央处理器,它是从 Intel 8008
处理器中发展而来的,而 8008
则是发展自 Intel 4004
的。 Intel
之后又推出了包括 80186
、 80286
、 80386
以及 80486
。 在设计上,这些后续的处理器使用的指令集都是在 8086
的基础上添加新支持的指令进行改进的,因此可以说都是向下兼容的,即能再 8086
上运行的程序在 80486
上也一定能运行。由于都是以 86
结尾(不过 8088
也是 x86
),所以把这一系列的指令 集 称之为 x86
指令集(架构)。准确的来讲, x86
这一术语并不是指的某一个(具体CPU使用的)具体的指令集,而是在 8086
(的指令集)基础上发展而来 的所有指令集的泛称。
实际上,在 80486
以后 Intel
推出的绝大多数 CPU
都是 x86
的,包括 Pentium
、 Pentium Pro
、 Pentium MMX
, Pentium 2
,还有后面的 Pentium 3
、 Pentium 4
、 Pentium D
、 Core 全系列
, (x86系列的) Xeon
。另外,使用 x86
架构的处理器制造商远非 Intel
一家,最著名的就是 AMD
,其他的还有 VIA
, Cyrix
。可以说, x86
架构就是 桌面级CPU
的标准,你能买到的品牌或者组装的PC,几乎没有不是 x86 CPU
的。不过虽说都是 x86
的,但只能说明使用的指令集是兼容 8086
的,除 8086
指令集之外的其他指令支持情况就不一样;其内部实现的微体系结构 microarchitecture
显然也是各自不同,就好比 Linux
和 Unix
虽然都是 POSIX
兼容的 OS
,都有 fork
这个系统调用,但是这个调 用的实现确实各不相同。
从 1985
年 80386
开始, intel
通过对 x86
架构进行 32位
的扩展,实现了 32位CPU
,而之前的都是 16位
。 Intel
把支持 32位
的 x86
指令集架构命名为 ia-32
(Intel Architecture 32bit)。实际上由于 32
位 x86
处理器的统治性,术语 x86
几乎等于 IA-32
,即 32
位的 x86
或 x86-32
,例如 Windows
和 Linux
发行版的 32
位命名都是 x86
(而不是 x86-32
或 ia-32
)。后来的 x86-64
名称也继续强化了这种约定方式。这里还是要强调 x86
是一系列架构的泛称,支持 16
位、 32
位和 64
位的指令都有。
该来的还是会来,在 1999
年, AMD
宣布了 x86-64
架构。其实 现方式与之前的 80386
思路一致,继续对 IA-32
扩展,增加 64
位通用寄存器、证书预算单元和逻辑操作,支持 64
位虚地址;向前兼容 ia-32
。 2003
年第一款 x86-64
处理器发布, AMD Operon
。同时 AMD
也将 x86-64
正式命名为 AMD64
。这 下Intel
彻底 2B
了(原因后面说),以前都是 AMD
小弟追随者 Intel
大哥的脚步,如今 AMD
先实现了 64
位民用桌面级 CPU
。其实 Intel
也有其 64
位计划,在 2004
年的 IDF
上, Intel
承认其 64
位计划,命名为 ia-32e
,即 ia-32 extension
,之后又改成 EM64T
, Extended Memory 64 Technology
,最终命名为 Intel64
。 实际上 EM64T
与 AMD64
几乎相同。早期 EM64T
不兼容 AMD64
的少量指令,但是由于 AMD
在 64
位技术中的领先地位, Intel2005
年不得 不宣布将完全兼容 AMD64
。
所以现在装的 64
位版本操作系统从没有说是面向 Intel
还是 AMD
的。不过在称谓上,大多数厂商还是使用 x86-64
( x86_64
,或者就是 x64
)来称呼此架构,从而保持中立。
i386
和 i486
作为 Intel 80386
和 80486
处理器的别名是比较显然的。由于不能使用数字作为注册商标,而且也需要一个正式的名称命名,从 586
开始就变为 Pentium
了, 这时候 i586
就作为了最原始 Pentium
的微处理架构 “P5”
的别名,同样的 i686
对 P6
( Pentium Pro
使用), i786
对应 P68
,或 NetBurst
架构。 在我看来,在软件包的命名上使用 “i某86”
时应该是说适用于使用这一代微架构的 CPU
。但微架构是硬件上事,因此还是在说明适用对应 CPU
使用的指令集。比如, i386
对应 IA-32
,并且由于兼容性肯定适用于 i486~i686
; i686
不仅适用 Pentium Pro
,也适用 K7
架构的 Athlon
。
前文提到 Intel
在 AMD
推出民用 64
位技术后很被动。其实 Intel
也有 64
位 x86 CPU
的计划,但是由于对于这个市场的不重视,认为需求不足,一直不见面世。而在对 64
位需求更加强劲的企业服务器和高性能计算市场上, 1994
年 HP
就 和 Intel
合作开始开发一款与 x86
架构完全没关系的全新的 IA-64
架构。显然 IA-64
不兼容 x86-64
更别说 IA32
, IA64
天生就是 64
位,基于显式并行指令运算( EPIC
)。 2001
年第一款 IA-64
架构的处理器 Itanium
安腾发布。可见, IA-64
跟 IA-32
在实现上没有什么关系,跟 x86-64
也是完全并行的两种 架构, x86
架构的 Intel
的 Xeon
就是 Intel Itanium
的竞争对手之一。后来 Intel
把 IA-64
也干脆改称为 Intel Itanium
架构。