X86-64

x86-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」，Arch Linux及其衍生發行版用x86_64稱呼此64位元架構。AMD64.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.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。在宣佈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主席之後也承認，在保密方面，這個機密算是保護得最差的。在Intel 64的檔案中，對於其指令集的起源隻字不提；因此有媒體為它起了「iAMD64」這個別名，諷刺Intel在迎擊AMD的民用64位元技術上，使用了AMD的技術，直接把AMD64吸納過來，並以新名重新包裝使用。後來Intel索性將此技術正式命名為Intel 64。架構特色.Intel 64可使處理器直接存取超過4GB的記憶體，容許執行更大的應用程式。而x86-64架構也加入了額外的暫存器及其他改良在指令集上。透過64位的記憶體位址上限，其理論記憶體大小上限達16,777,216TB，不過在初期的應用上並未能支援完整的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，如使用超執行緒，相當於AMD64的NX bit。VIA x86-64.VIA在Centaur研發部門五年的研發後，釋出了其第一款x86-64改進架構，微架構研發代號"Isaiah", 而64位微架構於2008年1月24日首次展示，並在5月29日以VIA Nano品牌釋出產品。該處理器支援一類VIA專為提高低功率應用情景下的效率而研發的x86擴充套件指令集。Isaiah微架構預計與前一代架構Esther相比，同時鍾頻率下，在整數運算表現上會有兩倍提效能提升升， 浮點運算上會有四倍效能提升。而在功耗上，處理器 TDP設定為5 W到 25 W。此外，對於前代產品 VIA C7系列尚不支援的x86虛擬化技術,該架構也作了支援，同時也保留了加密擴充套件。虛擬地址空間的細節.儘管虛擬地址有64位的寬度，但-{zh-cn:目前; zh-hans:當前; zh-tw:目前}-的實現機制，否則處理器將會報告一個異常。符合這一規則的地址被稱作“傳統格式”。傳統格式將從0至00007FFF`FFFFFFFF，以及從FFFF8000`00000000至FFFFFFFF`FFFFFFFF總計256TB的地址範圍作為可以使用的虛擬地址空間。這種“古怪”的規則為日後擴充套件到真正的64位定址保留了一個重要的特性：很多的-{zh-hans:作業系統; zh-tw:作業系統}-留給應用程式程式碼、使用者態棧、堆和其他資料區。這種“傳統地址”的設計保證了每一個符合AMD64的實現都擁有兩個記憶體片段：低半段從00000000`00000000開始，隨著更多的虛擬地址位元變得可用而“向上生長”；高半部分被“懸掛”在地址空間的頂部而“向下生長”。同樣，將未被使用的地址位元內容固定下來防止被-{zh-hans:作業系統; zh-tw:作業系統}-用作標誌位、特權級標號等其他用途，是為了避免當架構擴充套件至52, 56, 60和64位的時候出現問題。64位定址模式的實現。作業系統支援.以下作業系統均支援長模式的x86-64架構。DOS.在DOS環境下可透過DOS Extender來進入保護模式。FreeBSD.FreeBSD在5.1正式版曾為x86-64作試驗，至6.0正式版解決了在x86-64執行32位程式出現的一些問題，以及能支援不少驅動程式。Linux.Linux在2.6版本的核心開始加入長模式，支援x86-64，能相容32位程式及模擬32位系統，容許在32位的環境下，把程式編譯為64位版本。macOS.Mac OS X 10.6 "Snow Leopard"開始提供64位核心，並可以在部分處理器上開啟64位核心。64位核心只支援64位的核心擴充套件，反之亦然；但對於普通應用程式，無論32位或64位核心均可以支援兩種位寬的應用程式，但32位程式只能使用4GB的記憶體空間 。Mac OS X 10.5 "Leopard"在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。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 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位版本，從Windows 11開始的面向消費者的Windows作業系統只提供64位版本。業界稱謂慣例.由於AMD64和Intel64基本上一致，很多軟硬體產品都使用一種不傾向任何一方的詞彙來表明它們對兩種架構的同時相容。出於這個目的，AMD對這種CPU架構的原始稱呼——“x86-64”被不時地使用，還有變體“x86_64”。其他公司如微軟和昇陽電腦在營銷資料中使用“x64”作為對“x86-64”的縮寫。許多作業系統及產品，尤其那些是在Intel進入這塊市場之前就引入“x86-64”支援的，使用“AMD64”或“amd64”同時指代AMD64和Intel64。應用產品.以下處理器產品使用了x86-64技術，截至2018年9月，幾乎等同於市場上所有消費級產品皆使用x86-64技術。