日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

什么是X86架構(gòu)以及指令集未來趨向

 xiai_fei 2009-07-27
X86就是采用cisc(Complex Instruction Set Computer,復(fù)雜指令架構(gòu)計算機(jī))架構(gòu)的處理器.大多數(shù)CPU廠商(如AMD,Intel)生產(chǎn)的就是這種處理器.與采用RISC(Reduced ...,精簡指令架構(gòu)計算機(jī))架構(gòu)的PowerPC(如蘋果電腦)不同. 在CISC處理器中,程序的各條指令是按順序串行執(zhí)行的,每條指令中的各個操作也是按順序串行執(zhí)行的。順序執(zhí)行的優(yōu)點是控制簡單,但計算機(jī)各部分的利用率不高,執(zhí)行速度慢。 諸如IA-32、x86-32、x86-64都是屬于x86架構(gòu)的。如Intel的32位服務(wù)器Xeon(至強(qiáng))處理器系列、AMD的全系列,還有VIA的全系列處理器產(chǎn)品都屬于x86架構(gòu)的。



英特爾推出X86架構(gòu)已滿20年了,同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,顯性并行指令計算)。對英特爾而言, IA-64(英特爾的64位架構(gòu))是下一個10到15年的架構(gòu)。新的ISA將使英特爾擺脫X86架構(gòu)的限制,從而設(shè)計出超越所有現(xiàn)有RISC CPU和X86 CPU的新型處理器。那么EPIC的先進(jìn)之處在什么地方呢?為什么英特爾會放棄使它成為芯片巨人的X86架構(gòu)呢?   
  一、IA-32的問題   
  我們知道,工程師可以通過提高每個時鐘的指令執(zhí)行數(shù)來提高性能,英特爾新的指令集的首要目的在于,讓指令更容易解碼,更容易并行執(zhí)行。這樣就可以不受限制地開發(fā)新型處理器。   
  但是,對工程師而言,兼容8086的X86指令集一直是必須完成的任務(wù)。畢竟,兼容前代產(chǎn)品是使英特爾成長壯大起來的關(guān)鍵因素,而且還可以保護(hù)用戶原先的投資和使用數(shù)以百萬計應(yīng)用軟件。既然如此,為什么又要放棄整個X86指令集重新開始呢?X86的不足在什么地方?   
 ?。?)可變的指令長度   
  X86指令的長度是不定的,而且有幾種不同的格式,結(jié)果造成X86 CPU的解碼工作非常復(fù)雜,為了提高CPU的工作頻率,不得不延長CPU中的流水線,而過長的流水線在分支預(yù)測出錯的情況下,又會帶來CPU工作停滯時間較長的弊端。   
 ?。?)寄存器的貧乏   
  X86指令集架構(gòu)只有8個通用寄存器,而且實際只能使用6個。這種情況同現(xiàn)代的超標(biāo)量CPU極不適應(yīng),雖然工程師們采用寄存器重命名的技術(shù)來彌補(bǔ)這個缺陷,但造成了CPU過于復(fù)雜,流水線過長的局面。   
 ?。?)內(nèi)存訪問   
  X86指令可訪問內(nèi)存地址,而現(xiàn)代RISC CPU則使用LOAD/STORE模式,只有LOAD和STORE指令才能從內(nèi)存中讀取數(shù)據(jù)到寄存器,所有其他指令只對寄存器中的操作數(shù)計算。在目前CPU的速度是內(nèi)存速度的5倍或5倍以上的情況下,后一種工作模式才是正途。   
  (4)浮點堆棧   
  X87 FPU是目前最慢的FPU,主要的原因之一就在于X87指令使用一個操作數(shù)堆棧。如果沒有足夠多的寄存器進(jìn)行計算,你就不得不使用堆棧來存放數(shù)據(jù),這會浪費大量的時間來使用FXCH指令(即把正確的數(shù)據(jù)放到堆棧的頂部)。   
 ?。?)4GB限制   
  這似乎不是問題,但是,在6年前,主流PC只有4MB內(nèi)存,而目前的絕大部分PC裝備了64MB以上的內(nèi)存,是以前的16倍,所以,在下一個十年,PC內(nèi)存突破1GB絕對不會令人驚訝,而且目前的大型服務(wù)器已經(jīng)使用了1GB以上的內(nèi)存,突破4GB內(nèi)存的情況很快就會出現(xiàn)。   
  (6)芯片變大   
  所有用于提高X86 CPU性能的方法,如寄存器重命名、巨大的緩沖器、亂序執(zhí)行、分支預(yù)測、X86指令轉(zhuǎn)化等等,都使CPU的芯片面積變得更大,也限制了工作頻率的進(jìn)一步提高,而額外集成的這些晶體管都只是為了解決X86指令的問題。   
  二、下一代指令集:IA-64   
  Merced是第一款使用IA-64的處理器,這款CPU具有64位尋址能力和64位寬的寄存器,所以我們稱它為64位CPU。由于具有64位尋址能力,它能夠使用1百萬TB的地址空間,足以運算企業(yè)級任務(wù);64位寬的寄存器可以使Merced 達(dá)到非常高的精度。   
  粗看起來,Merced很像其他的64位RISC CPU:指令的長度是固定的,由一個指令、兩個輸入和一個輸出寄存器組成;指令只對寄存器操作;超標(biāo)量,具有多個不同的流水線或執(zhí)行單元,能夠并行執(zhí)行許多指令。那么,Merced的不同點在哪里呢?   
 ?。?)顯性并行性   
  盡可能并行工作是提高CPU性能的最佳方法,如果你的CPU每個時鐘周期可以執(zhí)行8個指令,而競爭對手的CPU每個時鐘周期只能執(zhí)行4個指令,那么,他只能制造一個時鐘頻率是2倍于你的CPU,才能在速度上趕上你。   
  我們知道,程序分支和指令依賴是造成難以并行執(zhí)行許多指令的障礙,而Merced采用的方法是讓編譯器告訴CPU哪些指令可以一起發(fā)布并執(zhí)行。Merced 接收來自于編譯器的128位包,每個包含有3個40位指令和1個8位模板。每個指令又由3個7位寄存器地址(即可以使用2^7=128個寄存器)、一個6位預(yù)測寄存器和13位指令代碼,其中,最有趣的莫過于模板。   
  這個8位模板包含了不同指令間的并行信息,編譯器將使用模板告訴CPU,哪些指令可以同時發(fā)布。模板也包含了包的結(jié)束位,用以告訴CPU這個包是否結(jié)束,CPU是否需準(zhǔn)備捆綁下兩個或更多的包。現(xiàn)在你明白為什么EPIC CPU的馬力如此強(qiáng)勁了吧,高端CPU可以一起執(zhí)行幾個包。由于IA-64架構(gòu)的64個通用寄存器和64個浮點寄存器(編注:原文如此),使CPU可以同時發(fā)布許多指令。   
  當(dāng)然,強(qiáng)悍的EPIC CPU也需要一個強(qiáng)悍的編譯器,編譯器的工作是檢查指令依賴情況,把并行指令放在一起,并重新排序,使執(zhí)行單元可以很順暢地工作。   
  (2)分支預(yù)測   
  在現(xiàn)代CPU中,分支預(yù)測的正確率可以達(dá)到90%~95%,雖然看起來還不壞, 但當(dāng)預(yù)測出錯時,CPU就不得不清洗整條流水線。10%的預(yù)測出錯率會讓CPU損失30%的性能,在流水線越長的情況下,性能損失越嚴(yán)重。而Merced的預(yù)測機(jī)制, 可以擺脫大部分分支情況。首先來看RISC/x86 CPU怎樣處理典型的"IF-THEN -ELSE"分支:   
  if (i==0)   
  instruction 1;   
  else   
  instruction 2;   
  CPU執(zhí)行過程如下:   
  比較I是否為0;   
  如果不相等,則跳到else;   
  然后執(zhí)行指令1;   
  跳到NEXT處;   
  else:執(zhí)行指令2;   
  NEXT     
  在這里,CPU必須判斷它去執(zhí)行ELSE分支呢還是THEN分支。下面再看EPIC CPU的解決方案:   
  比較I是否為0;   
  開始對指令1解碼,設(shè)定預(yù)測寄存器"P1"的預(yù)測位;   
  開始對指令2解碼,設(shè)定預(yù)測寄存器"P2"的預(yù)測位;   
  當(dāng)I等于0時,寄存器"P1"為真(1),寄存器"P2"為假(0);   
  執(zhí)行所有預(yù)測位為真值的指令;   
  Merced沒有跳躍,它一開始就執(zhí)行所有的分支指令,它具有64個分支預(yù)測寄存器,可以被設(shè)為真或假,而每個指令中的6位被分配到單獨一個預(yù)測寄存器中。就上例來說,如果指令1指派給預(yù)測寄存器1,預(yù)測位被設(shè)為:000001。當(dāng)變量I 等于0時,預(yù)測寄存器1被設(shè)定為"真",只有那些指向預(yù)測寄存器為"真"的指令結(jié)果才會被執(zhí)行。   
  由于所有的分支都能并行執(zhí)行,Merced所花的時間同只執(zhí)行單個分支的時間是相同的。其次,你不會再冒預(yù)測出錯的風(fēng)險;第三,由于CPU不再跳躍執(zhí)行, 它不會把程序代碼分成小塊。也就是說,稍前和稍后的程序代碼可以打包。Merced 能夠一起將它們發(fā)布,增大并行工作量。這些可以使EPIC CPU避免通常CPU所出現(xiàn)的分支預(yù)測40%的出錯情況,從而使性能提高10%~15%,特別是在整數(shù)代碼部分。   
 ?。?)投機(jī)裝載   
  你還記得我們上次所說的3DNow!和SSE的預(yù)取指令嗎?它可以使CPU把一個確定的指令在需要前的數(shù)十個周期放到一級指令Cache中。同此相對應(yīng),投機(jī)裝載是把所需數(shù)據(jù)提前數(shù)十個周期放到一級數(shù)據(jù)Cache中。這樣就可避免Cache未命中情況的發(fā)生,如此一來,較慢的內(nèi)存訪問就不再是一個大問題,因為,CPU幾乎不再訪問內(nèi)存,它總是可以在一級Cache中找到它需要的東西。   
  三、小結(jié)   
  IA-64確實是為提高速度而設(shè)計的,使用IA-64指令可以制造一個具有比今天的X86 CPU更多執(zhí)行單元的CPU,它比X86 CPU能進(jìn)行多得多的并行處理工作。那么,Merced會在高端市場扼殺其競爭對手嗎?它的設(shè)計完美無缺嗎?我們將拭目以待

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多