(四) 指令集的精簡化
1.RISC的開拓性工作
(1)1967年Seymour Cray在研制CDC-6600時,事實上他就已經(jīng)采用了精簡指令集的思想。因此,我們說他的工作是RISC思想的先驅(qū)。
(2)IBM801項目1975年IBM的沃森研究中心開始了對復雜指令系統(tǒng)是否合理的研究,稱為801項目。到1979年研制成32位的IBM801小型計算機,該機只有120條指令,速度達到10MIPS,這可以說是世界上最早利用精簡指令思想研制成的計算機。
(3)伯克利的RISC項目1980年美國加州大學伯克利分校的David Patterson教授領導了RISC項目。RISC這一縮寫正是Patterson在伯克利講課時首先使用的。
(4)斯坦福的MIPS項目1981年美國斯坦福大學的John Hennessy教授開始了MIPS項目。以上四個著名的項目可以說是RISC技術的四個主要技術來源,它們?yōu)镽ISC技術奠定了基礎。
2.CISC的主要弊病
(1)CISC的最直覺的弊病就是指令集過分龐雜。
(2)微程序技術是CISC的重要支柱。每條復雜指令都要通過執(zhí)行一段解釋性微程序才能完成,這就需要多個CPU周期,從而降低了機器的處理速度。
(3)由于指令系統(tǒng)過分龐大,使高級語言編譯程序選擇目標指令的范圍很大,并使編譯程序本身冗長而復雜,從而難以優(yōu)化編譯使之生成真正高效的目標代碼。
(4)CISC強調(diào)完善的中斷控制,勢必導致動作繁多,設計復雜,使研制周期增長。
(5)CISC給芯片設計帶來很多困難,使芯片種類增多,出錯幾率增大,成本提高而成品率降低。
3.RISC的基本特征
(1)精簡指令數(shù)量
(2)簡化指令格式
(3)采用單周期指令
(4)采用寄存器操作
(5)硬線控制邏輯
(6)優(yōu)化編譯程序
4.RISC的關鍵技術
(1)重疊寄存器窗口技術在伯克利的RISC項目中,首先采用了重疊寄存器窗口(overlapping register windows)技術。
(2)優(yōu)化編譯技術RISC使用了大量的寄存器,如何合理分配寄存器、提高寄存器的使用效率,減少訪存次數(shù)等,都應通過編譯技術的優(yōu)化來實現(xiàn)。
(3)超流水及超標量技術這是RISC為了進一步提高流水線速度而采用的新技術。
(4)硬線邏輯與微程序相結(jié)合在微程序技術中,微指令的格式可分為3類:水平型、垂直型、混合型。水平型微指令一次就能控制多種信息的并行傳送,具有執(zhí)行速度快、效率高、靈活性強、微程序短等優(yōu)點。垂直型微指令與機器碼指令類似,規(guī)整直觀,容易掌握,但效率低,速度慢。混合型則在兩者之間。目前,大多數(shù)RISC芯片采用的微程序都是高度水平型的微指令或者是用毫微程序方式實現(xiàn),以便減少或免去微指令的譯碼時間,直接控制通路操作來加快微指令的流水和解釋。
(五) 指令的流水處理
1.流水線的基本概念
(1)指令控制方式指令控制方式有3種,順序方式、重疊方式、流水方式。順序方式是指各條機器指令之間順序串行地執(zhí)行,執(zhí)行完一條指令后才取下一條指令,而且每條機器指令內(nèi)部的各個微操作也是順序串行地執(zhí)行。這種方式的優(yōu)點是控制簡單。缺點是速度上不去,機器各部件的利用率低。重疊方式是指在解釋第K條指令的操作完成之前,就可開始解釋第K+1條指令。通常采用的是一次重疊,即在任何時候,指令分析部件和指令執(zhí)行部件都只有相鄰兩條指令在重疊解釋。這種方式的優(yōu)點是速度有所提高,控制也不太復雜,缺點是會出現(xiàn)沖突、轉(zhuǎn)移、相關等問題,在設計時必須想辦法解決。流水方式是模仿工業(yè)生產(chǎn)過程的流水線(如汽車裝配線)而提出的一種指令控制方式。流水(pipelining)技術是把并行性或并發(fā)性鑲嵌到計算機系統(tǒng)里的一種形式。它是一種把重復的順序處理過程分解為若干子過程,每個子過程能在專用的獨立模塊上有效地并發(fā)工作的技術。在概念上“流水”可以看成是“重疊”的延伸。差別僅在于“一次重疊”只是把一條指令解釋分解為兩個子過程,而“流水”則是分解為更多的子過程。為了描述流水線的工作,我們畫出時空圖,它是分析評價流水線性能的重要工具。
(2)流水線的種類
①從流水的級別上,可分為部件級、處理機級以及系統(tǒng)級的流水。
②從流水的功能上,可分為單功能流水線和多功能流水線。
③從流水的聯(lián)接上,可分為靜態(tài)流水線和動態(tài)流水線。這是針對多功能流水線而分的。
④從流水是否有反饋回路,可分為線性流水線和非線性流水線。
⑤從流水的流動順序上,可分為同步流水線和異步流水線。
⑥從流水線的數(shù)據(jù)表示上,可分為標量流水線和向量流水線。
(3)流水的相關處理
①局部性相關處理由于流水機器同時解釋多條指令,這些指令可能有對同一主存單元或同一寄存器的“先寫后讀”的要求,這時就出現(xiàn)了相關,這種相關包括指令相關、訪存操作數(shù)相關以及通用寄存器組相關等,它只影響相關的兩條或幾條指令,而且至多影響流水線的某些段推后工作,并不會改動指令緩沖器中預取到的指令內(nèi)容,影響是局部的,所以稱為局部性相關。解決局部性相關有兩種方法:一種是推后法,即推后對相關單元的讀,直至寫入完成。另一種是通路法,即設置相關專用通路,使得不必先把運算結(jié)果寫入相關存儲單元,再從這里讀出后才能使用,而是經(jīng)過相關專用通路直接使用運算結(jié)果,這樣可以加快速度。
②全部性相關處理轉(zhuǎn)移指令(尤其是條件轉(zhuǎn)移指令)與它后面的指令之間存在關聯(lián),使之不能同時解釋,執(zhí)行轉(zhuǎn)移指令時,可能會改動指令緩沖器中預取到的指令內(nèi)容,從而會造成流水線吞吐率和效率下降,比局部性相關的影響要嚴重得多,所以稱為全局性相關。解決全局性相關有三種方法:一種是猜測轉(zhuǎn)移分支;一種是加快和提前形成條件碼;還有一種是加快短循環(huán)程序的處理。條件轉(zhuǎn)移指令有兩個分支:一個分支是按原來的順序繼續(xù)執(zhí)行下去,稱為轉(zhuǎn)移不成功分支。另一個分支是按轉(zhuǎn)移后的新指令序列執(zhí)行,稱為轉(zhuǎn)移成功分支。許多流水機器都猜選轉(zhuǎn)移不成功分支,這樣做時,猜對的機率很大,流水線的吞吐率和效率就會比不采用猜測法時高得多。除猜測法外,還可以盡早獲得條件碼以便對流水線簡化條件轉(zhuǎn)移的處理。這意味著能精確地預知流向哪個分支。事實上,完全有可能提前形成條件碼,例如一個乘法算所需時間較長,但在運算之前就能知道其結(jié)果為正或為負,或者是否為零,因此,加快單條指令內(nèi)部條件碼的形成,或者在一段程序內(nèi)提前形成條件碼,對轉(zhuǎn)移問題的順利解決是很有好處的。由于程序中廣泛采用循環(huán)結(jié)構(gòu),所以流水線大都采用特殊措施以加快循環(huán)程序的處理。例如使整個循環(huán)程序都放入指令緩沖存儲器中,對提高流水效率和吞吐率均有明顯效果。
③流水的中斷處理中斷和轉(zhuǎn)移一樣,也會引起流水線斷流。好在中斷出現(xiàn)的概率要比條件轉(zhuǎn)移出現(xiàn)的概率低得多,因此只要處理好斷點現(xiàn)場保護及中斷后的恢復,盡量縮短斷流時間即可。
2.RISC中的流水技術
RISC中采用的流水技術有3種:超流水線、超標量以及超長指令字。
(1)超流水線技術超流水線(superpipelime)技術是RISC采用的一種并行處理技術。它通過細化流水、增加級數(shù)和提高主頻,使得在每個機器周期內(nèi)能完成一個甚至兩個浮點操作。它的實質(zhì)是以時間換取空間。超流水機器的特征是在所有的功能單元都采用流水,并有更高的時鐘頻率和更深的流水深度。由于它只限于指令級的并行,所以超流水機器的CPI值稍高,CPI的含義是每個指令需要的機器周期數(shù)(clock cycles per instruction)。不過,它在時鐘頻率高方面的優(yōu)點大于其在CPI方面的缺點。
(2)超標量技術超標量(superscalar)技術是RISC采用的又一種并行處理技術。它通過內(nèi)裝多條流水線來同時執(zhí)行多個處理,其時鐘頻率雖然與一般流水接近,但它卻有更小的CPI。它的實質(zhì)是以空間換取時間。許多研究人員都曾建議過“多指令分發(fā)”(multiple instruction issue)技術,Agerwala和Cocke把這種方法作為RISC思想的擴充,并創(chuàng)造了Supersalar一詞。超標量結(jié)構(gòu)正變得越來越復雜。除了指令數(shù)目增加外,在執(zhí)行程序時還要靠硬件來對指令的處理順序進行動態(tài)控制。硬件的復雜性還將隨著時鐘頻率的提高而增加。
(3)超長指令字技術超長指令字(very long instruction word)簡稱為VILW技術,它由LIW發(fā)展而來。VLIW和超標量都是80年代出現(xiàn)的概念,其共同點都是要同時執(zhí)行多條指令,其不同在于超標量依靠硬件來實現(xiàn)并行處理的調(diào)度,VILW則充分發(fā)揮軟件的作用,而使硬件簡化,性能提高。例如,超標量同時分發(fā)4條指令已經(jīng)困難,但是VLIW同時分發(fā)8條指令的產(chǎn)品已經(jīng)指日可待。因此,VLIW有更小的CPI值,但也要有足夠高的時鐘頻率。為使每個功能單元都保持在忙狀態(tài),在直線代碼序列(straightline code sequence)中必須使經(jīng)過調(diào)度的指令有足夠的工作。這是使用跟蹤調(diào)度(trace scheduling)技術,通過解開循環(huán)(unˉrolling loops)和跨過基本塊調(diào)度代碼(scheduling code across basic blocks)來完成的。總之,利用VLIW可以提高指令處理的并行程度,減小CPI,簡化控制硬件而可以設置更多的運算器和擴大Cache容量,同時還能提高與內(nèi)存間數(shù)據(jù)傳輸?shù)乃俾剩员悴捎酶叩臅r鐘頻率,使得在超標量潛力已盡的情況下把微處理器的性能再提高2至5倍以上。
希望與更多計算機等級考試的網(wǎng)友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |