卅年史詩!地球上出現(xiàn)過的CPU完全收
3、 CISC與RISC
CISC,Complex Instruction Set Computer,復(fù)雜指令系統(tǒng)計算機。RISC,Reduced Instruction Set Computer,精簡指令系統(tǒng)計算機。雖然這兩個名詞是針對計算機的,但下文我們?nèi)匀恢粚χ噶罴M行研究。
(1) CISC的產(chǎn)生、發(fā)展和現(xiàn)狀
一開始,計算機的指令系統(tǒng)只有很少一些基本指令,而其他的復(fù)雜指令全靠軟件編譯時通過簡單指令的組合來實現(xiàn)。舉個最簡單的例子,一個a乘以b的操作就可以轉(zhuǎn)換為a個b相加來做,這樣就用不著乘法指令了。當(dāng)然,最早的指令系統(tǒng)就已經(jīng)有乘法指令了,這是為什么呢?因為用硬件實現(xiàn)乘法比加法組合來得快得多。
由于那時的計算機部件相當(dāng)昂貴,而且速度很慢,為了提高速度,越來越多的復(fù)雜指令被加入了指令系統(tǒng)中。但是,很快又有一個問題:一個指令系統(tǒng)的指令數(shù)是受指令操作碼的位數(shù)所限制的,如果操作碼為8位,那么指令數(shù)最多為256條(2的8次方)。
那么怎么辦呢?指令的寬度是很難增加的,聰明的設(shè)計師們又想出了一種方案:操作碼擴展。前面說過,操作碼的后面跟的是地址碼,而有些指令是用不著地址碼或只用少量的地址碼的。那么,就可以把操作碼擴展到這些位置。
舉個簡單的例子,如果一個指令系統(tǒng)的操作碼為2位,那么可以有00、01、10、11四條不同的指令。現(xiàn)在把11作為保留,把操作碼擴展到4位,那么就可以有00、01、10、1100、1101、1110、1111七條指令。其中1100、1101、1110、1111這四條指令的地址碼必須少兩位。
然后,為了達到操作碼擴展的先決條件:減少地址碼,設(shè)計師們又動足了腦筋,發(fā)明了各種各樣的尋址方式,如基址尋址、相對尋址等,用以最大限度的壓縮地址碼長度,為操作碼留出空間。
就這樣,慢慢地,CISC指令系統(tǒng)就形成了,大量的復(fù)雜指令、可變的指令長度、多種的尋址方式是CISC的特點,也是CISC的缺點:因為這些都大大增加了解碼的難度,而在現(xiàn)在的高速硬件發(fā)展下,復(fù)雜指令所帶來的速度提升早已不及在解碼上浪費點的時間。除了個人PC市場還在用x86指令集外,服務(wù)器以及更大的系統(tǒng)都早已不用CISC了。x86仍然存在的唯一理由就是為了兼容大量的x86平臺上的軟件。
(2) RISC的產(chǎn)生、發(fā)展和現(xiàn)狀
1975年,IBM的設(shè)計師John Cocke研究了當(dāng)時的IBM370CISC系統(tǒng),發(fā)現(xiàn)其中占總指令數(shù)僅20%的簡單指令卻在程序調(diào)用中占了80%,而占指令數(shù)80%的復(fù)雜指令卻只有20%的機會用到。由此,他提出了RISC的概念。
事實證明,RISC是成功的。80年代末,各公司的RISC CPU如雨后春筍般大量出現(xiàn),占據(jù)了大量的市場。到了90年代,x86的CPU如pentium和k5也開始使用先進的RISC核心。
RISC的最大特點是指令長度固定,指令格式種類少,尋址方式種類少,大多數(shù)是簡單指令且都能在一個時鐘周期內(nèi)完成,易于設(shè)計超標(biāo)量與流水線,寄存器數(shù)量多,大量操作在寄存器之間進行。由于下文所講的CPU核心大部分是講RISC核心,所以這里就不多介紹了,對于RISC核心的設(shè)計下面會詳細談到。
RISC目前正如日中天,Intel的Itanium也將最終拋棄x86而轉(zhuǎn)向RISC結(jié)構(gòu)。<
關(guān)注我們


