x86-64

<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } -->

x86-64

“x86-64”,有时会简称为“ x64”,是 64位微处理器架构及其相应指令集的一种,也是 Intel x86架构的延伸产品。“ x86-64”1999 AMD设计, AMD 首次公开 64 位集以扩充给 IA-32,称为 x86-64(后来改名为 AMD64)。 其后也为英特尔所采用,现时英特尔称之为“ Intel 64”,在之前曾使用过 Clackamas Technology (CT) IA-32e EM64T。外界多使用 "x86-64" "x64" 去称呼此 64位架构,从而保持中立,不偏袒任何厂商。

目录

* 1 AMD64

o 1.1 架构特色

o 1.2 市场分析

* 2 Intel 64

o 2.1 概要

o 2.2 架构特色

* 3 虚拟地址空间的细节

* 4 运行模式

* 5 系统支持

o 5.1 DOS

o 5.2 FreeBSD

o 5.3 Linux

o 5.4 Mac OS X

o 5.5 MenuetOS

o 5.6 NetBSD

o 5.7 OpenBSD

o 5.8 Solaris

o 5.9 Windows

* 6 业界称谓惯例

* 7 应用产品

* 8 参见

AMD64

AMD64指令集被应用在 Athlon 64 Athlon 64 FX Athlon 64 X2 Turion 64 Turion 64 X2 Opteron及较新款的 Sempron Phenom处理器上。

架构特色

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

* 新增寄存器

* 地址阔度加长

* SSE2 SSE3指令

* “禁止运行”位 (NX-bit): AMD64其中一个特色是拥有“禁止运行”( No-Execute, NX)的位,可以防止蠕虫病毒以缓冲器满溢的方式来进行攻击(也称:缓存溢出攻击, Buffer Overflow)。

市场分析

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 4 Pentium D Pentium Extreme Edition Celeron D Xeon Intel Core 2 Intel Core i7处理器上。

概要

Intel 64计划的历史可谓相当长及复杂,其原因主要是因为 Intel自身的内政问题。该计划开始时,其代号为 Yamhill,不过 Intel一直对外宣称其计划不存在,至 2004年初才改口承认,并把代号改为 CT Clackamas Technology)。在宣布 CT计划的数个星期内, Intel为计划给予多个新名称。在 2004年春季的 IDF开发者论坛后, 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

虚拟地址空间的细节

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

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

64位寻址模式(长模式),是物理地址扩展( PAE)的超集;因此,内存页大小可以是 4KB 2MB,或 1GB。但是,与系统在 PAE模式下使用的三级标签页表机制不同,长模式下系统使用四级标签页表: PAE 的页目录指针表的表项从 4个扩展到了 512个,而且附加了一个第四级页面映射表( Page-Map Level 4 Table PML4 Table),包含 512个采用 48位实现的表项。在提供更大虚拟地址的实现中,这个表既可以进行扩展来提供足够数量的表项(对于 64位实现来说理论值高达 33,554,432个)以描述整个地址空间,也可以再被一个更高层映射级所映射,像是 PML5。整个 48位地址空间的 4KB页面完整映射层级将会占据略多于 512GB的内存( 256TB虚拟地址空间的 0.196%)。

运行模式

运行模式 操作系统要求 已编译程序重新构建 默认地址长度(位) 默认操作码长度(位) 寄存器扩展 典型通用寄存器宽度(位)

长模式 64位模式 支持 64 需要 64 32 可用 64

兼容模式 不需要 32 32 不可用 32

16 16 16

传统模式 保护模式 传统 16位或 32 不需要 32 32 不可用 32

16 16 16

虚拟 8086模式 16 16 16

真实模式 传统 16

系统支持

以下操作系统均支持长模式( 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

Intel处理器使用的 Mac OS X系统,经破解后能辨认 x86-64处理器,早期的 x86-64处理器由于不支持 SSE3指令集,需安装有关补丁去模拟 SSE3

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

供客户端使用的 Windows XP Professional x64 Edition以及供服务器使用的 Windows Server 2003 SP1 x64 Edition均已于 2005 3月推出。 Windows Vista Windows Server 2008以及 Windows 7均有对应的 64位版本 .Windows Server 2008 R2将只提供 64位版本 .

业界称谓惯例

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

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

* BSD系统(如 FreeBSD NetBSD OpenBSD)和一些 Linux发行版(如 Debian Ubuntu、和 Gentoo)将 AMD64 Intel64都称作“ amd64”

* Fedora PackageKit 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”

应用产品

以下处理器产品使用了 x86-64技术。

* AMD K8 (AMD64)

o AMD Athlon 64

o AMD Athlon 64 X2

o AMD Athlon 64 FX

o AMD Opteron

o AMD Turion 64

o AMD Sempron(限使用 E6步进以后的 Palermo、全数 Manila型号和全数 Sparta型号)

o AMD Phenom

* Intel NetBurst (Intel 64)

o Xeon(自 "Nocona"起的部分型号)

o Celeron D(自 "Prescott"起的部分型号)

o Pentium 4(自 "Prescott"起的部分型号)

o Pentium D

o Pentium Extreme Edition

* Intel Core微处理器架构

o Xeon ("Woodcrest")

o Intel Core 2

o Intel Pentium Dual-Core

o Intel Celeron(自 "Core"起的型号)

* Intel Nehalem 微处理器架构

o Intel Core i7

o Intel Core i5

你可能感兴趣的:(设计模式,windows,应用服务器,FreeBSD,英特尔)