挑戰408——組成原理(18)——CISC和RISC

指令字長,可以簡單理解爲指令的位數。所以指令的字長(不同的機器不相同),主要取決於:

  • 操作碼長度
  • 操作地址的長度
  • 操作地址的個數

指令字長分爲固定跟可變兩種。固定的指令字長,結構簡單,控制線路簡單。可變的指令字長,結構靈活,充分利用了指令長度,但是控制複雜,一般按照字節的倍數而變化。
上一篇說過操作碼分爲定長操作碼跟不定長操作碼。下面介紹一下不定長操作碼。

不定長操作碼(擴展操作碼技術)

不定長操作碼,其位數隨着地址數的減少而增加。假設指令字長爲16位,我們畫一下初始爲3地址碼的情況。
在這裏插入圖片描述
當操作碼爲4位的時候,我們可以得到最多15條三地址指令,就像這樣(從000 - 1110):
在這裏插入圖片描述
當操作碼爲8位的時候,最多有15條二地址指令:
在這裏插入圖片描述
那麼當操作碼爲12位的時候呢?可以依次畫出所有的情況。

指令設計:從全0到全1,最多有16種,將0000到1110用作15條三地址指令,把1111作爲擴展標識。也就是說,若指令的前4位都是1111,則它表明這條指令操作碼長度至少爲8,。將操作碼擴展到8位,因此減少了一個地址字段。(這裏注意,前面的情況都是15條指令,因爲1111用於拓展,後面的零地址碼,由於不能再拓展,所以是16條指令)。
不定長操作碼的設計不是單一的有4個操作碼爲一組的,比如我們大可以設計一組指令,滿足下面條件:

  • 有15條三地址指令
  • 有12條二地址指令
  • 有62條一地址指令
  • 有30條零地址指令

可以動手試試(這裏不說了)。這樣設計可以得到指令的操作碼長度分別是4,8,12,16不等的長度。

CISC與RISC的基本概念

按指令的複雜程度,可以將指令分成CISC和RISC兩種類型的指令系統。

複雜指令系統計算機(CISC)

隨着VLSI技術的發展,硬件成本的不斷下降,軟件成本的不斷攀升,促使人們在指令系統中增加了許多更加複雜的指令,以適應不同的領域,於是便有了CISC。
主要特點:

  1. 指令系統複雜龐大
  2. 指令長度不固定,指令格式多,尋址方式多
  3. 控制器大多采用微程序控制

代表:Intel公司的x86系列CPU是典型的CISC體系結構
例子:主要應用於桌面PC,筆記本市場(windo,Mac等)

從最初的8086到後來的Pentium系列,每出一代新的CPU,都會有自己新的指令,而爲了兼容以前的CPU平臺上的軟件,舊的指令集又不得不被保留,這使得指令系統越來越複雜,而且,CISC使計算機的研製週期變長,難以保證正確性。不易調試維護,並且採用了使用頻率很低的複雜指令而造成硬件資源浪費。

精簡指令系統計算機(RISC)

基於28定律:對傳統CISC指令系統的研究表明,各種指令的使用頻率相差懸殊,大概只有20%的比較簡單的指令被反覆使用,越佔程序的80%,而80%左右的指令則很少使用,約佔整個程序的20%。從這一事實出發,於是RISC隨之產生:

  1. 選取使用頻率較高的簡單指令,並能組合成複雜的指令
  2. 指令長度固定,指令格式種類少,尋址方式種類少
  3. 只有load/store(存/取數操作)。其餘指令的操作都在寄存器之間完成。
  4. CPU有多個通用寄存器(比CISC多很多)
  5. 採用流水線技術,一般在一個時鐘週期內完成。
  6. 功耗小,成本低

代表:ARM指令構架,MIP指令構架
應用:主要用於移動手機端(如Android,ios,Windowsphone)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章