热门问题
时间线
聊天
视角
ARM架构
精簡指令集處理器架構家族 来自维基百科,自由的百科全书
Remove ads
ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作艾康精简指令集机器,Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。另一方面,超级计算机消耗大量电能,ARM同样被视作更高效的选择[3]。安谋控股(ARM Holdings)开发此架构并授权其他公司使用,以供他们实现ARM的某一个架构,开发自主的系统单片机和系统模块(system-on-module,SoC)。
![]() | 此条目可参照英语维基百科相应条目来扩充。 (2022年8月8日) |
Remove ads

ARM架构版本从ARMv3到ARMv7支持32位空间和32位算数运算,大部分架构的指令为定长32位(Thumb)指令集支持变长的指令集,提供对32位和16位指令集的支持),而2011年发布的ARMv8-A架构添加了对64位空间和64位算术运算的支持,同时也更新了32位定长指令集[4]。
至2009年为止,ARM架构处理器占市面上所有32位嵌入式RISC处理器90%的比例[5],使它成为占全世界最多数的32位架构。ARM处理器可以在很多消费性电子产品上看到,从便携式设备(PDA、移动电话、多媒体播放器、掌上型电子游戏和计算机)到电脑外设(硬盘、桌面型路由器),甚至在导弹的弹载计算机等军用设施中都有它的存在。在此还有一些基于ARM设计的衍伸产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。
2011年,ARM的客户报告79亿ARM处理器出货量,占有95%的智能手机、90%的硬盘驱动器、40%的数字电视和机上盒、15%的微控制器、和20%的移动电脑[6]。在2012年,微软与ARM科技生产新的Surface平板电脑,AMD宣布它将于2014年开始生产基于ARM核心的64位服务器芯片,[7]2016年,日本富士通公司宣布“京”超级计算机的后继机种将采用ARM架构[3],该超级计算机于2019年5月定名为“富岳”[8],2020年6月于TOP500夺冠[9][10][11]。
Remove ads
特色和应用
自2005年,每年超过一亿的手机销售约98%使用了ARM处理器[13]。截至2009年,占大约90%的嵌入式32位RISC处理器[14]和ARM处理器被广泛使用在消费性电子产品,包括个人数位助理(PDA)、平板电脑、移动电话、数字媒体和音乐播放器、手持式游戏游戏机、计算器和计算机外围设备(如硬盘驱动器和路由器)。
除了消费电子,ARM架构处理器也开始用于以往x86、x64处理器独大的个人电脑、服务器。而在2020年成为TOP500排名第一的“富岳”为首部夺冠的ARM架构超级计算机。
历史


ARM的设计是艾康电脑公司于1983年开始的开发项目。
这个团队由Roger Wilson和Steve Furber带领,着手开发一种类似高级6502架构的处理器。Acorn电脑有一大堆建构在6502处理器上的电脑,因此能设计出一颗类似的芯片即意味着对公司有很大的优势。

团队在1985年时开发出样本“ARM1”,而首颗真正能量产的“ARM2”于次年投产。ARM2具有32位的数据总线、26位的寻址空间,并提供64 Mbyte的寻址范围与16个32-bit的寄存器。寄存器中有一个作为程序计数器,其前面6位和后面2位用来保存处理器状态标记。ARM2可能是全世界最简单实用的32位微处理器,仅容纳了30,000个晶体管(六年后的摩托罗拉68000包含了70,000颗)。之所以精简的原因在于它不含微码(这大概占了68000的晶体管数约1/4至1/3);而且与当时大多数的处理器相同,它没有包含任何的高速缓存。这个精简的特色使它只需消耗很少的电能,却能发挥比Intel 80286更好的性能[15]。后继的处理器“ARM3”则备有4KB的高速缓存,使它能发挥更佳的性能。
在1980年代晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心。由于这项目非常重要,艾康电脑甚至于1990年将设计团队另组成一间名为安谋国际科技(Advanced RISC Machines Ltd.)的新公司。也基于这原因,使得ARM有时候反而称作Advanced RISC Machine而不是Acorn RISC Machine。由于其母公司ARM Holdings plc于1998年在伦敦证券交易所和NASDAQ挂牌上市[16],使得Advanced RISC Machines成了ARM Ltd旗下拥有的产品[17]。
这个项目到后来进入“ARM6”,首版的样品在1991年发布,然后苹果电脑使用ARM6架构的ARM 610来当作他们Apple Newton产品的处理器。在1994年,艾康电脑使用ARM 610做为他们个人电脑产品的处理器。
在这些变革之后,内核部分却大多维持一样的大小——ARM2有30,000颗晶体管,但ARM6却也只增长到35,000颗。主要概念是以ODM的方式,使ARM核心能搭配一些选配的零件而制成一颗完整的CPU,而且可在现有的晶圆厂里制作并以低成本的方式达到很大的性能。
ARM的经营模式在于出售其IP核,授权厂家依照设计制作出建构于此核的微控制器和中央处理器。最成功的实现案例属ARM7TDMI,几乎卖出了数亿套内置微控制器的设备。
Digital曾购买这个架构的产权并研发出“StrongARM”。在233 MHz的频率下,这颗CPU只消耗1瓦特的电能(后来的芯片消耗得更少)。这项设计后来为了和英特尔的控诉和解而技术移转,英特尔因而利用StrongARM架构补强他们老旧的i960产品。英特尔后来开发出他们自有的高性能架构产品XScale,之后卖给了迈威尔科技。
2020年11月11日,苹果公司发布基于ARM芯片(Apple M1)的苹果台式机和笔记本电脑,2021年4月21日,苹果公司发布基于M1 CPU的24 吋Mac和新iPad Pro
Remove ads
内核种类
由ARM提供了一个厂商汇总,是在其设计中实现ARM内核的众多厂商一个总结[19]。
Remove ads
架构
从1995年开始,《ARM体系结构参考手册》是ARM文档的主要来源,提供了关于ARM处理器架构和指令集,区分接口,所有的ARM处理器的支持(如指令语义)的实现细节可能会有所不同。该体系结构随着时间的演变,并与Cortex系列的核心开始,存在三个“配置”的定义如下:
- "应用"配置: Cortex-A 系列
- "嵌入式"配置: Cortex-R 系列
- "微处理器"配置: ARM Cortex-M 系列。
每个配置允许有其子集的架构。例如,用于ARMv6-M配置(所使用的Cortex M0 / M0+/ M1)的一个子集ARMv7-M架构(支持较少的指令)。
CPU ARM架构指定了以下的CPU模式。在任何时刻,CPU只可处于某一种模式,但可由于外部事件(中断)或编程方式进行模式切换。
- 用户模式
- 仅非特权模式。
- 系统模式
- 仅无需例外进入的特权模式。仅以执行明确写入CPSR的模式位的指令进入。
- Supervisor (svc) 模式
- 在CPU被重置或者SWI指令被执行时进入的特权模式。
- Abort 模式
- 预读取中断或数据中断异常发生时进入的特权模式。
- 未定义模式
- 未定义指令异常发生时进入的特权模式。
- 干预模式
- 处理器接受一条IRQ干预时进入的特权模式。
- 快速干预模式
- 处理器接受一条IRQ干预时进入的特权模式。
- Hyp 模式
- armv-7a为cortex-A15处理器提供硬件虚拟化引进的管理模式。
讲求精简又快速的设计方式,整体电路化却又不采用微码,就像早期使用在艾康微电脑的8位6502处理器。
ARM架构包含了以下精简指令集处理器的特性:
- 加载-存储架构
- 不支持地址不对齐存储器访问(ARMv6内核现已支持)
- 大量的16 × 32-bit寄存器堆
- 固定的32 bits操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线的负担。
- 大多均为一个CPU周期执行。
为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola 68020,还多加了一些特殊设计:
Remove ads
寄存器 R0-R7 对于所有CPU模式都是相同的,它们不会被分块。
对于所有的特权CPU模式,除了系统CPU模式之外,R13和R14都是分块的。也就是说,每个因为一个异常(exception)而可以进入模式,有其自己的R13和R14。这些寄存器通常分别包含堆栈指针和函数调用的返回地址。
同名的名称:
- R13 也被指为 SP(Stack Pointer)
- R14 也被指为 LR(Link Register)
- R15 也被指为 PC(Program Counter)
在每个指令前头使用一个 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),
;或"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
子句之间的分支。
Remove ads
另一项指令集的特色是,能将位移(shift)和回转(rotate)等功能并成"资料处理"型的指令(算数、逻辑、和寄存器之间的搬移),因此举例来说,一个C语言的叙述
a += (j << 2);
在ARM之下,可简化成只需一个word和一个cycle即可完成的指令
ADD Ra, Ra, Rj, LSL #2
这结果可让一般的ARM程序变得更加紧密,而不需经常使用存储器访问,流水线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下执行,与更复杂的CPU设计相比它仍能执行得不错。
ARM处理器还有一些在其他RISC的架构所不常见到的特色,例如程序计数器-相对寻址(的确在ARM上程序计数器为16个寄存器的其中一个)以及前递加或后递加的寻址模式。
另外值得注意的是ARM处理器会随着时间不断地增加它的指令集。譬如某些早期的ARM处理器(比ARM7TDMI更早),可能并未具备指令可以读取2 Bytes的数量;因此严格来讲,对这些处理器产生代码时,就不可能处理如C语言对象中使用“volatile short”的资料类型。
Remove ads
ARM7和大多数较早的设计具备三阶段的流水线:提取指令、解码,并执行。较高性能的设计,如ARM9,则有更深阶段的流水线: Cortex-A8有13阶段的流水线。提高性能的额外方式,包含一颗较快的加法器,和更广的分支预测逻辑线路。例如,在ARM7DI核与ARM7DMI核之间的差异,是一种改进的乘法器(因此添加的“M”)。
这个架构使用“辅助处理器”提供一种非侵入式的方法来延伸指令集,可通过软件下MCR、MRC、MRRC和MCRR等指令来对辅助处理器寻址。辅助处理器空间逻辑上通常分成16个辅助处理器,编号分别从0至15;而第15号辅助处理器是保留用作某些常用的控制功能,像是使用高速缓存和记忆管理单元运算(若包含于处理器时)。
- 在ARM架构的机器中,周边设备连接处理器的方式,通常通过将设备的实体寄存器对应到ARM的存储器空间、辅助处理器空间,或是连接到另外依序接上处理器的设备(如总线)。辅助处理器的访问延迟较低,所以有些周边设备(例如XScale中断控制器)会设计成可通过不同方式访问(通过存储器和辅助处理器)。
DSP增强指令
较新的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技术。
ARM还开发出一项技术,Jazelle DBX(Direct Bytecode eXecution),允许它们在某些架构的硬件上加速执行Java bytecode,就如其他执行模式般,当调用一些无法支持bytecodes的特殊软件时,能提供某些bytecodes的加速执行。它能在现存的ARM与Thumb模式之间互相执行。
首颗具备Jazelle技术的处理器是“ARM7EJ-S”:Jazelle以一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速执行Java ME的游戏和应用程序,也因此促使了这项技术不断地开发。
Thumb-2技术首见于“ARM1156核心”,并于2003年发表。Thumb-2扩展了受限的16位Thumb指令集,以额外的32位指令让指令集的使用更广泛。因此Thumb-2的预期目标是要达到近乎Thumb的编码密度,但能表现出近乎ARM指令集在32位存储器下的性能。
Thumb-2至今也从ARM和Thumb指令集中衍伸出多种指令,包含位段操作、分支建表和条件执行等功能。
ThumbEE,也就是所谓的Thumb-2EE,业界称为Jazelle RCT (页面存档备份,存于互联网档案馆)技术,于2005年发表,首见于“Cortex-A8”处理器。ThumbEE提供从Thumb-2而来的一些扩展性,在所处的执行环境下,使得指令集能特别适用于执行阶段的编码产生(例如即时编译)。Thumb-2EE是专为一些语言如Limbo、Java、C#、Perl和Python,并能让即时编译器能够输出更小的编译码却不会影响到性能。
ThumbEE所提供的新功能,包括在每次访问指令时自动检查是否有无效指针,以及一种可以执行数组范围检查的指令,并能够分支到分类器,其包含一小部分经常调用的编码,通常用于高级语言功能的实现,例如对一个新对象做存储器配置。
高级SIMD延伸集,业界称为“NEON”技术,它是一个结合64位和128位的单指令多重数指令集(SIMD),其针对多媒体和信号处理程序具备标准化加速的能力。NEON可以在10 MHz的处理器上执行MP3音效解码,且可以执行13 MHz以下的自适应多速率音频压缩编码。NEON具有一组广泛的指令集、各自的寄存器阵列,以及独立执行的硬件。NEON支持8、16、32和64位的整数及单精度浮点数据,并以单指令多重数的方式运算,执行图形和游戏处理中关于语音及视频的部分。单指令多重指令集在向量超级处理机中是个决定性的要素,它具备同时多项处理功能。在NEON技术中,SIMD最高可同时做16个运算。
VFP(向量浮点)是在协同处理器针对ARM架构的派生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全兼容于ANSI/IEEE Std 754-1985二进制浮点算数标准。VFP提供大多数适用于浮点运算的应用,例如PDA、智能手机、语音压缩与解压、3D图像以及数字音效、打印机、机顶盒,和汽车应用等。VFP架构也支持SIMD平行化的短向量指令执行。这在图像和信号处理等应用上,非常有助于降低编码大小并增加输出效率。
在ARM为基础的处理器中,其他可见的浮点、或SIMD的协同处理器还包括了FPA、FPE、iwMMXt。他们提供类似VFP的功能,但在opcode层面上来说并不具有兼容性。
TrustZone技术出现在ARMv6KZ以及较晚期的应用核心架构中。它提供了一种低成本的方案,针对系统单片机内加入专属的安全核心,由硬件建构的访问控制方式支持两颗虚拟的处理器。这个方式可使得应用程序核心能够在两个状态(领域)之间切换,在此架构下可以避免信息从较可信的核心领域泄漏至较不安全的领域。这种内核领域之间的切换通常是与处理器其他功能完全无关系性,因此各个领域可以各自独立运作但却仍能使用同一颗内核。存储器和周边设备也可因此得知目前内核运作的领域为何,并能针对这个方式来提供对设备的机密和编码进行访问控制。典型的TrustZone技术应用是要能在一个缺乏安全性的环境下完整地执行操作系统,并在可信的环境下能有更少的安全性的编码。T6[20]是中国第一个开源的TrustZone安全内核(该项目目前已经在公开领域消失)。OP-TEE(Open Portable Trusted Executive Environment)成为目前(2017/7)较为成功的可信执行环境(TEE)开源项目。
ARM授权方式
ARM公司本身并不靠自有的设计来制造或出售CPU,而是将处理器架构授权给有兴趣的厂家。ARM提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM提供了ARM内核的集成硬件叙述,包含完整的软件开发工具(编译器、debugger、SDK),以及针对内含ARM CPU硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将ARM内核集成到他们自行研发的芯片设计中,通常就仅针对获取一份生产就绪的智财核心技术(IP Core)认证。对这些客户来说,ARM会发布所选的ARM核心的闸极电路图,连同抽象模拟模型和测试程序,以协助设计集成和验证。需求更多的客户,包括集成组件制造商(IDM)和晶圆厂家,就选择可合成的RTL(寄存器传输级,如Verilog)形式来获取处理器的知识产权(IP)。借着可集成的RTL,客户就有能力能进行架构上的优化与加强。这个方式能让设计者完成额外的设计目标(如高震荡频率、低能量耗损、指令集延伸等)而不会受限于无法更动的电路图。虽然ARM并不授予授权方再次出售ARM架构本身,但授权方可以任意地出售制品(如芯片组件、评估板、完整系统等)。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含ARM内核的硅晶成品,对其它客户来讲,他们通常也保留重制ARM内核的权利。
就像大多数IP出售方,ARM依照使用价值来决定IP的售价。在架构上而言,更低性能的ARM内核比更高性能的内核拥有较低的授权费。以硅芯片实现而言,一颗可集成的内核要比一颗硬件宏(黑箱)内核要来得贵。更复杂的价位问题来讲,
许多半导体公司持有ARM授权:Atmel、Broadcom、Cirrus Logic、Freescale(于2004从摩托罗拉公司独立出来)、富士通、英特尔(借由和Digital的控诉调停)、IBM、NVIDIA、台湾新唐科技(Nuvoton Technology)、英飞凌、任天堂、恩智浦半导体(于2006年从飞利浦独立出来)、冲电气、三星电子、苹果、夏普、意法半导体、德州仪器和VLSI等许多这些公司均拥有各个不同形式的ARM授权。虽然ARM的授权项目由保密合约所涵盖,在知识产权工业,ARM是广为人知最昂贵的CPU内核之一。单一的客户产品包含一个基本的ARM内核可能就需索取一次高达美金20万的授权费用。而若是牵涉到大量架构上修改,则费用就可能超过千万美元。
ARM核心时间线
下表列出每个核心发布年份[21][22]。未包括ARM7之前的核心。
ARM内核的授权与应用
延伸阅读
- AMULET - 异步ARM家族
- Arm v7 架构的路由器列表
- Arm v8 架构的路由器列表
参考资料
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads