64位版本为什么叫amd64,而不是intel64
前言
今天有朋友问,为什么软件版本会注明 for amd64版本,不是intel64呢?
X86
X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。
1978年6月8日,Intel发布了新款16位微处理器“8086”,也同时开创了一个新时代:x86架构诞生了。
在40年的发展史中,x86家族不断壮大,从桌面转战笔记本、服务器、超级计算机、编写设备,期间还挫败或者限制了很多竞争对手的发展,让不少处理器厂商及其架构技术成为历史名字,即使有些封闭发展的也难以为继,比如苹果就已经放弃PowerPC了。
AMD64/x86-64
x86-64有时会简称为“x64”,是64位微处理器架构及其相应指令集的一种,也是Intel x86架构的延伸产品。“x86-64”1999由AMD设计,AMD 首次公开 64 位集以扩充给 IA-32,称为 x86-64(后来改名为 AMD64)。 AMD64架构在IA-32上新增了64位寄存器,并兼容早期的16位和32位软件,可使现有以x86为对象的编译器容易转为AMD64版本。
由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD对这种CPU架构的原始称呼 - “x86-64”被不时地使用,还有变体“x86_64”。其他公司如微软和Sun在营销资料中使用“x64”作为对“x86-64”的缩写。
许多操作系统及产品,尤其那些是在Intel进入这块市场之前就引入“x86-64”支持的,使用“AMD64”或“amd64”同时指代AMD64和Intel64。
EM64T
Intel的EM64T技术,EM64T技术官方全名是Extended Memory 64 Technology,中文解释就是扩展64bit内存技术。
EM64T本质上和AMD64一样都是IA-32的增强版本,Xeon借助于EM64T可实现高达1TB(40bit)的物理内存寻址和256TB(48bit)的虚拟内存寻址,并且良好地支持现有32位x86代码的执行,这一点跟AMD64无异,同时也是Intel开发EM64T的出发点—让现有的x86指令集能够执行64位代码,而继续保持对32位代码的良好兼容。
IA-64
Intel在之前已在Itanium处理器上使用了自家的64位IA-64技术,虽然说Intel 64也是64位,但两者并不兼容,即IA-64的软件不能直接在Intel 64上运行。Intel 64所用的x86-64是IA-32指令集的延伸,而IA-64则是另一款独立的架构,没有任何IA-32的影子。虽然IA-64可通过模拟来运行IA-32的指令,但指令在运行前需经转换,才能在IA-64上运行,导致其速度变慢。由于x86-64是从IA-32派生而来,因此运行IA-32与64位程序的表现也显得绰绰有余。
目前市场上Intel兼容处理器可以实现64位计算的主要有3种:
1) Intel IA64,基于安腾2处理器,不兼容32位应用,软件相对本模式的版本叫 xxx for Itanium 。
2) Intel EM64T,基于Xeon DP “Nocona”和MP处理器,兼容32位应用,软件相对本模式的版本叫 xxx for x86-64或者amd64。
3) AMD AMD64,基于Opteron处理器,兼容32位应用,软件相对本模式的版本叫 xxx for x86-64或者amd64。