CPU架構及指令集之研究

Web開發者發表於2014-01-08

  這幾天一直在搞BLCR,自然對核心接觸的也比較多。不僅在OS版本上的不同,如Ubuntu、Fedora、Suse,還有晶片結構,指令集的不同,從AMD到Intel,從32位到64位。這種水平和垂直方向的跨度,也讓我有了更全面的認識。研究核心,自然會涉及不同的架構,不同的指令集。通過兩篇文章,簡單但又綜合性的介紹一下相關概念。(資料來源:Google,百度)

  第一部分:x86與i386、i486、i586、i686

  1. x86

  x86,或80×86是Intel首先開發製造的一種微處理器體系結構的泛稱,包括8086、80186、80286、80386以及80486等。 因此其架構被稱為“x86”。由於數字並不能作為註冊商標,現在Intel把x86-32稱為IA-32,即Intel Architecture, 32-bit。

  x86架構於1978年推出的Intel 8086中央處理器中首度出現,它是從Intel 8008處理器中發展而來的,而8008則是發展自Intel 4004的。之後x86便成為了個人計算機的標準平臺,成為了歷來最成功的CPU架構。Intel以外最成功的製造商為AMD,其Athlon系列處理器的市場僅次於Pentium。

  8086是16位處理器,直到1985年32位的80386的開發,這個架構都維持是16位。接著一系列的處理器表示了32位架構的細微改進,推出了數種的擴充,直到2003年AMD對於這個架構發展了64位的擴充,並命名為AMD64(有時也被稱作x86-64,x64或EM64T),推出了 Opteron處理器家族,開創了x86的64位時代。

  值得注意的是Intel早在1990年代就與惠普合作提出了一種用在安騰(Itanium)系列處理器中的獨立的64位架構,這種架構被稱為IA-64IA-64是一種嶄新的系統,和x86架構完全沒有相似性,不應該把它與AMD64或x86-64弄混。關於x86-64,IA-64,AMD64等,將在下一篇文章中介紹。

  x86是一個Intel通用計算機系列的標準編號縮寫,也標識一套通用的計算機指令集合,X與處理器沒有任何關 系,它是一個對所有*86系統的簡單的萬用字元定義,例如:i386, 586,奔騰(Pentium)。

  由於早期Intel的CPU編號都是用如8086,80286來編號,這整個系列的CPU都是指令相容的,所以都用x86來標識所使用的指令集合。如今的奔騰、P2、P4、賽揚系列都是支援x86指令系統的,所以都屬於x86家族。目前,也並不都是使用x86系列CPU,部分伺服器和蘋果 (Macintosh)機中還使用美國DIGITAL(數字)公司的Alpha 61164和PowerPC 604e系列CPU。

  2. i386、i586、i686

  Intel 80×86簡稱為ix86,比如i386、i586、i686等等,指的是適用於Intel i386、i586、i686相容指令集的微處理器。

  一般而言,所有x86處理器都能執行386的指令集,80486處理器當然需要486的優化。Pentium就是586,PentiumPro (P6)之後的統稱為686,包含了PentiumPro,PentiumⅡ,PentiumⅢ和P4。

  換言之,i386適用於intel和AMD所有32位的CPU,以及採用x86架構的32位CPU。i686只是i386的一個子集,支援的CPU從Pentium 2(686)開始,之前的型號不支援。順便說一下,x86_64適用於Intel的Core 2 Duo, Centrino Core 2 Duo,Xeon,AMD Athlon64/x2,Sempron64/x2,,Duron64等採用x86架構的64位CPU。

  一般來說,等級愈高的機器可接受較低等級的rpm檔案。可以通過/proc/cpuinfo這個文件查詢CPU等級。

  x86體系結構雖然指令都一樣,但是不同時代的具體實現,在編譯優化上還是有自己的特點,而且後一代往往會多出一些指令,所以編譯rpm時,可以針對不同的體系結構作不同的編譯選項優化。

  以上只是對相關概念的簡單說明,還有其他更深入的知識,這裡就不一一列出。下一篇主要介紹一下64位結構上的x86-64和IA-64。

  第二部分:x86,x86-64,IA-64

  x86:從1978年來的8086處理器開始,就已經出現了x86架構CPU,即32位處理器。(詳見上篇)

  x86-64:又簡稱為x64,最初開發為1999年AMD,也叫做AMD64x64,為了擴充IA64。當時的x86-64架構誕生頗有時代意義,處理器的發展遇到了瓶頸,記憶體定址空間由於受到32位CPU的限制而只能最大到約4G。於是就有了x86-64。後被Intel所採用。

  IA-64:其實IA-64的歷史早於x86-64x,最初由Intel和惠普聯合推出。由於IA-64不與32位相容,所以沒有受到重視。直到Intel採用了AMD的x86-64架構,才正式的批量生產。而後為了日益擴張的計算需求,Intel重新將IA-64拿出來,釋出了安騰系列伺服器CPU。

  雖然x86-64和IA-64處理器都能夠執行64位作業系統和應用程式,但是區別在於:

  • x86-64架構基於x86,是為了讓x86架構CPU相容64位計算而產生的技術。X86-64架構的設計是採用直接簡單的方法將目前的x86指令集擴充套件。這個方法與當初的由16位擴充套件至32位的情形很相似。優點在於使用者可以自行選擇x86平臺或x64平臺,相容性高。
  • IA-64則是原生的純64位計算處理器,並且與x86指令不相容。如果想要執行x86指令需要硬體虛擬化支援,而且效率不高。優點在於 IA-64架構體系將擁有64位記憶體定址能力,能夠支援更大的記憶體定址空間。並且由於架構的改變,效能比起x86-64的64位相容模式更高更強。

  所以,IA-64作業系統也是比較少見的,由於只能在Intel安騰系列處理器及AMD部分伺服器處理器執行,所以主流市場並不常見。而且,這些IA-64架構處理器也不能夠使用x64作業系統。而x86-64處理器則可以自由選擇x86或是x64作業系統。

  Itanium(官方中文名稱為安騰),是 Intel Itanium 架構(通常稱之為IA-64)的 64位處理器。Intel 推出了兩個 Itanium 的家族:其一是 Itanium,另一個是 Itanium 2。在 2007年 11月1日,Itanium 2 的家族又再一次稱為Itanium。該處理器的市場定位是在於企業伺服器高效能運算系統。該架構由 HP 創始,後來則是 HP 與 Intel 共同開發。

  Itanium的微架構是徹底的不同於其他 Intel 處理器採用的 x86(包含x86-64)架構。這個架構是建基於顯性的指令併發,由編譯器來決定哪些指令併發處理。這種方式允許處理器在每個週期最多可以執行 6 個指令。與超標量架構的不同點,Itanium在併發處理中並沒有複雜的線路來判斷指令依賴性,所以編譯器必須要在編譯的時候就已經處理妥當。

  在一系列的拖延開發進度後,第一款 Itanium 於 2001年推出,效能更強的 Itanium 處理器在之後則是有周期性的持續推出。採用 Itanium 處理器的製造商之中,以 HP 的製造量最多。在 2007年,Itanium 在企業界系統採用的架構之中是位於第四名,而前三名則是x86-64、IBM POWER 與 SPARC。Intel 推出最新的 Itanium 處理器為 Montvale 核心,於 2007年 11月推出。

  IBM POWER是RISC處理器架構的一種,由IBM設計,全稱為“Performance Optimization With Enhanced RISC”,《IBM Connect電子報》2007年8月號譯為“增強RISC效能優化”。POWER系列微處理器在不少IBM伺服器、超級電腦、小型電腦及工作站中,廣泛作為主CPU使用。而PowerPC架構也是源自POWER架構,並應用在蘋果電腦的麥金塔電腦及部份IBM的工作站,以及各式各樣的嵌入式系統上。此外,IBM透過Power.org網站,向其他開發者及製造商推廣POWER架構及其他衍生產品。

  POWER同樣也是一系列實施了同樣架構指令集的微處理器的名字。POWER系列微處理器用於IBM的伺服器、微電腦、工作站、超級電腦的主處理器。POWER3以及隨後的POWER系列微處理器均全部實施了64-bit PowerPC架構。從POWER3開始及其之後的POWER處器都不再具備與支援更早之前的舊POWER的指令集架構(Instruction Set Architecture,ISA),包括PowerPC指令集架構或任何POWER2所追加延伸的指令,如lfq或stfq等,都不再具備與支援。

  SPARC,全稱為“可擴充處理器架構”(Scalable Processor ARChitecture),是RISC微處理器架構之一。它最早於1985年由太陽微系統所設計,也是SPARC國際公司的註冊商標之一。這家公司於1989年成立,其目的是向外界推廣SPARC,以及為該架構進行符合性測試。此外該公司為了擴闊SPARC設計的生態系統,SPARC國際也把標準開放,並授權予多間生產商採用,包括德州儀器、Cypress半導體、富士通等。由於SPARC架構也對外完全開放,因此也出現了完全開放原始碼的LEON處理器,這款處理器以VHDL語言寫成,並採用LGPL授權。

  SPARC架構原設計給工作站使用,及後應用在昇陽、富士通等製造的大型SMP伺服器上。而昇陽開發的Solaris作業系統也是為SPARC設計的系統之一,除Solaris外,NeXTSTEP、Linux、FreeBSD、OpenBSD及NetBSD系統也提供SPARC版本。

  現時最新版本的SPARC為第8及第9版,在2005年12月,昇陽方面宣佈其UltraSPARC T1處理器將採用開放原始碼方式。2006年4月12日,太陽微系統宣佈完整的UltraSPARC T2處理器已經進行試產。

相關文章