ARM架構

title: 特色和应用.
content: 自2005年,每年超过一亿的手机销售约98%至少使用了一个ARM处理器。截至2009年,占大约90%的嵌入式32位RISC处理器和ARM处理器被广泛使用在消费性电子产品,包括个人数字助理(PDA)、平板电脑、移动电话、数字媒体和音乐播放器、手持式游戏游戏机、计算器和计算机外围设备(如硬盘驱动器和路由器)。
title: 历史.
content: ARM的设计是艾康电脑公司于1983年开始的发展计划。  这个团队由Roger Wilson和Steve Furber带领,着手开发一种类似进阶6502架构的处理器。Acorn电脑有一大堆建构在6502处理器上的电脑,因此能设计出一颗类似的芯片即意味着对公司有很大的优势。
title: Acorn RISC Machine:ARM2.
content: 团队在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更好的效能。后继的处理器「ARM3」则备有4KB的快取,使它能发挥更佳的效能。
title: Apple、DEC、Intel、Marvell:ARM6、StrongARM、XScale.
content: 在1980年代晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心。由于这专案非常重要,艾康电脑甚至于1990年将设计团队另组成一间名为安谋国际科技(Advanced RISC Machines Ltd.)的新公司。也基于这原因,使得ARM有时候反而称作Advanced RISC Machine而不是Acorn RISC Machine。由于其母公司ARM Holdings plc于1998年在伦敦证券交易所和NASDAQ挂牌上市,使得Advanced RISC Machines成了ARM Ltd旗下拥有的产品。  这个专案到后来进入「ARM6」,首版的样品在1991年释出,然后苹果电脑使用ARM6架构的ARM 610来当作他们Apple Newton产品的处理器。在1994年,艾康电脑使用ARM 610做为他们个人电脑产品的处理器。  在这些变革之后,内核部分却大多维持一样的大小——ARM2有30,000颗晶体管,但ARM6却也只增长到35,000颗。主要概念是以ODM的方式,使ARM核心能搭配一些选配的零件而制成一颗完整的CPU,而且可在现有的晶圆厂里制作并以低成本的方式达到很大的效能。  ARM的经营模式在于出售其IP核,授权厂家依照设计制作出建构于此核的微控制器和中央处理器。最成功的实作案例属ARM7TDMI,几乎卖出了数亿套内建微控制器的装置。  迪吉多曾购买这个架构的产权并研发出「StrongARM」。在233 MHz的频率下,这颗CPU只消耗1瓦特的电能(后来的芯片消耗得更少)。这项设计后来为了和英特尔的控诉和解而技术移转,英特尔因而利用StrongARM架构补强他们老旧的i960产品。英特尔后来开发出他们自有的高效能架构产品XScale,之后卖给了迈威尔科技。  支援智能手机、个人数码助理和其他手持装置最常见的架构是「ARMv4」。XScale和ARM926处理器是「ARMv5TE」,而且比起建构在ARMv4的StrongARM、ARM925T和ARM7TDMI等处理器还更常见于许多高阶装置上。
title: 内核种类.
content: 由ARM提供了一个厂商汇总,是在其设计中实现ARM内核的众多厂商一个总结。
title: 架构.
content: 从1995年开始,《ARM体系结构参考手册》是ARM文档的主要来源,提供了关于ARM处理器架构和指令集,区分接口,所有的ARM处理器的支持(如指令语义)的实现细节可能会有所不同。该体系结构随着时间的演变,并与Cortex系列的核心开始,存在三个“配置”的定义如下:  每个配置允许有其子集的架构。例如,用于ARMv6-M配置(所使用的Cortex M0 / M0+/ M1)的一个子集ARMv7-M架构(支持较少的指令)。
title: CPU模式.
content: CPU ARM架构指定了以下的CPU模式。在任何时刻,CPU只可处于某一种模式,但可由于外部事件(中断)或编程方式进行模式切换。
title: 指令集.
content: 讲求精简又快速的设计方式,整体电路化却又不采用微码,就像早期使用在艾康微电脑的8位元6502处理器。  ARM架构包含了以下精简指令集处理器的特性:  为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola 68020,还多加了一些特殊设计:
title: 寄存器.
content: 寄存器 R0-R7 对于所有CPU模式都是相同的,它们不会被分块。  对于所有的特权CPU模式,除了系统CPU模式之外,R13和R14都是分块的。也就是说,每个因为一个异常(exception)而可以进入模式,有其自己的R13和R14。这些寄存器通常分别包含堆栈指针和函数调用的返回地址。  同名的名称:
title: 有条件运行.
content: 有个附加在ARM设计中好玩的东西,就是使用一个4-bit "条件编码"在每个指令前头,表示每支指令的执行是否为有条件式的  这大大的减低了在内存存取指令时用到的编码位元,换句话说,它避免在对小型叙述如codice_1做分支指令。有个标准的范例引用欧几里得的最大公因子算法:  在C语言中,循环为:  int gcd(int i, int j)  在ARM汇编语言中,循环为:  loop: CMP Ri, Rj ;设定条件为"NE"(不等于) if(i!= j)  这避开了codice_2和codice_3子句之间的分支。
title: 其他特色.
content: 另一项指令集的特色是,能将位移(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」的资料型态。
title: 管线.
content: ARM7和大多数较早的设计具备三阶段的管线:提取指令、解码,并执行。较高效能的设计,如ARM9,则有更深阶段的管线: Cortex-A8有13阶段的管线。提高效能的额外方式,包含一颗较快的加法器,和更广的分支预测逻辑线路。例如,在ARM7DI核与ARM7DMI核之间的差异,是一种改进的乘法器(因此添加的“M”)。
title: 辅助处理器.
content: 这个架构使用「辅助处理器」提供一种非侵入式的方法来延伸指令集,可透过软件下MCR、MRC、MRRC和MCRR等指令来对辅助处理器寻址。辅助处理器空间逻辑上通常分成16个辅助处理器,编号分别从0至15;而第15号辅助处理器是保留用作某些常用的控制功能,像是使用快取和记忆管理单元运算(若包含于处理器时)。
title: 调试.
content: DSP增强指令
title: Thumb.
content: 较新的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技术。
title: Jazelle.
content: ARM还开发出一项技术,Jazelle DBX(Direct Bytecode eXecution),允许它们在某些架构的硬件上加速执行Java bytecode,就如其他执行模式般,当呼叫一些无法支援bytecodes的特殊软件时,能提供某些bytecodes的加速执行。它能在现存的ARM与Thumb模式之间互相执行。  首颗具备Jazelle技术的处理器是「ARM7EJ-S」:Jazelle以一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速执行Java ME的游戏和应用程序,也因此促使了这项技术不断地发展。
title: Thumb-2.
content: Thumb-2技术首见于「ARM1156核心」,并于2003年发表。Thumb-2扩充了受限的16位元Thumb指令集,以额外的32位元指令让指令集的使用更广泛。因此Thumb-2的预期目标是要达到近乎Thumb的编码密度,但能表现出近乎ARM指令集在32位元内存下的效能。  Thumb-2至今也从ARM和Thumb指令集中衍伸出多种指令,包含位元栏操作、分支建表和条件执行等功能。
title: Thumb Execution Environment(ThumbEE).
content: ThumbEE,也就是所谓的Thumb-2EE,业界称为Jazelle RCT技术,于2005年发表,首见于「Cortex-A8」处理器。ThumbEE提供从Thumb-2而来的一些扩充性,在所处的执行环境下,使得指令集能特别适用于执行阶段的编码产生(例如即时编译)。Thumb-2EE是专为一些语言如Limbo、Java、C#、Perl和Python,并能让即时编译器能够输出更小的编译码却不会影响到效能。  ThumbEE所提供的新功能,包括在每次存取指令时自动检查是否有无效指标,以及一种可以执行阵列范围检查的指令,并能够分支到分类器,其包含一小部分经常呼叫的编码,通常用于高阶语言功能的实作,例如对一个新物件做内存配置。
title: 进阶SIMD(NEON).
content: 进阶SIMD延伸集,业界称为「NEON」技术,它是一个结合64位元和128位元的单指令多重数指令集(SIMD),其针对多媒体和讯号处理程序具备标准化加速的能力。NEON可以在10 MHz的处理器上执行MP3音效解码,且可以执行13 MHz以下的自适应多速率音频压缩编码。NEON具有一组广泛的指令集、各自的暂存器档案,以及独立执行的硬件。NEON支援8、16、32和64位元的整数及单精度浮点数据,并以单指令多重数的方式运算,执行图形和游戏处理中关于语音及视讯的部分。单指令多重指令集在向量超级处理机中是个决定性的要素,它具备同时多项处理功能。在NEON技术中,SIMD最高可同时做16个运算。
title: VFP.
content: VFP(向量浮点)是在协同处理器针对ARM架构的衍生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全相容于ANSI/IEEE Std 754-1985二进制浮点算数标准。VFP提供大多数适用于浮点运算的应用,例如PDA、智能手机、语音压缩与解压、3D图像以及数码音效、打印机、机上盒,和汽车应用等。VFP架构也支援SIMD平行化的短向量指令执行。这在图像和讯号处理等应用上,非常有助于降低编码大小并增加输出效率。  在ARM为基础的处理器中,其他可见的浮点、或SIMD的协同处理器还包括了FPA、FPE、iwMMXt。他们提供类似VFP的功能,但在opcode层面上来说并不具有相容性。
title: 安全性扩充(TrustZone).
content: TrustZone技术出现在ARMv6KZ以及较晚期的应用核心架构中。它提供了一种低成本的方案,针对系统单芯片内加入专属的安全核心,由硬件建构的存取控制方式支援两颗虚拟的处理器。这个方式可使得应用程序核心能够在两个状态(领域)之间切换,在此架构下可以避免资讯从较可信的核心领域泄漏至较不安全的领域。这种内核领域之间的切换通常是与处理器其他功能完全无关联性,因此各个领域可以各自独立运作但却仍能使用同一颗内核。内存和周边装置也可因此得知目前内核运作的领域为何,并能针对这个方式来提供对装置的机密和编码进行存取控制。典型的TrustZone技术应用是要能在一个缺乏安全性的环境下完整地执行操作系统,并在可信的环境下能有更少的安全性的编码。T6是中国第一个开源的TrustZone安全内核(该项目目前已经在公开领域消失)。OP-TEE(Open Portable Trusted Executive Environment)成为目前(2017/7)较为成功的TEE开源项目。
title: ARM授权方式.
content: 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授权的商用晶圆厂(例如韩国三星和日本富士通)可以提供更低的授权价格给他们的晶圆厂客户。透过晶圆厂自有的设计技术,客户可以更低或是免费的ARM预付授权费来取得ARM内核。相较于不具备自有设计技术的专门半导体晶圆厂(如台积电和联电),富士通/三星对每片晶圆多收取了两至三倍的费用。对中少量的应用而言,具备设计部门的晶圆厂提供较低的整体价格(透过授权费用的补助)。对于量产而言,由于长期的成本缩减可借由更低的晶圆价格,减少ARM的NRE成本,使得专门的晶圆厂也成了一个更好的选择。  许多半导体公司持有ARM授权:Atmel、Broadcom、Cirrus Logic、Freescale(于2004从摩托罗拉公司独立出来)、富士通、英特尔(借由和迪吉多的控诉调停)、IBM、NVIDIA、台湾新唐科技(Nuvoton Technology)、英飞凌、任天堂、恩智浦半导体(于2006年从飞利浦独立出来)、OKI电气工业、三星电子、Sharp、STMicroelectronics、德州仪器和VLSI等许多这些公司均拥有各个不同形式的ARM授权。虽然ARM的授权项目由保密合约所涵盖,在知识产权工业,ARM是广为人知最昂贵的CPU内核之一。单一的客户产品包含一个基本的ARM内核可能就需索取一次高达美金20万的授权费用。而若是牵涉到大量架构上修改,则费用就可能超过千万美元。
title: ARM核心时间线.
content: 下表列出每个核心发布年份。未包括ARM7之前的核心。

Summary: ARM架构,过去称作进阶精简指令集机器(英语:Advanced RISC Machine,更早称作Acorn精简指令集机器,英语:Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低成本、高效能、低耗电的特性。另一方面,超级计算机消耗大量电能,ARM同样被视作更高效的选择。安谋控股开发此架构并授权其他公司使用,以供他们实现ARM的某一个架构,开发自主的系统单芯片和系统模组(system-on-module,SoC)。