實用乾貨:關於處理器ARM知識匯總

文章推薦指數: 80 %
投票人數:10人

基於鼎易鴻基&萬酷電子的掃描槍產品採用的處理器都是ARM32-bit,所以今天我們來簡單探討下關於ARM處理器的相關知識,歡迎各路大神指點交流。

【ARM處理器簡介】

ARM處理器是一種低能耗高性能的32位RISC(精簡指令系統)處理器,它共有31個32位寄存器,而其中16個可以在任何模式下看到;它的指令為簡單的加載和存儲指令(從內存加載某個值,執行完操作後再將其放回內存)。

一般來講比等價32位代碼節省到35%,卻能保留32位系統的所有優勢。

【ARM處理器的特點】

1.體積小、低功耗、低成本、高性能

2.之處Thunb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件

3.大量使用寄存器,指令執行速度更快

4.大多數數據操作都在寄存器中完成

5.尋址方式靈活簡單,執行效率高

6.指令長度固定

【ARM體系結構】

ARM架構是構建每個ARM處理器的基礎。

ARM架構支持跨越多個性能點的實現,並已在許多細分市場中成為主導的架構。

ARM架構支持非常廣泛的性能點,因而可以和最新的微架構技術獲得極小的ARM處理器實現和極有效的高級設計實現。

實現規模、性能和低功耗是ARM架構的關鍵特性。

ARM已經開發了架構擴展,從而為JAVA加速(JAZELLE@)、安全性(TruseZone®)、SIMD和高級SIMD(NEON™)技術提供支持。

因為ARM架構與精簡指令集計算(RISC)架構類似,所以我們先來說說RISC架構。

RISC是一種設計思想,其目標是設計出一套能夠在高時鐘頻率下單周期執行、簡單而有效的指令集。

它的設計重點是在於降低由硬體執行的指令的複雜度,因為軟體比硬體更容易提供更大的靈活性和跟高的智能。

因此,RICS設計對編譯器有更高的要求。

RISC是在CISC指令系統基礎上大戰起來的,因為對CISC機進行測試表明,各種指令的使用頻率相當懸殊,最常使用的一些比較簡單的指令,他它們本身只占指令總數的20%,但在程序中出現的頻度卻占80%,複雜的指令系統必然增加未處理器的複雜性,使處理器的研製時間長、成本高,並且複雜的指令需要複雜的操作,必然會降低計算機的速度,所以RISC誕生了。

【RISC和CISC之間的主要區別】

因為ARM架構與精簡指令集計算(RISC)架構類似,隨意ARM架構包含了RISC的特性:

1.讀取/儲存 架構

2.不支援地址不對齊內存存取(ARMv6內核現已支援)

3.正交指令集(任意存取指令可以任意的尋址方式存取數據Orthogonal instruction set)

4.大量的16 × 32-bit 暫存器檔案(寄存器陣列register file)

5.固定的32 bits 操作碼寬(opcode),降低編碼數量所產生的耗費,減輕解碼和管線化的負擔。

6.大多均為一個CPU周期執行。

為了補強這種簡單的設計方式,相較於同時期的處理器,還多加了一些特殊設計:

1.大部分指令可以條件式地執行,降低在分支時產生的負重,彌補分支預測器(branch predictor)的不足。

2.算數指令只會在要求時更改條件編碼(condition code)

3.32-bit筒型位移器(barrel shifter)可用來執行大部分的算數指令和尋址計算而不會損失效能

4.強大的索引尋址模式(addressing mode)

5.精簡但快速的雙優先級中斷子系統,具有可切換的暫存器組

有個附加在ARM設計中好玩的東西,就是使用一個4-bit 條件編碼 在每個指令前頭,表示每支指令的執行是否為有條件式的

【ARM體系結構的命名規則】

ARM產品通常以ARM[x][y][z][T][D][M][I][E][J][F][-S]形式出現

【ARM體系的變種】

在ARM體系中增加的某些特定功能稱為ARM體系的某種變種(Variant)。

1.Thumb指令集(T變種)

Thumb指令集是將ARM指令集的一個子集重新編碼而形成的的一個指令集。

ARM指令長度為32位,Thumb指令長度為16位。

與ARM指令集相比,Thumb指令集具有一定的局限性,即完成相同的操作,Thunmb指令通常需要更多的指令。

因此在對系統運行時間要求苛刻的應用場合,ARM指令集更為合適。

Thumb指令集沒有包含進行異常處理時需要的一些指令,所以在異常中斷的低級處理時,還是需要使用ARM指令。

這種限制決定了Thumb指令需要和ARM指令配合使用。

2.長乘法指令(M變種)

M變種增加了兩條用於進行長乘法操作的ARM指令:其中一條指令用於實現32位整數乘以32位整數,生成64位整數的長乘法操作,另一條指令用於實現32位整數乘以32位整數,然後再加上32位整數,生成64位整數長乘操作。

在需要這種長乘法的應用場合,使用M變種比較合適,然而,在有些應用場合中,乘法操作的性能並不重要,在系統實現時就不適合增加M變種的功能。

3.增強型DSP指令(E變種)

E變種包含了一些附加的指令,這些指令用於增強處理器對一些典型DSP算法的處理性能,主要包括:幾條新的實現16位數據乘法和乘加操作的指令,實現飽和的帶符號數的加減法操作指令。

所謂飽和的帶符號數的加減法操作是在加減法操作溢出時,結果並不進行卷繞,而是使用最大的正數或最小的負數來表示。

進行數字數據操作的指令,包括雙字數讀取指令LDRD、雙字寫入指令STRD和協助處理器的寄存器傳輸指令MCRR/MRRC、Cache預取指令PLD。

4.JAVA加速器Jazelle(J變種)

ARM的Jazelle技術將Java的優勢和先進的32位RISC晶片完美地結合在一起。

Jazelle技術提供了Java加速功能,可以得到比普通Java虛擬機高得多的性能。

與普通的Java虛擬機相比,Jazelle使Java代碼運行速度提高了3倍,而功耗降低了80%

Jazelle技術使得程式設計師可以在一個單獨對的處理器上同時運行Java應用程式、已經建立好的作業系統、中間件以及其他應用程式。

與使用協處理器和雙處理器相比,使用單獨的處理器可以在提供高性能的同時,保證低功耗和低成本。

5.ARM媒體功能擴展(SIMD變種)

ARM媒體功能擴展為嵌入式應用系統提供了高性能的音頻/視頻處理技術。

這就要求處理器能夠提供很強的數位訊號處理能力,同時還必須保持低功耗,以延長電池的使用時間。

ARMd的SIMD媒體功能擴展為這些應用需要提供了解決方案。

SIMD變種的主要特點:可以同時進行兩個16位操作數或者4個8位操作數的運算,提供了小數算數運算,用戶可以定義飽和運算的模式,兩套16位操作數的乘加/乘減運算,32位乘以32位的小數MAC,同時8位/16位選擇操作。


鼎酷IOT部落(dkiot888)是由鼎易鴻基&萬酷電子聯合出品,專注於為大家提供物聯網精髓的新媒體平台。

我們關注物聯網行業最新動態,專注做您的物聯網口袋知識庫,旨在搭建共同學習的知識平台,讓您學得方便,聊得暢快;鼎酷IOT部落用心做大家的「良仆」。

各項內容鼎酷IOT 部落微信公眾號同步。

物聯網行業頂尖產品諮詢也歡迎留言。


請為這篇文章評分?


相關文章 

繼續掀裙子看真相之能跑linux的那些cpu

這個中秋節,程式設計師可能都過得不夠好,大家都在關注阿里搶月全事件,開始是笑,最後笑出了淚。我們傳大的程式設計師,既然讓小小的HR給黑了,扣了一頂腐敗的大帽子。筆者覺得,寫個腳本在網頁刷按鈕這...

超能課堂(144):X86、ARM有何不同?

一台伺服器、一台電腦、一台手機最重要的電子零部件是什麼?沒錯,就是CPU處理器。它主要負責數據計算、控制功能,是最核心的部分。不過你又知道有多少種CPU架構嗎?主流的X86、ARM到底有什麼區別?