ARM指令集和X86指令集的比較
指令的強(qiáng)弱是CPU的重要指標(biāo),指令集是提高微處理器效率的最有效工具之一。從現(xiàn)階段的主流體系結(jié)構(gòu)講,指令集可分為復(fù)雜指令集(CISC)和精簡(jiǎn)指令集(RISC)兩部分。
本文引用地址:http://m.butianyuan.cn/article/201611/317901.htm相應(yīng)的,微處理隨著微指令的復(fù)雜度也可分為CISC及RISC這兩類。
CISC
是一種為了便于編程和提高記憶體訪問效率的晶片設(shè)計(jì)體系。在20世紀(jì)90年代中期之前,大多數(shù)的微處理器都采用CISC體系──包括Intel的80x86和Motorola的68K系列等。 即通常所說的X86架構(gòu)就是屬于CISC體系的。
RISC
是為了提高處理器運(yùn)行的速度而設(shè)計(jì)的晶片體系。它的關(guān)鍵技術(shù)在于流水線操作(Pipelining):在一個(gè)時(shí)鐘周期里完成多條指令。而超流水線以及超標(biāo)量技術(shù)已普遍在晶片設(shè)計(jì)中使用。RISC體系多用于非x86陣營(yíng)高性能微處理器CPU。像HOLTEK MCU系列等。
ARM(Advanced RISC Machines),既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。而ARM體系結(jié)構(gòu)目前被公認(rèn)為是業(yè)界領(lǐng)先的32位嵌入式RISC微處理器結(jié)構(gòu)。所有ARM處理器共享這一體系結(jié)構(gòu)。
因此我們可以從其所屬體系比較入手,來進(jìn)行X86指令集與ARM指令集的比較。
二、CISC和RISC的比較
(一)
CISC
1
.CISC體系的指令特征
使用微代碼。
指令集可以直接在微代碼記憶體(比主記憶體的速度快很多)里執(zhí)行,新設(shè)計(jì)的處理器,只需增加較少的電晶體就可以執(zhí)行同樣的指令集,也可以很快地編寫新的指令集程式。
龐大的指令集。
可以減少編程所需要的代碼行數(shù),減輕程式師的負(fù)擔(dān)。高階語言對(duì)應(yīng)的指令集:包括雙運(yùn)算元格式、寄存器到寄存器、寄存器到記憶體以及記憶體到寄存器的指令。
2
.CISC體系的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
能夠有效縮短新指令的微代碼設(shè)計(jì)時(shí)間,允許設(shè)計(jì)師實(shí)現(xiàn)CISC體系機(jī)器的向上相容。新的系統(tǒng)可以使用一個(gè)包含早期系統(tǒng)的指令超集合,也就可以使用較早電腦上使用的相同軟體。另外微程式指令的格式與高階語言相匹配,因而編譯器并不一定要重新編寫。
缺點(diǎn):
指令集以及晶片的設(shè)計(jì)比上一代產(chǎn)品更復(fù)雜,不同的指令,需要不同的時(shí)鐘周期來完成,執(zhí)行較慢的指令,將影響整臺(tái)機(jī)器的執(zhí)行效率。
(二)RISC
1
.RISC體系的指令特征
精簡(jiǎn)指令集:
包含了簡(jiǎn)單、基本的指令,透過這些簡(jiǎn)單、基本的指令,就可以組合成復(fù)雜指令。
同樣長(zhǎng)度的指令:
每條指令的長(zhǎng)度都是相同的,可以在一個(gè)單獨(dú)操作里完成。
單機(jī)器周期指令:
大多數(shù)的指令都可以在一個(gè)機(jī)器周期里完成,并且允許處理器在同一時(shí)間內(nèi)執(zhí)行一系列的指令。
2
.RISC體系的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
在使用相同的晶片技術(shù)和相同運(yùn)行時(shí)鐘下,RISC系統(tǒng)的運(yùn)行速度將是CISC的2~4倍。由于RISC處理器的指令集是精簡(jiǎn)的,它的記憶體管理單元、浮點(diǎn)單元等都能設(shè)計(jì)在同一塊晶片上。RISC處理器比相對(duì)應(yīng)的CISC處理器設(shè)計(jì)更簡(jiǎn)單,所需要的時(shí)間將變得更短,并可以比CISC處理器應(yīng)用更多先進(jìn)的技術(shù),開發(fā)更快的下一代處理器。
缺點(diǎn):
多指令的操作使得程式開發(fā)者必須小心地選用合適的編譯器,而且編寫的代碼量會(huì)變得非常大。另外就是RISC體系的處理器需要更快記憶體,這通常都集成于處理器內(nèi)部,就是L1 Cache(一級(jí)緩存)。
綜合上面所述,若要再進(jìn)一步比較CISC與RISC之差異,可以由以下幾點(diǎn)來進(jìn)行分析:
1、指令的形成
CISC
因指令復(fù)雜,故采微指令碼控制單元的設(shè)計(jì),而RISC的指令90%是由硬體直接完成,只有10%的指令是由軟體以組合的方式完成,因此指令執(zhí)行時(shí)間上RISC較短,但RISC所須ROM空間相對(duì)的比較大,至于RAM使用大小應(yīng)該與程序的應(yīng)用比較有關(guān)系。
2、定址模式
CISC
的需要較多的定址模式,而RISC只有少數(shù)的定址模式,因此CPU在計(jì)算記憶體有效位址時(shí),CISC占用的匯流排周期較多。
3、指令的執(zhí)行
CISC
指令的格式長(zhǎng)短不一,執(zhí)行時(shí)的周期次數(shù)也不統(tǒng)一,而RISC結(jié)構(gòu)剛好相反,故適合采用管線處理架構(gòu)的設(shè)計(jì),進(jìn)而可以達(dá)到平均一周期完成一指令的方向努力。顯然的,在設(shè)計(jì)上RISC較CISC簡(jiǎn)單,同時(shí)因?yàn)镃ISC的執(zhí)行步驟過多,閑置的單元電路等待時(shí)間增長(zhǎng),不利于平行處理的設(shè)計(jì),所以就效能而言RISC較CISC還是站了上風(fēng),但RISC因指令精簡(jiǎn)化后造成應(yīng)用程式碼變大,需要較大的程式記憶體空間,且存在指令種類較多等等的缺點(diǎn)。
(三)X86指令集和ARM指令集:
(1) X86指令集:
X86
指令集是Intel為其第一塊16位CPU(i8086)專門開發(fā)的,后來的電腦中為提高浮點(diǎn)數(shù)據(jù)處理能力而增加的X87芯片系列數(shù)學(xué)協(xié)處理器另外使用X87指令,以后就將X86指令集和X87指令集統(tǒng)稱為X86指令集。雖然隨著CPU技術(shù)的不斷發(fā)展,Intel陸續(xù)研制出更新型的i80386、i80486,但為了保證電腦能繼續(xù)運(yùn)行以往開發(fā)的各類應(yīng)用程序以保護(hù)和繼承豐富的軟件資源,所以Intel公司所生產(chǎn)的所有CPU仍然繼續(xù)使用X86指令集,所以它的CPU仍屬于X86系列。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。
除了具備上述CISC的諸多特性外,X86指令集有以下幾個(gè)突出的缺點(diǎn):
l通用寄存器組————對(duì)CPU內(nèi)核結(jié)構(gòu)的影響
X86指令集只有8個(gè)通用寄存器。所以,CISC的CPU執(zhí)行是大多數(shù)時(shí)間是在訪問存儲(chǔ)器中的數(shù)據(jù),而不是寄存器中的。這就拖慢了整個(gè)系統(tǒng)的速度。
RISC系統(tǒng)往往具有非常多的通用寄存器,并采用了重疊寄存器窗口和寄存器堆等技術(shù)使寄存器資源得到充分的利用。
l解碼————對(duì)CPU的外核的影響
解碼器(Decode Unit),這是x86CPU才有的東西。其作用是把長(zhǎng)度不定的x86指令轉(zhuǎn)換為長(zhǎng)度固定的類似于RISC的指令,并交給RISC內(nèi)核。解碼分為硬件解碼和微解碼,對(duì)于簡(jiǎn)單的x86指令只要硬件解碼即可,速度較快,而遇到復(fù)雜的x86指令則需要進(jìn)行微解碼,并把它分成若干條簡(jiǎn)單指令,速度較慢且很復(fù)雜。Athlon也好,PIII也好,老式的CISC的X86指令集嚴(yán)重制約了他們的性能表現(xiàn)。
l尋址范圍小——約束了用戶需要
即使AMD
研發(fā)出X86-64架構(gòu)時(shí),雖然也解決了傳統(tǒng)X86固有的一些缺點(diǎn),比如尋址范圍的擴(kuò)大,但這種改善并不能直接帶來性能上的提升。
(2)ARM指令集:
相比而言,以RISC為架構(gòu)體系的ARM指令集的指令格式統(tǒng)一,種類比較少,尋址方式也比復(fù)雜指令集少。當(dāng)然處理速度就提高很多。ARM處理器都是所謂的精簡(jiǎn)指令集處理機(jī)(RISC)。
其所有指令都是利用一些簡(jiǎn)單的指令組成的,簡(jiǎn)單的指令意味著相應(yīng)硬件線路可以盡量做到最佳化,而提高執(zhí)行速率,相對(duì)的使得一個(gè)指令所需的時(shí)間減到最短。
而因?yàn)橹噶罴木?jiǎn),所以許多工作都必須組合簡(jiǎn)單的指令,而針對(duì)較復(fù)雜組合的工作便需要由『編譯程式』(compiler)來執(zhí)行,而CISC體系的X86指令集因?yàn)橛搀w所提供的指令集較多,所以許多工作都能夠以一個(gè)或是數(shù)個(gè)指令來代替,compiler的工作因而減少許多。
除了具備上述RISC的諸多特性之外,可以總結(jié)ARM指令集架構(gòu)的其它一些特點(diǎn)如下:
lARM
的特點(diǎn)
1.體積小,低功耗,低成本,高性能
2.支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;
3.大量使用寄存器,指令執(zhí)行速度更快;
4.大多數(shù)數(shù)據(jù)操作都在寄存器中完成;
5.尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;
6.指令長(zhǎng)度固定;
7.流水線處理方式
8.Load_store結(jié)構(gòu)
lARM的一些非RISC
思想的指令架構(gòu):
1.允許一些特定指令的執(zhí)行周期數(shù)字可變,以降低功耗,減小面積和代碼尺寸。
2.增加了桶形移位器來擴(kuò)展某些指令的功能。
3.使用了16位的Thumb指令集來提高代碼密度。
4.使用條件執(zhí)行指令來提高代碼密度和性能。
5.使用增強(qiáng)指令來實(shí)現(xiàn)數(shù)據(jù)信號(hào)處理的功能。
(四)小結(jié):
因此,大量的復(fù)雜指令、可變的指令長(zhǎng)度、多種的尋址方式這些CISC的特點(diǎn),也是CISC的缺點(diǎn),因?yàn)檫@些都大大增加了解碼的難度,而在現(xiàn)在的高速硬件發(fā)展下,復(fù)雜指令所帶來的速度提升早已不及在解碼上浪費(fèi)點(diǎn)的時(shí)間。除了個(gè)人PC市場(chǎng)還在用X86指令集外,服務(wù)器以及更大的系統(tǒng)都早已不用CISC了。x86仍然存在的理由就是為了兼容大量的x86平臺(tái)上的軟件,同時(shí),它的體系結(jié)構(gòu)組成的實(shí)現(xiàn)不太困難。
而RISC體系的ARM指令最大特點(diǎn)是指令長(zhǎng)度固定,指令格式種類少,尋址方式種類少,大多數(shù)是簡(jiǎn)單指令且都能在一個(gè)時(shí)鐘周期內(nèi)完成,易于設(shè)計(jì)超標(biāo)量與流水線,寄存器數(shù)量多,大量操作在寄存器之間進(jìn)行。優(yōu)點(diǎn)是不言而喻的,因此,ARM處理器才成為是當(dāng)前最流行的處理器系列,是幾種主流的嵌入式處理體系結(jié)構(gòu)之一。
RISC
目前正如日中天,Intel似乎也將最終拋棄x86而轉(zhuǎn)向RISC結(jié)構(gòu)。
而實(shí)際上,隨著RISC處理器在嵌入式領(lǐng)域中大放異彩,傳統(tǒng)的X86系列CISC處理器在Intel公司的積極改進(jìn)下也克服了功耗過高的問題,成為一些高性能嵌入式設(shè)備的最佳選擇,發(fā)展到今天,CISC與RISC之間的界限已經(jīng)不再是那么涇渭分明,RISC自身的設(shè)計(jì)正在變得越來越復(fù)雜(當(dāng)然并不是完全依著CISC的思路變復(fù)雜),因?yàn)樗袑?shí)際使用的CPU都需要不斷提高性能,所以在體系結(jié)構(gòu)中加入新特點(diǎn)就在所難免。另一方面,原來被認(rèn)為是CISC體系結(jié)構(gòu)的處理器也吸收了許多RISC的優(yōu)點(diǎn),比如Pentium處理器在內(nèi)部的實(shí)現(xiàn)中也是采用的RISC的架構(gòu),復(fù)雜的指令在內(nèi)部由微碼分解為多條精簡(jiǎn)指令來運(yùn)行,但是對(duì)于處理器外部來說,為了保持兼容性還是以CISC風(fēng)格的指令集展示出來。
評(píng)論