復(fù)雜指令集的缺點(diǎn)及競爭對手
采用復(fù)雜指令系統(tǒng)的計(jì)算機(jī)有著較強(qiáng)的處理高級語言的能力.這對提高計(jì)算機(jī)的性能是有益的.當(dāng)計(jì)算機(jī)的設(shè)計(jì)沿著這條道路發(fā)展時(shí).有些人沒有隨波逐流.他們回過頭去看一看過去走過的道路,開始懷疑這種傳統(tǒng)的做法:IBM公司設(shè)在紐約Yorktown的JhomasI.Wason研究中心于1975年組織力量研究指令系統(tǒng)的合理性問題.因?yàn)樗?dāng)時(shí)已感到,日趨龐雜的指令系統(tǒng)不但不易實(shí)現(xiàn).而且還可能降低系統(tǒng)性能。1979年以帕特遜教授為首的一批科學(xué)家也開始在美國加州大學(xué)伯克利分校開展這一研究.結(jié)果表明,CISC存在許多缺點(diǎn).
首先.在這種計(jì)算機(jī)中.各種指令的使用率相差懸殊:一個(gè)典型程序的運(yùn)算過程所使用的80%指令.只占一個(gè)處理器指令系統(tǒng)的20%.事實(shí)上最頻繁使用的指令是取、存和加這些最簡單的指令.這樣一來,長期致力于復(fù)雜指令系統(tǒng)的設(shè)計(jì),實(shí)際上是在設(shè)計(jì)一種難得在實(shí)踐中用得上的指令系統(tǒng)的處理器.同時(shí).復(fù)雜的指令系統(tǒng)必然帶來結(jié)構(gòu)的復(fù)雜性.這不但增加了設(shè)計(jì)的時(shí)間與成本還容易造成設(shè)計(jì)失誤.此外.盡管VLSI技術(shù)現(xiàn)在已達(dá)到很高的水平,但也很難把CISC的全部硬件做在一個(gè)芯片上,這也妨礙單片計(jì)算機(jī)的發(fā)展.在CISC中,許多復(fù)雜指令需要極復(fù)雜的操作,這類指令多數(shù)是某種高級語言的直接翻版,因而通用性差.由于采用二級的微碼執(zhí)行方式,它也降低那些被頻繁調(diào)用的簡單指令系統(tǒng)的運(yùn)行速度. 因而.針對CISC的這些弊病.帕特遜等人提出了精簡指令的設(shè)想即指令系統(tǒng)應(yīng)當(dāng)只包含那些使用頻率很高的少量指令.并提供一些必要的指令以支持操作系統(tǒng)和高級語言.按照這個(gè)原則發(fā)展而成的計(jì)算機(jī)被稱為精簡指令集計(jì)算機(jī)(ReducedInstructionSetComputer-RISC).簡稱RISC.
RISC是簡化指令集計(jì)算機(jī)的簡略縮寫,其風(fēng)格是強(qiáng)調(diào)計(jì)算機(jī)結(jié)構(gòu)的簡單性和高效性。RISC設(shè)計(jì)是從足夠的不可缺少的指令集開始的。它的速度比那些具有傳統(tǒng)復(fù)雜指令組計(jì)算機(jī)結(jié)構(gòu)的機(jī)器快得多,而且RISC機(jī)由于其較簡潔的設(shè)計(jì),較易使用,故具有更短的研制開發(fā)周期。RISC結(jié)構(gòu)一般具有如下的一些特點(diǎn):
①單周期的執(zhí)行: 它統(tǒng)一用單周期指令。從根本上克服了CISC指令周期數(shù)有長有短,造成運(yùn)行中偶發(fā)性不確定,致使運(yùn)行失常的問題。②采用高效的流水線操作:使指令在流水線中并行地操作,從而提高處理數(shù)據(jù)和指令的速度。③無微代碼的硬連線控制:微代碼的使用會增加復(fù)雜性和每條指令的執(zhí)行周期。④指令格式的規(guī)格化和簡單化:為與流水線結(jié)構(gòu)相適應(yīng)且提高流水線的效率,指令的格式必須趨于簡單和固定的規(guī)式。比如指令采用16位或32位的固定的長度,并且指令中的操作碼字段、操作數(shù)字段都盡可能具有統(tǒng)一的格式。此外,盡量減少尋址方式,從而使硬件邏輯部件簡化且縮短譯碼時(shí)間,同時(shí)也提高了機(jī)器執(zhí)行效率和可靠性。⑤采用面向寄存器堆的指令:RISC結(jié)構(gòu)采用大量的寄存器—— 寄存器操作指令,使指令系統(tǒng)更為精簡??刂撇考鼮楹喕?,指令執(zhí)行速度大大提高。由于VLSI技術(shù)的迅速發(fā)展,使得在一個(gè)芯片上做大量的寄存器成為可能。這也促成了RISC結(jié)構(gòu)的實(shí)現(xiàn)。⑥采用裝入/存儲指令結(jié)構(gòu):在CISC結(jié)構(gòu)中。大量設(shè)置存儲器—— 存儲器操作指令,頻繁地訪問內(nèi)存,將會使執(zhí)行速度降低。RISC結(jié)構(gòu)的指令系統(tǒng)中,只有裝入/存儲指令可以訪問內(nèi)存,而其它指令均在寄存器之間對數(shù)據(jù)進(jìn)行處理。用裝入指令從內(nèi)存中將數(shù)據(jù)取出,送到寄存器;在寄存器之間對數(shù)據(jù)進(jìn)行快速處理,并將它暫存在那里,以便再有需要時(shí)。不必再次訪問內(nèi)存。在適當(dāng)?shù)臅r(shí)候,使用一條存儲指令再將這個(gè)數(shù)據(jù)送回內(nèi)存。采用這種方法可以提高指令執(zhí)行的速度。