x86-64( 又称x64,即英文词64-bit extended,64位拓展 的简写)是
x86架构的
64位拓展,向后兼容于16位及
32位的x86架构。x64于1999年由
AMD设计,AMD首次公开64位集以扩展给x86,称为“AMD64”。其后也为
英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“Clackamas Technology” (CT)、“IA-32e”及“EM64T”。
架构简介
x86-64( 又称x64,即英文词64-bit extended,64位拓展 的简写)是
x86架构的
64位拓展,向后兼容于16位及
32位的x86架构。x64于1999年由
AMD设计,AMD首次公开64位集以扩展给x86,称为“AMD64”。其后也为
英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“Clackamas Technology” (CT)、“IA-32e”及“EM64T”。
苹果公司和
RPM包管理员以“x86-64”或“x86_64”称呼此64位架构。
甲骨文公司及
Microsoft称之为“x64”。
BSD家族及其他Linux发行版则使用“x64-64”,32位版本则称为“i386”(或 i486/586/686),
Arch Linux用x86_64称呼此64位架构。
AMD64
架构特色
在x86-64出现以前,英特尔与
惠普联合设计出
IA-64架构;惟IA-64并不与x86兼容,且市场反应较冷淡,同时受制于多个
专利权,使其他厂商不能模仿。与x86兼容的AMD64架构便应运而生,其主要特点如名称所述,既有支持64位通用
寄存器、64位整数及逻辑运算、以及64位
虚拟地址,设计人员又为架构作出不少改进,部分重大改变如下:
市场分析
AMD64代表AMD放弃了跟随Intel标准的一贯作风,选择了像把16位的
Intel 8086扩展成32位的
80386般,去把
x86架构扩展成64位版本,且兼容原有标准。
AMD64架构在
IA-32上新增了64位寄存器,并兼容早期的16位和32位软件,可使现有以x86为对象的
编译器容易转为AMD64版本。除此之外,NX bit也是引人注目的特色之一。
不少人认为,像
DEC Alpha般的64位
RISC芯片,最终会取代现有过时及多变的
x86架构。但事实上,为x86系统而设的应用软件实在太庞大,成为Alpha不能取代x86的主要原因,AMD64能有效地把
x86架构移至64位的环境,并且能兼容原有的x86应用程序。
Intel 64
发展历程
Intel 64计划的历史可谓相当长及复杂,其原因主要是因为Intel自身的内政问题。该计划开始时,其代号为“Yamhill”,不过Intel一直对外宣称其计划不存在;至2004年初,Intel才改口承认,并把代号改为CT(Clackamas Technology)。在宣布CT计划的数个星期内,Intel为计划给予多个新名称。在2004年春季的Intel开发者论坛后,Intel将之命名为“IA-32E”,意即
IA-32的延伸;在数星期后,才改称为EM64T。
Intel曾长时间把该计划保持机密,其原因有以下两点。第一,Intel不想给客户混淆信息,把未来Itanium
IA-64处理器的展望与x86混为一谈;但在Intel眼见使用AMD64的Opteron及Athlon 64获取成功,便需要对竞争者的威胁作出迎击。而第二个原因,是Intel为了自身的面子,必然不会承认使用了对手AMD的技术,因此Intel把该技术以EM64T这个名字来推出,虽然核心与AMD64几乎相同,犹如一对孪生兄弟,但如果Intel使用了AMD64这名字,等于在帮对手做广告宣传。在以往Intel的营销中,Intel总把AMD的产品贬为自家技术的
仿制品;不过这回AMD率先开发民用64位技术,Intel需要反过来吸纳AMD的技术,使Intel在研发x86处理器技术的领导地位受到重挫,因此Intel在造势方面便需要使用更多的人力物力。Intel主席Craig Barrett之后也承认,在
保密方面,这个机密算是保护得最差的。
在Intel 64(EM64T)的文件中,对于其指令集的起源只字不提;因此有媒体为它起了“iAMD64”这个别名,讽刺Intel在迎击AMD的民用64位技术上,使用了AMD的技术,直接把AMD64吸纳过来,并以新名重新包装使用。后来Intel索性将此技术正式命名为Intel 64。
架构特色
Intel 64可使处理器直接访问超过4GB的存储器,容许运行更大的应用程序。而x86-64架构也加入了额外的寄存器及其他改良在指令集上。透过64位的存储器地址上限,其理论存储器大小上限达16,000,000TB(16EB),不过在初期的应用上并未能支持完整的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技术的处理器属于
Xeon型号,支持双处理器,其核心名称为Nocona。由于Xeon是直接建基于桌面型
Pentium 4的架构上,因此Pentium 4主板也可使用Intel 64,如使用
超线程(Hyper-Threading)等。不过Intel 64在初期的Prescott版本尚未激活,其原因大概是当时其尚未完善。在使用Prescott核心E0更新版本的Pentium 4处理器已可使用Intel 64,被称为Pentium 4 F。再者,E0更新版本加入了“禁止运行”比特,称为XD bit(eXecute Disable),相当于AMD64的NX bit。
系统支持
以下操作系统均支持长模式(long mode)的x86-64架构。
DOS
在
DOS环境下可透过DOS Extender(例如DOS4GW)来进入保护模式。
FreeBSD
FreeBSD在5.1正式版曾为x86-64作试验,至6.0正式版解决了在x86-64运行32位程序出现的一些问题,以及能支持不少驱动程序。
Linux
Linux在2.6版本的内核开始加入长模式,支持x86-64,能兼容32位程序及模拟32位系统,容许在32位的环境下,把程序编译为64位版本。
Mac OS X
Mac OS X 10.6
Snow Leopard开始提供64位
内核,并可以在部分处理器上打开64位内核。64位内核只支持64位的内核扩展,反之亦然;但对于普通应用程序,无论32位或64位内核均可以支持两种位宽的应用程序,但32位程序只能使用4GB的内存空间。
Mac OS X 10.5
Leopard在Intel与
PowerPC上提供对
Cocoa,
Quartz,
OpenGL与
X11的GUI程序的64位支持,并支持全部的命令行库和程序。但内核仍只有32位版本。
Mac OS X使用
通用二进制文件格式将32位和64位程序和库代码包装在同一文件中,在加载时自动选择最合适的版本。在Mac OS X 10.6中,内核和内核扩展也使用通用二进制格式以同时支持两种构架。
苹果公司于2018年4月起,在
macOS High Sierra操作系统内运行32位应用程序时,会提醒消息。并已在2018年6月的
WWDC上宣布
macOS Mojave将是最后一版支持32位应用程序的macOS。
MenuetOS
x86-64版本的
MenuetOS系统于2005年6月推出,虽然原有的32位版本Menuet以GPL授权,但x86-64版本则维持专属,并以
免费软件方式发布,以及提供部分组件的源代码。
NetBSD
x86-64版本的
NetBSD最早于2001年6月19日被提出,至2004年12月9日推出的NetBSD 2.0已能完全支持x86-64。
OpenBSD
OpenBSD自2004年5月1日推出的3.5版起,已支持x86-64。
Solaris
昇阳的
Solaris自版本10开始已支持x86-64。
Windows
称谓惯例
由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD对这种CPU架构的原始称呼——“x86-64”被不时地使用,还有变体“x86_64”。其他公司如
微软和太阳微系统在营销资料中使用“x64”作为对“x86-64”的缩写。
许多操作系统及产品,尤其那些是在Intel进入这块市场之前就引入“x86-64”支持的,使用“AMD64”或“amd64”同时指代AMD64和Intel64。
应用产品
以下处理器产品使用了x86-64技术,截至2018年9月,几乎等同于市场上所有消费级产品皆使用x86-64技术。
Intel Core微处理器架构