X86-64(AMD64)、IA64及其他指令架构

称谓惯例

由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD对这种CPU架构的原始称呼——“x86-64”被不时地使用,还有变体“x86_64”。其他公司如微软太阳微系统在营销资料中使用“x64”作为对“x86-64”的缩写。
许多操作系统及产品,尤其那些是在Intel进入这块市场之前就引入“x86-64”支持的,使用“AMD64”或“amd64”同时指代AMD64和Intel64。
  • BSD系统(如FreeBSDNetBSDOpenBSD)和一些Linux发行版(如DebianUbuntu、和Gentoo)将AMD64和Intel64都称作“amd64”。Red HatRPM将x86-64称为x86_64或x86-64,将32位的IA-32称为i*86(*为数字3-6,比如i386)。Arch Linux将x86-64称为x86_64。
  • FedoraPackageKit称64位架构为“x86_64”。
  • Java Development Kit(JDK):包含x86-64文件的目录命名为“amd64”。
  • Mac OS X:终端下的命令arch以及开发人员文档都表明苹果称64位架构为“x86_64”。
  • Microsoft Windows:称在IA-32处理器上使用64位技术为“x64”,但一些相关目录使用AMD64来标明。例如,Windows x64版安装CD上的系统目录命名为“AMD64”,而32位版本上用“i386”。
  • Solaris:操作系统的命令isalist将AMD64和Intel64都定义成“amd64”。 [1]
 
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

AMD64指令集被应用在Athlon 64Athlon 64 FXAthlon 64 X2Turion 64Turion 64 X2Opteron及较新款的SempronPhenomAMD APUAMD Ryzen等处理器上。

架构特色

在x86-64出现以前,英特尔与惠普联合设计出IA-64架构;惟IA-64并不与x86兼容,且市场反应较冷淡,同时受制于多个专利权,使其他厂商不能模仿。与x86兼容的AMD64架构便应运而生,其主要特点如名称所述,既有支持64位通用寄存器、64位整数及逻辑运算、以及64位虚拟地址,设计人员又为架构作出不少改进,部分重大改变如下:
  • 新增寄存器
  • 地址阔度加长
  • SSE2SSE3指令
  • NX比特:AMD64其中一个特色是拥有“禁止运行”(No-Execute)的比特,可在一定程度上防止蠕虫病毒缓存溢出的方式来进行攻击。

市场分析

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指令集被应用于Pentium 4Pentium DPentium Extreme EditionCeleron DXeonIntel Core 2Intel Core i3Intel Core i5Intel Core i7Intel Core i9处理器上。

发展历程

Intel 64计划的历史可谓相当长及复杂,其原因主要是因为Intel自身的内政问题。该计划开始时,其代号为“Yamhill”,不过Intel一直对外宣称其计划不存在;至2004年初,Intel才改口承认,并把代号改为CT(Clackamas Technology)。在宣布CT计划的数个星期内,Intel为计划给予多个新名称。在2004年春季的Intel开发者论坛后,Intel将之命名为“IA-32E”,意即IA-32的延伸;在数星期后,才改称为EM64T。
Intel曾长时间把该计划保持机密,其原因有以下两点。第一,Intel不想给客户混淆信息,把未来ItaniumIA-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。
posted @ 2024-06-20 09:11  HelloMarsMan  阅读(408)  评论(0)    收藏  举报