複製鏈接
請複製以下鏈接發送給好友

X86-64

鎖定
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位架構。
中文名
X86-64
外文名
X86-64
支    持
64位
兼    容
X86指令集
推出公司
AMD
簡    稱
X64

X86-64架構簡介

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位架構。

X86-64AMD64

AMD64指令集被應用在Athlon 64、Athlon 64 FX、Athlon 64 X2Turion 64Turion 64 X2Opteron及較新款的SempronPhenomAMD APUAMD Ryzen等處理器上。

X86-64架構特色

在x86-64出現以前,英特爾與惠普聯合設計出IA-64架構;惟IA-64並不與x86兼容,且市場反應較冷淡,同時受制於多個專利權,使其他廠商不能模仿。與x86兼容的AMD64架構便應運而生,其主要特點如名稱所述,既有支持64位通用寄存器、64位整數及邏輯運算、以及64位虛擬地址,設計人員又為架構作出不少改進,部分重大改變如下:
  • 新增寄存器
  • 地址闊度加長
  • SSE2SSE3指令
  • NX比特:AMD64其中一個特色是擁有“禁止運行”(No-Execute)的比特,可在一定程度上防止蠕蟲病毒緩存溢出的方式來進行攻擊。

X86-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應用程序。

X86-64Intel 64

Intel 64指令集被應用於Pentium 4、Pentium DPentium Extreme Edition、Celeron D、Xeon、Intel Core 2、Intel Core i3、Intel Core i5、Intel Core i7及Intel Core i9處理器上。

X86-64發展歷程

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

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

X86-64系統支持

以下操作系統均支持長模式(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.6Snow Leopard開始提供64位內核,並可以在部分處理器上打開64位內核。64位內核只支持64位的內核擴展,反之亦然;但對於普通應用程序,無論32位或64位內核均可以支持兩種位寬的應用程序,但32位程序只能使用4GB的內存空間。
Mac OS X 10.5Leopard在Intel與PowerPC上提供對Cocoa,Quartz,OpenGLX11的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
供客户端使用的Windows XP Professional x64 Edition以及供服務器使用的Windows Server 2003 SP1 x64 Edition均已於2005年3月推出。Windows VistaWindows Server 2008Windows Server 2012Windows Server 2012 R2Windows Server 2016Windows Server 2019Windows 7Windows 8Windows 8.1以及Windows 10均有對應的64位版本。從Windows Server 2008 R2開始的Windows Server操作系統只提供64位版本。

X86-64稱謂慣例

由於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應用產品

以下處理器產品使用了x86-64技術,截至2018年9月,幾乎等同於市場上所有消費級產品皆使用x86-64技術。
參考資料
  • 1.    "Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A: System Programming Guide, Part 1" (PDF). pp. 4–10. Retrieved May 29, 2010.