*1.CISC**(**Complex Instruction SetComputer,復雜指令集計算機****)*
復雜指令集(CISC,Complex Instruction Set Computer)是一種微處理器指令集架構(ISA),每個指令可執行若干低階操作,諸如從內存讀取、儲存、和計算操作,全部集於單一指令之中。
- *CISC**特點:***
1.指令系統龐大,指令功能復雜,指令格式、尋址方式多;
2.絕大多數指令需多個機器周期完成;
3.各種指令都可訪問存儲器;
4.采用微程序控制;
5.有專用寄存器,少量;
6.難以用優化編譯技術生成高效的目標代碼程序;
在CISC指令集的各種指令中,大約有20%的指令會被反復使用,占整個程序代碼的80%。而余下的80%的指令卻不經常使用,在程序設計中只占20%。
*2.RISC**(**reduced instruction setcomputer**,精簡指令集計算機)***
精簡指令集這種設計思路對指令數目和尋址方式都做了精簡,使其實現更容易,指令並行執行程度更好,編譯器的效率更高。它能夠以更快的速度執行操作。
這種設計思路最早的產生緣自於有人發現,盡管傳統處理器設計了許多特性讓代碼編寫更加便捷,但這些復雜特性需要幾個指令周期才能實現,並且常常不被運行程序所采用。此外,處理器和主內存之間運行速度的差別也變得越來越大。在這些因素促使下,出現了一系列新技術,使處理器的指令得以流水執行,同時降低處理器訪問內存的次數。
實際上在后來的發展中,RISC與CISC在競爭的過程中相互學習,現在的RISC指令集也達到數百條,運行周期也不再固定。雖然如此,RISC設計的根本原則——針對流水線化的處理器優化——沒有改變,而且還在遵循這種原則的基礎上發展出RISC的一個並行化變種VLIW(包括Intel EPIC),就是將簡短而長度統一的精簡指令組合出超長指令,每次執行一條超長指令,等於並行執行多條短指令。
- *RISC**特點:***
1.統一指令編碼(例如,所有指令中的op-code永遠位於同樣的位元位置、等長指令),可快速解譯;
2.泛用的暫存器,所有暫存器可用於所有內容,以及編譯器設計的單純化(不過暫存器中區分了整數和浮點數);
3.單純的尋址模式(復雜尋址模式以簡單計算指令序列取代);
4.硬件中支援少數資料型別(例如,一些CISC電腦中存有處理字節字串的指令。這在RISC電腦中不太可能出現)。
二者區別:
CISC(復雜指令集計算機)和RISC(精簡指令集計算機)是當前CPU的兩種架構。它們的區別在於不同的CPU設計理念和方法。早期的CPU全部是CISC架構,它的設計目的是要用最少的機器語言指令來完成所需的計算任務。RISC和CISC是設計制造微處理器的兩種典型技術,雖然它們都是試圖在體系結構、操作運行、軟件硬件、編譯時間和運行時間等諸多因素中做出某種平衡,以求達到高效的目的,但采用的方法不同,因此,在很多方面差異很大,它們主要有:
(1)指令系統:RISC設計者把主要精力放在那些經常使用的指令上,盡量使它們具有簡單高效的特色。對不常用的功能,常通過組合指令來完成。因此,在RISC機器上實現特殊功能時,效率可能較低。但可以利用流水技術和超標量技術加以改進和彌補。而CISC計算機的指令系統比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務效率較高。
(2)存儲器操作:RISC對存儲器操作有限制,使控制簡單化;而CISC機器的存儲器操作指令多,操作直接。
(3)程序:RISC匯編語言程序一般需要較大的內存空間,實現特殊功能時程序復雜,不易設計;而CISC匯編語言程序編程相對簡單,科學計算及復雜操作的程序社設計相對容易,效率較高。
(4)中斷:RISC機器在一條指令執行的適當地方可以響應中斷;而CISC機器是在一條指令執行結束后響應中斷。
(5)CPU:RISCCPU包含有較少的單元電路,因而面積小、功耗低;而CISCCPU包含有豐富的電路單元,因而功能強、面積大、功耗大。
(6)設計周期:RISC微處理器結構簡單,布局緊湊,設計周期短,且易於采用最新技術;CISC微處理器結構復雜,設計周期長。
(7)用戶使用:RISC微處理器結構簡單,指令規整,性能容易把握,易學易用;CISC微處理器結構復雜,功能強大,實現特殊功能容易。
(8)應用范圍:由於RISC指令系統的確定與特定的應用領域有關,故RISC機器更適合於專用機;而CISC機器則更適合於通用機。
二、**x86、ARM、MIPS架構
x86、ARM、MIPS算是是目前最常見也相對最知名的處理器架構了。
-
x86架構
x86或80x86是英特爾首先開發制造的一種微處理器體系結構的泛稱。該系列較早期的處理器名稱是以數字來表示,並以“86”作為結尾,包括Intel 8086、80186、80286、80386以及80486,因此其架構被稱為“x86”。
x86架構於1978年推出的Intel 8086中央處理器中首度出現,它是從Intel 8008處理器中發展而來的,而8008則是發展自Intel 4004的。8086在三年后為IBM PC所選用,之后x86便成為了個人電腦的標准平台,成為了歷來最成功的CPU架構。
8086是16位元處理器;直到1985年32位元的80386的開發,這個架構都維持是16位元。接着一系列的處理器表示了32位元架構的細微改進,推出了數種的擴充,直到2003年AMD對於這個架構發展了64位元的擴充,並命名為*AMD64*。后來Intel也推出了與之兼容的處理器,並命名為*Intel 64*。兩者一般被統稱為*x86-64*或*x64*,開創了x86的64位時代。
值得注意的是Intel早在1990年代就與惠普合作提出了一種用在安騰系列處理器中的獨立的64位架構,這種架構被稱為*IA-64*。*IA-64*是一種嶄新的架構,和x86架構完全沒有相似性。(對於Intel和AMD的處理器技術,打算專門挑些典型的區別總結一篇文章)
x86架構是重要地可變指令長度的CISC。字組(word, 4字節)長度的內存存取允許不對齊內存位址,字組是以低位字節在前的順序儲存在內存中。向后相容性一直都是在x86架構的發展背后一股驅動力量(設計的需要決定了這項因素而常常導致批評,尤其是來自對手處理器的擁護者和理論界,他們對於一個被廣泛認為是落后設計的架構的持續成功感到不解)。但在較新的微架構中,x86處理器會把x86指令轉換為更像RISC的微指令再予執行,從而獲得可與RISC比擬的超標量性能,而仍然保持向前兼容。
如今,我們面前的PC機基本都是x86架構計算機。如果你想嘗試其他架構的計算機,首先要考慮的是放棄Windows系統。(好消息是即將正式發布的Windows 8 將支持x86和ARM兩種架構)
-
ARM架構
ARM架構(進階精簡指令集機器(AdvancedRISC Machine),較早稱作Acorn RISCMachine)是一個32位元精簡指令集(RISC) 處理器架構,其廣泛地使用在許多嵌入式系統設計。由於節能的特點,ARM處理器非常適用於移動通訊領域,符合其主要設計目標為低耗電的特性。
ARM架構包含了下述RISC特性:
1.讀取/儲存 架構
2.正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)
3.大量的16 × 32-bit 寄存器陣列(register file)
4.固定的32 bits 操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。
5.大多均為一個CPU周期執行。
為了補強這種簡單的設計方式,相較於同時期的處理器如Intel 80286和Motorola68020,還多加了一些特殊設計:
1.大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。
2.算數指令只會在要求時更改條件編碼(conditioncode)
3.32-bit筒型位移器(barrelshifter)可用來執行大部分的算數指令和尋址計算而不會損失效能
4.強大的索引尋址模式(addressing mode)
5.精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組
在今日,ARM家族占了所有32位元嵌入式處理器75%的比例,使它成為占全世界最多數的32位元架構之一。ARM處理器可以在很多消費性電子產品上看到,從可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電玩、計算機)到電腦周邊設備(硬盤、桌上型路由器)甚至在導彈的彈載計算機等軍用設施中都有他的存在。
對於智能機愛好者們,ARM處理器的大名一定早有所聞。
-
MIPS架構
MIPS架構(英語:MIPSarchitecture,為“無內部互鎖流水級的微處理器Microprocessorwithout Interlocked Pipeline Stages的縮寫,也是Millionsof Instructions Per Second的相關語),是一種采取精簡指令集(RISC)的處理器架構,1981年出現,由MIPS科技公司開發並授權,廣泛被使用在許多電子產品、網絡設備、個人娛樂裝置與商業裝置上。其機制是盡量利用軟件辦法避免流水線中的數據相關問題。它最早是在80年代初期由斯坦福(Stanford)大學Hennessy教授領導的研究小組研制出來的。MIPS公司的R系列就是在此基礎上開發的RISC工業產品的微處理器。這些系列產品為很多計算機公司采用構成各種工作站和計算機系統。
MIPS是出現最早的商業RISC架構芯片之一。MIPS的系統結構及設計理念比較先進,強調軟硬件協同提高性能,同時簡化硬件設計。
2002年,中國科學院計算所開始研發龍芯處理器,采用MIPS架構,但未經MIPS公司的授權,遭到侵權的控告。2007年,中國科學院與MIPS公司達成和解,得到正式授權。中國龍芯2和前代產品采用的都是64位MIPS指令架構。過去,MIPS架構的產品多見於工作站領域,索尼PS2游戲機所用的“Emotion Engine”也采用MIPS指令,這些MIPS處理器的性能都非常強勁,而龍芯2也屬於這個陣營,在軟件方面與上述產品完全兼容。
另:
- *ARM*與*MIPS*對比:**
與當前商業化最成功的ARM架構相比,MIPS的優勢主要有以下幾點:
1,MIPS支持64bit指令和操作,ARM目前只到32bit
2,MIPS有專門的除法器,可以執行除法指令
3,MIPS的內核寄存器比ARM多一倍,所以同樣的性能下MIPS的功耗會比ARM更低,同樣功耗下性能比ARM更高
4,MIPS指令比ARM稍微多一點,稍微靈活一點
5,有觀點認為MIPS的bank寄存器性能也要好於ARM,不過沒見過能反映出來的測試
以上為MIPS對比ARM架構的優勢,接下來我們再看一看MIPS架構的不足之處,
與ARM架構相比,MIPS架構也存在着以下幾點不足
1,MIPS的內存地址起始有問題,這導致了MIPS在內存和cache的支持方面都有限制,現在的MIPS處理器單內核面對高容量內存時有問題
2,MIPS今后的發展方向是並行線程,類似INTEL的超線程,而ARM未來的發展方向是物理多核,目前看來物理多核占優。由此來看,我國的龍芯向多核發展還是頗具遠見的。
3,MIPS雖然結構更加簡單,但是到現在還是順序單發射,ARM已經進化到了亂序雙發射,甚至NV的丹佛已經是亂序三發射了。
商業上二者差別也大,ARM很昂貴,而且不能隨意自行更改內核。而MIPS就要開放的多了。(這也算龍芯為什么不采用ARM架構的原因了。)
- *ARM*與*x86*對比:**
X86指令集有以下幾個突出的缺點:
通用寄存器組——對CPU內核結構的影響X86指令集只有8個通用寄存器。所以,CISC的CPU執行是大多數時間是在訪問存儲器中的數據,而不是寄存器中的。這就拖慢了整個系統的速度。
RISC系統往往具有非常多的通用寄存器,並采用了重疊寄存器窗口和寄存器堆等技術使寄存器資源得到充分的利用。
解碼——對CPU的外核的影響
解碼器,這是x86CPU才有的東西。其作用是把長度不定的x86指令轉換為長度固定的類似於RISC的指令,並交給RISC內核。解碼分為硬件解碼和微解碼,對於簡單的x86指令只要硬件解碼即可,速度較快,而遇到復雜的x86指令則需要進行微解碼,並把它分成若干條簡單指令,速度較慢且很復雜。
尋址范圍小——約束了用戶需要
ARM指令集的特點:
- 體積小,低功耗,低成本,高性能;
- 支持 Thumb ( 16 位) /ARM ( 32 位)雙指令集,能很好的兼容8 位 /16 位器件;
- 大量使用寄存器,指令執行速度更快;
- 大多數數據操作都在寄存器中完成;
- 尋址方式靈活簡單,執行效率高;
- 指令長度固定;
- 流水線處理方式
- Load_store結構:在RISC中,所有的計算都要求在寄存器中完成。而寄存器和內存的通信則由單獨的指令來完成。而在CSIC中,CPU是可以直接對內存進行操作的。
ARM的一些非RISC思想的指令架構:
- 允許一些特定指令的執行周期數字可變,以降低功耗,減小面積和代碼尺寸。
- 增加了桶形移位器來擴展某些指令的功能。
- 使用了16位的Thumb指令集來提高代碼密度。
- 使用條件執行指令來提高代碼密度和性能。
- 使用增強指令來實現數據信號處理的功能。
小結:
X86采用CISC,具有大量的復雜指令、可變的指令長度、多種的尋址方式這些CISC的特點,也是CISC的缺點,因為這些都大大增加了解碼的難度,而在現在的高速硬件發展下,復雜指令所帶來的速度提升早已不及在解碼上浪費點的時間。除了個人PC市場還在用X86指令集外,服務器以及更大的系統都早已不用CISC了。x86仍然存在的理由就是為了兼容大量的x86平台上的軟件,同時,它的體系結構組成的實現不太困難。
ARM采用的RISC體系最大特點是指令長度固定,指令格式種類少,尋址方式種類少,大多數是簡單指令且都能在一個時鍾周期內完成,易於設計超標量與流水線,寄存器數量多,大量操作在寄存器之間進行,因此有較快運行速度。因此,ARM處理器才成為是當前最流行的處理器系列,是幾種主流的嵌入式處理體系結構之一。