RISC,精簡指令集;CISC,複雜指令集
期的CPU全部是CISC架構,它的設計目的是要用最少的機器語言指令來完成所需的計算任務。比如對於乘法運算,在CISC架構的CPU上,您可能需要這樣一條指令:MUL ADDRA, ADDRB就可以將ADDRA和ADDRB中的數相乘並將結果儲存在ADDRA中。將ADDRA, ADDRB中的資料讀入寄存器,相乘和將結果寫回記憶體的操作全部依賴於CPU中設計的邏輯來實現。這種架構會增加CPU結構的複雜性和對CPU工藝的要求,但對於編譯器的開發十分有利。比如上面的例子,C程式中的a*=b就可以直接編譯為一條乘法指令。今天只有Intel及其相容CPU還在使用CISC架構。
RISC架構要求軟體來指定各個操作步驟。上面的例子如果要在RISC架構上實現,將ADDRA, ADDRB中的資料讀入寄存器,相乘和將結果寫回記憶體的操作都必須由軟體來實現,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。這種架構可以降低CPU的複雜性以及允許在同樣的工藝水平下生產出功能更強大的CPU,但對於編譯器的設計有更高的要求。
在早期的電腦業界,編譯器技術尚未出現。程式是以機器語言或組合語言完成的。為了便於編寫程式,電腦架構師設計出越來越複雜的指令,可以直接對應進階程式設計語言的進階功能。當時的看法是硬體比編譯器更容易設計,所以結構的複雜性在硬體這端。
還有一個因素是當時的記憶體不僅容量少,而且速度很慢,使用的都是磁性技術。憑藉高密度打包的指令,存取慢速資源的頻率可以降低。
微處理器只有少量寄存器的兩個原因是:
寄存器每一個位元位都比外部記憶體貴。以當時的整合電路技術水平,大量寄存器對晶片或電路板而言是難以承受的。
一旦具有大數量的寄存器,相關的指令字(opcode)將會需要更多的位元位(使用寶貴的RAM)來定位寄存器。
到目前為止,RISC 體繫結構也還沒有嚴格的定義,一般認為,RISC 體繫結構應具有如下特點:
- 採用固定長度的指令格式,指令歸整、簡單、基本定址方式有2~3 種。
- 使用單周期指令,便於流水線操作執行。
- 大量使用寄存器,資料處理指令只對寄存器進行操作,只有載入/ 儲存指令可以訪問儲存空間,
以提高指令的執行效率。
事實上,RISC 和CISC 各有優勢,而且界限並不那麼明顯。現代的CPU 往往採用CISC 的外圍,內部加入了RISC 的特性,如超長指令集CPU 就是融合了RISC 和CISC 的優勢,成為未來的CPU 發展方向之一.
總結
RISC更有利於流水作業;大多數的指令都可以在一個機器周期裡完成,並且允許處理器在同一時間內執行一系列的指令。 RISC增加了寄存器的數量。RISC需要更多的記憶體