Wednesday, May 8, 2024

64bit CPU 知識 (IA32,IA64,EM64T,AMD64)

64位處理器是指可以對虛擬地址空間(virtual address space)進行64位尋址的處理器。64位處理器可以以64位格式存貯數據,並可以對64位操作數執行數學運算操作。另外,處理器的通用寄存器(GPRs)和運算器(ALUs)也是64位的。

目前市場上Intel兼容處理器可以實現64位計算的主要有3種:

1) Intel IA64,基於安騰2處理器,不兼容32位應用,Oracle軟件相對本模式的版本叫 xxx for Linux Itanium 。
2) Intel EM64T,基於Xeon DP “Nocona”和MP處理器,兼容32位應用,Oracle軟件相對本模式的版本叫 xxx for Linux x86-64。
3) AMD AMD64,基於Opteron處理器,兼容32位應用,Oracle軟件相對本模式的版本叫 xxx for Linux x86-64。

另外普通的IA32架構的32位處理器,Oracle軟件相對本模式的版本叫 xxx for Linux x86。

1) IA-64:

是Intel獨立開發,不兼容現在的傳統的32位計算機,僅用於Itanium(安騰)以及後續產品 Itanium 2 。

自從1993年Intel及其夥伴企業推出基於486系統的IA服務器以來,IA服務器經歷了486系統、PentiumPro系統、PII系統、 PIII系統、XEON系統等幾個階段。處理器系統的處理能力在大幅度提高,而服務器系統的總線結構始終是IA-32總線體系。

IA-32服務器在發展到8路XEON服務器以後,體系結構已經開始成為制約服務器性能提高的瓶頸。先是PCI通道帶寬瓶頸,現在是內存總線帶寬瓶頸和處理器系統擴展瓶頸。因此,hp和Intel自1994年開始合作開發IA-64架構的處理器,希望通過把hp在RISC領域的十年工作經驗和超長指令字結合起來,在微處理器級上改進性能,以增加指令級上的並行性。

IA-64結構既不是Intel的32位x86結構的擴充,也不是完全採用hp公司64位PA-RISC結構,而是一種全新的設計樣式。IA- 64基於EPIC(顯性並行指令計算-Explicitly Parallel Instruction Computing)技術。

IA-64主要特性表現在幾個方面:

* IA-64的系統內存尋址空間更大,可以支持32GB以上的內存,而IA-32服務器目前可以支持的最大內存容量是16GB。
* IA-64的處理器尋址、處理能力更強、速度更快。安騰(Itanium)處理器主頻起步至少1GHz,二級Cache在2MB以上。
* IA-64系統增強的128位浮點計算寄存器大大提高了系統的浮點計算能力。
* IA-64系統將使用基於Infiniband技術的總線結構,它是以交換式系統總線代替目前的共享式總線為核心,將NGIO和 FutureIO兩種技術合二為一,使系統總線、內存總線帶寬和I/O總線帶寬都將大大提高。IA-64系統帶寬在2GB/s以上,而目前的SMPIA- 32服務器的系統帶寬是1.06GB/s,PCI帶寬一般是0.4GB/s。
* IA-64包括一系列的內置特徵,以延長計算機的正常運轉時間,減少宕機時間。機器檢測體系在內存和數據路徑中提供了錯誤恢復和糾錯能力,它能讓 IA-64平台從預先導致系統失敗的錯誤中恢復過來。

目前正式宣布支持IA-64平台的有Monterey、Linux64、hp-UX、Solaris、Win2000等操作系統。

2) EM64T技術

EM64T技術為需要超過4GB內存支持的應用提供強大的性能支持。

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擴展模式下。

3) AMD64

AMD64,又稱“x86-64”或“x64”,是一種64位元的電腦處理器架構。它是建基於現有32位元的x86架構,由AMD公司所開發,應用 AMD64指令集的自家產品有Athlon 64、Athlon 64 FX、Athlon 64 X2、Turion 64、Opteron及最新的Sempron處理器。

架構概述 AMD試圖以自家的AMD64指令集去清理Intel的x86-32專屬的,並把x86更新至近似領先的RISC環境。曾參與設計DEC Alpha64位處理器的Dirk Meyer也有份參與制定AMD64的規格,以及AMD的員工中有不少前Alpha處理器的工程師,因此他們為AMD64立下不少功勞。部份重大改變如下:

新增暫存器 地址闊度加長 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應用程序。

4) 小結

爭論在於EM64T和AMD64是不是真正的64位處理器,Intel稱其架構為”Extended Memory 64 Technology”,使人容易產生這個疑問。我們知道它是IA32指令集的延伸。

那麼EM64T和AMD64到底是不是“真正”的64位處理器呢?答案很明確,是。

當處理器執行 64位操作,具備64位尋址能力,通用寄存器和運算器寬度是64位,運算器可以處理64位數據塊,因此,在此處理模式下它們完全可以被稱作64位處理器。

請注意,雖然IA64,EM64T和AMD64都是64位處理器,但它們不完全兼容:
.EM64T和AMD64除了很少數指令,如3DNOW以外,可以互相兼容,在其中之一上面編寫和編譯的應用程序通常可以全速運行在另外一個處理器上。
.IA64採用了與其他兩種完全不同的指令集,為Itanium2寫的64位應用程序不能運行在EM64T和AMD64上,反之亦然。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.