發(fā)展背景編輯
CISC早期的計(jì)算機(jī)部件比較昂貴,主頻低,運(yùn)算速度慢。為了提高運(yùn)算速度,人們不得不將越來(lái)越多的復(fù)雜指令加入到指令系統(tǒng)中,以提高計(jì)算機(jī)的處理效率,這就逐步形成復(fù)雜指令集計(jì)算機(jī)體系。為了在有限的指令長(zhǎng)度內(nèi)實(shí)現(xiàn)更多的指令,人們又設(shè)計(jì)了操作碼擴(kuò)展。然后,為了達(dá)到操作碼擴(kuò)展的先決條件——減少地址碼,設(shè)計(jì)師又發(fā)現(xiàn)了各種尋址方式,如基址尋址、相對(duì)尋址等,以最大限度地壓縮地址長(zhǎng)度,為操作碼留出空間。Intel公司的X86系列CPU是典型的CISC體系的結(jié)構(gòu),從最初的8086到后來(lái)的Pentium系列,每出一代新的CPU,都會(huì)有自己新的指令,而為了兼容以前的CPU平臺(tái)上的軟件,舊的CPU的指令集又必須保留,這就使指令的解碼系統(tǒng)越來(lái)越復(fù)雜。CISC可以有效地減少編譯代碼中指令的數(shù)目,使取指操作所需要的內(nèi)存訪問(wèn)數(shù)量達(dá)到最小化。此外CISC可以簡(jiǎn)化編譯器結(jié)構(gòu),它在處理器指令集中包含了類(lèi)似于程序設(shè)計(jì)語(yǔ)言結(jié)構(gòu)的復(fù)雜指令,這些復(fù)雜指令減少了程序設(shè)計(jì)語(yǔ)言和機(jī)器語(yǔ)言之間的語(yǔ)義差別,而且簡(jiǎn)化了編譯器的結(jié)構(gòu)。
為了支持復(fù)雜指令集,CISC通常包括一個(gè)復(fù)雜的數(shù)據(jù)通路和一個(gè)微程序控制 CISC器。微程序控制器由一個(gè)微程序存儲(chǔ)器、一個(gè)微程序計(jì)數(shù)器(MicroPC)和地址選擇邏輯構(gòu)成。在微程序存儲(chǔ)器中的每一個(gè)字都表示一個(gè)控制字,并且包含了一個(gè)時(shí)鐘周期內(nèi)所有數(shù)據(jù)通路控制信號(hào)的值。這就意味著控制字中的每一位表示一個(gè)數(shù)據(jù)通路控制線的值。例如,它可以用于加載寄存器或者選擇ALU中的一個(gè)操作。此外每個(gè)處理器指令都由一系列的控制字組成。當(dāng)從內(nèi)存中取出這樣的一條指令時(shí),首先把它放在指令寄存器中,然后地址選擇邏輯再根據(jù)它來(lái)確定微程序存儲(chǔ)器中相應(yīng)的控制字順序起始地址。當(dāng)把該起始地址放入MicroPC中后,就從微程序內(nèi)存中找到相應(yīng)的控制字,并利用它在數(shù)據(jù)通路中把數(shù)據(jù)從一個(gè)寄存器傳送到另一個(gè)寄存器。由于MicroPC中的地址并發(fā)遞增來(lái)指向下一個(gè)控制字,因此對(duì)于序列中的每個(gè)控制器都會(huì)重復(fù)一遍這一步驟。最終,當(dāng)執(zhí)行完最后一個(gè)控制字時(shí),就從內(nèi)存中取出一條新的指令,整個(gè)過(guò)程會(huì)重復(fù)進(jìn)行。
由此可見(jiàn),控制字的數(shù)量及時(shí)鐘周期的數(shù)目對(duì)于每一條指令都可以是不同的。因此在CISC中很難實(shí)現(xiàn)指令流水操作。另外,速度相對(duì)較慢的微程序存儲(chǔ)器需要一個(gè)較長(zhǎng)的時(shí)鐘周期。由于指令流水和短的時(shí)鐘周期都是快速執(zhí)行程序的必要條件,因此CISC體系結(jié)構(gòu)對(duì)于高效處理器而言不太合適的。
發(fā)展歷程編輯
在計(jì)算機(jī)指令系統(tǒng)的優(yōu)化發(fā)展過(guò)程中,出現(xiàn)過(guò)兩個(gè)截然不同的優(yōu)化方向:CISC技術(shù)和RISC技術(shù)。CISC是指復(fù)雜指令系統(tǒng)計(jì)算機(jī)(Complex Instruction Set Computer);RISC是指精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(Reduced Instruction Set Computer)。這里的計(jì)算機(jī)指令系統(tǒng)指的是計(jì)算機(jī)的最低層的機(jī)器指令,也就是CPU能夠直接識(shí)別的指令。隨著計(jì)算機(jī)系統(tǒng)的復(fù)雜,要求計(jì)算機(jī)指令系統(tǒng)的構(gòu)造能使計(jì)算機(jī)的整體性能更快更穩(wěn)定。最初,人們采用的優(yōu)化方法是通過(guò)設(shè)置一些功能復(fù)雜的指令,把一些原來(lái)由軟件實(shí)現(xiàn)的、常用的功能改用硬件的指令系統(tǒng)實(shí)現(xiàn),以此來(lái)提高計(jì)算機(jī)的執(zhí)行速度,這種計(jì)算機(jī)系統(tǒng)就被稱(chēng)為復(fù)雜指令系統(tǒng)計(jì)算機(jī),即Complex Instruction Set Computer,簡(jiǎn)稱(chēng)CISC。另一種優(yōu)化方法是在20世紀(jì)80年代才發(fā)展起來(lái)的,其基本思想是盡量簡(jiǎn)化計(jì)算機(jī)指令功能,只保留那些功能簡(jiǎn)單、能在一個(gè)節(jié)拍內(nèi)執(zhí)行完成的指令,而把較復(fù)雜的功能用一段子程序來(lái)實(shí)現(xiàn),這種計(jì)算機(jī)系統(tǒng)就被稱(chēng)為精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī).即Reduced Instruction Set Computer,簡(jiǎn)稱(chēng)RISC。RISC技術(shù)的精華就是通過(guò)簡(jiǎn)化計(jì)算機(jī)指令功能,使指令的平均執(zhí)行周期減少,從而提高計(jì)算機(jī)的工作主頻,同時(shí)大量使用通用寄存器來(lái)提高子程序執(zhí)行的速度。
從計(jì)算機(jī)誕生以來(lái),人們一直沿用CISC指令集方式。早期的桌面軟件是按CISC設(shè)計(jì)的,并一直沿用。桌面計(jì)算機(jī)流行的x86體系結(jié)構(gòu)即使用CISC。微處理器(CPU)廠商一直在走CISC的發(fā)展道路,包括Intel、AMD,還有其他一些現(xiàn)在已經(jīng)更名的廠商,如TI(德州儀器)、Cyrix以及VIA(威盛)等。CISC架構(gòu)的服務(wù)器主要以IA-32架構(gòu)(IntelArchitecture,英特爾架構(gòu))為主,而且多數(shù)為中低檔服務(wù)器所采用。[2]
缺點(diǎn)編輯
采用復(fù)雜指令系統(tǒng)的計(jì)算機(jī)有著較強(qiáng)的處理高級(jí)語(yǔ)言的能力.這對(duì)提高計(jì)算機(jī)的性能是有益的.當(dāng)計(jì)算機(jī)的設(shè)計(jì)沿著這條道路發(fā)展時(shí).有些人沒(méi)有隨波逐流.他們回過(guò)頭去看一看過(guò)去走過(guò)的道路,開(kāi)始懷疑這種傳統(tǒng)的做法:IBM公司設(shè)在紐約Yorktown的JhomasI.Wason研究中心于1975年組織力量研究指令系統(tǒng)的合理性問(wèn)題.因?yàn)樗?dāng)時(shí)已感到,日趨龐雜的指令系統(tǒng)不但不易實(shí)現(xiàn).而且還可能降低系統(tǒng)性能。1979年以帕特遜教授為首的一批科學(xué)家也開(kāi)始在美國(guó)加州大學(xué)伯克利分校開(kāi)展這一研究.結(jié)果表明,CISC存在許多缺點(diǎn). 首先.在這種計(jì)算機(jī)中.各種指令的使用率相差懸殊:一個(gè)典型程序的運(yùn)算過(guò)程所使用的80%指令.只占一個(gè)處理器指令系統(tǒng)的20%.事實(shí)上最頻繁使用的指令是取、存和加這些最簡(jiǎn)單的指令.這樣-來(lái),長(zhǎng)期致力于復(fù)雜指令系統(tǒng)的設(shè)計(jì),實(shí)際上是在設(shè)計(jì)一種難得在實(shí)踐中用得上的指令系統(tǒng)的處理器.
同時(shí).復(fù)雜的指令系統(tǒng)必然帶來(lái)結(jié)構(gòu)的復(fù)雜性.這不但增加了設(shè)計(jì)的時(shí)間與成本還容易造成設(shè)計(jì)失誤.此外.盡管VLSI技術(shù)現(xiàn)在已達(dá)到很高的水平,但也很難把CISC的全部硬件做在一個(gè)芯片上,這也妨礙單片計(jì)算機(jī)的發(fā)展.在CISC中,許多復(fù)雜指令需要極復(fù)雜的操作,這類(lèi)指令多數(shù)是某種高級(jí)語(yǔ)言的直接翻版,因而通用性差.由于采用二級(jí)的微碼執(zhí)行方式,它也降低那些被頻繁調(diào)用的簡(jiǎn)單指令系統(tǒng)的運(yùn)行速度. 因而.針對(duì)CISC的這些弊?。撂剡d等人提出了精簡(jiǎn)指令的設(shè)想即指令系統(tǒng)應(yīng)當(dāng)只包含那些使用頻率很高的少量指令.并提供一些必要的指令以支持操作系統(tǒng)和高級(jí)語(yǔ)言.按照這個(gè)原則發(fā)展而成的計(jì)算機(jī)被稱(chēng)為精簡(jiǎn)指令集計(jì)算機(jī)(ReducedInstructionSetComputer-RISC).簡(jiǎn)稱(chēng)RISC.[3]
競(jìng)爭(zhēng)對(duì)手RISC編輯
RISC是簡(jiǎn)化指令集計(jì)算機(jī)的簡(jiǎn)略縮寫(xiě),其風(fēng)格是強(qiáng)調(diào)計(jì)算機(jī)結(jié)構(gòu)的簡(jiǎn)單性和高效性。RISC設(shè)計(jì)是從足夠的不可缺少的指令集開(kāi)始的。它的速度比那些具有傳統(tǒng)復(fù)雜指令組計(jì)算機(jī)結(jié)構(gòu)的機(jī)器快得多,而且RISC機(jī)由于其較簡(jiǎn)潔的設(shè)計(jì),較易使用,故具有更短的研制開(kāi)發(fā)周期。RISC結(jié)構(gòu)一般具有如下的一些特點(diǎn):
①單周期的執(zhí)行: 它統(tǒng)一用單周期指令。從根本上克服了CISC指令周期數(shù)有長(zhǎng)有短,造成運(yùn)行中偶發(fā)性不確定,致使運(yùn)行失常的問(wèn)題。
②采用高效的流水線操作:使指令在流水線中并行地操作,從而提高處理數(shù)據(jù)和指令的速度。
③無(wú)微代碼的硬連線控制:微代碼的使用會(huì)增加復(fù)雜性和每條指令的執(zhí)行周期。
④指令格式的規(guī)格化和簡(jiǎn)單化:為與流水線結(jié)構(gòu)相適應(yīng)且提高流水線的效率,指令的格式必須趨于簡(jiǎn)單和固定的規(guī)式。比如指令采用16位或32位的固定的長(zhǎng)度,并且指令中的操作碼字段、操作數(shù)字段都盡可能具有統(tǒng)一的格式。此外,盡量減少尋址方式,從而使硬件邏輯部件簡(jiǎn)化且縮短譯碼時(shí)間,同時(shí)也提高了機(jī)器執(zhí)行效率和可靠性。
⑤采用面向寄存器堆的指令:RISC結(jié)構(gòu)采用大量的寄存器—— 寄存器操作指令,使指令系統(tǒng)更為精簡(jiǎn)??刂撇考鼮楹?jiǎn)化,指令執(zhí)行速度大大提高。由于VLSI技術(shù)的迅速發(fā)展,使得在一個(gè)芯片上做大量的寄存器成為可能。這也促成了RISC結(jié)構(gòu)的實(shí)現(xiàn)。
⑥采用裝入/存儲(chǔ)指令結(jié)構(gòu):在CISC結(jié)構(gòu)中。大量設(shè)置存儲(chǔ)器—— 存儲(chǔ)器操作指令,頻繁地訪問(wèn)內(nèi)存,將會(huì)使執(zhí)行速度降低。RISC結(jié)構(gòu)的指令系統(tǒng)中,只有裝入/存儲(chǔ)指令可以訪問(wèn)內(nèi)存,而其它指令均在寄存器之間對(duì)數(shù)據(jù)進(jìn)行處理。用裝入指令從內(nèi)存中將數(shù)據(jù)取出,送到寄存器;在寄存器之間對(duì)數(shù)據(jù)進(jìn)行快速處理,并將它暫存在那里,以便再有需要時(shí)。不必再次訪問(wèn)內(nèi)存。在適當(dāng)?shù)臅r(shí)候,使用一條存儲(chǔ)指令再將這個(gè)數(shù)據(jù)送回內(nèi)存。采用這種方法可以提高指令執(zhí)行的速度
|