当前ARM体系结构的扩充包括:
·Thumb 16位指令集,为了改善代码密度;
·DSP DSP应用的算术运算指令集;
·Jazeller 允许直接执行Java字节码。
ARM处理器系列提供的解决方案有:
·无线、消费类电子和图像应用的开放平台;
·存储、自动化、工业和网络应用的嵌入式实时系统;
·智能卡和SIM卡的安全应用。
ARM处理器本身是32位设计,但也配备16位指令集。一般来讲存储器比等价32位代码节省达
35%,然而保留了32位系统的所有优势。ARM的Jazelle技术使Java加速得到比基于软件的Java虚拟机(JVM)高得多的性能,和同等的非
Java加速核相比功耗降低80%。CPU功能上增加DSP指令集提供增强的16位和32位算术运算能力,提高了性能和灵活性。ARM还提供两个前沿特性
来辅助带深嵌入处理器的高集成SoC器件的调试,它们是嵌入式ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列。
[
编辑本段
]
内核种类
家族
架构
内核
特 {MOD}
高速缓存 (I/D)/
MMU
常规
MIPS
于 MHz
应用
ARM1
ARMv1
ARM1
无
ARM2
ARMv2
ARM2
Architecture 2
加入了MUL(乘法)指令
无
4
MIPS @ 8MHz
Acorn Archimedes,Chessmachine
ARMv2a
ARM250
Integrated (完整的)MEMC (MMU),图像与IO处理器。Architecture
2a 加入了SWP和SWPB(置换)指令。
无,MEMC1a
7 MIPS @ 12MHz
Acorn
Archimedes
ARM3
ARMv2a
ARM2a
首次在ARM架构上使用处理器高速缓存
均为4K
12 MIPS @ 25MHz
Acorn
Archimedes
ARM6
ARMv3
ARM610
v3 架构首创支援寻址32位的内存(针对26位)
均为4K
28 MIPS @ 33MHz
Acorn
Risc PC 600,Apple Newton
ARM7TDMI
ARMv4T
ARM7TDMI(-S)
三级流水线
无
15 MIPS @ 16.8 MHz
Game Boy
Advance
,Nintendo DS,
iPod
ARM710T
均为8KB, MMU
36 MIPS @
40 MHz
Acorn Risc PC 700,Psion 5
series,Apple eMate 300
ARM720T
均为8KB, MMU
60 MIPS @ 59.8 MHz
Zipit
ARM740T
MPU
ARMv5TEJ
ARM7EJ-S
Jazelle DBX
无
ARM9TDMI
ARMv4T
ARM9TDMI
五级流水线
无
ARM920T
16KB/16KB,
MMU
200 MIPS @ 180 MHz
Armadillo
,GP32,
GP2X
(第
一颗内核), Tapwave Zodiac(
Motorola
i.
MX1)
ARM922T
8KB/8KB,
MMU
ARM940T
4KB/4KB, MPU
GP2X(第二颗内核)
ARM9E
ARMv5TE
ARM946E-S
可变
动,tightly coupled memories, MPU
Nintendo DS,
Nokia
N-Gage
Conexant
802.11 chips
ARM966E-S
无高速缓存,TCMs
ST Micro
STR91xF,包含Ethernet [2]
ARM968E-S
无高速缓存,TCMs
ARMv5TEJ
ARM926EJ-S
Jazelle
DBX
可变动,TCMs, MMU
220 MIPS @ 200 MHz
移动电话:
Sony
Ericsson
(K, W系列),Siemens 和
Benq
(x65 系列和新版的)
ARMv5TE
ARM996HS
无振荡器处理器
无高速缓存,TCMs, MPU
ARM10E
ARMv5TE
ARM1020E
(VFP),六级流水线
32KB/32KB,
MMU
ARM1022E
(VFP)
16KB/16KB, MMU
ARMv5TEJ
ARM1026EJ-S
Jazelle
DBX
可变动,MMU or MPU
XScale
ARMv5TE
80200/IOP310/IOP315
I/O处理器
80219
400/600MHz
Thecus N2100
IOP321
600
BogoMips
@
600 MHz
Iyonix
IOP33x
IOP34x
1-2核,RAID加速器
32K/32K
L1, 512K L2, MMU
PXA210/PXA250
应用处理器,七级流水线
Zaurus SL-5600
PXA255
32KB/32KB, MMU
400 BogoMips @
400 MHz
Gumstix,Palm Tungsten E2
PXA26x
可达 400 MHz
Palm Tungsten T3
PXA27x
800 MIPS @
624 MHz
HTC
Universal, Zaurus SL-C1000,3000,3100,3200, Dell
Axim x30, x50,和 x51 系列
PXA800(E)F
Monahans
1000 MIPS @
1.25 GHz
PXA900
Blackberry 8700, Blackberry Pearl (8100)
IXC1100
Control Plane
Processor
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x
NSLU2
IXP460/IXP465
ARM11
ARMv6
ARM1136J(F)-S
SIMD, Jazelle DBX, (VFP),八级流水线
可变动,MMU
?? @ 532-665MHz (i.MX31
SoC)
Nokia N93
,
Zune
,
Nokia
N800
ARMv6T2
ARM1156T2(F)-S
SIMD, Thumb-2,
(VFP),九级流水线
可变动,MPU
ARMv6KZ
ARM1176JZ(F)-S
SIMD, Jazelle DBX, (VFP)
可变动,MMU+TrustZone
ARMv6K
ARM11 MPCore
1-4核对称多处
理器,SIMD, Jazelle DBX, (VFP)
可变动,MMU
Cortex
ARMv7-A
Cortex-A8
Application
profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage pipeline
可变动 (L1+L2), MMU+TrustZone
up to 2000(2.0 DMIPS/MHz 从600 MHz到超过1 GHz的速度)
Texas Instruments OMAP3
ARMv7-R
Cortex-R4(F)
Embedded
profile, (FPU)
可变动高速缓存,MMU可选配
600 DMIPS
Broadcom
is
a user
ARMv7-M
Cortex-M3
Microcontroller profile
无高速缓存,(MPU)
120 DMIPS @ 100MHz
Luminary Micro[3] 微控制器家族
设计文件
设计文件讲求精简又快速的设计方式,整体电路化却又不采用微码,就像早期使用在
Acorn微电脑的8位
6502
处理器。
ARM架构包含了下述RISC特性:
读取/储存
架构不支援地址不对齐内存存取(ARMv6内核现已支援)正交指令集(任意存取指令可以任意的
寻址方式
存取数据Orthogonal
instruction set)大量的16 × 32-bit 寄存器阵列(register file)固定的32 bits
操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。大多均为一个CPU周期执行。为了补强这种简单的设计方式,相较于同
时期的处理器如
Intel
80286
和Motorola 68020,还多加了一些特殊设计:
大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch
predictor)的不足。算数指令只会在要求时更改条件编码(condition code)32-bit筒型位移器(barrel
shifter)可用来执行大部分的算数指令和寻址计算而不会损失效能强大的索引寻址模式(addressing mode)精简但快速的双优先级
中断
子系统,
具有可切换的暂存器组有个附加在ARM设计中好玩的东西,就是使用一个4-bit
条件编码
在每个
指令前头,表示每支指令的执行是否为有条件式的
这大大的减低了在内存存取指令时用到的编码位,换句话说,它避免在对小型叙述如if做分支指
令。有个标准的范例引用
欧几里德
的
最大公因子
算法:
在C编程语言中,循环为:
int gcd (int i, int j) { while (i != j) if
(i > j) i -= j; else j -= i; return i;} 在ARM
汇编语言
中,循环为:
loop CMP Ri, Rj ; 设定条件为 "NE"(不等於) if (i !=
j) ; "GT"(大於) if (i > j), ; or "LT"(小於) if (i < j) SUBGT Ri, Ri,
Rj ; 若 "GT"(大於), i = i-j; SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i; BNE
loop ; 若 "NE"(不等於),则继续回圈这避开了then和else子句之间的分支。
另一项指令集的特 {MOD}是,能将位移(shift)和回转(rotate)等功能并成"资料处理"
型的指令(算数、逻辑、和暂存器之间的搬移),因此举例来说,一个C语言的叙述
a += (j <<
2);在ARM之下,可简化成只需一个word和一个cycle即可完成的指令
ADD Ra, Ra, Rj, LSL
#2这结果可让一般的ARM程式变得更加紧密,而不需经常使用内存存取,流水线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下执行,与更复杂
的CPU设计相比它仍能执行得不错。
ARM处理器还有一些在其他RISC的架构所不常见到的特 {MOD},例如PC-相对寻址(的确在
ARM上PC为16个暂存器的其中一个)以及 前递加或后递加的寻址模式。
另外一些注意事项是 ARM 处理器会随着时间,不断地增加它的指令集。某些早期的 ARM
处理器(比ARM7TDMI更早),譬如可能并未具备指令可以读取两 Bytes 的数量,因此,严格来讲,对这些处理器产生程式码时,就不可能处理如 C
语言物件中使用 "volatile short" 的资料型态。
ARM7
和大多数较早的设计具备三阶段的流水线化(Pipeline):提取指令、解码,并执行。较高效能的设计,如
ARM9,则有五阶段的流水线化。提高效能的额外方式,包含一颗较快的加法器,和更广的分支预测逻辑线路。
这个架构使用“协处理器”提供一种非侵入式的方法来延伸指令集,可透过软件下
MCR、MRC、MRRC和MCRR 等指令来对协处理器寻址。协处理器空间逻辑上通常分成16个协处理器,编号分别从 0 至 15
,而第15号协处理器(CP15)是保留用作某些常用的控制功能,像是使用高速缓存和记忆管理单元运算(若包含于处理器时)。
在 ARM 架构的机器中,周边装置连接处理器的方式,通常透过将装置的实体暂存器对应到
ARM
的内存空间、协处理器空间,或是连接到另外依序接上处理器的装置(如总线)。协处理器的存取延迟较低,所以有些周边装置(例
如 XScale 中断控制器)会设计成可透过不同方式存取(透过内存和协处理器)。
Thumb
较新的ARM
处理器有一种16-bit指令模式,叫做Thumb,也许跟每个条件式执行指令均耗用4位的情形有关。在Thumb模式下,较小的opcode有更少的功
能性。例如,只有分支可以是条件式的,且许多opcode无法存取所有CPU的暂存器。然而,较短的opcode提供整体更佳的编码密度(注:意指程式码
在内存中占的空间),即使有些运算需要更多的指令。特别在内存埠或总线宽度限制在32 以下的情形时,更短的Thumb
opcode能更有效地使用有限的内存带宽,因而提供比32位程式码更佳的效能。典型的嵌入式硬件仅具有较小的32-bit
datapath寻址范围以及其他更窄的16 bits寻址(例如Game Boy Advance)。在这种情形下,通常可行的方案是编译成
Thumb 程式码,并自行最佳化一些使用(非Thumb)32位指令集的CPU相关程式区,因而能将它们置入受限的32-bit总线宽度的内存中。
首颗具备 Thumb 技术的处理器是 ARM7TDMI。所有 ARM9
和后来的家族,包括 XScale 都纳入了 Thumb 技术。
Jazelle
ARM
还开发出一项技术,Jazelle DBX (Direct Bytecode
eXecution),允许它们在某些架构的硬件上加速执行Java
bytecode,就如其他执行模式般,当呼叫一些无法支援bytecodes的特殊软件时,能提供某些bytecodes的加速执行。它能在现存的
ARM与Thumb模式之间互相执行。
首颗具备Jazelle技术的处理器是
ARM926EJ-S
:Jazelle以
一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速执行Java ME的游戏和应用程式,也因此促使了这项技术不断地开发。
Thumb-2
Thumb-2
技术首见于
ARM1156 核心
,并于2003年发表。Thumb-2 扩充了受限的
16-bit Thumb 指令集,以额外的 32-bit 指令让指令集的使用更广泛。因此 Thumb-2 的预期目标是要达到近乎 Thumb
的编码密度,但能表现出近乎 ARM 指令集在 32-bit 内存下的效能。
Thumb-2 至今也从 ARM 和 Thumb
指令集中派生出多种指令,包含位栏(bit-field)操作、分支建表(table branches),和条件执行等功能。
Thumb Execution
Environment (ThumbEE)
ThumbEE
,也就是所谓的
Thumb-2EE
,,业
界称为Jazelle RCT技术,于2005年发表,首见于
Cortex-A8
处理器。
ThumbEE 提供从 Thumb-2 而来的一些扩充性,在所处的
执行环境
(Execution
Environment)下,使得指令集能特别适用于执行阶段(Runtime)的编码产生(例如即时编译)。Thumb-2EE
是专为一些语言如
Limbo
、
Java
、
C#
、
Perl
和
Python
,并能让 即时编
译器 能够输出更小的编译码却不会影响到效能。
ThumbEE
所提供的新功能,包括在每次存取指令时自动检查是否有无效指标,以及一种可以执行阵列范围检查的指令,并能够分支到分类器(handlers),其包含一
小部份经常呼叫的编码,通常用于高阶语言功能的实作,例如对一个新物件做内存配置。
进阶 SIMD (NEON)
进阶 SIMD 延伸集,业界称为
NEON
技术,它是一个结合 64 和 128 bit 的
SIMD
(Single
Instruction Multiple Data 单指令多重数据)指令集,其针对多媒体和讯号处理程式具备标准化加速的能力。NEON 可以在
10 MHz 的 CPU 上执行 MP3 音效解码,且可以执行 13 MHz 频率以下的
GSM
AMR
(Adaptive Multi-Rate) 语音
编码
。NEON具有一组广泛的指令集、各自的寄
存器阵列,以及独立执行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit
的整数及单精度浮点数据,并以SIMD 的方式运算,执行图形和游戏处理中关于语音/视讯的部分。SIMD
在 向量超级处理机 中是个决定性的要素,它具备同时多项处理功能。在 NEON 技术中,SIMD
最高可支援到同时 16 个运算。
VFP
VFP
是在协同处理器针对ARM架构的衍生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全相容于
ANSI/IEEE Std 754-1985
二进制浮点算数标准
。VFP
提供大多数适用于浮点运算的应用,例如PDA、智慧手机、语音压缩与解压、3D图像以及数位音效、打印机、机上盒,和汽车应用等。VFP
架构也支援 SIMD(单指令多重数据)平行化的短向量指令执行。这在图像和讯号处理等应用上,非常有助于降低编码大小并增加输出效
率。
在ARM-based处理器中,其他可见的浮点、或 SIMD 的协同处理器还包括了
FPA, FPE, iwMMXt。他们提供类似 VFP 的功能但在
opcode
层面上来说并不具有相容性。
安全性扩充 (TrustZone)
TrustZone
(TM) 技术出现在 ARMv6KZ 以及较晚期的应用核心架构中。它提供了一种低成本的方案,针对
系统单芯片
(
SoC
)内加
入专属的安全核心,由硬件建构的存取控制方式支援两颗虚拟的处理器。这个方式可使得应用程式核心能够在两个状态之间切换(通常改称为领域(worlds)
以避免和其他功能领域的名称混淆),在此架构下可以避免资讯从较可信的核心领域泄漏至较不安全的领域。这种内核领域之间的切换通常是与处理器其他功能完全
无关联性(orthogonal),因此各个领域可以各自独立运作但却仍能使用同一颗内核。内存和周边装置也可因此得知目前内核运作的领域为何,并能针对
这个方式来提供对装置的机密和编码进行存取控制。典型的 TrustZone
技术应用是要能在一个缺乏安全性的环境下完整地执行操作系统,并在可信的环境下能有更少的安全性的编码。