ARM命名規則


ARM==Advanced RISC Machines


    它開創了一種嶄新的商業模式,實現了無廠房式工廠,依靠出售芯片技術知識產權的授權來盈利。

    其次,ARM是一種architecture,同MIPSPowerPCX86等並列。談到架構,這實際上本身就是一個很復雜的概念。就現在的理解來看,架構是一種系統設計藍圖,規划了方方面面的技術規范。應該說,架構是理論,那么采用同樣的架構,實現的形式可以不相同。這也就是為什么同一架構會有那么多衍生的處理器實現。

    ARM可以看作是一種技術,是RISC的代表。 應該說,ARM公司位於產業鏈的最上層,盈利也最多。中國國內的一些OEM廠商,只是處於下游的小魚,盈利有限。中國的信息產業要想發展,就必須有自己的核心技術。寫到這里,希望龍芯帶給我們的,是夢想的接近,甚至是實現!(龍芯是兼容MIPS架構)

二、命名規則


這里提到的命名規則,應該分成兩類。
一類是基於ARM Architecture的版本命名規則;
另一類是基於ARM Architecture版本的處理器系列命名規則。

Naming of ARM Architecture versions
| ARMv | n | variants | x(variants) | 
分成四個組成部分:
    ARMv -- 固定字符,即ARM Version
    n -- 指令集版本號。迄今為之,ARM架構版本發布了7個系列,所以n=[1:7]。其中最新的版本是第7版,具體看ARM官方網站。
    variants -- 變種。
    x(variants) -- 排除x后指定的變種
常見的變種有:
    T -- Thumb指令集
    M -- 長乘法指令
    E -- 增強型DSP指令
    J -- Java加速器Jazelle
    SIMD -- ARM媒體功能擴展

例如,ARMv5TxM表示ARM指令集版本為5,支持T變種,不支持M變種。

Naming of ARM Processor
    采用上述的架構,形成一系列的處理器。有時候還要區分處理器核處理器系列。不過,在這里其實不用區分太細,畢竟這是功能的小部分的變化,核心是相同的。
    規則:ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
    x -- 處理器系列
    y -- 存儲管理/保護單元
    z -- cache
    T -- 支持Thumb指令集
    D -- 支持片上調試
    M -- 支持快速乘法器
    I -- 支持Embedded ICE,支持嵌入式跟蹤調試
    E -- 支持增強型DSP指令
    J -- 支持Jazelle
    F -- 具備向量浮點單元VFP
    -S -- 可綜合版本

ARM體系結構處理器自誕生以來,不斷發展與創新,ARM體系的指令集功能形成了多種版本,為了適合不同的應用場合,各個版本又增加了新的變種,這些變種為該版本的指令集增加了新的功能。不同版本的指令集應用於不同的處理器,這也就形成了ARM處理器系列,ARM系列處理器不同版本實現技術、性能、應用場合個不相同。
ARM體系結構的基本版本
1 版本1
    該版本的原型機是ARM1,沒有用於商業產品。 包括下列指令:
l         除乘法指令之外的基本的數據處理指令。
l         基於字節、字和多字的存儲器訪問指令(Load/Store)。
l         包括子程序調用指令BL在內的跳轉指令。
l         供操作系統使用的軟件中斷指令SWI。
本版本中地址空間是26位,目前已經不再使用。
2 版本2
    對V1版進行了擴展,包含了對32位結果的乘法指令和協處理器指令的支持。
版本2a是版本2的變種,ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM處理器。版本2a增加了合並Load和Store(SWP)指令。
與版本V1相比,增加了以下指令:
l         乘法指令和乘加指令。
l         支持協處理器操作指令。
l         對於FIQ模式,提供了額外的兩個備份寄存器。
l         SWP指令和SWPB指令。
本版本中地址空間是26位,目前已經不再使用。
3 版本3
    ARM公司第一個微處理器ARM6核心是版本3的,它作為IP核、獨立的處理器、具有片上高速緩存、MMU和寫緩沖的集成CPU。 
版本3的變種版本有版本3G和版本3M版本3G是不與版本2a向前兼容的版本3,版本3M引入了有符號和無符號數乘法和乘加指令,這些指令產生全部64位結果。 
版本3版較以前的版本有較大的改動,主要包括:
l         處理器的地址空間擴展到32位,但除了版本3G外的其他版本是向前兼容的,支持26位的地址空間。
l         當前程序狀態信息從原來的R15寄存器移到當前程序狀態寄存器CPSR中(Current Program Status Register)。
l         增加了程序狀態保存寄存器SPSR(Saved Program Status Register)。
l         增加了兩種異常模式,使操作系統代碼可方便地使用數據訪問中止異常、指令預取中止異常和未定義指令異常。
l         增加了MRS/MSR指令,用於訪問新增的CPSR/SPSR寄存器。
l         修改了原來的從異常中返回的指令。
4 版本4
版本4增加了下列指令:
l         有符號和無符號的半字讀取和寫入指令。
l         帶符號的字節讀取和寫入指令。
l         增加了處理器的系統模式(特權模式)。在該模式下,使用的是用戶模式下的寄存器。
l         為結構定義的操作預留一些SWI(軟中斷指令)空間。
版本4中明確定義了哪些指令會引起未定義指令異常,不再強制要求與以前的26位地址空間兼容。
ARMv4T在ARMv4的基礎上增加了Thumb指令集:處理器有了Thumb狀態,並且有了在ARM狀態和Thumb狀態切換的指令,處理器在ARM狀態執行ARM指令集,在Thumb狀態執行Thumb指令集。
ARMv4和ARMv4T結構的處理器得到了廣泛的應用。SA-110、SA-1110等是基於ARMv4的;ARM7TDMI、ARM720T、ARM9TDMI、ARM940T、ARM920T、Intel的StrongARM等是基於ARMv4T版本。
5 版本5
版本5在版本4的基礎上增加或修改以下指令:
l         提高了T變種中ARM/Thumb混合使用的效率。
l         對於T變種的指令和非T變種的指令使用相同的代碼生成技術。
l         增加了前導零計數(CLZ)指令,該指令可以使整數除法和中斷優先級排隊操作更為有效。
l         增加了軟件斷點(BKPT)指令。
l         為協處理器設計提供了更多可選擇的指令。
l         更加嚴格的定義了乘法指令對條件標志位的影響。
l         帶狀態切換的子程序調用(BLX)指令。
版本5包括v5TE和v5TEJ,v5TE在v5T的基礎上增加了信號處理(DSP)指令集,v5TEJ除了具備v5T的功能外,還可以執行JAVA字節代碼,是在ARM上執行JAVA指令的效率提高了5-10倍,並且降低了功耗。
ARM1020T 是ARMv5T的。
ARM9E-S、ARM966E-S、ARM1020E、ARM 1022E以及XScale是ARMv5TE的。
ARM9EJ-S、ARM926EJ-S、ARM7EJ-S、ARM1026EJ-S是基於ARMv5EJ的。
6 版本6
    ARM體系版本6是2001年發布的。其目標是在有效的芯片面積上為嵌入式系統提供更高的性能。ARMv6 包含了ARMv5TEJ的所有指令。為了使現有的軟件,開發方法、設計技術可再利用,ARMv6兼容了ARMv5的內存管理和異常處理。ARMv6主要在多媒體處理、存儲器管理、多處理器支持、數據處理、異常和中斷響應等方面做了改進。
l         SIMD(單指令多數據)指令,可使音視頻處理能力提高2-4倍。
l         Thumb-2新指令集,混合執行AMR和Thumb代碼,可以提供ARM指令級別的性能和Thumb指令級別的代碼密度。
l         混合大小端和非對齊存儲訪問支持
l         TrustZone安全技術,在硬件上提供可信區域和不可信區域,兩個區域里運行的代碼有不同的權限。讓經過認證的代碼運行在可信區域,未經過認證的代碼運行在不可信區域,從而提高系統的安全性。
采用ARMv6核的處理器是ARM11系列
ARM1136J(F)-S基於ARMv6主要特性有SIMD、Thumb、Jazelle、DBX、(VFP)、MMU。
ARM1156T2(F)-S基於ARMv6T2 主要特性有SIMD、Thumb-2、(VFP)、MPU。
ARM1176JZ(F)-S基於ARMv6KZ 在 ARM1136EJ(F)-S 基礎上增加MMU、TrustZone。
ARM11 MPCore基於ARMv6K 在ARM1136EJ(F)-S基礎上可以包括1-4 核SMP、MMU。
7 版本7
2004年發布了新的ARMv7體系結構。全新的ARMv7是基於ARMv6的,ARMv7采用了Thumb-2技術,體積比32位ARM代碼減小31%,性能比16位Thumb代碼高出38%。同時,ARMv7保持了對已有ARM代碼的兼容性。此外,ARMv7還支持改良的運行環境,以迎合不斷增加的JIT(Just In Time)和DAC(DynamicAdaptive Compilation)技術的使用。
ARMv7的增加的特性有:
l         改進的Thumb-2指令集。
l         NEON多媒體技術,將DSP和多媒體處理能力提高了近4倍。
l         VFPv3改良的浮點運算。
l         動態編譯支持。
ARM體系結構的變種
1 Thumb指令集(T變種)
Thumb指令集是將ARM指令集中的一部分指令重新編碼形成的一個子集, Thumb指令長度是16位的。使用Thumb指令可以得到比ARM指令更高的代碼密度,這有助於減小系統的存儲器容量,從而降低系統的成本。另外,對於數據線是8或16位的系統,使用Thumb指令集可以取得好於使用ARM指令集的性能。在ARM體系命名中通用“T”來表示該版本支持Thumb指令集。在ARMv4T中使用v1版Thumb指令集;ARMv5T使用v2版的Thumb指令集。和Thumb v1相比Thumb v2 具有如下特點:
l         通過對指令的修改,來提高ARM指令和Thumb指令混合使用是的效率。
l         增加軟件斷點指令。
l         嚴格定義了Thumb乘法指令對條件標志位的影響。
與ARM指令集相比,Thumb指令集具有以下局限性:
l         完成相同的操作,Thumb指令通常需要更多的指令。
l         Thumb指令集沒有包含進行異常處理時需要的一些指令,異常返回時需要從ARM狀態返回。    
2 長乘法指令(M變種)
M變種增加了兩條用於進行長乘法的ARM指令。其中一條用於實現32位整數乘以32位整數,生成64位整數的長乘法操作;另一條指令用於實現32位整數乘以32位位整數,然后加上32位整數,生成64位整數的長乘加操作。
3 增強型DSP指令(E變種)
l         E變種包含了一些附加的指令,這些指令用於增強處理器對一些典型的DSP算法的處理性能。主要包括:
l         幾條新的實現16位數據乘法和乘加操作的指令
l         實現飽和的帶符號數的加減法操作的指令。所謂飽和的帶符號數的加減法操作是在加減法操作溢出時,結果並不進行卷繞(Wrapping around),而是使用最大的整數或最小的負數來表示。
l         進行雙字數據操作的指令,包括雙字讀取指令LDRD、雙字寫入指令STRD和協處理器的寄存器傳輸指令MCRR/MRRC。
l         Cache預取指令PLD
4 Java加速器Jazelle(J變種)
ARM的Jazelle技術將Java的優勢和先進的32位RISC芯片完美地結合在一起。Jazelle技術提供了Java加速功能,可以得到比普通Java虛擬機高得多的性能。與普通的Java虛擬機相比,Jazelle使代碼運行速度提高了8倍,而且功耗降低了80%,Jazelle技術使得程序員可以在一個單獨的處理器上同時運行Java應用程序、已經建立好的操作系統、中間件以及其他的應用程序。與使用協處理器和雙處理器相比,使用單獨得處理器可以在提供高性能的同時,保證低功耗和低成本。ARM體系版本4TEJ最早包含了J變種,用字符J表示J變種。
5 SIMD變種(ARM媒體功能擴展)
  ARM媒體功能擴展SIMD技術極大地提高了嵌入式應用系統的音頻和視頻處理器能力,它可使微處理器的音頻和視頻性能提高4倍。新一代的Internet應用產品、移動電話和PDA等設備終端需要提供高性能的流式媒體,包括音頻和視頻等。而且這些設備需要提供更加人性化的界面,包括語言輸入和手寫輸入等。這樣,就對處理器的數字信號處理能力提出了很高的要求,同時還必須保證低功耗。ARM的SIMD媒體功能擴展為這些應用系統提供了解決方案,它為包括音頻和視頻處理在內的應用系統提供了優化功能,其主要特點如下:
●使處理器的音頻和視頻處理的性能提高了2~4倍。
●可同時進行2個16位操作數或者4個8位操作數的運算。
●用戶可自定義飽和運算的模式。
●可進行2個16位操作數的乘加/乘減運算及32位乘以32位的小數乘加運算。
●同時8 /16位選擇操作。

    ARM11是基於ARMv6架構建成的。基於ARMv6架構的處理器包括ARM1136J(F)‐S,ARM1156T2(F)‐S,以及ARM1176JZ(F)‐S。ARMv6是ARM進化史上的一個重要里程碑:從那時候起,許多突破性的新技術被引進,存儲器系統加入了很多的嶄新的特性,單指令流多數據流(SIMD)指令也是從v6開始首次引入的。而最前衛的新技術,就是經過優化的Thumb‐2指令集,它專為低成本的單片機及汽車組件市場。
基於從ARMv6開始的新設計理念,ARM進一步擴展了它的CPU設計,成果就是ARMv7架構的閃亮登場。在這個版本中,內核架構首次從單一款式變成3種款式。
1) 款式A:設計用於高性能的"開放應用平台"--越來越接近電腦了。
2) 款式R:用於高端的嵌入式系統,尤其是那些帶有實時要求的--又要快又要實時。
3) 款式M:用於深度嵌入的,單片機風格的系統中--本書的主角。
讓我們再進距離地考察這3種款式:
1) 款式A(ARMv7‐A):需要運行復雜應用程序的"應用處理器"。支持大型嵌入式操作系統,比如Symbian,Linux,以及微軟的WindowsCE和智能手機操作系統WindowsMobile。這些應用需要勁爆的處理性能,並且需要硬件MMU實現的完整而強大的虛擬內存機制,還基本上會配有Java支持,有時還要求一個安全程序執行環境。典型的產品包括高端手機和手持儀器,電子錢包以及金融事務處理機。
2) 款式R(ARMv7‐R):硬實時且高性能的處理器。標的是高端實時市場。那些高級的玩意,像高檔轎車的組件,大型發電機控制器,機器手臂控制器等,它們使用的處理器不但要很好很強大,還要極其可靠,對事件的反應也要極其敏捷。
3) 款式M(ARMv7‐M):認准了舊世代單片機的應用而量身定制。在這些應用中,尤其是對於實時控制系統,低成本、低功耗、極速中斷反應以及高處理效率,都是至關重要的。
Cortex系列是v7架構的第一次亮相,其中Cortex‐M3就是按款式M設計的。
到目前為止,Cortex‐M3也是款式M中被撫養成人的獨苗。其它Cortex家族的處理器包括款式A的Cortex‐A8(應用處理器),款式R的Cortex‐R4(實時處理器)。

處理器命名法
    以前,ARM使用一種基於數字的命名法。在早期(1990s),還在數字后面添加字母后綴,用來進一步明細該處理器支持的特性。就拿ARM7TDMI來說,T代表Thumb指令集,D是說支持JTAG調試(Debugging),M意指快速乘法器,I則對應一個嵌入式ICE模塊。后來,這4項基本功能成了任何新產品的標配,於是就不再使用這4個后綴--相當於默許了。但是新的后綴不斷加入,包括定義存儲器接口的,定義高速緩存的,以及定義"緊耦合存儲器(TCM)"的,於是形成了新一套命名法,這套命名法也是一直在使用的。 
表一:ARM處理器名字 
Jazelle是ARM處理器的硬件Java加速器。
MMU,存儲器管理單元,用於實現虛擬內存和內存的分區保護,這是應用處理器與嵌入式處理器的分水嶺。電腦和數碼產品所使用的處理器幾乎清一色地都帶MMU。但是MMU也引入了不確定性,這有時是嵌入式領域--尤其是實時系統不可接受的。然而對於安全關鍵(safety‐critical)的嵌入式系統,還是不能沒有內存的分區保護的。為解決矛盾,於是就有了MPU。可以把MPU認為是MMU的功能子集,它只支持分區保護,不支持具有"定位決定性"的虛擬內存機制。
到了架構7時代,ARM改革了一度使用的,冗長的、需要"解碼"的數字命名法,轉到另一種看起來比較整齊的命名法。比如,ARMv7的三個款式都以Cortex作為主名。這不僅更加澄清並且"精裝"了所使用的ARM架構,也避免了新手對架構號和系列號的混淆。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM