ARM架构

ARM架构

目录导航

简要介绍

ARM家族占了所有32位元嵌入式处理器75%的比例,使它成为占全世界最多数的32位元架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电玩,和计算机)到电脑周边设备(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。在此家族中衍生的重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。

历史简介

ARM的设计是Acorn的电脑公司(Acorn Computers Ltd)于1983年开始的开发计划。

这个团队由Roger Wilson和Steve Furber带领,着手开发一种新架构,类似进阶的MOS Technology 6502处理器。Acorn有一大堆建构在6502架构上的电脑,因此能设计出一颗类似的芯片即意味着对公司有很大的优势。

团队在1985年时开发出ARM 1 Sample版,而首颗"真正"的产能型ARM 2于次年量产。ARM 2具有32位的数据总线、26位的寻址空间,并提供64 Mbyte的寻址范围与16个32-bit的暂存器。这些暂存器其中有一颗做为(word大小)程式计数器,其前面6 bits和后面2 bits用来保存处理器状态标记(Processor Status Flags)。ARM 2可能是全世界最简单实用的32位微处理器,其仅容纳了30,000个晶体管(相较于Motorola六年后的68000其包含了70,000颗)。之所以精简的原因在于它不含微码(请参阅microcode)(这表示大概只有68000的1/3至1/4),而与现今大多数的CPU不同,它没有包含任何的高速缓存。这个精简的特色使它只需消耗很少的电能,却能发挥比Intel 80286更好的效能。后继的处理器ARM 3更备有4 KB的高速缓存,使它能发挥更佳的效能。

在1980年代晚期,苹果电脑开始与Acorn合作开发新版的ARM核心,由于这专案非常重要,Acorn甚至于1990年将设计团队另组成一间名为安谋国际科技(Advanced RISC Machines Ltd.)的新公司。也基于这原因,使得ARM有时候反而称作Advanced RISC Machine而不是Acorn RISC Machine。由于其母公司ARM Holdingsplc于1998年的伦敦交易市场和NASDAQ挂牌上市,使得Advanced RISC Machines成了ARM Ltd旗下拥有的产品。

这个专案到后来进入了ARM 6,首版的式样在1991年释出,然后苹果电脑使用ARM6架构的ARM610来当作他们Apple Newton PDA的基础。在1994年,Acorn使用ARM 610做为他们Risc PC电脑内的CPU。

在这些变革之后,内核部份却大多维持一样的大小。ARM 2有30,000颗晶体管,但ARM 6却也只增长到35,000颗。主要概念是以ODM的方式,使ARM核心能搭配一些选配的零件而制成一颗完整的CPU,而且可在现有的晶圆厂里制作并以低成本的方式达到很大的效能。

ARM的经营模式在于出售其知识产权核(IPcore),授权厂家依照设计制作出建构于此核的微控制器和中央处理器。最成功的实作案例属ARM7TDMI,几乎卖出了数亿套内建微控制器的装置。

DEC购买这个架构的产权(此处会造成混淆在于其本身也制造DECAlpha并研发出Strong ARM。在233 MHz的频率下,这颗CPU只消耗一瓦特的电能(后来的芯片消耗得更少)。这项设计后来为了和Intel的控诉和解而技术移转,Intel因而趁机以Strong ARM架构补强他们老旧的i960产线。Intel后来开发出他们自有的高效能实作,称作XScale,之后也卖给了Marvell。

支援智能型手机、PDA和其他手持装置最常见的架构是ARMv 4。XScale和ARM 926处理器是ARMv5TE,而且比起建构在ARMv4的StrongARM、ARM925T和ARM7TDMI等处理器还更常见于许多高阶装置上[来源请求]。架构版本如下栏所示。

内核种类

家族 架构 内核 特色 高速缓存(I/D)/MMU 常规MIPS于MHz 应用
ARM1 ARMv1 ARM1
ARM2 ARMv2 ARM2 Architecture2加入了MUL(乘法)指令 4MIPS@8MHz AcornArchimedes,Chessmachine
ARMv2a ARM250 IntegratedMEMC(MMU),图像与IO处理器,Architecture2a加入了SWP和SWPB(置换)指令 无,MEMC1a 7MIPS@12MHz AcornArchimedes
ARM3 ARMv2a ARM2a 首次在ARM架构上使用处理器高速缓存 均为4K 12MIPS@25MHz AcornArchimedes
ARM6 ARMv3 ARM610 v3架构首创支援,寻址,32位的内存(针对26位) 均为4K 28MIPS@33MHz AcornRiscPC600,AppleNewton
ARM7 ARMv3
ARM7TDMI ARMv4T ARM7TDMI(-S) 三级流水线 15MIPS@16,8MHz GameBoyAdvance,NintendoDS,iPod
ARM710T 均为8KB,MMU 36MIPS@40MHz AcornRiscPC700,Psion5series,AppleeMate300
ARM720T 均为8KB,MMU 60MIPS@59,8MHz Zipit
ARM740T MPU
ARMv5TEJ ARM7EJ-S JazelleDBX
StrongARM ARMv4
ARM8 ARMv4
ARM9TDMI ARMv4T ARM9TDMI 五级流水线
ARM920T 16KB/16KB,MMU 200MIPS@180MHz Armadillo,GP32,GP2X(第一颗内核),TapwaveZodiac(Motorolai,MX1)
ARM922T 8KB/8KB,MMU
ARM940T 4KB/4KB,MPU GP2X(第二颗内核)
ARM9E ARMv5TE ARM946E-S 可变动,tightlycoupledmemories,MPU NintendoDS,NokiaN-GageConexant802,11chips
ARM966E-S 无高速缓存,TCMs STMicroSTR91xF,包含Ethernet
ARM968E-S 无高速缓存,TCMs
ARMv5TEJ ARM926EJ-S JazelleDBX 可变动,TCMs,MMU 220MIPS@200MHz 移动电话,SonyEricsson(K,W系列),Siemens和Benq(x65系列和新版的)
ARMv5TE ARM996HS 无,振荡器,处理器 无高速缓存,TCMs,MPU
ARM10E ARMv5TE ARM1020E (VFP),六级流水线 32KB/32KB,MMU
ARM1022E (VFP) 16KB/16KB,MMU
ARMv5TEJ ARM1026EJ-S JazelleDBX 可变动,MMUorMPU
XScale ARMv5TE 80200/IOP310/IOP315 I/O处理器
80219 400/600MHz ThecusN2100
IOP321 600BogoMips@600MHz Iyonix
IOP33x
IOP34x 1-2核,RAID加速器 32K/32KL1,512KL2,MMU
PXA210/PXA250 应用处理器,七级流水线 ZaurusSL-5600
PXA255 32KB/32KB,MMU 400BogoMips@400MHz Gumstix,PalmTungstenE2
PXA26x 可达400MHz PalmTungstenT3
PXA27x 800MIPS@624MHz HTCUniversal,ZaurusSL-C1000,3000,3100,3200,DellAximx30,x50,和x51系列
PXA800(E)F
Monahans 1000MIPS@1,25GHz MavellPXA300/PXA310/PXA320,Maxfrequency,PXA300@624Mhz,PXA310/PXA320@806Mhz
PXA900 Blackberry8700,BlackberryPearl(8100)
IXC1100 ControlPlaneProcessor
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x NSLU2
IXP460/IXP465
ARM11 ARMv6 ARM1136J(F)-S SIMD,JazelleDBX,(VFP),八级流水线 可变动,MMU NokiaN93,Zune,NokiaN800
ARMv6T2 ARM1156T2(F)-S SIMD,Thumb-2,(VFP),九级流水线 可变动,MPU
ARMv6KZ ARM1176JZ(F)-S SIMD,JazelleDBX,(VFP) 可变动,MMU+TrustZone
ARMv6K ARM11MPCore 1-4核对,称多,处理器,SIMD,JazelleDBX,(VFP) 可变动,MMU
Cortex ARMv7-A Cortex-A8 Applicationprofile,VFP,NEON,JazelleRCT,Thumb-2,13-stagepipeline 可变动(L1+L2),MMU+TrustZone upto2000(2,0DMIPS/MHz从600MHz到超过1GHz的速度) TexasInstrumentsOMAP3
Cortex-A9
Cortex-A9MPCore
ARMv7-R Cortex-R4(F) Embeddedprofile,(FPU) 可变动高速缓存,MMU可选配 600DMIPS Broadcomisauser
ARMv7-M Cortex-M3 Microcontrollerprofile 无高速缓存,(MPU) 120DMIPS@100MHz LuminaryMicro微控制器家族
ARMv6-M Cortex-M0
Cortex-M1
ARMv7-ME Cortex-M4 Optional8regionMPUwithsubregionsandbackgroundregion 1,25DMIPS/MHz

发展历程

家族 架构 内核 特色 高速缓存(I/D)/MMU 常规MIPS于MHz 应用
ARM1 ARMv1 ARM1
ARM2 ARMv2 ARM2 Architecture2加入了MUL(乘法)指令 4MIPS@8MHz AcornArchimedes,Chessmachine
ARMv2a ARM250 IntegratedMEMC(MMU),图像与IO处理器,Architecture2a加入了SWP和SWPB(置换)指令 无,MEMC1a 7MIPS@12MHz AcornArchimedes
ARM3 ARMv2a ARM2a 首次在ARM架构上使用处理器高速缓存 均为4K 12MIPS@25MHz AcornArchimedes
ARM6 ARMv3 ARM610 v3架构首创支援,寻址,32位的内存(针对26位) 均为4K 28MIPS@33MHz AcornRiscPC600,AppleNewton
ARM7 ARMv3
ARM7TDMI ARMv4T ARM7TDMI(-S) 三级流水线 15MIPS@16,8MHz GameBoyAdvance,NintendoDS,iPod
ARM710T 均为8KB,MMU 36MIPS@40MHz AcornRiscPC700,Psion5series,AppleeMate300
ARM720T 均为8KB,MMU 60MIPS@59,8MHz Zipit
ARM740T MPU
ARMv5TEJ ARM7EJ-S JazelleDBX
StrongARM ARMv4
ARM8 ARMv4
ARM9TDMI ARMv4T ARM9TDMI 五级流水线
ARM920T 16KB/16KB,MMU 200MIPS@180MHz Armadillo,GP32,GP2X(第一颗内核),TapwaveZodiac(Motorolai,MX1)
ARM922T 8KB/8KB,MMU
ARM940T 4KB/4KB,MPU GP2X(第二颗内核)
ARM9E ARMv5TE ARM946E-S 可变动,tightlycoupledmemories,MPU NintendoDS,NokiaN-GageConexant802,11chips
ARM966E-S 无高速缓存,TCMs STMicroSTR91xF,包含Ethernet
ARM968E-S 无高速缓存,TCMs
ARMv5TEJ ARM926EJ-S JazelleDBX 可变动,TCMs,MMU 220MIPS@200MHz 移动电话,SonyEricsson(K,W系列),Siemens和Benq(x65系列和新版的)
ARMv5TE ARM996HS 无,振荡器,处理器 无高速缓存,TCMs,MPU
ARM10E ARMv5TE ARM1020E (VFP),六级流水线 32KB/32KB,MMU
ARM1022E (VFP) 16KB/16KB,MMU
ARMv5TEJ ARM1026EJ-S JazelleDBX 可变动,MMUorMPU
XScale ARMv5TE 80200/IOP310/IOP315 I/O处理器
80219 400/600MHz ThecusN2100
IOP321 600BogoMips@600MHz Iyonix
IOP33x
IOP34x 1-2核,RAID加速器 32K/32KL1,512KL2,MMU
PXA210/PXA250 应用处理器,七级流水线 ZaurusSL-5600
PXA255 32KB/32KB,MMU 400BogoMips@400MHz Gumstix,PalmTungstenE2
PXA26x 可达400MHz PalmTungstenT3
PXA27x 800MIPS@624MHz HTCUniversal,ZaurusSL-C1000,3000,3100,3200,DellAximx30,x50,和x51系列
PXA800(E)F
Monahans 1000MIPS@1,25GHz MavellPXA300/PXA310/PXA320,Maxfrequency,PXA300@624Mhz,PXA310/PXA320@806Mhz
PXA900 Blackberry8700,BlackberryPearl(8100)
IXC1100 ControlPlaneProcessor
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x NSLU2
IXP460/IXP465
ARM11 ARMv6 ARM1136J(F)-S SIMD,JazelleDBX,(VFP),八级流水线 可变动,MMU NokiaN93,Zune,NokiaN800
ARMv6T2 ARM1156T2(F)-S SIMD,Thumb-2,(VFP),九级流水线 可变动,MPU
ARMv6KZ ARM1176JZ(F)-S SIMD,JazelleDBX,(VFP) 可变动,MMU+TrustZone
ARMv6K ARM11MPCore 1-4核对,称多,处理器,SIMD,JazelleDBX,(VFP) 可变动,MMU
Cortex ARMv7-A Cortex-A8 Applicationprofile,VFP,NEON,JazelleRCT,Thumb-2,13-stagepipeline 可变动(L1+L2),MMU+TrustZone upto2000(2,0DMIPS/MHz从600MHz到超过1GHz的速度) TexasInstrumentsOMAP3
Cortex-A9
Cortex-A9MPCore
ARMv7-R Cortex-R4(F) Embeddedprofile,(FPU) 可变动高速缓存,MMU可选配 600DMIPS Broadcomisauser
ARMv7-M Cortex-M3 Microcontrollerprofile 无高速缓存,(MPU) 120DMIPS@100MHz LuminaryMicro微控制器家族
ARMv6-M Cortex-M0
Cortex-M1
ARMv7-ME Cortex-M4 Optional8regionMPUwithsubregionsandbackgroundregion 1,25DMIPS/MHz

发展历程

对照表

内核发展历程内核发展历程

设计文件

ARM内核与架构对照表ARM内核与架构对照表

Jazelle

讲求精简又快速的设计方式,整体电路化却又不采用微码,就像早期使用在Acorn微电脑的8位元6502处理器。

ARM架构包含了下述RISC特性:

1.读取/储存架构

2.不支援地址不对齐内存存取(ARMv6内核现已支援)

3.正交指令集(任意存取指令可以任意的寻址方式存取数据Orthogonalinstructionset)

4.大量的16×32-bit暂存器档案(寄存器阵列registerfile)

5.固定的32bits操作码宽(opcode),降低编码数量所产生的耗费,减轻解码和管线化的负担。

6.大多均为一个CPU周期执行。

为了补强这种简单的设计方式,相较于同时期的处理器如Intel80286和Motorola68020,还多加了一些特殊设计:

1.大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branchpredictor)的不足。

2.算数指令只会在要求时更改条件编码(conditioncode)

3.32-bit筒型位移器(barrelshifter)可用来执行大部分的算数指令和寻址计算而不会损失效能

4.强大的索引寻址模式(addressingmode)

5.精简但快速的双优先级中断子系统,具有可切换的暂存器组

有个附加在ARM设计中好玩的东西,就是使用一个4-bit条件编码在每个指令前头,表示每支指令的执行是否为有条件式的

这大大的减低了在内存存取指令时用到的编码位元,换句话说,它避免在对小型叙述如if做分支指令。有个标准的范例引用欧几里德的最大公因子算法:

在C编程语言中,循环为:

intgcd(inti,intj)

{

while(i!=j)

if(i>j)

i-=j;

else

j-=i;

returni;

}

在ARM组合语言中,循环为:

loopCMPRi,Rj;设定条件为"NE"(不等于)if(i!=j)

;"GT"(大于)if(i>j),

;or"LT"(小于)if(i

SUBGTRi,Ri,Rj;若"GT"(大于),i=i-j;

SUBLTRj,Rj,Ri;若"LT"(小于),j=j-i;

BNEloop;若"NE"(不等于),则继续循环

这避开了then和else子句之间的分支。

另一项指令集的特色是,能将位移(shift)和回转(rotate)等功能并成"资料处理"型的指令(算数、逻辑、和暂存器之间的搬移),因此举例来说,一个C语言的叙述

a+=(j<<2);

在ARM之下,可简化成只需一个word和一个cycle即可完成的指令

ADDRa,Ra,Rj,LSL#2

这结果可让一般的ARM程式变得更加紧密,而不需经常使用内存存取,管线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下执行,与更复杂的CPU设计相比它仍能执行得不错。

ARM处理器还有一些在其他RISC的架构所不常见到的特色,例如PC-相对寻址(的确在ARM上PC为16个暂存器的其中一个)以及前递加或后递加的寻址模式。

另外一些注意事项是ARM处理器会随着时间,不断地增加它的指令集。某些早期的ARM处理器(比ARM7TDMI更早),譬如可能并未具备指令可以读取两Bytes的数量,因此,严格来讲,对这些处理器产生程式码时,就不可能处理如C语言物件中使用"volatileshort"的资料型态。

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以下的情形时,更短的Thumbopcode能更有效地使用有限的内存带宽,因而提供比32位元程式码更佳的效能。典型的嵌入式硬件仅具有较小的32-bitdatapath寻址范围以及其他更窄的16bits寻址(例如GameBoyAdvance)。在这种情形下,通常可行的方案是编译成Thumb程式码,并自行最佳化一些使用(非Thumb)32位元指令集的CPU相关程式区,因而能将它们置入受限的32-bit总线宽度的内存中。

首颗具备Thumb技术的处理器是ARM7TDMI。所有ARM9和后来的家族,包括XScale都纳入了Thumb技术。

Thumb-2

ARM还开发出一项技术,JazelleDBX(DirectBytecodeeXecution),允许它们在某些架构的硬件上加速执行Javabytecode,就如其他执行模式般,当呼叫一些无法支援bytecodes的特殊软件时,能提供某些bytecodes的加速执行。它能在现存的ARM与Thumb模式之间互相执行。

首颗具备Jazelle技术的处理器是ARM926EJ-S:Jazelle以一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速执行JavaME的游戏和应用程式,也因此促使了这项技术不断地发展。

进阶

Thumb-2技术首见于ARM1156核心,并于2003年发表。Thumb-2扩充了受限的16-bitThumb指令集,以额外的32-bit指令让指令集的使用更广泛。因此Thumb-2的预期目标是要达到近乎Thumb的编码密度,但能表现出近乎ARM指令集在32-bit内存下的效能。

Thumb-2至今也从ARM和Thumb指令集中衍伸出多种指令,包含位元栏(bit-field)操作、分支建表(tablebranches),和条件执行等功能。

ThumbExecutionEnvironment(ThumbEE)

ThumbEE,也就是所谓的Thumb-2EE,,业界称为JazelleRCT技术,于2005年发表,首见于Cortex-A8处理器。ThumbEE提供从Thumb-2而来的一些扩充性,在所处的执行环境(ExecutionEnvironment)下,使得指令集能特别适用于执行阶段(Runtime)的编码产生(例如即时编译)。Thumb-2EE是专为一些语言如Limbo、Java、C#、Perl和Python,并能让即时编译器能够输出更小的编译码却不会影响到效能。

ThumbEE所提供的新功能,包括在每次存取指令时自动检查是否有无效指标,以及一种可以执行阵列范围检查的指令,并能够分支到分类器(handlers),其包含一小部份经常呼叫的编码,通常用于高阶语言功能的实作,例如对一个新物件做内存配置。

VFP

进阶SIMD延伸集,业界称为NEON技术,它是一个结合64和128bit的SIMD(SingleInstructionMultipleData单指令多重数据)指令集,其针对多媒体和讯号处理程式具备标准化加速的能力。NEON可以在10MHz的CPU上执行MP3音效解码,且可以执行13MHz频率以下的GSMAMR(AdaptiveMulti-Rate)语音编码。NEON具有一组广泛的指令集、各自的暂存器档案,以及独立执行的硬件。NEON支援8-,16-,32-和64-bit的整数及单精度浮点数据,并以SIMD的方式运算,执行图形和游戏处理中关于语音/视讯的部分。SIMD在向量超级处理机中是个决定性的要素,它具备同时多项处理功能。在NEON技术中,SIMD最高可支援到同时16个运算。

安全性扩充

VFP是在协同处理器针对ARM架构的衍生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全相容于ANSI/IEEEStd754-1985二进制浮点算数标准。VFP提供大多数适用于浮点运算的应用,例如PDA、智慧手机、语音压缩与解压、3D图像以及数位音效、打印机、机上盒,和汽车应用等。VFP架构也支援SIMD(单指令多重数据)平行化的短向量指令执行。这在图像和讯号处理等应用上,非常有助于降低编码大小并增加输出效率。

在ARM-based处理器中,其他可见的浮点、或SIMD的协同处理器还包括了FPA,FPE,iwMMXt。他们提供类似VFP的功能但在opcode层面上来说并不具有相容性。

ARM授权方

TrustZone(TM)技术出现在ARMv6KZ以及较晚期的应用核心架构中。它提供了一种低成本的方案,针对系统单芯片(SoC)内加入专属的安全核心,由硬件建构的存取控制方式支援两颗虚拟的处理器。这个方式可使得应用程式核心能够在两个状态之间切换(通常改称为领域(worlds)以避免和其他功能领域的名称混淆),在此架构下可以避免资讯从较可信的核心领域泄漏至较不安全的领域。这种内核领域之间的切换通常是与处理器其他功能完全无关联性(orthogonal),因此各个领域可以各自独立运作但却仍能使用同一颗内核。内存和周边装置也可因此得知内核运作的领域为何,并能针对这个方式来提供对装置的机密和编码进行存取控制。典型的TrustZone技术应用是要能在一个缺乏安全性的环境下完整地执行操作系统,并在可信的环境下能有更少的安全性的编码。

相关百科
返回顶部
产品求购 求购