30多年前的1978年6月8日,Intel發(fā)布了新款16位微處理器“8086”,也同時(shí)開創(chuàng)了一個(gè)新時(shí)代:x86架構(gòu)誕生了。
Intel 8086處理器
x86指的是特定微處理器執(zhí)行的一些計(jì)算機(jī)語(yǔ)言指令集,定義了芯片的基本使用規(guī)則,一如今天的x64、IA64等。
事實(shí)上,8086處理器發(fā)布之初并沒有獲得太多關(guān)注,開始也沒有被大范圍采用,但它在PC業(yè)界的地位怎么形容都不為過,這就是因?yàn)樗鼛砹藊86。它不僅成就了Intel如日中天的地位,也成為了一種業(yè)界標(biāo)準(zhǔn),即使是在當(dāng)今強(qiáng)大的多核心處理器上也能看到x86的身影。
在30年的發(fā)展史中,x86家族不斷壯大,從
桌面轉(zhuǎn)戰(zhàn)筆記本、服務(wù)器、超級(jí)計(jì)算機(jī)、編寫設(shè)備,期間還挫敗或者限制了很多競(jìng)爭(zhēng)對(duì)手的發(fā)展,讓不少處理器廠商及其架構(gòu)技術(shù)成為歷史名字,即使有些封閉發(fā)展的也難以為繼,比如蘋果就已經(jīng)放棄PowerPC了。
當(dāng)然,我們不能忘了x86-64和EM64T的斗爭(zhēng)。2003年,AMD推出了業(yè)界首款
64位處理器Athlon 64,也帶來了x86-64,即x86指令集的64位擴(kuò)展超集,具備向下兼容的特點(diǎn)。當(dāng)時(shí)Intel也在推行64位技術(shù),但其
IA64架構(gòu)并不兼容x86,只是用在服務(wù)器處理器Itanium上。為了和AMD展開競(jìng)爭(zhēng),Intel也在2004年推出了自己的64位版x86,也就是EM64T。
對(duì)此,AMD和Intel互相指責(zé)對(duì)方,但無論如何至少推廣了64位技術(shù)的發(fā)展和普及,也讓x86技術(shù)得以繼續(xù)發(fā)揚(yáng)光大。
加州大學(xué)伯克利分校計(jì)算機(jī)科學(xué)教授、RISC發(fā)明人之一David Patterson表示:“這證明,x86指令集的彈性完全可以拿來對(duì)付Intel,所以即使Intel統(tǒng)治了整個(gè)市場(chǎng),其他公司依然可以改變x86的發(fā)展方向。”
x86是一個(gè)intel通用計(jì)算機(jī)系列的標(biāo)準(zhǔn)編號(hào)縮寫,也標(biāo)識(shí)一套通用的計(jì)算機(jī)指令集合,X與處理器沒有任何關(guān)系,它是一個(gè)對(duì)所有*86系統(tǒng)的簡(jiǎn)單的通配符定義,例如:i386, 586,奔騰(pentium)。由于早期intel的CPU編號(hào)都是如8086,80286來編號(hào),由于這整個(gè)系列的CPU都是指令兼容的,所以都用X86來標(biāo)識(shí)所使用的指令集合如今的奔騰,P2,P4,賽揚(yáng)系列都是支持X86指令系統(tǒng)的,所以都屬于X86家族 。
X86指令集是
美國(guó)Intel公司為其第一塊16位CPU(i8086)專門開發(fā)的,美國(guó)IBM公司1981年推出的世界第一臺(tái)PC機(jī)中的CPU--i8088(i8086簡(jiǎn)化版)使用的也是X86指令,同時(shí)電腦中為提高浮點(diǎn)數(shù)據(jù)處理能力而增加的X87芯片系列
數(shù)學(xué)協(xié)處理器則另外使用X87指令,以后就將X86指令集和X87指令集統(tǒng)稱為X86指令集。雖然隨著CPU技術(shù)的不斷發(fā)展,Intel陸續(xù)研制出更新型的i80386、i80486直到今天的Pentium 4(以下簡(jiǎn)為P4)系列,但為了保證電腦能繼續(xù)運(yùn)行以往開發(fā)的各類
應(yīng)用程序以保護(hù)和繼承豐富的
軟件資源,所以Intel公司所生產(chǎn)的所有CPU仍然繼續(xù)使用X86指令集,所以它的CPU仍屬于X86系列。
另外除Intel公司之外,AMD和Cyrix等廠家也相繼生產(chǎn)出能使用X86指令集的CPU,由于這些CPU能運(yùn)行所有的為Intel CPU所開發(fā)的各種軟件,所以電腦業(yè)內(nèi)人士就將這些CPU列為Intel的CPU兼容產(chǎn)品。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。當(dāng)然在目前的臺(tái)式(便攜式)電腦中并不都是使用X86系列CPU,部分服務(wù)器和蘋果(Macintosh)機(jī)中還使用美國(guó)DIGITAL(數(shù)字)公司的Alpha 61164和PowerPC 604e系列CPU。
Intel從8086開始,286、386、486、586、P1、P2、P3、P4都用的同一種CPU架構(gòu),統(tǒng)稱X86。
英特爾推出X86架構(gòu)已滿30年了,同486相比,Pentium向前邁進(jìn)了一大步, 而PⅡ的前進(jìn)步伐則沒有這么大了,X86 CPU的發(fā)展似乎已到了盡頭。 英特爾非常清楚,是X86指令集限制了CPU性能的進(jìn)一步提高,因此,他們正同惠普共同努力開發(fā)下一代指令集架構(gòu)(Instruction Set Architecture ,ISA): EPIC(Explicitly Parallel Instruction Computing,顯性并行指令計(jì)算)。對(duì)英特爾而言, IA-64(英特爾的64位架構(gòu))是下一個(gè)10到15年的架構(gòu)。新的ISA將使英特爾擺脫X86架構(gòu)的限制,從而設(shè)計(jì)出超越所有現(xiàn)有RISC CPU和X86 CPU的新型處理器。那么EPIC的先進(jìn)之處在什么地方呢?為什么英特爾會(huì)放棄使它成為芯片巨人的X86架構(gòu)呢? 一、IA-32的問題 我們知道,工程師可以通過提高每個(gè)時(shí)鐘的指令執(zhí)行數(shù)來提高性能,英特爾新的指令集的首要目的在于,讓指令更容易解碼,更容易并行執(zhí)行。這樣就可以不受限制地開發(fā)新型處理器。 但是,對(duì)工程師而言,兼容8086的X86指令集一直是必須完成的任務(wù)。畢竟,兼容前代產(chǎn)品是使英特爾成長(zhǎng)壯大起來的關(guān)鍵因素,而且還可以保護(hù)用戶原先的投資和使用數(shù)以百萬(wàn)計(jì)
應(yīng)用軟件。既然如此,為什么又要放棄整個(gè)X86指令集重新開始呢?X86的不足在什么地方? (1)可變的指令長(zhǎng)度 X86指令的長(zhǎng)度是不定的,而且有幾種不同的格式,結(jié)果造成X86 CPU的解碼工作非常復(fù)雜,為了提高CPU的工作頻率,不得不延長(zhǎng)CPU中的流水線,而過長(zhǎng)的流水線在分支預(yù)測(cè)出錯(cuò)的情況下,又會(huì)帶來CPU工作停滯時(shí)間較長(zhǎng)的弊端。 (2)寄存器的貧乏 X86指令集架構(gòu)只有8個(gè)通用寄存器,而且實(shí)際只能使用6個(gè)。這種情況同現(xiàn)代的超標(biāo)量CPU極不適應(yīng),雖然工程師們采用
寄存器重命名的技術(shù)來彌補(bǔ)這個(gè)缺陷,但造成了CPU過于復(fù)雜,流水線過長(zhǎng)的局面。 (3)內(nèi)存訪問 X86指令可訪問內(nèi)存地址,而現(xiàn)代RISC CPU則使用LOAD/STORE模式,只有LOAD和STORE指令才能從內(nèi)存中讀取數(shù)據(jù)到寄存器,所有其他指令只對(duì)寄存器中的操作數(shù)計(jì)算。在目前CPU的速度是內(nèi)存速度的5倍或5倍以上的情況下,后一種工作模式才是正途。 (4)浮點(diǎn)堆棧 X87 FPU是目前最慢的FPU,主要的原因之一就在于X87指令使用一個(gè)操作數(shù)堆棧。如果沒有足夠多的寄存器進(jìn)行計(jì)算,你就不得不使用堆棧來存放數(shù)據(jù),這會(huì)浪費(fèi)大量的時(shí)間來使用FXCH指令(即把正確的數(shù)據(jù)放到堆棧的頂部)。 (5)4GB限制 這似乎不是問題,但是,在6年前,主流PC只有4MB內(nèi)存,而目前的絕大部分PC裝備了64MB以上的內(nèi)存,是以前的16倍,所以,在下一個(gè)十年,PC內(nèi)存突破1GB絕對(duì)不會(huì)令人驚訝,而且目前的大型服務(wù)器已經(jīng)使用了1GB以上的內(nèi)存,突破4GB內(nèi)存的情況很快就會(huì)出現(xiàn)。 (6)芯片變大 所有用于提高X86 CPU性能的方法,如寄存器重命名、巨大的緩沖器、亂序執(zhí)行、分支預(yù)測(cè)、X86指令轉(zhuǎn)化等等,都使CPU的芯片面積變得更大,也限制了工作頻率的進(jìn)一步提高,而額外集成的這些晶體管都只是為了解決X86指令的問題。