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


