ARM架構

ARM架構，過去稱作進階精簡指令集機器，是一個精簡指令集。ARM架構版本從ARMv3到ARMv7支援32位元空間和32位元算數運算，大部分架構的指令為定長32位元，而2011年釋出的ARMv8-A架構添加了對64位元空間和64位元算術運算的支援，同時也更新了32位元定長指令集。至2009年為止，ARM架構處理器佔市面上所有32位元嵌入式RISC處理器90%的比例，使它成為佔全世界最多數的32位元架構。ARM處理器可以在很多消費性電子產品上看到，從可攜式裝置，甚至在導彈的彈載計算機等軍用設施中都有他的存在。在此還有一些基於ARM設計的衍伸產品，重要產品還包括Marvell的XScale架構和德州儀器的OMAP系列。2011年，ARM的客戶報告79億ARM處理器出貨量，佔有95%的智慧手機、90%的硬碟驅動器、40%的數字電視和機上盒、15%的微控制器、和20%的移動電腦。在2012年，微軟與ARM科技生產新的Surface平板電腦，AMD宣佈它將於2014年開始生產基於ARM核心的64位元伺服器晶片，2016年，日本富士通公司宣佈“京”超級計算機的後繼機種將採用ARM架構，該超級電腦於2019年5月定名為「富嶽」，2020年6月於TOP500奪冠。2016年7月18日，日本軟銀集團斥資3.3兆日元收購了安謀控股。特色和應用.自2005年，每年超過一億的手機銷售約98%使用了ARM處理器。截至2009年，佔大約90%的嵌入式32位RISC處理器和ARM處理器被廣泛使用在消費性電子產品，包括個人數字助理。除了消費電子，ARM架構處理器也開始用於以往x86、x64處理器獨大的個人電腦、伺服器。而在2020年成為TOP500排名第一的「富嶽」為首部奪冠的ARM架構超級電腦。歷史.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個電晶體；而且與當時大多數的處理器相同，它沒有包含任何的快取。這個精簡的特色使它只需消耗很少的電能，卻能發揮比Intel 80286更好的效能。後繼的處理器「ARM3」則備有4KB的快取，使它能發揮更佳的效能。Apple、DEC、Intel、Marvell：ARM6、StrongARM、XScale.在1980年代晚期，蘋果電腦開始與艾康電腦合作開發新版的ARM核心。由於這專案非常重要，艾康電腦甚至於1990年將設計團隊另組成一間名為安謀國際科技的新公司。也基於這原因，使得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，之後賣給了邁威爾科技。2020年11月11日，蘋果公司釋出基於ARM晶片(Apple M1)的蘋果桌上型電腦和膝上型電腦，2021年4月21日，蘋果公司釋出基於M1 CPU的24 吋Mac和新iPad Pro核心種類.由ARM提供了一個廠商彙總，是在其設計中實現ARM核心的眾多廠商一個總結。架構.從1995年開始，《ARM體系結構參考手冊》是ARM文件的主要提供了關於ARM處理器架構和指令集，區分介面，所有的ARM處理器的支援的實現細節可能會有所不同。該體系結構隨著時間的演變，並與Cortex系列的核心開始，存在三個“配置”的定義如下：每個配置允許有其子集的架構。例如，用於ARMv6-M配置。CPU模式.CPU ARM架構指定了以下的CPU模式。在任何時刻，CPU只可處於某一種模式，但可由於外部事件或程式設計方式進行模式切換。指令集.講求精簡又快速的設計方式，整體電路化卻又不採用微碼，就像早期使用在艾康微電腦的8位元6502處理器。ARM架構包含了以下精簡指令集處理器的特性：為了補強這種簡單的設計方式，相較於同時期的處理器如Intel 80286和Motorola 68020，還多加了一些特殊設計：暫存器.暫存器 R0-R7 對於所有CPU模式都是相同的，它們不會被分塊。對於所有的特權CPU模式，除了系統CPU模式之外，R13和R14都是分塊的。也就是說，每個因為一個異常而可以進入模式，有其自己的R13和R14。這些暫存器通常分別包含堆疊指標和函式呼叫的返回地址。同名的名稱:有條件執行.有個附加在 ARM 設計中好玩的東西，就是在每個指令前頭使用一個 4-bit 的 "條件編碼"，表示該指令是否為有條件式地執行。這大大的減低了在記憶體存取指令時用到的編碼位元，換句話說，它避免了在小型敘述中做分支。以下為引用歐幾裡得的最大公因數演演算法的標準範例：在C語言中，迴圈為：int gcdwhileifi -= j;elsej -= i;return i;在ARM組合語言中，迴圈為：loop: CMP Ri, Rj ;設定條件為"NE"(不等於) if;"GT"(大於) if,;或"LT"(小於) ifSUBGT Ri, Ri, Rj ;若"GT"(大於), i = i-j;SUBLT Rj, Rj, Ri ;若"LT"(小於), j = j-i;BNE loop ;若"NE"(不等於)，則繼續迴圈這避開了codice_2和codice_3子句之間的分支。其他特色.另一項指令集的特色是，能將位移，因此舉例來說，一個C語言的敘述a += (j « 2);在ARM之下，可簡化成只需一個word和一個cycle即可完成的指令ADD Ra, Ra, Rj, LSL #2這結果可讓一般的ARM程式變得更加緊密，而不需經常使用記憶體存取，管線也可以更有效地使用。即使在ARM以一般認定為慢速的速度下執行，與更複雜的CPU設計相比它仍能執行得不錯。ARM處理器還有一些在其他RISC的架構所不常見到的特色，例如程式計數器-相對定址以及前遞加或後遞加的定址模式。另外值得注意的是ARM處理器會隨著時間不斷地增加它的指令集。譬如某些早期的ARM處理器，可能並未具備指令可以讀取2 Bytes的數量；因此嚴格來講，對這些處理器產生程式碼時，就不可能處理如C語言物件中使用「volatile short」的資料型態。管線.ARM7和大多數較早的設計具備三階段的管線：提取指令、解碼，並執行。較高效能的設計，如ARM9，則有更深階段的管線： Cortex-A8有13階段的管線。提高效能的額外方式，包含一顆較快的加法器，和更廣的分支預測邏輯線路。例如，在ARM7DI核與ARM7DMI核之間的差異，是一種改進的乘法器。輔助處理器.這個架構使用「輔助處理器」提供一種非侵入式的方法來延伸指令集，可透過軟體下MCR、MRC、MRRC和MCRR等指令來對輔助處理器定址。輔助處理器空間邏輯上通常分成16個輔助處理器，編號分別從0至15；而第15號輔助處理器是保留用作某些常用的控制功能，像是使用快取和記憶管理單元運算。除錯.DSP增強指令Thumb.較新的ARM處理器有一種16-bit指令模式，叫做Thumb，也許跟每個條件式執行指令均耗用4位元的情形有關。在Thumb模式下，較小的opcode有更少的功能性。例如，只有分支可以是條件式的，且許多opcode無法存取所有CPU的暫存器。然而，較短的opcode提供整體更佳的編碼密度32位元指令集的CPU相關程式區，因而能將它們置入受限的32-bit匯流排寬度的記憶體中。首顆具備Thumb技術的處理器是ARM7TDMI。所有ARM9和後來的家族，包括XScale，都納入了Thumb技術。Jazelle.ARM還開發出一項技術，Jazelle DBX，允許它們在某些架構的硬體上加速執行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，也就是所謂的Thumb-2EE，業界稱為Jazelle RCT 。Thumb-2EE是專為一些語言如Limbo、Java、C#、Perl和Python，並能讓即時編譯器能夠輸出更小的編譯碼卻不會影響到效能。ThumbEE所提供的新功能，包括在每次存取指令時自動檢查是否有無效指標，以及一種可以執行陣列範圍檢查的指令，並能夠分支到分類器，其包含一小部份經常呼叫的編碼，通常用於高階語言功能的實作，例如對一個新物件做記憶體配置。進階SIMD.進階SIMD延伸集，業界稱為「NEON」技術，它是一個結合64位元和128位元的單指令多重數指令集，其針對多媒體和訊號處理程式具備標準化加速的能力。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技術出現在ARMv6KZ以及較晚期的應用核心架構中。它提供了一種低成本的方案，針對系統單晶片內加入專屬的安全核心，由硬體建構的存取控制方式支援兩顆虛擬的處理器。這個方式可使得應用程式核心能夠在兩個狀態開源專案。ARM授權方式.ARM公司本身並不靠自有的設計來製造或販售CPU，而是將處理器架構授權給有興趣的廠家。ARM提供了多樣的授權條款，包括售價與散播性等專案。對於授權方來說，ARM提供了ARM內核的整合硬體敘述，包含完整的軟體開發工具。商用晶圓廠是特殊例子，因為他們不僅授予能販售包含ARM內核的矽晶成品，對其它客戶來講，他們通常也保留重製ARM內核的權利。就像大多數IP販售方，ARM依照使用價值來決定IP的售價。在架構上而言，更低效能的ARM核心比更高效能的核心擁有較低的授權費。以矽晶片實作而言，一顆可整合的核心要比一顆硬體巨集。對於量產而言，由於長期的成本縮減可藉由更低的晶圓價格，減少ARM的NRE成本，使得專門的晶圓廠也成了一個更好的選擇。許多半導體公司持有ARM授權：Atmel、Broadcom、Cirrus Logic、Freescale、沖電氣、三星電子、蘋果、夏普、意法半導體、德州儀器和VLSI等許多這些公司均擁有各個不同形式的ARM授權。雖然ARM的授權專案由保密合約所涵蓋，在智慧財產權工業，ARM是廣為人知最昂貴的CPU核心之一。單一的客戶產品包含一個基本的ARM內核可能就需索取一次高達美金20萬的授權費用。而若是牽涉到大量架構上修改，則費用就可能超過千萬美元。ARM核心時間線.下表列出每個核心釋出年份。未包括ARM7之前的核心。