64位

64位

在計算機架構中,64位整數、記憶體地址或其他數據單元,是指它們最高達到64位(8位元組)寬。此外,64位CPU和算術邏輯單元架構是以暫存器、記憶體匯流排或者數據匯流排的大小為基準。 64 位CPU在1960年代,便已存在於超級計算機,且早在1990年代,就有以 RISC 為基礎的工作站和伺服器。2003年才以 x86-64 和 64 位 PowerPC 處理器架構的形式引入到(在此之前是 32 位)個人計算機領域的主流。

基本信息

概述

一個 64 位的 CPU,內部可能有外部數據匯流排或不同大小的地址匯流排,可能比較大或比較小;術語“64位”也常用於描述這些匯流排的大小。例如,目前有許多機器有著使用 64 位匯流排的 32 位處理器(如最初的 Pentium 和之後的 CPU),因此有時會被稱作“64位”。同樣的,某些 16 位處理器(如 MC68000,摩托羅拉公司生產的一款16位處理器,因集成約68000個電晶體而得名)指的是 16/32 位處理器具有 16 位的匯流排,不過內部也有一些 32 位的性能。這一術語也可能指計算機指令集的指令長度,或其它的數據項(如常見的 64 位雙精度浮點數)。去掉進一步的條件,“64位”計算機架構一般具有 64 位寬的整數型暫存器,它可支持(內部和外部兩者) 64 位“區塊”(chunk)的整數型數據。

架構影響

處理器中的暫存器通常可分為三種︰整數、浮點數、其它。在所有常見的主流處理器中,只有整數暫存器(integer register)才可存放指針值(記憶體數據的地址)。非整數暫存器不能存放指針來讀寫記憶體,因此不能用來避開任何受到整數暫存器大小所影響的記憶體限制。

幾乎所有常見的主流處理器(大部分的 ARM 和 32 位 MIPS 實作是明顯的例外)集成了浮點數硬體,它有可能使用 64 位暫存器保存數據,以供處理。例如,x86 架構包含了 x87 浮點數指令,並使用 8 個 80 位暫存器構成堆疊結構。後來的 x86 修改版和 x86-64 架構,又加入 SSE 指令,它使用 8 個 128 位寬的暫存器(在 x86-64 中有 16 個暫存器)。與之相較,64 位 Alpha 系列處理器,除了 32 個 64 位寬整數暫存器以外,也定義了 32 個 64 位寬的浮點數暫存器。

記憶體限制

截至2005 年,大部分的 CPU,其單個暫存器可存放虛擬記憶體中任意數據的記憶體地址(本機)。因此,虛擬記憶體(計算機在程式的工作區域中所能保留的數據總量)中可用的地址取決於暫存器的寬度。自 1960 年的 IBM System/360 起,然後1970年的 DEC VAX微型計算機,以及1980年中期的 Intel 80386,在事實上一致開發合用的 32 位大小的暫存器。32 位暫存器意味著 2^32 的地址,或可使用 4 GB 的記憶體。當時在設計這些架構時,4 GB 的記憶體遠遠超過一般所安裝的可用量,而認為已足夠用於定址。認為 4 GB 地址為合適的大小,還有其它重要的理由︰在應用程式中,如資料庫,42 億多的整數已足夠對大部分可計算的實例分配唯一的參考引用。

然而在 1990年初,成本不斷降低的記憶體,使安裝的記憶體數量逼近 4 GB,且在處理某些類型的問題時,可以想像虛擬記憶體的使用空間將超過 4 GB 上限。為此,一些公司開始釋出新的 64 位架構晶片家族,最初是提供給超級計算機、頂級工作站和伺服器機器。64位運算逐漸流向個人計算機則出現在 2003 年,某些型號的 Apple Macintosh 生產線轉向 PowerPC 970 處理器(Apple 稱為“G5”),並在 2006 年,轉向 EM64T 處理器,且 x86-64 處理器在頂級的 PC 中遂漸普及。64 位架構的出現,有效的將記憶體上限提升至 2^64 地址,16 EB 的記憶體。從這個角度來看,在 4 MB 主記憶體很普遍時,最大的記憶體上限 2^32 的地址大約是一般安裝記憶體的 1000 倍。如今,當 16 GB 的主記憶體很普遍時,2^64 的地址上限大約是 10億倍。

今天市面上大部分的消費級 PC 存在著人為的記憶體限制,因受限於實例上的限制,而幾乎不太可能需要完整支持 16 EB 容量。舉例來說,Apple的 Mac Pro 最多可安裝實例記憶體至 16 GB,而無必要支持超過的大小。最新的Linux核心(版本 2.6.16)可編譯成最高支持 64 GB 的記憶體,Windows VistaUltimate支持超過128G記憶體。

32位比較

從32位到64位架構的改變是一個根本的改變,因為大多數作業系統必須進行全面性修改,以取得新架構的優點。其它軟體也必須進行移植,以使用新的性能;較舊的軟體一般可藉由硬體兼容模式(新的處理器支持較舊的 32 位版本指令集)或軟體模擬進行支持。或者直接在 64 位處理器裡面實作 32 位處理器核心(如同 Intel 的 Itanium 處理器,其內含有 x86 處理器核心,用來執行 32 位 x86 應用程式)。支持 64 位架構的作業系統,一般同時支持 32 位和 64 位的應用程式。

明顯的例外是 AS/400,其軟體執行在虛擬的指令集架構,稱為 TIMI(技術獨立機器界面),它會在執行之前,以低階軟體轉換成本地機器碼。低階軟體必須全部重寫,以搬移整個 OS 以及所有的軟體到新的平台。例如,當 IBM 轉移較舊的 32/48 位“IMPI”指令集到 64 位 PowerPC(IMPI 完全不像 32 位 PowerPC,所以這比從 32 位版本的指令集轉移到相同指令集的 64 位版本的規模還要龐大)。

64 位架構無疑可套用在需要處理大量數據的應用程式,如數碼視頻、科學運算、和早期的大型資料庫。在其它工作方面,其 32 位兼容模式是否會快過同等級的 32 位系統,這部分已有很多爭論。在 x86-64 架構(AMD64 和 Intel 64)中,主要的 32 位作業系統和應用程式,可平滑的執行於 64 位硬體上。

Sun 的 64 位 Java虛擬機的啟動速度比 32 位虛擬機還慢,因為 Sun 仍假定所有的 64 位機器都是伺服器,而且只有為 64 位平台實作“伺服器”編譯器(C2)。“客戶端”編譯器(C1)產生較慢的代碼,不過編譯較快速。所以儘管在 64 位 JVM 的 Java 程式在一段很長的周期會執行的較好(一般為長時間運作的“伺服器”應用程式),它的啟動時間可能更久。對於短生命期的應用程式(如 Java 編譯器 javac) 增加啟動時間可控制執行時間,使 64 位的 JVM 整體變慢。

應當指出,在 32 位和 64 位處理器時,速度並不是唯一的考量因素。應用程式,如多任務、壓力測試(stress testing)、叢集(clustering)(用於HPC)可能更適合 64 位架構以正確部署。為了以上原因,64 位叢集已廣泛部署於大型組織,如 IBM、Vodafone、HP、微軟。

優缺點

一個常見的誤解是:除非計算機安裝的記憶體大於 4 GB,否則 64 位架構不會比 32 位架構好。這不完全正確。

部分作業系統保留了一部分進程地址空間供作業系統使用,造成使用者程式可用於映射記憶體的地址空間減少。例如,Windows XP DLL 以及 userland OS 組件映射到每一個進程的地址空間,即使計算機裝有 4 GB 的記憶體,也僅留下 2 至 3.8 GB(端視其設定)的可用地址空間。這個限制在 64 位 Windows 中並不會出現。

檔案的記憶體映射對 32 位的架構而言不再合用,尤其是相對便宜的 DVD 燒錄技術的引入。大於 4 GB 的檔案不再罕見,且如此大的檔案無法簡單的映射到 32 位架構的記憶體;只能映射檔案的一部分範圍到地址空間上,並以記憶體映射存取檔案,當有需要時,就必須將這些範圍映射進或映射出地址空間。這是一個問題,因為充裕的記憶體映射仍是從磁碟至記憶體最有效率的存取方法,如果作業系統能適當實行的話。

64 位架構主要的缺點是,相對於 32 位架構,占用相同的數據會消秏更多的記憶體空間(由於腫脹的指針,以及其它型態和對齊補白等可能)。這會增加進程對記憶體的需求,且可能會影響高效能處理器高速快取的使用。維持一部分的 32 位模型是一個處理方法,且大致合理有效。實際上,高效能導向的 z/OS 作業系統便採取這個方法,要求程式代碼存放在 32 位地址空間的任一數字,數據對象則可(選擇性)存放在 64 位區域。

目前主要的商業軟體是建立在 32 位代碼,而非 64 位代碼,所以不能取得在 64 位處理器上較大的 64 位地址空間,或較寬的 64 位暫存器和數據路徑的優點。然而,免費或自由軟體作業系統的使用者已經可以使用專有的 64 位運算環境。並非所有的應用程式都需要大量的地址空間或操作 64 位數據項,所以這些程式不會享受到較大的地址空間或較寬的暫存器和數據路徑的好處;主要受益於 64 位版本的應用程式,並不會享受到使用 x86 的版本,會有更多的暫存器可以使用。

可用性

64位系統有時缺乏對應的軟體,那些軟體是寫給 32 位架構。最嚴重的問題是不兼容的驅動程式。儘管大部分軟體可執行於 32 位兼容模式(又稱作模擬模式,即微軟 WoW64(Windows 32 bit on Windows 64 bit) 技術),其通常無法執行驅動程式(或類似軟體),因為程式通常執行於作業系統和硬體之間,在此直接模擬無法使用。許多開放源始碼軟體封包可簡單的從源始碼編譯為可執行於 64 位環境作業系統,如 Linux。所需的條件是供給 64 位機器的編譯器(通常是 gcc)。目前 64 位版本的驅動程式還不能用,由於缺少可用的驅動程式,所以使用 64 位作業系統會有挫折,推薦使用預裝64位版本的windows 7的電腦,一般會解決驅動問題。

因為設備的驅動程式通常執行於作業系統核心(kernel)的內部,有可能以 32 位進程執行核心,同時支持 64 位的使用者進程。以在核心里的額外消耗為代價,如此可為使用者提供受益於 64 位的記憶體和效能,且不破壞現存 32 位驅動程式的二進制兼容性。這個機制源於 Mac OS X 啟用 64 位進程,同時支持 32 位的驅動程式。

數據模型

以高階語言編寫的套用軟體,從 32 位架構轉換到 64 位架構的各種困難。一個共同的問題是,部分程式設計師假定指針如同其它數據型態一樣有相同的長度。程式設計師假定他們可以在數據型態之間傳送數量而不遺失信息。這些假定只在一部分 32 位機器上如此(甚至是一部分 16 位機器),不過在 64 位機器上就不再如此。C 語言及其後代 C++ 尤其容易產生這種錯誤[1]。

要在 C 和 C++ 中避免這種錯誤,如果確定原始類型的大小為所需的基礎,sizeof 操作符可用來確定原始類型的大小,無論是在編譯以及執行時期。此外,在 C99 標準中的 <limits.h> 表頭,以及在 C++ 標準中的 <limits> 表頭的 numeric_limits 類,可提供更多有用的信息;sizeof 只返回字元大小。這個用法使人產生誤解,因為一個字元(CHAR_BITS)的大小是由自身決定,在所有的 C 或 C++ 實作中並未以相同方式定義。然而,除了這些編譯器目標 DSP 以外,“64 位 = 8 字元(每一字元有 8 位)”已成標準。

必須謹慎使用 ptrdiff_t 型態(在標準表頭 <stddef.h> 中)兩個指針相減的結果;太多代碼寧可不正確的使用“int”或“long”。表示一個指針(而不是指針差異)為一個整數,在此可以使用 uintptr_t(它只定義在 C99 中,不過某些編譯器另外集成較早版本的標準以提供之,作為一個擴充)。

C 和 C++ 並未定義指針、整數型(int)、長型(long)為特定的位數目。

在主要的 32 位機器程式設計環境中,指針、“int”變數、“long”變數全部都是 32 位長。

然而,在 64 位機器下的許多程式設計環境,“int”變數仍然是 32 位寬,不過“long”和指針是 64 位寬,上述內容稱為 LP64 數據模型。另一個選擇是 ILP64 數據模型,三種數據型態都是 64 位寬,甚至 SILP64 連“short”變數也是 64 位寬。然而,大多數情況下所需的修改是相對次要且簡單,而且許多編寫良好的程式可以簡單的重新編譯給新的環境,而無須修改。另一個選擇是 LLP64 模型,其維持 32 位代碼的兼容性,使 int 和 long 為 32 位。“LL”指“long long”型態,其在所有平台下至少是 64 位,包括 32 位環境。

今天有許多 64 位編譯器使用 LP64 模型(包括 Solaris、AIX、HP、Linux、Mac OS X、IBM z/OS 本地編譯器)。微軟的 VC++ 編譯器使用 LLP64 模型。其缺點是在 LP64 模型中將 long 存放到 int 可能會溢出。另一方面,還會使強制轉型一個指針為 long 可以作用;在 LLP 模型下,情況則剛好相反。兩者皆不應該出現在合乎 C99 的代碼中。

注意,程式設計模型是在預編譯器底層選擇的,且數個模型可共存於同一作業系統。然而一般由 OS API 選擇程式設計模型作為原始模型。

另一個考量是用於驅動程式的數據模式。在現代的作業系統中,驅動程式彌補了大多數的作業系統代碼(儘管許多代碼可能不會載入,當作業系統執行時)。許多驅動程式大量使用指針操控數據,且在某些情況下必須讀入一定大小的指針進入支持 DMA 的硬體。舉個例子,提供給 32 位 PCI 設備的驅動程式,請求設備的 DMA 數據進入 64 位機器記憶體的較高區域,可能無法滿足來自作業系統從設備到大於 4 GB 記憶體讀入數據的要求。因為對於這些地址的指針,將不適合設備的 DMA 暫存器。這個問題可如下解決,當向設備發出 DMA 請求時,OS 採用與設備相符的記憶體限制,或者使用 IOMMU。

發展歷程

1961︰IBM 發表 IBM 7030 Stretch 超級計算機。它使用 64 位數據字組,以及 32 或 64 位的指令字組。

1974︰Control Data Corporation 推出 CDC Star-100 向量超級計算機,它使用 64 位字組架構(先前的 CDC 系統是以 60 位架構為基礎)。

1976︰Cray Research 發表第一台 Cray-1 超級計算機。它以 64 位字組架構為基礎,它成為後來的 Cray 向量超級計算機的基礎。

1983︰Elxsi 推出 Elxsi 6400 平行微型超級計算機。Elxsi 架構具有 64 位數據暫存器,不過地址空間仍是 32 位。

1991︰MIPS科技公司生產第一台 64 位微處理器,作為 MIPS RISC 架構 R4000 的第三次修訂版本。該款 CPU 使用於以 IRIS Crimson 啟動的 SGI 圖形工作站。然而,IRIX 作業系統並未包含對 R4000 的 64 位支持,直到 1996 年釋出 IRIX 6.2 為止。Kendall Square Research 發表他們的第一台 KSR1 超級計算機,以專有的執行於 OSF/1 的 64 位 RISC 處理器架構為基礎。

1992︰Digital Equipment Corporation(DEC)引入純 64 位 Alpha 架構,其誕生自 PRISM 項目。

1993︰DEC 釋出 64 位 OSF/1 AXP 類Unix 作業系統(後來改名為 Tru64 UNIX)和 OpenVMS 作業系統給 Alpha 系統。

1994︰Intel 宣布 64 位 IA-64 架構的進度表(與 HP 共同開發)作為其 32 位 IA-32 處理器的繼承者。以 1998–1999 推出時間為目標。SGI 釋出 IRIX 6.0,即支持 64 位的 R8000 CPU。

1995︰Sun 推出 64 位 SPARC 處理器 UltraSPARC。富士通所有的 HAL 計算機系統推出以 64 位 CPU 為基礎的工作站,HAL 獨立設計的第一代 SPARC64。IBM 釋出 64 位 AS/400 系統,能夠轉換作業系統、資料庫、應用程式的升級。DEC 釋出 OpenVMS Alpha 7.0,第一個全 64 位版本的 OpenVMS for Alpha。

1996︰HP 釋出 PA-RISC 處理器架構的 64 位 2.0 版本的實作 PA-8000。 任天堂引入 Nintendo 64 電視遊戲主機,以低成本的 MIPS R4000 變體所打造。

1997︰IBM 釋出 RS64 全 64 位 PowerPC 處理器。

1998︰IBM 釋出 POWER3 全 64 位 PowerPC/POWER 處理器。Sun 釋出 Solaris 7,以完整支持 64 位 UltraSPARC。

1999︰Intel 釋出 IA-64 架構的指令集。AMD 首次公開 64 位集以擴充給 IA-32,稱為 x86-64(後來改名為 AMD64)。

2000︰IBM 推出他自己的第一個兼容 ESA/390 的 64 位大型計算機 zSeries z900,以及新的 z/OS 作業系統。緊接著是 64 位 Linux on zSeries。

2001︰Intel 終於推出他的 64 位處理器產品線,標記為 Itanium,主打頂級伺服器。它無法滿足人們的期待,因一再拖延 IA-64 市場而導致失敗。Linux 是第一個可執行於該處理器的作業系統。

2002︰Intel 引入 Itanium 2 作為 Itanium 的繼承者。

2003︰AMD 產出他的 AMD64 架構 Opteron 以及 Athlon 64 處理器產品線。Apple 也推出 64 位“G5”PowerPC 970 CPU courtesy of IBM,並連同升級他的 Mac OS X 作業系統,其增加對 64 位模式的部分支持。若干 Linux 發行版本釋出對 AMD64 的支持。微軟宣布將為 AMD 晶片建立新的 Windows 作業系統。Intel 堅持 Itanium 晶片仍維持只有 64 位的處理器。

2004︰Intel 承認 AMD 在市場上的成功,並著手開發 AMD64 延伸的替代品,稱為 IA-32e,稍後改名為 EM64T。升級版本的 Xeon 和 Pentium 4 處理器家族支持了新推出的指令。Freescale 宣布 64 位 e700 core,以繼承 PowerPC G4 系列。VIA Technologies 宣布 Isaiah 64 位處理器。

2005︰Sun 於 1 月 31 日釋出支持 AMD64 和 EM64T 處理器的 Solaris 10。3 月,Intel 宣布其第一個雙核心 EM64T 處理器 Pentium Extreme Edition 840 和新的 Pentium D 晶片將於 2005 第二季推出。4 月 30 日,微軟公開釋出提供給 AMD64 和 EM64T 處理器的 Windows XP Professional x64 Edition。5 月,AMD 引入他的第一個雙核心 AMD64 Opteron 伺服器 CPU,並宣布其桌上型版本,稱為 Athlon 64 X2。將原本的 Athlon 64 X2 (Toledo) 處理器改為兩個核心,並為每個核心的 L2 配上 1 MB 高速快取記憶體,以大約 2.332 億個電晶體組成。它有 199 mm² 那么大。7 月,IBM 宣布他最新的雙核心 64 位 PowerPC 970MP (codenamed Antares),由 IBM 和 Apple 使用。微軟釋出 Xbox 360 遊戲主機,其使用由 IBM 生產的 64 位、三核心 Xenon PowerPC 處理器。

2006︰雙核心 Montecito Itanium 2 處理器進入生產。Sony、IBM、Toshiba 開始生產用於 PlayStation 3、伺服器、工作站以及其它套用的 64 位 Cell 處理器。蘋果公司在新的 Mac Pro 和 Intel Xserve 計算機中採用 64 位 EM64T Xeon 處理器,稍後更新 iMac、MacBook、MacBook Pro 使用 EM64T Core 2 處理器。

當前架構

屬於 64 位的微處理器架構(2006年)有︰

DEC Alpha 架構(查看 Digital Alpha timeline)

Intel 的 IA-64 架構(用於 Intel 的 Itanium CPU)

x86-64 架構,64 位版本的 x86 架構(又稱作“x64”)

AMD 的 AMD64(用於 AMD 的 Athlon 64、Opteron、Sempron、Turion 64 CPU)

Intel 的 Intel64(用於 Intel 的新型 Pentium 4、Xeon、Core 2 CPU)

SPARC 架構(從 SPARC V9 開始的 64 位)

Sun 的 UltraSPARC 架構

Fujitsu 的 SPARC64 架構

IBM 的 POWER 架構(從 POWER3 和 RS64 變體開始的 64 位)

IBM/Motorola 的 PowerPC 架構(從 PowerPC 620 和 PowerPC 970 變體開始的 64 位)

IBM 的 z/Architecture,used by IBM zSeries 和 System z9 大型計算機,ESA/390 架構的 64 位版本

MIPS 科技公司的 MIPS IV、MIPS V、MIPS64 架構

HP 的 PA-RISC family(從 PA-RISC 2.0 開始的 64 位)

大部分 64 位處理器架構可本地執行 32 位版本架構的代碼,而無任何效能損失。這種支持通常稱為雙架構支持或更普遍的多架構支持。

超越

直至 2007年,64位字組似乎已滿足大部分的運用。不過仍應提到,IBM 的 System/370 及後繼者使用 128 位浮點數,且許多現代處理器也內含 128 位浮點數暫存器。System/370 及後繼者尤其顯著,在這方面,他們也使用多達16位元組的可變長度十進制數(即128位)。

圖像

在數碼圖像中,64 位為附有 16 位 Alpha 通道的 48 點陣圖像。

處理器

這裡的64位技術是相對於32位而言的,這個位數指的是CPU GPRs(General-Purpose Registers,通用暫存器)的數據寬度為64位,64位指令集就是運行64位數據的指令,也就是說處理器一次可以運行64bit數據。64bit處理器並非現在才有的,在高端的RISC(Reduced Instruction Set Computing,精簡指令集計算機)很早就有64bit處理器了,比如SUN公司的UltraSparc Ⅲ、IBM公司的POWER5、HP公司的Alpha等。

64bit計算主要有兩大優點:可以進行更大範圍的整數運算;可以支持更大的記憶體。不能因為數字上的變化,而簡單的認為64bit處理器的性能是32bit處理器性能的兩倍。實際上在32bit套用下,32bit處理器的性能甚至會更強,即使是64bit處理器,目前情況下也是在32bit套用下性能更強。所以要認清64bit處理器的優勢,不可迷信64bit。

目前主流CPU使用的64位技術主要有AMD公司的AMD64位技術、Intel公司的EM64T技術、和Intel公司的IA-64技術。其中IA-64是Intel獨立開發,不兼容現在的傳統的32位計算機,僅用於Itanium(安騰)以及後續產品Itanium 2,一般用戶不會涉及到,因此這裡僅對AMD64位技術和Intel的EM64T技術做一下簡單介紹。

AMD64位技術

AMD64的位技術是在原始32位X86指令集的基礎上加入了X86-64擴展64位X86指令集,使這款晶片在硬體上兼容原來的32位X86軟體,並同時支持X86-64的擴展64位計算,使得這款晶片成為真正的64位X86晶片。這是一個真正的64位的標準,X86-64具有64位的定址能力。

X86-64新增的幾組CPU暫存器將提供更快的執行效率。暫存器是CPU內部用來創建和儲存CPU運算結果和其它運算結果的地方。標準的32-bit x86架構包括8個通用暫存器(GPR),AMD在X86-64中又增加了8組(R8-R15),將暫存器的數目提高到了16組。X86-64暫存器默認位64-bit。還增加了8組128-bit XMM暫存器(也叫SSE暫存器,XMM8-XMM15),將能給單指令多數據流技術(SIMD)運算提供更多的空間,這些128位的暫存器將提供在矢量和標量計算模式下進行128位雙精度處理,為3D建模、矢量分析和虛擬現實的實現提供了硬體基礎。通過提供了更多的暫存器,按照X86-64標準生產的CPU可以更有效的處理數據,可以在一個時鐘周期中傳輸更多的信息。

EM64T技術

Intel官方是給EM64T這樣定義的:EM64T全稱Extended Memory 64 Technology,即擴展64bit記憶體技術。EM64T是Intel IA-32架構的擴展,即IA-32e(Intel Architectur-32 extension)。IA-32處理器通過附加EM64T技術,便可在兼容IA-32軟體的情況下,允許軟體利用更多的記憶體地址空間,並且允許軟體進行32 bit線性地址寫入。EM64T特彆強調的是對32 bit和64 bit的兼容性。Intel為新核心增加了8個64 bit GPRs(R8-R15),並且把原有GRPs全部擴展為64 bit,如前文所述這樣可以提高整數運算能力。增加8個128bit SSE暫存器(XMM8-XMM15),是為了增強多媒體性能,包括對SSE、SSE2和SSE3的支持。

Intel為支持EM64T技術的處理器設計了兩大模式:傳統IA-32模式(legacy IA-32 mode)和IA-32e擴展模式(IA-32e mode)。在支持EM64T技術的處理器內有一個稱之為擴展功能激活暫存器(extended feature enable register,IA32_EFER)的部件,其中的Bit10控制著EM64T是否激活。Bit10被稱作IA-32e模式有效(IA-32e mode active)或長模式有效(long mode active,LMA)。當LMA=0時,處理器便作為一顆標準的32 bit(IA32)處理器運行在傳統IA-32模式;當LMA=1時,EM64T便被激活,處理器會運行在IA-32e擴展模式下。

目前AMD方面支持64位技術的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。Intel方面支持64位技術的CPU有使用Nocona核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。

64位技術就像一股不可阻擋的浪潮撲面而來,它將逐步滲透進我們的生活,在不久的將來,我們將會習慣在64位作業系統下運行64位程式。

相關搜尋

熱門詞條

聯絡我們