ARM处理器是英国
Acorn有限公司设计的
低功耗成本的第一款
RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位
指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。
定义
ARM的
Jazelle技术使
Java加速得到比基于软件的Java虚拟机(
JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。
CPU功能上增加DSP
指令集提供增强的16位和32位算术
运算能力,提高了性能和灵活性。ARM还提供两个前沿特性来辅助带深嵌入处理器的高集成
SoC器件的调试,它们是嵌入式
ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列。
(概述图片来源:)
特点介绍
ARM处理器的三大特点是:耗电少功能强、16位/32位双
指令集和合作伙伴众多。
1、体积小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
5、寻址方式灵活简单,执行效率高;
体系结构
1
CISC(Complex Instruction Set Computer,复杂指令集计算机)
在CISC
指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的指令却不经常使用,在程序设计中只占20%。
2 RISC(Reduced Instruction Set Computer,
精简指令集计算机)
RISC结构优先选取使用频最高的简单指令,避免复杂指令;将
指令长度固定,
指令格式和寻址方式种类减少;以
控制逻辑为主,不用或少用微码控制等
1 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。
2 使用单周期指令,便于流水线操作执行。
3 大量使用
寄存器,
数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问
存储器,以提高指令的执行效率。
除此以外,ARM
体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:
4 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。
5 可用加载/存储指令批量传输数据,以提高数据的
传输效率。
6 可在一条数据处理指令中同时完成逻辑处理和移位处理。
7 在循环处理中使用地址的自动增减来提高
运行效率。
寄存器结构
ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:
1 31个
通用寄存器,包括
程序计数器(PC指针),均为32位的寄存器。
2 6个
状态寄存器,用以标识CPU的
工作状态及程序的
运行状态,均为32位,只使用了其中的一部分。
指令结构
ARM微处理器的在较新的
体系结构中支持两种
指令集:
ARM指令集和
Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。
体系结构扩充
当前ARM体系结构的扩充包括:
ARM处理器系列提供的解决方案有:
主要模式
用户模式(usr) ARM处理器正常的程序
执行状态系统模式(sys) 运行具有特权的操作系统任务
数据访问终止模式(abt) 用于
虚拟存储器及
存储器保护
未定义指令终止模式(und) 支持硬件
协处理器的软件仿真
除用户模式外,其余6种模式称为非用户模式或
特权模式;用户模式和系统模式之外的5种模式称为
异常模式。ARM处理器的
运行模式可以通过软件改变,也可以通过
外部中断或
异常处理改变。
历史发展
1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地
市场供应电子设备。1979年,CPU公司改名为Acorn公司。
1985年,Roger Wilson和Steve Furber设计了他们自己的第一代32位、6M Hz的处理器,用它做出了一台RISC
指令集的计算机,简称ARM(Acorn RISC Machine)。这就是ARM这个名字的由来。
20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。
1990年11月27日,Acorn公司正式改组为ARM计算机公司。苹果公司出资150万英镑,芯片厂商VLSI出资25万英镑,Acorn本身则以150万英镑的知识产权和12名工程师入股。公司的办公地点非常简陋,就是一个谷仓。20世纪90年代,ARM 32位嵌入式RISC(Reduced lnstruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的
嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片
技术授权。
2023年5月29日,Arm宣布更新2023年年度移动处理器核心设计,包括Cortex-X4、A720和A520,三款核心均基于Arm v9.2架构。
2023年8月19日,英国《金融时报》消息,芯片设计公司Arm提振IPO市场,杂货配送集团Instacart、软件公司Databricks和身份验证创企Socure等一批硅谷科技公司正重新考虑上市计划。
在中国
ARM公司中国总部设立在上海,执行中国地区所有的产品业务和售后支持。其中在深圳设有办事处,专门处理ARM
相关技术问题。
ARM在中国主要从事ARM IP内核方面的工作,对于 ARM
软件工具,包括DS-5,RVDS,MDK-ARM等则不直接进行销售,由其中国区代理商
米尔科技作为渠道
分销商,负责销售
开发工具和
客户服务。
市场前景
微软公司(2011年)宣布,下一版Windows将正式支持ARM处理器。这是
计算机工业发展历史上的一件大事,标识着
x86处理器的
主导地位发生动摇。在
移动设备市场,ARM处理器的
市场份额超过90%;在服务器市场,2011年就会有2.5GHz的服务器上市;在桌面电脑市场,又有了微软的支持。ARM成为主流,恐怕指日可待。难怪有人惊呼,Intel公司将被击败!
ARM微处理器核技术广泛应用于便携式
通信产品、手持运算、多媒体和嵌入式解决方案等领域,已成为RISC的标准。
与这场轰轰烈烈的变革相比,它的主角ARM公司却没有受到太多的关注,显得不太起眼。这家远离
硅谷、位于
剑桥大学的英国公司,到底是
怎么走到打开市场的,居然能将芯片巨人Intel拉下马?
展望未来,即使Intel成功地实施了Atom战略,将x86芯片的功耗和价格大大降低,它与ARM竞争也将非常吃力。因为ARM的
商业模式是开放的,任何厂商都可以购买授权,所以未来并不是Intel vs. ARM,而是Intel vs. 世界上所有其他半导体公司。那样的话,Intel的胜算能有多少呢?
2012年10月29日AMD做出了一个震惊业界的宣布:AMD将会设计基于64-bit ARM架构的处理器,首先从云和数据中心服务器领域开始。AMD、ARM在服务器领域的合作已经得到了
戴尔、
惠普两大服务器厂商,以及
服务器系统厂商RedHat的鼎力支持,新的生态系统已具雏形,AMD能否借此东山再起?
AMD的首批ARM处理器于2014年问世,仍将披挂Opteron
皓龙品牌。这种64位的
多核心SoC会针对数据中心中份额最大的密集型高能效服务器进行优化,提供现代计算体验,并整合收购而来的SeaMicro Freedom
超级计算光纤互联技术。
系列产品
ARM7系列
ARM9系列 ARM9E系列 ARM10E系列
SecurCore系列 Intel的StrongARM
ARM11系列 Intel的Xscale
其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同
应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。
Axxia 4500通信处理器基于采用28纳米工艺的ARM 4核
Cortex-A15处理器,并搭载ARM全新
CoreLink CCN-504
高速缓存一致性互连技术,实现安全
低功耗和最佳性能。
ARM公司在经典处理器
ARM11以后的产品改用
Cortex命名,并分成A、R和M三类,旨在为各种不同的市场提供服务。
ARM内核
新款ARMv8架构ARMCortex-A50处理器
系列产品,进一步扩大ARM在高性能与低功耗领域的领先地位。该系列率先推出的是Cortex-A53与Cortex-A57处理器以及最新节能64位处理技术与现有32位处理技术的扩展升级。该处理器系列的
可扩展性使ARM的合作伙伴能够针对
智能手机、
高性能服务器等各类不同
市场需求开发
系统级芯片(SoC)。
ARMCortex-A50处理器系列:
提供Cortex-A57与Cortex-A53两款处理器,可选配密码编译加速器,为验证软件提高10倍的
运行速度与ARMMali
图形处理器系列互用,适用于图形处理器计算应用具有
AMBA系统一致性,与CCI-400、CCN-504等ARMCoreLink
缓存一致性结构组件达成
多核心缓存一致性。
ARMCortex-A57处理器:
最先进、
单线程性能最高的ARM
应用处理器能提升,以满足供智能手机从内容消费设备转型为内容
生产设备的需求,并在相同功耗下实现最高可达现有超级手机三倍的性能
计算能力可相当于传统PC,但仅需
移动设备的功耗成本即可运行,无论企业用户或普通消费者均可享受低成本与低耗能针对高性能
企业应用提高了
产品可靠度与可扩展性。
ARMCortex-A53处理器:
史上效率最高的ARM应用处理器,使用体验相当于当前的超级手机,但功耗仅需其四分之一结合可靠性特点,可扩展数据平面(data
plane)应用可将每毫瓦及每
平方毫米性能发挥到极致针对个别线程计算
应用程序进行了传输处理优化Cortex-A53处理器结合Cortex-A57及ARM的
big.LITTLE处理技术,能使平台拥有最大的性能范围,同时大幅减少功耗。
设计文件
设计文件讲求精简又快速的设计方式,整体电路化却又不采用
微码,就像早期使用在
Acorn微电脑的8位6502处理器。
读取/储存 架构不支援地址不对齐内存存取(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做分支指令。有个标准的范例引用
欧几里德的最大公因子算法:
int gcd (int i, int j)
{
while (i != j) if (i > j) i -= j; else j -= i; return i;
}
在ARM 汇编语言中,循环为:
loop CMP Ri, Rj ;
另一项
指令集暂存器之间的搬移),因此举例来说,一个C语言的叙述
a += (j << 2);在ARM之下,可简化成只需一个
word和一个cycle即可完成的指令
ADD Ra, Ra, Rj,
LSL #2这结果可让一般的ARM程式变得更加紧密,而不需经常使用内存存取,流水线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下执行,与更复杂的
CPU设计相比它仍能执行得不错。
ARM处理器还有一些在其他RISC的架构所不常见到的特色,例如PC-
相对寻址(的确在ARM上PC为16个
暂存器的其中一个)以及 前递加或后递加的寻址模式。
另外一些注意事项是 ARM 处理器会随着时间,不断地增加它的
指令集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
技术应用是要能在一个缺乏安全性的环境下完整地
执行操作系统,并在可信的环境下能有更少的安全性的编码。
应用选型
1、
ARM微处理器内核的选择从前面所介绍的内容可知,ARM
微处理器包含一系列的内核结构,以适应不同的
应用领域,用户如果希望使用WinCE或标准
Linux等操作系统以减少
软件开发时间,就需要选择ARM720T以上带有
MMU(Memory Management Unit)功能的
ARM芯片,ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都带有MMU功能。而 ARM7TDMI则没有MMU,不支持
Windows CE和标准Linux,但目前有uCLinux等不需要MMU支持的操作系统可运行于ARM7TDMI硬件平台之上。事实上,uCLinux已经成功移植到多种不带MMU的微处理器平台上,并在稳定性和其他方面都有上佳表现。
2、系统的
工作频率在很大程度上决定了ARM微处理器的处理能力。ARM7系列
微处理器的典型
处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主
时钟频率为100MHz- 233MHz,ARM10最高可以达到700MHz.不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为ARM 核和
USB、
UART、DSP、音频等
功能部件提供不同频率的时钟。
3、大多数的ARM微处理器片
内存储器的容量都不太大,需要用户在设计系统时外扩
存储器,但也有部分芯片具有相对较大的片内
存储空间,如ATMEL的AT91F40162就具有高达2MB的片内程序存储空间,用户在设计时可考虑选用这种类型,以简化系统的设计。
4、片内外围电路的选择除ARM微处理器核以外,几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关
功能模块,并集成在芯片之中,我们称之为片内外围电路,如
USB接口、IIS接口、
LCD控制器、
键盘接口、
RTC、
ADC和
DAC、DSP协处理器等,设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样既可简化系统的设计,同时提高
系统的可靠性相关新闻
搭载
ARM芯片架构的设备数量是
英特尔的25倍。全世界99%的
智能手机和
平板电脑都采用
ARM架构。约有43亿人每天都会触摸一台搭载ARM芯片的设备,占全球总人口的60%。
所有的
iPhone和
iPad都使用ARM的芯片,多数Kindle
电子阅读器和
Android设备也都采用这一架构。与这种广泛触角极不相称的是,ARM的营收可以用少得可怜来形容。虽然全世界几乎所有的智能手机几乎都采用了该公司的芯片设计,但平均每卖出一款这样的手机,该公司只能得到1美分,而英特尔的芯片单位收益却高达数十至数百美元不等。
发展前景
ARM网络阵营成员主要包括
博通、Cavium和Freescale。其他合作包括与
AMD一道为
虚拟化软件打造
ENEA的合作、以及与AppliedMicro在虚拟机顶盒(vSTB)
概念验证方面的合作。
大部分领先的网络/电信制造商正积极地将其下一代平台迁移到ARM平台上来,有理由相信在今后的几年中,ARM在行业中将扮演一个极为重要的角色。