從一隻ARM到另一隻ARM!

ARM處理器和架構

當前可用的處理器

ARM1

ARM2

ARM3

ARM4和5

ARM6

ARM7

ARM8

強壯有力的ARM

ARM9

ARM10

ARM架構

v1 -ARM1。

v2 -ARM2。

v2as -ARM3和ARM250。

v3 -ARM6,ARM7,ARM8和護身符1。

v3M- 各種ARM6、7和8變體。

v4 -StrongARM,ARM9。

v5 -ARM10。

VFP1 -ARM10(的某些變體)。

Thumb(T型)。

長乘法指令(M個變體)。

增強的DSP指令(E變體)。

當前可用的處理器

ARM1

這是第一個ARM處理器,功能上與ARM2非常接近。該處理器已用於BBC和PC機器的一些評估系統中,但主要是原型晶片,已被ARM2取代。ARM2和ARM1之間的確切,主要差異是:

FIQ模式下沒有傾斜的R8和R9。

沒有乘法指令。

LDR / STR指令具有暫存器指定的移位量。

沒有協處理器介面或協處理器指令。

ARM2

ARM2晶片具有27個暫存器,其中任一暫存器均可隨時訪問。四種處理器模式可用-

USR:使用者模式

IRQ:中斷模式(帶有R13和R14的私有副本。)

FIQ:快速中斷模式(R8到R14的私有副本。)

SVC:超級使用者模式。(R13和R14的私人副本。)

如果只能從特權程式碼訪問硬體和物理記憶體,則只有非USR模式程式碼才能更改處理器模式以提供硬體安全性。由於程式計數器的前六位用於儲存處理器狀態標誌,因此該晶片僅限於定址26位記憶體或64 MB地址空間。實際上,PC暫存器中保留了八位處理器狀態。由於ARM指令的長度始終為4個位元組,因此在將該暫存器用作PC時,PC的低兩位始終是隱含的零。當該暫存器用於其操作時,最低位反映處理器執行的模式。(00-USR,01-IRQ,10-FIQ和11-SVC)

三級指令流水線使晶片能夠以較低的電晶體數量快速執行指令。流水線的一個副作用是能夠在每條指令上獲得“自由”旋轉/移位,因為流水線的一個階段專門處理給定暫存器的桶形移位。結合每條指令的條件執行,可以實現長時間的無分支程式碼執行,從而使流水線停滯不前,從而在時鐘速率下實現了相當高的指令執行速度。(平均每個時鐘週期約0。6條指令)

ARM2晶片的時鐘頻率為8 MHz,平均效能為4-4。7 MIPS。

ARM3

這是一個ARM2核心宏單元,其中添加了快取和專用協處理器介面。暫存器未更改,沒有新增新的處理器模式。在生產的ARM3晶片中,新功能是增加了一個片上快取(4 KB,64路關聯,隨機替換,4個字線,直寫,混合資料和指令。)和更快的時鐘速度。對晶片上協處理器介面的調整也是新的,包括將協處理器15定義為快取控制和晶片標識。

最後,添加了一條新指令,即SWP指令。單調暫存器到記憶體交換命令對多處理器陣列很有用。

產生了幾種速度的ARM3晶片。最初使用A540機器釋出了26 MHz版本,然後在A5000中使用了25 MHz版本,在A4中使用了24 MHz版本。最終生產了33MHz版本,並用於A5000的alpha變體。

該晶片的第二個體現是ARM250,是ARM3單元的12MHz變體,並且將IOC1,VIDC1a和MEMC1晶片都整合到一個晶片中,但是與普通ARM3不同,沒有處理器快取。ARM250提供了大約7 MIPS的效能。

使用12MHz主儲存器的24 MHz ARM3將產生13。26 MIPS的平均執行速度。在33 MHz時,可提供17。96 MIPS。

ARM4&ARM5

這些從未製造過。在從Acorn到Armltd設計處理器的轉變中,晶片的編號方案發生了變化。因此,數字4和5被跳過。

ARM6

此處理器單元是第一個具有完整32位定址能力的市售ARM。此外,處理器現在具有31個暫存器以及六個新的處理器模式:

User32-32位USR模式。

Supervisor32-32位SVC模式。(專用SPSR暫存器)

IRQ32-32位IRQ模式。(專用SPSR暫存器)

FIQ32-32位FIQ模式。(專用SPSR暫存器)

Abort32-記憶體提取中止更多。(私有SPSR暫存器)

Undefined32未定義的指令模式。(專用SPSR暫存器)

SPSR暫存器是一個已儲存的處理器狀態暫存器,當進入新模式時,將儲存CPSR(當前處理器狀態暫存器)的副本。儘管CPSR / SPSR實際上是32位更改的必然結果,但增加了Abort32模式並進行了此更改,這使ARM6單元可以輕鬆處理虛擬記憶體,而無需在早期的單元ARM晶片上必須經歷的扭曲。

添加了兩個用於讀取和寫入CPSR和SPSR暫存器的新指令。現在,程式計數器全為32位,當以26位模式讀取PC時,CPSR被硬體移位到適當位置。(為了向後相容。)ARM6單元在26位模式下與早期ARM單元的程式碼完全二進位制相容。晶片是完全靜態的,時鐘可以減慢到任何速度,處理器將保持狀態。最後,該單元可以在大端或小端操作中工作,並且可以在兩種模式之間進行硬體切換。ARM6單元(不是晶片)中的暫存器總數為36,000個電晶體。

已經生產了幾種版本的ARM6單元。ARM61是ARM2 / 3相容模式下的ARM6單元的硬連線版本。該晶片無法進入32位地址/處理器模式。ARM600系列晶片是一個帶有內建MMU的ARM6單元,類似於ARM3晶片的片上快取記憶體,一個具有兩個獨立地址的8個深度寫回緩衝器以及總共360,000個電晶體。快取已進行了效能調整,現在由MMU控制,並已針對32位定址進行了調整。已經產生了三種ARM610晶片速度。一種在20 MHz時提供17 MIPS,一種在30 MHz時提供26 MIPS效能,最後一種在33 MHz時提供27-28 MIPS。

還提供ARM60(作為晶片的ARM 6單元,沒有其功能。),ARM650(帶有一些RAM和外圍控制器的ARM6。專為嵌入式控制系統設計。),ARM6l(低功耗ARM6單元)和ARM60l(低功耗版本的ARM 6單元作為晶片。)

ARM7

ARM7單元在功能上與ARM6單元在功能上相同,但時鐘頻率可能比ARM6快。ARM7單元的一種變體提供了改進的硬體乘法,適用於DSP工作。

ARM7單元中的大部分新功能是各種訊號的時序內部變化。ARM700晶片具有比ARM600更大的片上快取(8kb,並且從根本上進行了更改以提高能效),從而提高了快取命中率。在MMU中的轉換後備條目的數量也是其兩倍,而在寫緩衝區中的地址的數量則是其兩倍。(現在大概可以在緩衝區停止之前寫入四個地址。)在40MHz頻率下,ARM710可以提供約36 MIPS的效能,比ARM610的效能提高了約40%。

ARM7系列裝置包括ARM7(晶片單元核心),ARM7D(具有除錯支援的晶片核心),ARM7DM(具有增強乘法功能的ARM7D),ARM7DMI(具有ICEbreaker(tm)的ARM7DM。ICEbreaker在晶片上支援以下功能:線上模擬),ARM70DM(作為晶片的ARM7DMI),ARM700(ARM7 + MMU +快取+寫回緩衝區。)和ARM7500(ARM7 + MMU +快取+寫回緩衝區+ IOMD + VIDC20)。Thumb核心也幾乎可以提供所有這些核心。

ARM8

的ARM8細胞與ARM6和7臺裝置直接相容。但是,包括五個階段的流水線(在StrongARM裝置中重複了一個想法),一個推測性指令提取程式以及對處理器的內部調整,以允許更高的時鐘速度。快取記憶體保持相同大小,但也變為寫回快取記憶體,並添加了64位乘法指令。

該晶片採用0。5微米工藝製造,被列為在80 MHz時具有3。3伏器件,可提供80 MIPS效能。這是ARM7晶片效能的兩倍以上,並且符合關於ARM系列的最初“路線圖”承諾。但是,StrongARM裝置的原始處理能力使其效能黯然失色。

StrongARM

這是Arm晶片公司與Digital聯合開發的ARM晶片系列的高速變體。在架構上,類似於ARM8核心,與該處理器共享5級流水線。另一個區別是從統一的資料和指令快取記憶體變為分離的哈佛架構,指令和資料快取記憶體。SA110中的每個快取為16kb。

在指令集方面,增加了一條新指令,即用於移動16位資料單元的半字載入/儲存。由於以下兩個原因,不能保證與較早處理器的完全程式碼相容性:擴充套件管道意味著儲存程式計數器的堆疊呼叫將在當前執行指令之前將PC的值完整保留16個位元組,而不是更普通的8個位元組。其次,分離式快取記憶體引入了以下問題:首先執行自修改程式碼,然後將其視為資料,進行操作,然後嘗試在從指令快取記憶體中清除更改後的程式碼之前執行更改後的程式碼。

這樣的程式碼片段將中斷。幸運的是,這樣的程式碼往往非常少見,並且僅限於OS(特別是SWI處理程式)。SA110零件採用0。35微米工藝生產,在100 MHz時達到115 MIPS,在160 MHz時達到185 MIPS,在200 MHz時達到230 MIPS。SA1100部分是為行動式應用程式設計的,包含一個SA核心,MMU,讀/寫緩衝區(可能類似於SA110部分的1級快取和寫緩衝區),PCMCIA支援,彩色/灰度LCD控制器和通用IO控制器(包括兩個串列埠和USB支援)。時鐘頻率為133或200 MHz,功耗不到500 mW。

ARM9

與ARM8相比,該晶片具有增量改進功能,具有相同的五級流水線,但現在已成為哈佛架構晶片,如StrongARM。這可能意味著對自修改程式碼的限制與對StrongARM的限制相同。

最初將作為兩個部分提供:ARM9TDMI(Thumb,除錯支援,64位Mulitply和ICEBreaker In Circuit Emulation)(這是基本的核心部分)和ARM940T。ARM940T除了基本核心外,還提供4kb指令/資料快取記憶體,寫緩衝區(8個字,4個獨立地址),AMBA匯流排介面,外部協處理器支援以及嵌入式應用程式的保護單元(無需地址轉換)並允許八個獨立大小和保護級別的受保護儲存區)。這兩款器件均以0。35微米,150 MHz的時鐘頻率(產生165 MIPS)製造,ARM9TDMI功耗為225 mW,ARM950T 675mW。

ARM10

設計採用0。25和0。18工藝製造,旨在在300 MHz下工作,從而提供400 MIPS效能,同時消耗不到600 mW的功率。向量的浮點單元(VFP10)也是該核心的配套開發產品,以300 MHz的頻率提供600 MFLOPS,並設計為供ARM10使用。核心的新功能包括分支預測,並行指令執行(但奇怪的是,不是完全的超標量,可能的訣竅是,如果指令彼此獨立,則現在可以在同一流水線級執行多個執行)。在快取未命中時繼續執行指令。(也許這僅用於資料快取記憶體未命中,因為新處理器似乎是像StrongARM處理器那樣的哈佛架構)

最初計劃的版本包括ARM10TDMI核心和圍繞該核心構建的ARM1020T處理器,但增加了具有按需分頁虛擬備忘錄支援的MMU,32Kb哈佛樣式1級快取(很可能是16Kb指令和16Kb資料快取,如StrongARM),寫緩衝區和增強的AMBA匯流排介面。確切的功耗資料尚未公佈,但預計ARM1020T在300 MHz時將消耗0。6至1瓦的功率。

ARM架構

ARM體系結構是圍繞具有16個通用暫存器和各種處理器模式的程式設計師模型構建的。每種處理器模式都提供不同級別的記憶體訪問,PC和模式的操作以及自己的專用暫存器。

版本1-ARM1

預設情況下,程式設計師會“檢視” 16個使用者模式暫存器,但是在其模式下,各種暫存器會被替換為該模式專用的暫存器。該表總結了各種模式和暫存器。

USR IRQ FIQ SVC

00

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10 R10_fiq

R11 R11_fiq

R12 R12_fiq

R13 R13_irq R13_fiq R13_svc

R14 R14_irq R14_fiq R14_svc

R15(又名PC)

在表中未命名的暫存器中,則可見USR模式暫存器。

為了將中斷等待時間保持在最低水平,FIQ(快速中斷請求)模式具有相當大的一組專用暫存器,允許儘可能多地在暫存器中執行中斷程式碼。如果一次只允許一個FIQ索賠人,則必須遵循RISC OS的規定,可以對這些暫存器進行預載入進一步最佳化。

按照慣例,並且由指令集部分強制執行,R14是“連結”暫存器-通常儲存任何子例程呼叫的返回地址。BL(分支和連結)指令自動將正確的返回地址儲存在R14中。所有暫存器都是通用的,包括R15(是程式計數器),狀態標誌和模式暫存器全部合為一體。26位字對齊地址,兩位處理器模式(位1和0(00-USR,01-IRQ,10-FIQ和11-SVC))和六位處理器狀態(負,進位,溢位,零,中斷)請求禁用和快速)。

指令包括載入/儲存(暫存器,多個暫存器,位元組),移動(和不移動),加法(加,加,加,減,加,逆減,加減),比較(比較和不比較) ),布林邏輯(測試,測試等效項,與,異或,或位清零),程式流(分支,帶連結的分支)和軟體中斷。

第2版​​-ARM2

該架構在FIQ模式下添加了儲存區R8和R9,撤消了具有暫存器指定移位量的LDR / STR指令,並添加了兩個新的“類”指令-分別是“乘”(乘和“累加”)和協處理器控制(資料操作,協處理器資料到ARM暫存器,ARM暫存器到協處理器,載入和儲存)。

版本2as-ARM3和ARM250

該功能與v2架構相同,此變體添加了一條額外的指令SWP,並將協處理器分配為零,以進行CPU標識和快取控制。

版本3-ARM6,ARM7和護身符1

對ARM體系結構的此更新消除了PC計數器的26位限制,從而允許對資料和程式碼進行完整的32位定址。(以前只能在整個32位地址範圍內定址資料。)結果,不再有可能將與處理器混合的處理器標誌儲存在暫存器15中,並且添加了一組新的暫存器來保持處理器狀態。對於每種處理器模式,添加了暫存器CPSR(當前處理器狀態暫存器)和SPSR(堆疊處理器狀態暫存器)。添加了兩個新的處理器模式以及Abort32和Undefined32。為了向後相容,可以將晶片設定為模擬較舊的26位操作模式。進一步的改進包括能夠將晶片的位元組順序從小位元組順序更改為大位元組順序的功能。

所有這些都需要新增新的Move指令(用於暫存器的SPSR,用於暫存器的CPSR,用於SPSR的暫存器,用於CPSR的暫存器,用於SPSR的立即數和用於CPSR的立即數。)以與每種處理器模式的狀態暫存器進行通訊。

版本3M

版本3體系結構的此擴充套件提供了擴充套件的Multiply操作碼 包括無符號長,無符號長累積,有符號長和有符號累積長乘法。

版本4-StrongARM,ARM8和ARM9

3M中首次引入的新說明 現在,該體系結構已成為版本4中主要體系結構的一部分。此外,添加了Halfword(16位)載入/儲存指令。

該版本透過新增指令並稍微修改一些現有指令的定義來擴充套件體系結構4,以提高T變體中ARM / Thumb互通的效率 並允許將非T變體使用與T變體相同的程式碼生成技術。

版本5還添加了計數前導零指令,該指令允許更有效的整數除法和中斷優先順序例程。 為協處理器設計人員增加了軟體斷點指令和更多指令選項。 此外,版本5加強了如何透過多條指令設定標誌的定義。

Thumb指令集(T變體)

Thumb指令集是ARM指令集的重新編碼子集。 Thumb指令的大小是ARM指令的一半(16位,而32位),因此通常可以透過使用Thumb指令集而不是ARM指令集來實現更高的程式碼密度。折衷包括Thumb指令集失去條件指令的執行,並且只能定址處理器的前八個暫存器。

Thumb指令集不包含某些異常處理所需的指令,因此ARM程式碼至少應用於頂級異常處理程式。 因此,Thumb指令集始終與適當版本的ARM體系結構結合使用。

長乘法指令(M個變體)

ARM指令集的M個變體包括四個額外的指令,執行32 x 32> 64乘法和32 x 32 +64> 64乘法累加。 這些指令意味著存在一個大大大於最小值的乘法器,有時在小晶片尺寸非常重要而乘法效能不是很重要的實現中被省略。

增強型DSP指令(E變體)

ARM指令集的E個變體包括許多額外的指令,這些指令可增強ARM處理器在典型數字訊號處理(DSP)演算法上的效能。

向量浮點v1-ARM10

與ARM體系結構版本5同時開發的,這是對ARM體系結構的協處理器擴充套件,旨在在典型的圖形和DSP演算法上實現高浮點效能。提供了單精度和雙精度浮點運算。