ARM架構

特色和應用

自2005年，每年超過一億的手機銷售約98%至少使用了一個ARM處理器。截至2009年，占大約90%的嵌入式32位元RISC處理器和ARM處理器被廣泛使用在消費性電子產品，包括個人數字助理（PDA）、平板電腦、行動電話、數位媒體和音樂播放器、手持式遊戲遊戲機、計算機和電腦外圍裝置（如硬碟機和路由器）。

歷史

ARM的設計是艾康電腦公司於1983年開始的發展計畫。
這個團隊由Roger Wilson和Steve Furber帶領，著手開發一種類似進階6502架構的處理器。Acorn電腦有一大堆建構在6502處理器上的電腦，因此能設計出一顆類似的晶片即意味著對公司有很大的優勢。

Acorn RISC Machine：ARM2

團隊在1985年時開發出樣本「ARM1」，而首顆真正能量產的「ARM2」於次年投產。ARM2具有32位元的資料匯流排、26位元的定址空間，並提供64 Mbyte的定址範圍與16個32-bit的暫存器。暫存器中有一個作為程式計數器，其前面6位元和後面2位元用來儲存處理器狀態標記。ARM2可能是全世界最簡單實用的32位元微處理器，僅容納了30,000個電晶體（六年後的摩托羅拉68000包含了70,000顆）。之所以精簡的原因在於它不含微碼（這大概占了68000的電晶體數約1/4至1/3）；而且與當時大多數的處理器相同，它沒有包含任何的快取。這個精簡的特色使它只需消耗很少的電能，卻能發揮比Intel 80286更好的效能。後繼的處理器「ARM3」則備有4KB的快取，使它能發揮更佳的效能。

Apple、DEC、Intel、Marvell：ARM6、StrongARM、XScale

在1980年代晚期，蘋果電腦開始與艾康電腦合作開發新版的ARM核心。由於這專案非常重要，艾康電腦甚至於1990年將設計團隊另組成一間名為安謀國際科技（Advanced RISC Machines Ltd.）的新公司。也基於這原因，使得ARM有時候反而稱作Advanced RISC Machine而不是Acorn RISC Machine。由於其母公司ARM Holdings plc於1998年在倫敦證券交易所和NASDAQ掛牌上市，使得Advanced RISC Machines成了ARM Ltd旗下擁有的產品。
這個專案到後來進入「ARM6」，首版的樣品在1991年釋出，然後蘋果電腦使用ARM6架構的ARM 610來當作他們Apple Newton產品的處理器。在1994年，艾康電腦使用ARM 610做為他們個人電腦產品的處理器。
在這些變革之後，核心部份卻大多維持一樣的大小——ARM2有30,000顆電晶體，但ARM6卻也只增長到35,000顆。主要概念是以ODM的方式，使ARM核心能搭配一些選配的零件而製成一顆完整的CPU，而且可在現有的晶圓廠裡製作並以低成本的方式達到很大的效能。
ARM的經營模式在於販售其IP核，授權廠家依照設計製作出建構於此核的微控制器和中央處理器。最成功的實作案例屬ARM7TDMI，幾乎賣出了數億套內建微控制器的裝置。
迪吉多曾購買這個架構的產權並研發出「StrongARM」。在233 MHz的頻率下，這顆CPU只消耗1瓦特的電能（後來的晶片消耗得更少）。這項設計後來為了和英特爾的控訴和解而技術移轉，英特爾因而利用StrongARM架構補強他們老舊的i960產品。英特爾後來開發出他們自有的高效能架構產品XScale，之後賣給了邁威爾科技。
支援智慧型手機、個人數位助理和其他手持裝置最常見的架構是「ARMv4」。XScale和ARM926處理器是「ARMv5TE」，而且比起建構在ARMv4的StrongARM、ARM925T和ARM7TDMI等處理器還更常見於許多高階裝置上。

有條件執行

有個附加在ARM設計中好玩的東西，就是使用一個4-bit 條件編碼在每個指令前頭，表示每支指令的執行是否為有條件式的
這大大的減低了在記憶體存取指令時用到的編碼位元，換句話說，它避免在對小型敘述如if做分支指令。有個標準的範例參照歐幾里得的最大公因數演算法：
在C語言中，迴圈為：
int gcd（int i, int j）{
    while（i != j）
        if（i > j）
           i -= j;
       else
           j -= i;
    return i;}
在ARM組合語言中，迴圈為：
loop: CMP    Ri, Rj       ;設定條件為"NE"(不等於) if（i != j）
                          ;"GT"(大於) if（i > j）,
                          ;或"LT"(小於) if（i < j）
      SUBGT  Ri, Ri, Rj   ;若"GT"(大於), i = i-j;
      SUBLT  Rj, Rj, Ri   ;若"LT"(小於), j = j-i;
      BNE    loop         ;若"NE"(不等於)，则继续循环
這避開了then和else子句之間的分支。

其他特色

另一項指令集的特色是，能將位元移（shift）和迴轉（rotate）等功能併成"資料處理"型的指令（算數、邏輯、和暫存器之間的搬移），因此舉例來說，一個C語言的敘述
a += (j << 2);
在ARM之下，可簡化成只需一個word和一個cycle即可完成的指令
ADD     Ra, Ra, Rj, LSL #2
這結果可讓一般的ARM程式變得更加緊密，而不需經常使用記憶體存取，管線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行，與更複雜的CPU設計相比它仍能執行得不錯。
ARM處理器還有一些在其他RISC的架構所不常見到的特色，例如程式計數器-相對定址（的確在ARM上程式計數器為16個暫存器的其中一個）以及前遞加或後遞加的定址模式。
另外值得注意的是ARM處理器會隨著時間不斷地增加它的指令集。譬如某些早期的ARM處理器（比ARM7TDMI更早），可能並未具備指令可以讀取2 Bytes的數量；因此嚴格來講，對這些處理器產生程式碼時，就不可能處理如C語言物件中使用「volatile short」的資料型態。

管線

ARM7和大多數較早的設計具備三階段的管線：提取指令、解碼，並執行。較高效能的設計，如ARM9，則有更深階段的管線： Cortex-A8有13階段的管線。提高效能的額外方式，包含一顆較快的加法器，和更廣的分支預測邏輯線路。例如，在ARM7DI核與ARM7DMI核之間的差異，是一種改進的乘法器（因此添加的「M」）。

除錯

DSP增強指令

Thumb

較新的ARM處理器有一種16-bit指令模式，叫做Thumb，也許跟每個條件式執行指令均耗用4位元的情形有關。在Thumb模式下，較小的opcode有更少的功能性。例如，只有分支可以是條件式的，且許多opcode無法存取所有CPU的暫存器。然而，較短的opcode提供整體更佳的編碼密度（註：意指程式碼在記憶體中佔的空間），即使有些運算需要更多的指令。特別在記憶體埠或匯流排寬度限制在32以下的情形時，更短的Thumb opcode能更有效地使用有限的記憶體頻寬，因而提供比32位元程式碼更佳的效能。典型的嵌入式硬體僅具有較小的32-bit datapath定址範圍以及其他更窄的16 bits定址（例如Game Boy Advance）。在這種情形下，通常可行的方案是編譯成Thumb程式碼，並自行最佳化一些使用（非Thumb）32位元指令集的CPU相關程式區，因而能將它們置入受限的32-bit匯流排寬度的記憶體中。
首顆具備Thumb技術的處理器是ARM7TDMI。所有ARM9和後來的家族，包括XScale，都納入了Thumb技術。

Jazelle

ARM還開發出一項技術，Jazelle DBX（Direct Bytecode eXecution），允許它們在某些架構的硬體上加速執行Java bytecode，就如其他執行模式般，當呼叫一些無法支援bytecodes的特殊軟體時，能提供某些bytecodes的加速執行。它能在現存的ARM與Thumb模式之間互相執行。
首顆具備Jazelle技術的處理器是「ARM7EJ-S」：Jazelle以一個英文字母'J'標示於CPU名稱中。它用來讓手機製造商能夠加速執行Java ME的遊戲和應用程式，也因此促使了這項技術不斷地發展。

Thumb-2

Thumb-2技術首見於「ARM1156核心」，並於2003年發表。Thumb-2擴充了受限的16位元Thumb指令集，以額外的32位元指令讓指令集的使用更廣泛。因此Thumb-2的預期目標是要達到近乎Thumb的編碼密度，但能表現出近乎ARM指令集在32位元記憶體下的效能。
Thumb-2至今也從ARM和Thumb指令集中衍伸出多種指令，包含位元欄操作、分支建表和條件執行等功能。

Thumb Execution Environment（ThumbEE）

ThumbEE，也就是所謂的Thumb-2EE，業界稱為Jazelle RCT技術，於2005年發表，首見於「Cortex-A8」處理器。ThumbEE提供從Thumb-2而來的一些擴充性，在所處的執行環境下，使得指令集能特別適用於執行階段的編碼產生（例如即時編譯）。Thumb-2EE是專為一些語言如Limbo、Java、C#、Perl和Python，並能讓即時編譯器能夠輸出更小的編譯碼卻不會影響到效能。
ThumbEE所提供的新功能，包括在每次存取指令時自動檢查是否有無效指標，以及一種可以執行陣列範圍檢查的指令，並能夠分支到分類器，其包含一小部份經常呼叫的編碼，通常用於高階語言功能的實作，例如對一個新物件做記憶體組態。

進階SIMD（NEON）

進階SIMD延伸集，業界稱為「NEON」技術，它是一個結合64位元和128位元的單指令多重數指令集（SIMD），其針對多媒體和訊號處理程式具備標準化加速的能力。NEON可以在10 MHz的處理器上執行MP3音效解碼，且可以執行13 MHz以下的自適應多速率音訊壓縮編碼。NEON具有一組廣泛的指令集、各自的暫存器檔案，以及獨立執行的硬體。NEON支援8、16、32和64位元的整數及單精度浮點資料，並以單指令多重數的方式運算，執行圖形和遊戲處理中關於語音及視訊的部分。單指令多重指令集在向量超級處理機中是個決定性的要素，它具備同時多項處理功能。在NEON技術中，SIMD最高可同時做16個運算。

VFP

VFP（向量浮點）是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力，並完全相容於ANSI/IEEE Std 754-1985二進位元浮點算數標準。VFP提供大多數適用於浮點運算的應用，例如PDA、智慧型手機、語音壓縮與解壓、3D圖像以及數位元音效、印表機、機上盒，和汽車應用等。VFP架構也支援SIMD平行化的短向量指令執行。這在圖像和訊號處理等應用上，非常有助於降低編碼大小並增加輸出效率。
在ARM為基礎的處理器中，其他可見的浮點、或SIMD的協同處理器還包括了FPA、FPE、iwMMXt。他們提供類似VFP的功能，但在opcode層面上來說並不具有相容性。

安全性擴充（TrustZone）

TrustZone技術出現在ARMv6KZ以及較晚期的應用核心架構中。它提供了一種低成本的方案，針對系統單晶片內加入專屬的安全核心，由硬體建構的存取控制方式支援兩顆虛擬的處理器。這個方式可使得應用程式核心能夠在兩個狀態（領域）之間切換，在此架構下可以避免資訊從較可信的核心領域洩漏至較不安全的領域。這種核心領域之間的切換通常是與處理器其他功能完全無關聯性，因此各個領域可以各自獨立運作但卻仍能使用同一顆核心。記憶體和周邊裝置也可因此得知目前核心運作的領域為何，並能針對這個方式來提供對裝置的機密和編碼進行存取控制。典型的TrustZone技術應用是要能在一個缺乏安全性的環境下完整地執行作業系統，並在可信的環境下能有更少的安全性的編碼。T6是中國第一個開源的TrustZone安全核心(該專案目前已經在公開領域消失)。OP-TEE(Open Portable Trusted Executive Environment)成為目前（2017/7）較為成功的TEE開源專案。

ARM授權方式

ARM公司本身並不靠自有的設計來製造或販售CPU，而是將處理器架構授權給有興趣的廠家。ARM提供了多樣的授權條款，包括售價與散播性等項目。對於授權方來說，ARM提供了ARM核心的整合硬體敘述，包含完整的軟體開發工具（編譯器、debugger、SDK），以及針對內含ARM CPU矽晶片的銷售權。對於無晶圓廠的授權方來說，其希望能將ARM核心整合到他們自行研發的晶片設計中，通常就僅針對取得一份生產就緒的智財核心技術（IP Core）認證。對這些客戶來說，ARM會釋出所選的ARM核心的閘極電路圖，連同抽象類比模型和測試程式，以協助設計整合和驗證。需求更多的客戶，包括整合元件製造商（IDM）和晶圓廠家，就選擇可合成的RTL（暫存器傳輸級，如Verilog）形式來取得處理器的智財權（IP）。藉著可整合的RTL，客戶就有能力能進行架構上的最佳化與加強。這個方式能讓設計者完成額外的設計目標（如高震盪頻率、低能量耗損、指令集延伸等）而不會受限於無法更動的電路圖。雖然ARM並不授予授權方再次販售ARM架構本身，但授權方可以任意地販售製品（如晶片元件、評估板、完整系統等）。商用晶圓廠是特殊例子，因為他們不僅授予能販售包含ARM核心的矽晶成品，對其它客戶來講，他們通常也保留重製ARM核心的權利。
就像大多數IP販售方，ARM依照使用價值來決定IP的售價。在架構上而言，更低效能的ARM核心比更高效能的核心擁有較低的授權費。以矽晶片實作而言，一顆可整合的核心要比一顆硬體巨集（黑箱）核心要來得貴。更複雜的價位元問題來講，持有ARM授權的商用晶圓廠（例如韓國三星和日本富士通）可以提供更低的授權價格給他們的晶圓廠客戶。透過晶圓廠自有的設計技術，客戶可以更低或是免費的ARM預付授權費來取得ARM核心。相較於不具備自有設計技術的專門半導體晶圓廠（如台積電和聯電），富士通／三星對每片晶圓多收取了兩至三倍的費用。對中少量的應用而言，具備設計部門的晶圓廠提供較低的整體價格（透過授權費用的補助）。對於量產而言，由於長期的成本縮減可藉由更低的晶圓價格，減少ARM的NRE成本，使得專門的晶圓廠也成了一個更好的選擇。
許多半導體公司持有ARM授權：Atmel、Broadcom、Cirrus Logic、Freescale（於2004從摩托羅拉公司獨立出來）、富士通、英特爾（藉由和迪吉多的控訴調停）、IBM、NVIDIA、台灣新唐科技（Nuvoton Technology）、英飛凌、任天堂、恩智浦半導體（於2006年從飛利浦獨立出來）、OKI電氣工業、三星電子、Sharp、STMicroelectronics、德州儀器和VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權項目由保密合約所涵蓋，在智慧財產權工業，ARM是廣為人知最昂貴的CPU核心之一。單一的客戶產品包含一個基本的ARM核心可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改，則費用就可能超過千萬美元。