x86-64

✍ dations ◷ 2024-09-20 08:05:03 #X86架构,微处理器,电脑架构

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发行版则使用“amd64”,32位版本则称为“i386”(或 i486/586/686),Arch Linux用x86_64称呼此64位架构。

AMD64指令集被应用在Athlon 64、Athlon 64 FX、Athlon 64 X2、Turion 64、Turion 64 X2、Opteron、Sempron、Phenom、Athlon II、Phenom II、AMD APU、AMD FX、AMD Ryzen、AMD Epyc等处理器上。

在x86-64出现以前,英特尔与惠普联合设计出IA-64架构;惟IA-64并不与x86兼容,且市场反应较冷淡,同时受制于多个专利权,使其他厂商不能模仿,规模没有很大。与x86兼容的AMD64架构便应运而生,其主要特点如名称所述,既有支持64位通用寄存器、64位整数及逻辑运算、以及64位虚拟地址,设计人员又为架构作出不少改进,部分重大改变如下:

AMD64代表AMD放弃了跟随Intel标准的一贯作风,选择了像把16位的Intel 8086扩展成32位的80386般,去把x86架构扩展成64位版本,且兼容原有标准,没想到比Intel自己发表的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指令集被应用于Pentium 4、Pentium D、Pentium Extreme Edition、Celeron、Xeon、Pentium Dual-Core、Intel Core 2、Intel Core i3、Intel Core i5、Intel Core i7及Intel Core i9处理器上。

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(英语:Craig Barrett (chief executive))之后也承认,在保密方面,这个机密算是保护得最差的。

在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。

VIA在 Centaur研发部门五年的研发后,发布了其第一款x86-64改进架构,,微架构研发代号"Isaiah", 而64位微架构于2008年一月24日首次展示,并在5月29日以VIA Nano品牌发布产品。

该处理器支持一类VIA专为提高低功率应用情景下的效率而研发的x86扩展指令集。Isaiah微架构预计与前一代架构Esther相比,同时钟频率下,在整数运算表现上会有两倍提性能提升升, 浮点运算上会有四倍性能提升。而在功耗上,处理器 TDP设置为5 W到 25 W。此外,对于前代产品 VIA C7系列尚不支持的x86虚拟化技术,该架构也作了支持,同时也保留了加密扩展。


尽管虚拟地址有64位的宽度,但目前的实现机制(以及任何已知处在计划阶段的芯片)并不允许整个16EB的虚拟地址空间都被使用。大多数的操作系统和应用程序在可见的未来都用不到如此巨大的地址空间(比如,Windows在AMD64上的实现仅应用了256TB,即48位的宽度),所以实现如此巨大的地址宽度只会增加系统的复杂度和地址转换的成本,带不来任何好处。AMD因此决定,在对这一架构的首次实现中,只有虚拟地址的最低48位才会在地址转换(页表查询)时被使用。但是,任何虚拟地址的48位至63位必须与47位一致(按照符号位扩展的方式),否则处理器将会报告一个异常。符合这一规则的地址被称作“传统格式”。传统格式将从0至00007FFF`FFFFFFFF,以及从FFFF8000`00000000至FFFFFFFF`FFFFFFFF总计256TB的地址范围作为可以使用的虚拟地址空间。

这种“古怪”的规则为日后扩展到真正的64位寻址保留了一个重要的特性:很多的操作系统(包括但不限于Windows NT系列)将地址空间的高半部分(被称作内核空间)留给自己,将低半部分(用户空间)留给应用程序代码、用户态栈、堆和其他数据区。这种“传统地址”的设计保证了每一个符合AMD64的实现都拥有两个内存片段:低半段从00000000`00000000开始,随着更多的虚拟地址比特变得可用而“向上生长”;高半部分被“悬挂”在地址空间的顶部而“向下生长”。同样,将未被使用的地址比特内容固定下来防止被操作系统用作标志位、特权级标号等其他用途,是为了避免当架构扩展至52, 56, 60和64位的时候出现问题。

开始提供64位内核,并可以在部分处理器上打开64位内核。64位内核只支持64位的内核扩展,反之亦然;但对于普通应用程序,无论32位或64位内核均可以支持两种位宽的应用程序,但32位程序只能使用4GB的内存空间 。

Mac OS X 10.5 在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。

x86-64版本的MenuetOS系统于2005年6月推出,虽然原有的32位版本Menuet以GPL授权,但x86-64版本则维持专属,并以免费软件方式发布,以及提供部分组件的源代码。

x86-64版本的NetBSD最早于2001年6月19日被提出,至2004年12月9日推出的NetBSD 2.0已能完全支持x86-64。

OpenBSD自2004年5月1日推出的3.5版起,已支持x86-64。

昇阳的Solaris自版本10开始已支持x86-64。

供客户端使用的Windows XP Professional x64 Edition以及供服务器使用的Windows Server 2003 x64 Edition均已于2005年3月推出。Windows Vista、Windows Server 2008、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019、Windows 7、Windows 8、Windows 8.1以及Windows 10均有对应的64位版本。从Windows Server 2008 R2开始的Windows Server操作系统只提供64位版本。

由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD对这种CPU架构的原始称呼——“x86-64”被不时地使用,还有变体“x86_64”。其他公司如微软和Sun微系统在营销资料中使用“x64”作为对“x86-64”的缩写。

许多操作系统及产品,尤其那些是在Intel进入这块市场之前就引入“x86-64”支持的,使用“AMD64”或“amd64”同时指代AMD64和Intel64。

以下处理器产品使用了x86-64技术,截至2018年9月,几乎等同于市场上所有消费级产品皆使用x86-64技术。

相关

  • 联合国环境署联合国环境署,又称为联合国环境规划署(英语:United Nations Environment Programme, UNEP;或 UN Environment),是联合国专责环境规划的常设部门。它的任务在于协调联合国的环境计
  • 库内内省库内内省(葡语:Cunene),位于安哥拉南部,与库安多古班哥省、威拉省、纳米贝省等省份及纳米比亚相邻。
  • 悲观主义悲观主义是一种哲学思想。有几种意义:值得注意的是,悲观主义未必会和积极的态度起冲突。
  • 怀孕分级怀孕分级(英语:Pregnancy category)是药物学中用来评估女性在怀孕期间服用药物对胎儿可能造成伤害的危险程度,但是在母乳中出现药物或是出现药物代谢物所可能造成的伤害则不包括
  • 台1线台1线,又称纵贯公路、西部干线,是台湾西部一条南北向的省道,自清代就是纵贯南北的交通要道。北起台北市忠孝西路、中山南路口(行政院大门前,台湾公路原点和与台3线共线起点,台1甲
  • 兵器武器是在暴力冲突中用来增加攻击效果的工具,武器被大量使用的暴力冲突也通常被称为武装冲突。武器一般会用来伤害或攻击其他人或设施,当被有效利用时一般会遵循“期望效果最大
  • 努特努特(Nut,也作Nuit)是埃及神话中的夜空或者星星之神。相对于其他神话中常以男性形象出现的天神,努特是一位女神。新王国时期的墓室壁画内,天空女神努特被描绘成母牛形象。努特是
  • 符可以指:
  • 二条御所元离宫二条城(日语:にじょうじょう)是一座位于日本京都府京都市中京区二条城町的城堡,始建于江户时代初期庆长八年(1603年)。是江户幕府第一代征夷大将军德川家康作为守护京都御所
  • 哈马黑拉岛哈马黑拉岛(Halmahera Island),又名济罗罗岛(Jilolo或Gilolo),是印度尼西亚马鲁古群岛主岛,属北马鲁古省管辖。全岛面积17,780平方公里,人口162,728人(1995年),八成居民为穆斯林,其余两