常常能看到ARM7,ARM9,ARM11,以及armv6k等不同的表達。且在GCC編譯中,常常要用到 -march, -mcpu等。他們分別表達什么涵義呢?Sam自己也不很清楚,只是大概有個模糊的概念。今天就仔細研究一下。
ARM(Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè)。設計了大量高性能、廉價、耗能低的RISC處理器、相關技術及軟件。1985年,第一個ARM原型在英國劍橋誕生。ARM公司的特點是只設計芯片,而不生產。ARM將其技術授權給世界上許多著名的半導體、軟件和OEM廠商,每個廠商得到的都是一套獨一無二的ARM相關技術及服務。利用這種合伙關系,ARM很快成為許多全球性RISC標準的締造者。
ARM公司定義了6種主要的指令集體系結構版本。V1-V6。(所以上面提到的ARMv6是指指令集版本號)。 即:ARM architecture
ARMv1:
該版本的原型機是ARM1,沒有用于商業(yè)產品。
ARMv2:
對V1版進行了擴展,包含了對32位結果的乘法指令和協(xié)處理器指令的支持。
ARMv3:
ARM公司第一個微處理器ARM6核心是版本3的,它作為IP核、獨立的處理器、具有片上高速緩存、MMU和寫緩沖的集成CPU。
ARMv4:
當前應用最廣泛的ARM指令集版本。
ARM7TDMI、ARM720T、ARM9TDMI、ARM940T、ARM920T、Intel的StrongARM等是基于ARMv4T版本。
ARMv5:
ARM9E-S、ARM966E-S、ARM1020E、ARM 1022E以及XScale是ARMv5TE的。
ARM9EJ-S、ARM926EJ-S、ARM7EJ-S、ARM1026EJ-S是基于ARMv5EJ的。
ARM10也采用。
其中后綴意義如下:
E:增強型DSP指令集。包括全部算法和16位乘法操作。
J:支持新的Java。
ARMv6:
采用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。
ARMv7-A:
ARM處理器核:
ARM公司開發(fā)了很多ARM處理器核,最新版位ARM11。
ARM7微處理器系列
低功耗的32位RISC處理器,馮·諾依曼結構。極低的功耗,適合便攜式產品。
具有嵌入式ICE-RT邏輯,調試開發(fā)方便。
3級流水線結構。能夠提供0.9MIPS的三級流水線結構
代碼密度高,兼容16位的Thumb指令集。
對操作系統(tǒng)的支持廣泛,包括Windows CE、Linux、Palm OS等。
指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產品升級換代。
主頻最高可達130MIPS。
主要應用領域:工業(yè)控制、Internet設備、網絡和調制解調器設備、移動電話等多種多媒體和嵌入式應用。
ARM7TDMI微處理器
4種類型:
ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。
ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。
注:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內外設組合在一起才能構成現(xiàn)實的芯片。
ARM9微處理器系列
ARM9系列微處理器在高性能和低功耗特性方面提供最佳的性能。
5級整數(shù)流水線,
哈佛體系結構。
支持32位ARM指令集和16位Thumb指令集。
全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
支持數(shù)據Cache和指令Cache,具有更高的指令和數(shù)據處理能力。
主要應用:無線設備、儀器儀表、安全系統(tǒng)、機頂盒、高端打印機、數(shù)碼照相機和數(shù)碼攝像機。
3種類型:ARM920T、ARM922T和ARM940T。
ARM9E微處理器系列
單一處理器內核提供微控制器、DSP、Java應用系統(tǒng)的解決方案。
支持DSP指令集。
5級整數(shù)流水線,指令執(zhí)行效率更高。
支持32位ARM指令集和16位Thumb指令集。
支持VFP9浮點處理協(xié)處理器。
全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
MPU支持實時操作系統(tǒng)。
支持數(shù)據Cache和指令Cache,
主頻最高可達300MIPS。
主要應用:下一代無線設備、數(shù)字消費品、成像設備、工業(yè)控制、存儲設備和網絡設備等領域。
3種類型:ARM926EJ-S、ARM946E-S和ARM966E-S。
ARM10E微處理器系列
與同等的ARM9比較,在同樣的時鐘頻率下,性能提高了近50%,功耗極低。
支持DSP指令集。
6級整數(shù)流水線,指令執(zhí)行效率更高。
支持32位ARM指令集和16位Thumb指令集。
支持VFP10浮點處理協(xié)處理器。
全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。
支持數(shù)據Cache和指令Cache。
主頻最高可達400MIPS。
內嵌并行讀/寫操作部件。
主要應用:下一代無線設備、數(shù)字消費品、成像設備、工業(yè)控制、通信和信息系統(tǒng)等領域。
3種類型:ARM1020E、ARM1022E和ARM1026EJ-S。
SecurCore微處理器系列
專為安全需要而設計,提供了完善的32位RISC技術的安全解決方案。
靈活的保護單元,以確保操作系統(tǒng)和應用數(shù)據的安全。
采用軟內核技術,防止外部對其進行掃描探測。
可集成用戶自己的安全特性和其他協(xié)處理器。
主要應用:對安全性要求較高的應用產品及應用系統(tǒng),如電子商務、電子政務、電子銀行業(yè)務、網絡和認證系統(tǒng)等領域。
4種類型:SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210。
Xscale處理器
基于ARMv5TE體系結構的解決方案,是一款全性能、高性價比、低功耗的處理器。
支持16位的Thumb指令和DSP指令集。
已使用在數(shù)字移動電話、個人數(shù)字助理和網絡產品等場合。
Xscale處理器是Intel目前主要推廣的一款ARM微處理器
ARM11:指令集ARMv6,8級流水線,1.25DMIPS/MHz
Cortex-A8:指令集ARMv7-A,13級整數(shù)流水線,超標量雙發(fā)射,2.0DMIPS/MHz,標配Neon,不支持多核
Scorpion:指令集ARMv7-A,高通獲得指令集授權后在A8的基礎上設計的。13級整數(shù)流水線,超標量雙發(fā)射,部分亂序執(zhí)行,2.1DMIPS/MHz,標配Neon,支持多核
Cortex-A9:指令集ARMv7-A,8級整數(shù)流水線,超標量雙發(fā)射,亂序執(zhí)行,2.5DMIPS/MHz,可選配Neon/VFPv3,支持多核
Cortex-A5:指令集ARMv7-A,8級整數(shù)流水線,1.57DMIPS/MHz,可選配Neon/VFPv3,支持多核
Cortex-A15:指令集ARMv7-A,超標量,亂序執(zhí)行,可選配Neon/VFPv4,支持多核
當使用ARM toolchain時,會有-march -mcpu等。
-mcpu=
-mtune=
他們指定目標處理器(target ARM processor)。
可選的參數(shù)為:arm2', `arm250', `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7', `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700', `arm700i', `arm710', `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7tdmi', `arm7tdmi-s', `arm8', `strongarm', `strongarm110', `strongarm1100', `arm8', `arm810', `arm9', `arm9e', `arm920', `arm920t', `arm922t', `arm946e-s', `arm966e-s', `arm968e-s', `arm926ej-s', `arm940t', `arm9tdmi', `arm10tdmi', `arm1020t', `arm1026ej-s', `arm10e', `arm1020e', `arm1022e', `arm1136j-s', `arm1136jf-s', `mpcore', `mpcorenovfp', `arm1176jz-s', `arm1176jzf-s', `xscale', `iwmmxt', `ep9312',Cortex-A8, Cortex-A9
-march=
target ARM architecture。 目標處理器架構。
`armv2', `armv2a', `armv3', `armv3m', `armv4', `armv4t', `armv5', `armv5t', `armv5te', `armv6', `armv6j', `iwmmxt', `ep9312'. armv7-a等。
轉載:http://blog.sina.com.cn/s/blog_602f87700100kaa3.html
架構 | 處理器家族 |
---|---|
ARMv1 | ARM1 |
ARMv2 | ARM2, ARM3 |
ARMv3 | ARM6, ARM7 |
ARMv4 | StrongARM, ARM7TDMI, ARM9TDMI |
ARMv5 | ARM7EJ, ARM9E, ARM10E, XScale |
ARMv6 | ARM11, ARM Cortex-M |
ARMv7 | ARM Cortex-A, ARM Cortex-M, ARM Cortex-R |
ARMv8 |
較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式運行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法訪問所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指代碼在存儲器中占的空間),即使有些運算需要更多的指令。特別在存儲器端口或總線寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的存儲器帶寬,因而提供比32位代碼更佳的性能。典型的嵌入式硬件僅具有較小的32-bit datapath尋址范圍以及其他更窄的16 bits尋址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 代碼,并自行優(yōu)化一些使用(非Thumb)32位指令集的CPU相關程序區(qū),因而能將它們置入受限的32-bit總線寬度的存儲器中。
首顆具備Thumb技術的處理器是ARM7TDMI。所有ARM9和后來的家族,包括XScale,都納入了 Thumb 技術。
ARM還開發(fā)出一項技術,Jazelle DBX (Direct Bytecode eXecution),允許它們在某些架構的硬件上加速運行Java bytecode,就如其他運行模式般,當調用一些無法支持bytecodes的特殊軟件時,能提供某些bytecodes的加速運行。它能在現(xiàn)存的ARM與Thumb模式之間互相運行。
首顆具備Jazelle技術的處理器是“ARM7EJ-S”:Jazelle以一個英文字母'J'標示于CPU名稱中。它用來讓手機制造商能夠加速運行Java ME的游戲和應用程序,也因此促使了這項技術不斷地開發(fā)。
Thumb-2技術首見于“ARM1156 核心”,并于2003年發(fā)表。Thumb-2 擴充了受限的16位Thumb 指令集,以額外的32位指令讓指令集的使用更廣泛。因此 Thumb-2的預期目標是要達到近乎Thumb的編碼密度,但能表現(xiàn)出近乎ARM指令集在32位存儲器下的性能。
Thumb-2至今也從ARM和Thumb指令集中派生出多種指令,包含位欄操作、分支建表和條件運行等功能。
ThumbEE,也就是所謂的Thumb-2EE,業(yè)界稱為Jazelle RCT技術,于2005年發(fā)表,首見于 “Cortex-A8”處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的運行環(huán)境下,使得指令集能特別適用于運行階段的編碼產生(例如實時編譯)。Thumb-2EE是專為一些語言如Limbo、Java、C#、Perl和Python,并能讓實時編譯器能夠輸出更小的編譯碼卻不會影響到性能。
ThumbEE所提供的新功能,包括在每次訪問指令時自動檢查是否有無效指針,以及一種可以運行數(shù)組范圍檢查的指令,并能夠分支到分類器,其包含一小部份經常調用的編碼,通常用于高級語言功能的實現(xiàn),例如對一個新對象做存儲器配置。
高級SIMD延伸集,業(yè)界稱為“NEON”技術,它是一個結合64位和128位的單指令多重數(shù)指令集(SIMD),其針對多媒體和信號處理程序具備標準化加速的能力。NEON 可以在10 MHz的處理器上運行MP3音效解碼,且可以運行13 MHz以下的自適應多速率音頻壓縮編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨立運行的硬件。NEON 支持8、16、32和64位的整數(shù)及單精度浮點數(shù)據,并以單指令多重數(shù)的方式運算,運行圖形和游戲處理中關于語音及視頻的部分。單指令多重指令集在矢量超級處理機中是個決定性的要素,它具備同時多項處理功能。在NEON技術中,SIMD最高可同時做16個運算。
VFP(矢量浮點)是在協(xié)同處理器針對ARM架構的派生技術。它提供低成本的單精度和倍精度浮點運算能力,并完全兼容于ANSI/IEEE Std 754-1985 二進制浮點算數(shù)標準。VFP提供大多數(shù)適用于浮點運算的應用,例如PDA、智能手機、語音壓縮與解壓、3D圖像以及數(shù)字音效、打印機、機上盒,和汽車應用等。VFP架構也支持SIMD平行化的短矢量指令運行。這在圖像和信號處理等應用上,非常有助于降低編碼大小并增加輸出效率。
在ARM為基礎的處理器中,其他可見的浮點、或SIMD的協(xié)同處理器還包括了FPA、FPE、iwMMXt。他們提供類似VFP的功能,但在opcode層面上來說并不具有兼容性。
聯(lián)系客服