ARM系列处理器和架构
從一只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算法上實現高浮點性能。提供了單精度和雙精度浮點運算。
總結
以上是生活随笔為你收集整理的ARM系列处理器和架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thumb扩展
- 下一篇: 利用UltraScale和UltraSc