x86-64

✍ dations ◷ 2024-12-23 05:49:53 #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技术。

相关

  • 麻醉药麻醉药(英语:anesthetic、或anaesthetic)是一种麻醉学所用的麻醉药品,可暂时、可逆性的使人丧失知觉。麻醉药分为两大类:全身麻醉药导致可逆的意识丧失;局部麻醉药导致身体的有限
  • 庆应义塾大学庆应义塾大学(日语:慶應義塾大学/けいおうぎじゅくだいがく Keiō Gijuku daigaku;英语译名:Keio University),简称庆应(けいおう)或庆大(けいだい),乃日本著名思想家福泽谕吉所创建的
  • 岛屿政治主题本文叙述中华人民共和国政府实际统治领域的岛屿。中华人民共和国共有500平方米以上的岛屿有6535个,总面积达3.7万平方千米,岛屿的海岸线总长达13217.8千米,其中有居民
  • 中央商务区悉尼中心商务区(英语:Sydney central business district,(CBD))是澳大利亚新南威尔士州首府悉尼的商业中心。悉尼中心商务区在很大程度上与悉尼的市中心悉尼城区(Sydney City)吻合,因
  • 二聚体二聚体(Dimer)或称双体、二聚物在不同领域中有不同意义,但基本涵义都表示相同或同一种类的物质,以成双的型态出现,可能具有单一状态时没有的性质或功能。化学上,凡是两个分子结合
  • 芦竹五福宫五福宫,旧称玄坛庙或元坛庙,俗称南崁五福宫、南崁元帅庙,位于台湾桃园市芦竹区五福里虎头山山麓,旧属桃涧堡南崁庙口庄。该庙主祀之玄坛元帅据传是由明郑士兵迎来,创建至今有三百
  • 道路运输道路运输,泛指一切使用道路的运输车辆。泛指利用道路,行驶使用橡胶车轮并且自备动力的车辆,循一定的路线、站点载运乘客前往目的地,并且由驾驶员以目视方式驾驶车辆中国大陆称呼
  • 葛维宝葛维宝(英语:Paul D. Gewirtz;1947年5月12日-)是耶鲁法学院波特·斯图尔特宪法学教席教授,耶鲁大学中国法律中心主任。葛维宝是他起的中文名字。葛维宝1967年毕业于哥伦比亚大学,获
  • 石坂洋次郎石坂 洋次郎(日语平假名:いしざか ようじろう,1900年1月25日-1986年10月7日),日本小说家,早期多创作纯文学作品,受现代主义影响,战后则多描写庶民百姓的生活,富有反叛精神。石坂洋次郎
  • 图尔曼菊石见内文图尔曼菊石(学名:)是生存在白垩纪初凡蓝今期海洋中的一属菊石。其化石被发现于欧洲、摩洛哥和美洲等地。图尔曼菊石和新康菊石的壳形及肋条都十分相似,但两者最大的不同处