- 什么是ARM?
ARM(Advanced RISC Machine),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
ARM的设计是全球大多数移动设备处理器的基础。各大手机芯片:包括高通骁龙、Apple A系列、华为麒麟芯片、三星Exynos,等它们的底层均是ARM的技术。

1991 年ARM 公司成立于英国剑桥,在成立后的那几年,ARM业绩平平,工程师们也人心惶惶,害怕随时都会失业。在这个情况下,ARM决定改变他们的产品策略 —— 他们不再生产芯片,转而以授权的方式,将芯片设计方案转让给其他公司,即“Partnership”开放模式。
ARM所采取的是IP(Intellectual Property,知识产权)授权的商业模式,收取一次性技术授权费用和版税提成。具体来说,ARM有三种授权方式:处理器、POP以及架构授权。
- 处理器授权:是指授权合作厂商使用ARM设计好的处理器,对方不能改变原有设计,但可以根据自己的需要调整产品的频率、功耗等。
- POP(processor optimization pack,处理器优化包)授权:是处理器授权的高级形式, ARM出售优化后的处理器给授权合作厂商,方便其在特定工艺下设计、生产出性能有保证的处理器。
- 架构授权:是ARM会授权合作厂商使用自己的架构,方便其根据自己的需要来设计处理器(例如后来高通的Krait架构和苹果的Swift架构,就是在取得ARM的授权后设计完成的)。所以,授权费和版税就成了ARM的主要收入来源。除此之外,就是软件工具和技术支持服务的收入。


- ARM 微处理器的应用领域及特点
应用领域
- 工业控制领域:作为32 的RISC 架构,基于ARM 核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM 微控制器的低功耗、高性价比,向传统的8 位/16 位微控制器提出了挑战。
- 无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM 技术, ARM 以其高性能和低成本,在该领域的地位日益巩固。
- 网络设备:随着宽带技术的推广,采用ARM 技术的ADSL 芯片正逐步获得竞争优势。此外,ARM 在语音及视频处理上进行了优化,并获得广泛支持,也对DSP 的应用领域提出了挑战。
- 消费类电子产品:ARM 技术在目前流行的数字音频*放播**器、数字机顶盒和游戏机中得到广泛采用。
- 成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM 技术。手机中的32位SIM 智能卡也采用了ARM 技术。

ARM处理器的特点:
- 体积小、低功耗、低成本、高性能。
- 支持Thumb(16 位)/ARM(32 位)双指令集,能很好地兼容8 位/16 位器件。
- 大量使用寄存器,指令执行速度更快。
- 大多数数据操作都在寄存器中完成
- 寻址方式灵活简单,执行效率高。
- 指令长度固定。
- 冯·诺依曼体系结构和哈弗体系结构
冯.诺依曼体系(普林斯体系)结构

冯·诺依曼体系的特点:
- 数据与指令都存储在同一存储区中,取指令与取数据利用同一数据总线。
- 被早期大多数计算机所采用。
ARM7也是采用冯.诺依曼体系结构简单, 但速度较慢。取指不能同时取数据。
哈弗体系结构

结构特点:
- 程序存储器与数据存储器分开。
- 提供了较大的存储器带宽,各自有自己的总线。
- 适合于数字信号处理。
- 大多数DSP都是哈佛结构。
ARM9是哈佛结构,取指和取数在同一周期进行,提高速度,改进哈佛体系结构分成三个存储区:程序、数据、程序和数据共用。
- 复杂指令集(CISC)和精简指令集(RISC)
复杂指令集(CISC)
特点:
- 具有大量的指令和寻址方式。
- 8/2原则:80%的程序员只使用20%的指令。
- 大多数程序只使用少量的指令就能够运行。
- CISC CPU 包含有丰富的单元电路,因而功能强、面积大、功耗大。
典型代表:x86系列
精简指令集(RISC)
特点:
- 在通道中只包含最有用的指令,只提供简单的操作。
- 确保数据通道快速执行每一条指令。
- Load-store结构—— 处理器只处理寄存器中的数据,load-store指令用来完成数据在寄存器和外部存储器之间的传送。
- 使CPU硬件结构设计变得更为简单, RISC CPU包含较少的单元电路,因而面积小、功耗低。
典型代表:ARM系列
RISC和CISC主要区别
- 寄存器方面:RISC指令集拥有更多的通用寄存器,每个可以存放数据和地址,寄存器为所有的数据操作提供快速的存储访问;CISC指令集多用于特定目的的专用寄存器。
- LOAD –STORE结构方面:RISC结构CPU 仅处理寄存器中的数据,采用独立的、专用的LOAD –STORE 指令来完成数据在寄存器和外存之间的传送。(访存费时,处理和存储分开,可以反复地使用保存在寄存器中的数据,而避免多次访问外存);CISC结构能直接处理存储器中的数据。
- ARM体系架构版本
ARM体系架构的版本就是它所使用的指令集的版本。ARM架构支持32位的ARM指令集和16位的Thumb指令集,后者使得代码的存储空间大大减小。还提供了一些扩展功能,比如Java加速器(Jazelle),用以提供安全性能的TrustZone技术,智能能源管理(IEM,Intelligent Energy Manager),SIMD和NEONTM等技术。还在使用ARM指令集(ISA,Instruction Set Architecture)有以下版本。
- ARMv4
这是当今市场上最老的版本,ARMv4只支持32位的指令集,支持32位的地址空间。一些ARM7系列的处理器和Intel公司的StrongARM处理器采用ARMv4指令集。
- ARMv4t
增加了16位的Thumb指令集,它可以产生更加紧凑的代码,与相同功能的ARM代码相比,可以节省超过35%的存储空间,同时具备32位代码的所有优点。
- ARMv5TE
在1999年,ARMv5TE版本改进了Thumb指令集,增加了一些“增强型DSP指令”,简称E指令集。这些指令用于增强处理器对一些典型的DSP算法的处理性能,使得音频DSP应用可以提升70%的性能。许多系统在使用微控制器来进行各类控制的同时,还需要具备数据处理能力,传统的做法要么是使用更高级的处理器(这使得成本增加),要么是使用多个处理器(这使得系统复杂度增加)。通过E指令集可以在一个普通CPU中增加DSP的功能,这在成本,性能,简化设计等方面都有优势。
- ARMv5TEJ
在2000年,ARMv5TEJ版本中增加了Jazelle技术用于提供Java加速功能。相比于仅用软件实现的Java虚拟机,Jazelle技术使得Java代码的运行速度提高8倍,而功耗降低80%。Jazelle技术使得可以在一个单核处理器上运行Java程序,已经建立好的操作系统和应用程序。
- ARMv6
在2001年,ARMv6问世。它在很多方面都有改进:存储系统,异常处理,最重要的是增加多媒体功能的支持。ARMv6中包含了一些媒体指令以支持SIMD媒体功能扩展。SIMD媒体功能扩展为音频/视频的处理提供了优化功能,可以使音频/视频的处理性能提高4倍。ARMv6中还引入了Thumb-2和TrustZone技术,这是两个可选的基数。之前的版本中,ARM指令和Thumb指令分别运行于不同的处理器状态,执行不同的指令集之前要进行切换。Thumb-2技术增加了混合模式的功能,定义了一个新的32位指令集,可以运行32位指令与传统16位指令的混合代码。这能够提供“ARM指令级别的性能”与“Thumb指令级别的代码密度“。TrustZone计数在硬件上提供了两个隔离的地址空间:安全域(secure world)和非安全域(no-secure world),给系统提供了一个安全机制。
- ARMv7
ARMv7架构使用Thumb-2技术,还使用了NEON技术,将DSP和媒体处理能力提供了近4倍,并支持改良的浮点计算,满足3D图形,游戏物理应用以及传统嵌入式控制应用的需求。
- ARMv8
2011年11月,ARM公司发布了新一代处理器架构ARMv8的部分技术细节。这是ARM公司的首款支持64位指令集的处理器架构。由于ARM处理器的授权内核被广泛用于手机等诸多电子产品,故ARMv8架构作为下一代处理器的核心技术而受到普遍关注。ARM将在2012年间推出基于ARMv8架构的处理器内核并开始授权,而面向消费者和企业的样机于2013年由苹果的A7处理器上首次运用。
ARMv8是在32位ARM架构上进行开发的,将被首先用于对扩展虚拟地址和64位数据处理技术有更高要求的产品领域,如企业应用、高档消费电子产品。
ARMv8架构包含两个执行状态:AArch64和AArch32。AArch64执行状态针对64位处理技术,引入了一个全新指令集A64;而AArch32执行状态将支持现有的ARM指令集。ARMv7架构的主要特性都将在ARMv8架构中得以保留或进一步拓展,如:TrustZone技术、虚拟化技术及NEON advanced SIMD技术,等。配合ARMv8架构的推出,ARM正在努力确保一个强大的设计生态系统来支持64位指令集。ARM的主要合作伙伴已经能够获得支持ARMv8架构的ARM编译器和快速模型(Fast Model)。在新架构的支持下,对一系列开源操作系统、应用程序和第三方工具的初始开发已经在开展中。通过合作,ARM合作伙伴们共同加速64位生态系统的开发,在许多情况下,这可视为是对现有支持基于ARMv7架构产品的广泛生态系统的自然延伸。
具备64位计算能力的ARMv8架构,将使其合作伙伴有望进入高端服务器市场。

在相同指令集下,搭配不同部件就可以组装出具有不同功能的处理器,比如有无内存管理单元,有无调试功能等。它们可以分为8个系列,系列名中有7个后缀,这些后缀可以组合,含义如下:
- T:表示支持Thumb指令集
- D:表示支持片上调试(Debug)
- M:表示内嵌硬件乘法器(Multiplier)
- I:支持片上断点和调试点
- E:表示支持增强型DSP功能
- J:表示支持Jazelle技术,即Java加速器
- S:表示全合成式(full synthesizable)
这8个系列中,ARM7,ARM9,ARM9E和ARM10为通用处理器系列,每一个系统提供一套相对独立的性能来满足不同应用领域的需求,SecureCore系列专门为安全要求较高的应用设计。详细的信息可以参考ARM公司网站: http://www.arm.com
- ARM7:ARM7系列处理器是低功耗的32位RISC微处理器,它主要用于对成本,功耗特别敏感的产品。最高可以达到130MIPS,支持16位指令集和32位指令集。ARM7系列微处理器包括如下几种类型的核:ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ-S。其中,ARM7TDMI是目前使用最广泛的32位嵌入式RISC处理器,属于低端ARM处理器核。ARM7系列的处理器没有内存管理单元(MMU)。
- ARM9:与ARM7想比,ARM9的最大区别在于:有MMU和Cache。它的指令执行效率较ARM7有较大提高,最高可达到300MIPS。ARM9系列微处理器有:ARM920T和ARM922T两种类型。
- ARM9E:微处理器在单一的处理器内核上提供了微控制器,DSP,Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微控制器提供了增强的DSP处理能力,适合于那些需要同时使用DSP和微控制器的应用场合。ARM9E系列的微处理器有:ARM926EJ-S,ARM946E-S,ARM966E-S,ARM968E-S和ARM996HS共5种类型。
- ARM11:ARM11系列处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构 -- ARMv6的第一代设计实现。ARM11的媒体处理能力和低功耗特点特别适用于无线和消费类电子产品,其高数据吞吐量和高性能的结合非常适合网络处理应用。另外,在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。基于ARMv6体系结构的ARM11系列处理器将在上述领域发挥巨大的作用。ARM11系列微处理器有4种类型:ARM11MPCore,ARM1136J(F)-S,ARM1156T2(F)-S和ARM1176Z(F)-S。
- Cortex:Cortex系列处理器是基于ARMv7架构的,分为Cortex-A,Cortex-R和Cortex-M共3类 。Cortex-A为传统的,基于虚拟存储的操作系统和应用程序而设计,支持ARM,Thumb和Thumb-2指令集;Cortex-R针对实时系统设计,支持ARM,Thumb和Thumb-2指令集;Cortex-M为对价格敏感的产品设计,只支持Thumb-2指令集。
- SecureCore:SecureCore系列微处理器专为安全需要而设计,通过了完善的32位RISC技术的安全解决方案。因此,SecureCore系列微处理器除了具有ARM体系结构的低功耗,高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。SecureCore系列微处理器有如下类型:SecureCoreSC100,SecureCoreSC200。
- ARM CPU内部结构
