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