ARM指令集和X86指令集的比較

2022-03-06 14:09:09 字數 2486 閱讀 8636

指令的強弱是cpu的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為複雜指令集(cisc)和精簡指令集(risc)兩部分。

相應的,微處理隨著微指令的複雜度也可分為cisc及risc這兩類。

cisc

是一種為了便於程式設計和提高記憶體訪問效率的晶元設計體系。在20世紀90年代中期之前,大多數的微處理器都採用cisc體系──包括intel的80x86和motorola的68k系列等。 即通常所說的x86架構就是屬於cisc體系的。

risc

是為了提高處理器執行的速度而設計的晶元體系。它的關鍵技術在於流水線操作(pipelining):在乙個時鐘週期裡完成多條指令。而超流水線以及超標量技術已普遍在晶元設計中使用。risc體系多用於非x86陣營高效能微處理器cpu。像holtek mcu系列等。

arm ( advanced risc machines ),既可以認為是乙個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。而arm體系結構目前被公認為是業界領先的32 位嵌入式risc 微處理器結構。 所有arm處理器共享這一體系結構。

因此我們可以從其所屬體系比較入手,來進行x86指令集與arm指令集的比較。

二、cisc和risc的比較

(一)

cisc

1.cisc體系的指令特徵

使用微**。

指令集可以直接在微**記憶體(比主記憶體的速度快很多)裡執行,新設計的處理器,只需增加較少的電晶體就可以執行同樣的指令集,也可以很快地編寫新的指令集程式。

龐大的指令集。

可以減少程式設計所需要的**行數,減輕程式師的負擔。高階語言對應的指令集:包括雙運算元格式、暫存器到暫存器、暫存器到記憶體以及記憶體到暫存器的指令。

2.cisc體系的優缺點

優點:

能夠有效縮短新指令的微**設計時間,允許設計師實現cisc體系機器的向上相容。新的系統可以使用乙個包含早期系統的指令超集合,也就可以使用較早電腦上使用的相同軟體。另外微程式指令的格式與高階語言相匹配,因而編譯器並不一定要重新編寫。

缺點:

指令集以及晶元的設計比上一代產品更複雜,不同的指令,需要不同的時鐘週期來完成,執行較慢的指令,將影響整台機器的執行效率。

(二)risc

1.risc體系的指令特徵

精簡指令集:

包含了簡單、基本的指令,透過這些簡單、基本的指令,就可以組合成複雜指令。

同樣長度的指令:

每條指令的長度都是相同的,可以在乙個單獨操作裡完成。

單機器週期指令:

大多數的指令都可以在乙個機器週期裡完成,並且允許處理器在同一時間內執行一系列的指令。

2.risc體系的優缺點

優點:

在使用相同的晶元技術和相同執行時鐘下,risc系統的執行速度將是cisc的2~4倍。由於risc處理器的指令集是精簡的,它的記憶體管理單元、浮點單元等都能設計在同一塊晶元上。risc處理器比相對應的cisc處理器設計更簡單,所需要的時間將變得更短,並可以比cisc處理器應用更多先進的技術,開發更快的下一代處理器。

缺點:

多指令的操作使得程式開發者必須小心地選用合適的編譯器,而且編寫的**量會變得非常大。另外就是risc體系的處理器需要更快記憶體,這通常都整合於處理器內部,就是l1 cache(一級快取)。

綜合上面所述,若要再進一步比較cisc與risc之差異,可以由以下幾點來進行分析:

1、指令的形成

cisc

因指令複雜,故採微指令碼控制單元的設計,而risc的指令90%是由硬體直接完成,只有10%的指令是由軟體以組合的方式完成,因此指令執行時間上risc較短,但risc所須rom空間相對的比較大,至於ram使用大小應該與程式的應用比較有關係。

2、定址模式

cisc

的需要較多的定址模式,而risc只有少數的定址模式,因此cpu在計算記憶體有效位址時,cisc占用的匯流排週期較多。

3、指令的執行

cisc

指令的格式長短不一,執行時的週期次數也不統一,而risc結構剛好相反,故適合採用管線處理架構的設計,進而可以達到平均一週期完成一指令的方向努力。顯然的,在設計上risc較cisc簡單,同時因為cisc的執行步驟過多,閒置的單元電路等待時間增長,不利於平行處理的設計,所以就效能而言risc較cisc還是站了上風,但risc因指令精簡化後造成應用程式碼變大,需要較大的程式記憶體空間,且存在指令種類較多等等的缺點。

x86組合語言指令集

一 資料傳輸指令 8088 彙編跳轉 cmp a,b 比較a與b mov a,b 把b的值送給a ret 返回主程式 nop 無作用,英文 no operation 的簡寫,意思是 do nothing call 呼叫子程式 je 或jz 若相等則跳 jne或jnz 若不相等則跳 jmp 無條件跳 ...

Thumb指令集與ARM指令集的區別

thumb指令集 thumb指令可以看做是arm指令壓縮形式的子集,是針對 密度的問題而提出的,它具有16為的 密度。thumb不是乙個完整的體系結構,不能指望處理程式只執行thumb指令而不支援arm指令集。因此,thumb指令只需要支援通用功能,必要時,可借助完善的arm指令集,例如 所有異常自...

Thumb指令集與ARM指令集的區別

thumb指令集 thumb指令可以看做是arm指令壓縮形式的子集,是針對 密度的問題而提出的,它具有16為的 密度。thumb不是乙個完整的體系結構,不能指望處理程式只執行thumb指令而不支援arm指令集。因此,thumb指令只需要支援通用功能,必要時,可借助完善的arm指令集,例如 所有異常自...