2014年4月3日 星期四

CISC v.s. RISC

Introduction 

   處理器的指令集可分為CISC(Complex Instruction Set Computer)RISC(Reduced Instruction Set Computer),在現代的處理器指令集設計中,兩者均有廣泛的應用,本文主要是兩種指令集特性及其應用的比較。  


History
      傳統的CISC結構有其固有的缺點,即隨著電腦技術的發展而不斷引入新的複雜的指令集,為支援這些新增的指令,電腦的體系結構會越來越複雜,然而,CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有 20%的指令會被反復使用,占整個程式碼的80%。而餘下的80%的指令卻不經常使用,在程式設計中只占20顯然,這種結構是不太合理的。

      基於以上的不合理性,1979年美國加州大學伯克萊分校提出了RISC的概念,RISC並非只是簡單地去減少指令,而是把著眼點放在了如何使電腦的結構更加簡單合理地提高運算速度上。RISC結構優先選取使用頻最高的簡單指令,避免複雜指令;將指令長度固定,指令格式和尋地方式種類減少;以控制邏輯為主,不用或少用微碼控制等措施來達到上述目的。

      到目前為止,RISC體系結構也還沒有嚴格的定義,一般認為,RISC體系結構應具有如下特點:
  採用固定長度的指令格式,指令歸整、簡單、基本定址方式有23

  使用單週期指令,便於流水線操作執行。

  大量使用register,資料處理指令只對register進行操作,只有載入/ 存儲指令可以訪問記憶體,以提高指令的執行效率。

      當然,CISC架構相比較,儘管RISC架構有上述的優點,但決不能認為RISC架構就可以取代CISC架構,事實上,RISCCISC各有優勢, 而且界限並不那麼明顯。現代的CPU往往採用CISC的週邊,內部加入了RISC的特性,如超長指令集CPU就是融合了RISCCISC的優勢,成為未來的CPU發展方向之一。

RISC vs CISC

      現代的CISC中包含了很多複雜指令,這些指令的實現其實是相當于將其分解為多條更為簡單的指令運行。其優點就是簡化代碼,從而提供更多的功能,但由於指令的執行時間各不相同且差別很大(從幾個時鐘周期到幾十個不等)使得pipeline難以設計且不能完全填滿,這樣就造成了時間的浪費從而降低了速度。相比而言,RISC則具有以下優點:

1RISC指令系統較小:種類的數量較少,只提供簡單指令。這些指令大多都在45 個時鐘週期內完成。

2 指令的運算元必須預存於 register 中,這樣操作的時間也統一了。

3指令長度,定址方式,格式都整齊劃一:這樣可以充分利用流水線,基本上可實現一個時鐘脈衝執行一條指令的目標。

4 RISC的副程式調用與 CISC的不同:在 CISC中,程式調用、返回時需將上下文保存在堆疊中,需要記憶體操作。而 RISC將它們存放在 register 中,而且參數也使用 register傳遞。

5RISC中斷可視為特殊的副程式鏈結:CISC 中發生中斷時,所有的 register內容都被壓入堆疊,而 RISC對中斷進行區分對待,分為羽量級和重量級。對羽量級中斷只保存需要保存的 register內容;對重量級中斷的處理如同常規中斷。

6 RISC都採用piplining、快取記憶體、不使用微碼。

      顯然的,在設計上RISCCISC簡單,同時因為CISC的執行步驟過多,閒置的單元電路等待時間增長,不利於平行處理的設計,所以就效能而言RISCCISC還是站了上風,RISC因指令精簡化後造成應用程式碼變大,需要較大的程式記憶體空間,且存在指令種類較多等等的缺點。
      此外,現代的 CISC 結構的 CPU已經融合了很多 RISC 的成分,其性能差距已經越來越小,而複雜的指令可以提供更多的功能,這是程式設計所需要的,因此,CISC RISC的融合應該是未來的發展方向。




資料來源 : The comparison between CISC&RISC CPU instruction set - 曹瀟然 作者

沒有留言:

張貼留言