ARM處理器 CISC(複雜指令集)與RISC(精簡指令集)

博文背景

最近想學習一些樹莓派的知識,便看了一本書《樹莓派開始,玩轉Linux》,在閱讀此書的時候,順便把其中不懂的知識重新梳理一些,算是作爲自己的讀書筆記了。 有感興趣的同學,可以一起研究學習。畢竟軟件搞久了,真是有點無聊了,接觸一些硬件的知識,反而感覺新穎,真是別有一番滋味了。畢竟一切軟件的載體都是這是硬件,瞭解一些底層說不定可以收穫到意想不到的見解。

 

你知道iOS、Windows Phone、Android這3大平臺的手機共通點是什麼嗎?除了都可以打電話、傳簡訊、安裝App之外,在硬件架構上最大的共同點,就是這些手機CPU全都是採用ARM架構。現在連Microsoft都相中這塊逐漸成長中的市場大餅,下一代的微軟視窗作業系統Windows 8也將會推出ARM版本,稱爲Windows RT。究竟ARM與行動裝置的關係是什麼?又如何在這競爭激烈的市場中存活下去,逐漸壯大在嵌入式產品的影響力?

在計算機技術的許多變革中,複雜指令集計算機(CISC)過渡到精簡指令集計算機(RISC)體系結構的轉變是很重要的一個方面。正是RISC的出現發展大大推動了 嵌入式系統性能 的提高和功能的完善。

 

 世界上首顆RISC處理器


隨着時間過去,漸漸地發現原本的硬件設計已不符需求,Acorn想要升級機器內的CPU。當時處理器的發展潮流是由8位元轉向16位元,一開始有考慮使用美國國家半導體以及Motorola新的16位元芯片,但是經過評估後,發現2個缺點。

執行上有點慢,中斷的迴應時間太長,而且太貴。

一臺500英鎊的計算機,CPU售價高達100英鎊。

於是只好轉向Intel,要求提供一些80286設計資料以及樣品,但是卻遭到Intel拒絕。這件事情後來直接導致Acorn決定設計自己需要的CPU,由於採用RISC架構的關係,名稱就稱爲Acorn RISC Machine(ARM)。

Acorn於1985年設計出了第一代處理器芯片,稱爲ARM1,由Sophie Wilson設計出類似於6502的指令集,因爲當時Acorn爲英國國家廣播公司BBC所製造的BBC Micro計算機採用MOS 6502處理器,使用類似的指令集有助於縮短開發時間以及技術轉移。Steve Furber則是負責設計硬件實作。ARM1以第二顆處理器的身分,安裝在BBC Micro內部。

ARM1在晶圓設計部分,規格爲3微米制程、2層金屬層、總計2萬5千個晶體管、6MHz運作時脈、消耗功率120mW、芯片面積50mm2。當時Intel的80286使用1.5微米制程、13萬4千個晶體管、6~12Mhz運作時脈,同時這2款處理器都不包含快取。

同年10月,Intel發表80386處理器,與之相比,ARM1顯得功能簡單、能源消耗較少,在效能上不是80386的對手。這一差異導致ARM系列處理器往後的設計路線明顯與Intel不同,Intel持續邁向x86高效能設計,ARM專注於低成本、低功耗的研發方向。
 

 

複雜指令集計算機(CISC)


CISC的英文全稱爲“Complex InstrucTIon Set Computer”,即“複雜指令系統計算機”,從計算機誕生以來,人們一直沿用CISC指令集方式。早期的桌面軟件是按CISC設計的,並一直沿續到現在。目前,桌面計算機流行的x86體系結構即使用CISC。微處理器(CPU)廠商一直在走CISC的發展道路,包括Intel、AMD,還有其他一些現在已經更名的廠商,如TI(德州儀器)、IBM以及VIA(威盛)等。在CISC微處理器中,程序的各條指令是按順序串行執行的,每條指令中的各個操作也是按順序串行執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。CISC架構的服務器主要以IA-32架構(Intel Architecture,英特爾架構)爲主,而且多數爲中低檔服務器所採用。
  
長期來,計算機性能的提高往往是通過增加硬件的複雜性來獲得。隨着集成電路技術。特別是VLSI(超大規模集成電路)技術的迅速發展,爲了軟件編程方便和提高程序的運行速度,硬件工程師採用的辦法是不斷增加可實現複雜功能的指令和多種靈活的編址方式.甚至某些指令可支持高級語言語句歸類後的複雜操作.至使硬件越來越複雜,造價也相應提高.爲實現複雜操作,微處理器除向程序員提供類似各種寄存器和機器指令功能外.還通過存於只讀存貯器(ROM)中的微程序來實現其極強的功能 ,傲處理在分析每一條指令之後執行一系列初級指令運算來完成所需的功能,這種設計的型式被稱爲複雜指令集計算機(Complex Instruction Set Computer-CISC)結構.
一般CISC計算機所含的指令數目至少300條
以上,有的甚至超過500條.
 
 

精簡指令集計算機(RISC)


RISC的英文全稱爲“Reduced InstrucTIon Set Computer”,即“精簡指令集計算機”,是一種執行較少類型計算機指令的微處理器,起源於80年代的MIPS主機(即RISC機),RISC機中採用的微處理器統稱RISC處理器。這樣一來,它能夠以更快的速度執行操作(每秒執行更多百萬條指令,即MIPS)。因爲計算機執行每個指令類型都需要額外的晶體管和電路元件,計算機指令集越大就會使微處理器更復雜,執行操作也會更慢。
  
採用複雜指令系統的計算機有着較強的處理高級語言的能力.這對提高計算機的性能是有益的.當計算機的設計沿着這條道路發展時.有些人沒有隨波逐流.他們回過頭去看一看過去走過的道路,開始懷疑這種傳統的做法:IBM公司沒在紐約Yorktown的JhomasI.Wason研究中心於1975年組織力量研究指令系統的合理性問題.因爲當時已感到,日趨龐雜的指令系統不但不易實現.而且還可能降低系統性能.1979年以帕特遜教授爲首的一批科學家也開始在美國加冊大學伯克萊分校開展這一研究.結果表明,CISC存在許多缺點.首先.在這種計算機中.各種指令的使用率相差懸殊:一個典型程序的運算過程所使用的80%指令.只佔一個處理器指令系統的20%.事實上最頻繁使用的指令是取、存和加這些最簡單的指令.這樣-來,長期致力於複雜指令系統的設計,實際上是在設計一種難得在實踐中用得上的指令系統的處理器.同時.複雜的指令系統必然帶來結構的複雜性.這不但增加了設計的時間與成本還容易造成設計失誤.此外.儘管VLSI技術現在已達到很高的水平,但也很難把CISC的全部硬件做在一個芯片上,這也妨礙單片計算機的發展.在CISC中,許多複雜指令需要極複雜的操作,這類指令多數是某種高級語言的直接翻版,因而通用性差.由於採用二級的微碼執行方式,它也降低那些被頻繁調用的簡單指令系統的運行速度.因而.針對CISC的這些弊病.帕特遜等人提出了精簡指令的設想即指令系統應當只包含那些使用頻率很高的少量指令.並提供一些必要的指令以支持操作系統和高級語言.按照這個原則發展而成的計算機被稱爲精簡指令集計算機(Reduced Instruction Set Computer-RISC)結構.簡稱RISC.
 
 

RISC的優點列舉如下:

指令長度固定,方便CPU譯碼,簡化譯碼器設計。

儘量在CPU的暫存器(最快的存儲器元件)裏操作,避免額外的讀取與載入時間。

由於指令長度固定,更能受益於執行線路管線化(pipeline)後所帶來的效能提升。

處理器簡化,晶體管數量少,易於提升運作時脈。比起同時脈的CISC處理器,耗電量較低。

RISC的缺點列舉如下:

複雜指令需要由許多的小指令去完成,程序變得比較大,存儲器也佔用比較多,這在硬盤昂貴,常常使用磁帶儲存的時代來說,是個大缺點。

程序變長,代表着讀取工作變得繁重,需要更多的時間將指令從存儲器載入至處理器內。

這裏也提供一個小小的概念,CISC是在RISC出現之後纔出現的相對名詞,並不是從一開始就有CISC、RISC這2種處理器架構。
 

 
 
 

ç®è¿°riscåciscçåºå«

 

RISC和CISC的區別:

處理器的指令集可簡單分爲2種,CISC(complex instruction set computer)以及RISC(reduced instruction set computer)。一開始的處理器都是CISC架構,隨着時間演進,有越來越多的指令集加入。由於當時編譯器的技術並不純熟,程序都會直接以機器碼或是彙編語言寫成,爲了減少程序設計師的設計時間,逐漸開發出單一指令,複雜操作的程序碼,設計師只需寫下簡單的指令,再交由CPU去執行。但是後來有人發現,整個指令集中,只有約20%的指令常常會被使用到,約佔整個程序的80%;剩餘80%的指令,只佔整個程序的20%。於是1979年美國加州大學柏克萊分校的David Patterson教授提出了RISC的想法,主張硬件應該專心加速常用的指令,較爲複雜的指令則利用常用的指令去組合。
 

(1) 指令系統:RISC 設計者把主要精力放在那些經常使用的指令上,儘量使它們具有簡單高效的特色。對不常用的功能,常通過組合指令來完成。因此,在RISC 機器上實現特殊功能時,效率可能較低。但可以利用流水技術和超標量技術加以改進和彌補。而CISC 計算機的指令系統比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務效率較高。

(2) 存儲器操作:RISC 對存儲器操作有限制,使控制簡單化;而CISC 機器的存儲器操作指令多,操作直接。

(3) 程序:RISC 彙編語言程序一般需要較大的內存空間,實現特殊功能時程序複雜,不易設計;而CISC 彙編語言程序編程相對簡單,科學計算及複雜操作的程序設計相對容易,效率較高。

(4) 中斷:RISC 機器在一條指令執行的適當地方可以響應中斷;而CISC 機器是在一條指令執行結束後響應中斷。

(5) CPU芯片電路:RISC CPU 包含有較少的單元電路,因而面積小、功耗低;而CISC CPU 包含有豐富的電路單元,因而功能強、面積大、功耗大。

(6) 設計週期:RISC 微處理器結構簡單,佈局緊湊,設計週期短,且易於採用最新技術;CISC 微處理器結構複雜,設計週期長。

(7) 用戶使用:RISC 微處理器結構簡單,指令規整,性能容易把握,易學易用;CISC微處理器結構複雜,功能強大,實現特殊功能容易。

(8) 應用範圍:由於RISC 指令系統的確定與特定的應用領域有關,故RISC 機器更適合於專用機;而CISC 機器則更適合於通用機。

 

我們經常談論有關“PC”與“Macintosh”的話題,但是又有多少人知道以Intel公司X86爲核心的PC系列正是基於CISC體系結構,而 Apple公司的Macintosh則是基於RISC體系結構      (Macintosh(蘋果電腦的統稱))

CISC與RISC到底有何區別?

  從硬件角度來看CISC處理的是不等長指令集,它必須對不等長指令進行分割,因此在執行單一指令的時候需要進行較多的處理工作。而RISC執行的是等長精簡指令集,CPU在執行指令的時候速度較快且性能穩定。因此在並行處理方面RISC明顯優於CISC,RISC可同時執行多條指令,它可將一條指令分割成若干個進程或線程,交由多個處理器同時執行。由於RISC執行的是精簡指令集,所以它的製造工藝簡單且成本低廉。

  從軟件角度來看,CISC運行的則是我們所熟識的DOS、Windows操作系統。而且它擁有大量的應用程序。因爲全世界有65%以上的軟件廠商都理爲基於CISC體系結構的PC及其兼容機服務的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面卻顯得有些勢單力薄。雖然在RISC上也可運行DOS、Windows,但是需要一個翻譯過程,所以運行速度要慢許多。

  目前CISC與RISC正在逐步走向融合,PenTIum Pro、Nx586、K5就是一個最明顯的例子,它們的內核都是基於RISC體系結構的。他們接受CISC指令後將其分解分類成RISC指令以便在遇一時間內能夠執行多條指令。由此可見,下一代的CPU將融合CISC與RISC兩種技術,從軟件與硬件方面看二者會取長補短。

 
 
 
 
 
 
參考:
書籍《樹莓派開始,玩轉Linux》
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章