购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5 ARM系列处理器技术

3.5.1 ARM体系发展历程

ARM是Advanced RISC Machines的缩写。1985年4月26日,第一个ARM原型在英国剑桥大学的Acorn计算机有限公司诞生,由美国瓦卢斯塔尔公司(Valustar Corporation,VLST)制造。20世纪80年代后期,ARM很快被开发成Acorn的台式机产品,形成英国计算机教育的基础。1990年Advanced RISC Machines Limited(即ARM公司)成立。20世纪90年代,ARM的32位嵌入式RISC处理器扩展到世界范围,占据了低功耗、低成本和高性能嵌入式系统应用领域的领先地位。

目前,ARM公司专门从事基于RISC技术芯片的设计开发,作为知识产权供应商,其本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片。ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合作关系,ARM很快成为全球性RISC标准的缔造者。

世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。采用ARM技术IP核的微处理器,应用领域涉及无线、网络、消费娱乐、影像、汽车电子、航空、航天安全应用及存储装置。

随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经成为嵌入式应用和设计的主流。国内外越来越多的工程师采用ARM技术来设计他们的产品。

3.5.2 ARM体系架构特点

ARM微处理器现用的体系结构中至少支持两种指令集:32位ARM指令集和16位Thumb指令集。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比,使用Thumb指令集可以得到密度更高的代码。ARM指令集的体系结构与扩展如图3-10所示。

ARMV4是目前所支持的最早版本,之前的版本不再使用。某些ARM7系列和Intel公司的Strong ARM处理器采用该版本指令集。ARMV4指令集可以在32位地址空间执行32位的ARM指令集。并且有了T变种,可以在Thumb状态下支持16位的Thumb指令集。这与32位指令相比,可以节省35%的存储空间,且依旧保留了32位系统的优势。

ARMV5是在1999年发布的,与ARMV4相比,其提升了ARM和Thumb两种指令的交互工作能力,并改进了在T变种中ARM/Thumb状态之间的切换效率。同时有了E变种,可以支持DSP指令,在音频数字信号处理中可以提高70%的性能。2000年增加了J变种,可以运行Java指令。

图3-10 ARM系列图

ARMV6版本于2001年发布,其主要特点是增加了SIMD功能扩展,同时拓展了Thumb-2和Trust Zone技术。SIMD应用于视频编/解码与三维绘图等数字信号的处理中,能为音频视频在内的应用系统提供优化功能,可以使音频视频的处理能力提高4倍。Thumb-2是一种新型混合指令集,融合了16位和32位指令,用于实现密度和性能的最佳平衡,作为ARM体系结构的扩展,Trust Zone技术是一种新的硬件安全技术。

ARMV7在相当于ARM11下一代的CPU内核Cortex系列中被采用,针对不同用途,定义了三大分工明确的系列:A系列面向尖端的基于虚拟内存的操作系统和用户应用,R系列针对实时系统,M系列对微控制器和低成本应用提供优化。ARMV7的M系列采用了Thumb-2技术,A系列和R系列还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形和游戏应用,以及传统的嵌入式控制应用的需求。

2011年11月,ARM公司发布了其首款支持64位指令集的处理器架构ARMV8。ARMV8在32位ARM架构上进行开发,主要应用于对扩展虚拟地址和64位数据处理技术有更高要求的产品领域。ARMV8架构包含两个执行状态:AArch64和AArch32。AArch64执行状态针对64位处理技术,引入一个全新指令集A64;而AArch32执行状态将支持现有的ARM指令集。

2021年3月,全新的ARMV9架构面世,自ARMV8推出近十年的时间里,指令集架构在移动空间和服务器空间的采用日益广泛。ARMV9架构有三个侧重点,分别是AI、矢量和DSP性能改进。在具体细节上,ARMV9架构沿用AArch64基准指令集,并在功能方面添加了一些非常重要的扩展,从而确保ARM公司增加架构编号。对于开发者和用户而言,全新ARMV9的最显著特征是将可伸缩矢量扩展2(SVE2)作为ARMNEON技术之后新的基准,在处理5G、虚拟现实(VR)和增强现实(AR)、图像和语音识别等机器学习任务负载时具有很大增益。

3.5.3 典型的ARM处理器

ARM微处理器目前有多个系列可供选择,每一个系列的ARM微处理器都有各自的特点和应用领域,可以粗略划分为应用处理器、嵌入式处理器和经典ARM处理器三大类,如图3-11所示。

图3-11 ARM处理器概况

3.5.3.1 ARM应用处理器

ARM Cortex应用程序处理器是开放式操作系统的高性能处理器Cortex-A系列,在高级工艺节点中可实现高达“2 GHz+标准频率”的卓越性能,从而可支持下一代的移动Internet设备。这些处理器具有单核和多核种类,最多提供4个具有可选NEON多媒体处理模块和高级浮点执行单元的处理单元,可执行复杂操作系统和支持复杂图形用户界面,如图3-12所示。此类处理器集成了内存管理单元(memory managment unit,MMU)来管理这些复杂操作系统的内存需求,并允许下载和执行第三方软件。

Cortex-A5、Cortex-A8、Cortex-A9和Cortex-A15处理器都适用于各种不同的性能应用领域。不过,尽管这些处理器都支持同样卓越的基础功能和完整的软件兼容性,但提供了显著不同的特性,可确保其完全符合未来高级嵌入式解决方案的要求。高性能的Cortex-A15,可伸缩的Cortex-A9、经过市场验证的Cortex-A8处理器和高效的Cortex-A5处理器均共享同一体系结构,因此具有完整的应用兼容性,支持传统的ARM、Thumb指令集和新增的高性能紧凑型Thumb-2指令集。

图3-12 应用处理器

Cortex-A8微处理器是ARM Cortex新系列中第一款采用ARMV7架构中所有新技术的ARM处理器,是ARM公司截至目前开发的速度最快、最节能的处理器,是灵活的低功耗、高性能处理领域的巨大跃迁;最高可达2000 MIPS,使它成为运行多通道视频、音频和游戏应用的要求越来越高的消费产品的最佳选择。

Cortex-A9微架构可提供两种选项:可扩展的Cortex-A9 MPCore多核处理器或较为传统的Cortex-A9单核处理器。可扩展的多核处理器和单核处理器支持16 KB、32 KB或64 KB四路组相连一级缓存的配置,具有无与伦比的灵活性,皆能达到特定应用和市场的要求。Cortex-A9和Cortex-AMC是ARM处理器家族中的两个新成员,旨在满足单核和多核处理器设计需求;采用相同的微架构,整合多种特色功能,使处理器核心和整个集成系统的架构功能、性能和功效得到了大幅提升。Cortex-A9单核处理器比现有ARM11级设备提供了更好的性能和功效,不但增强了移动设计的功能,而且降低了功耗水平。在实现方面,Cortex-A9处理器还具有出色的架构软件兼容性,能够在达到Cortex-A8级性能的前提下降低成本,从而扩大了相关软件投资的市场应用范围。而MPCore型处理器则拥有先进的电源管理功能,能够进一步降低功耗,达到并超过了日益增多的市场和应用对功耗的要求。除此之外,Cortex-A9 MPCore还拥有卓越的性能可扩展性,能够很好地满足特定应用和市场所要求的性能。

3.5.3.2 ARM嵌入式处理器

ARM嵌入式处理器主要着重于在各种功耗敏感型应用中提供具有高确定性的实时行为。这些处理器通常执行实时操作系统和用户开发的应用程序代码,因此只需内存保护单元(MPU),而不需要应用程序处理器中提供的内存管理单元(MMU),主要涉及Cortex-M0和Cortex-M3系列处理器。该类处理器可提供行业领先的具有确定性的行为、最低睡眠功耗和动态功耗以及尽可能小的面积,同时保持较高的处理效率。

1)Cortex-M系列

Cortex-M系列产品如图3-13所示。Cortex-M0针对FPGA应用,Cortex-M1用于替代低成本MCU,而Cortex-M3主要为了占领高性能MCU市场。

图3-13 CortexM系列产品

Cortex-M0处理器是目前市场上尺寸最小、功耗最低的32位ARM处理器。这款处理器功耗极低、门数少、代码资源占用小,是超低功耗MCU和混合信号应用的理想之选,可以以16位的资源占用来提供32位的性能和效率。ARM Cortex-M1处理器是第一个专为FPGA中的实现设计的ARM处理器。面向所有主要FPGA设备并包括对领先的FPGA综合工具的支持,ASIC和ASSP的多个项目之间合理地利用软件和工具投资来节省大量成本,此外还能够通过使用行业标准处理器实现更大的供应商独立性。

ARM Cortex-M4处理器将以32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场,高效的信号处理功能与Cortex-M处理器系列的低功耗、低成本和易于使用的优点组合,为面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场提供灵活解决方案。Cortex-M4处理器已设计为具有适用于数字信号控制市场的多种高效信号处理功能,采用扩展的单周期乘法累加(MAC)指令、优化的SIMD运算、饱和运算指令和一个可选的单精度浮点单元(FPU)。

2)Cortex-R系列

Cortex-R4处理器是第一个基于ARMV7-R体系结构的深层嵌入式实时处理器,2006年5月投放市场。Cortex-R4处理器可通过内存保护单元(MPU)、高速缓存以及紧密耦合内存(TCM)让处理器能针对各种不同的嵌入式应用进行最佳化调整,且不会影响基本的ARM指令集兼容性,协助应用软件开发者与OEM厂商重复运用现有的软件投资。

Cortex-R7处理器是性能最高的Cortex-R系列处理器,其设计重点在于提升能效、实时响应性、高级功能和简化系统设计,是高性能实时SoC的标准。Cortex-R7处理器可以实现以超过1 GHz的频率运行,此时可提供2700DMIPS的性能。Cortex-R7处理器为范围广泛的深层嵌入式应用提供了高性能的双核、实时解决方案,通过引入新技术(包括无序执行和动态寄存器重命名),并与改进的分支预测、超标量执行功能及用于除法和其他功能的更快的硬件支持相结合,提供了比其他Cortex-R系列处理器高得多的性能级别。

3.5.3.3 经典ARM处理器

经典ARM处理器的推出时间已超过15年,ARM7 TDMI仍是市场上销量最高的32位处理器。经典ARM处理器由ARM11、ARM9和ARM7这3个处理器系列组成,包含8个处理器。但是,ARM微处理器有多达十几种的内核结构、几十个芯片生产厂家以及千变万化的内部功能配置组合,从而给开发人员在选择方案时带来一定的困难。

目前ARM公司推荐使用Cortex系列代替经典的ARM7~ARM11系列,ARM7的程序可以很容易地升级到Cortex。如果希望使用WinCE或标准Linux等操作系统以减少软件开发时间,就需要选择带有MMU功能的ARM芯片,虽然ARM9和ARM11都带有MMU功能,但Cortex-A系列更值得深一步的研究。表3-4描述了经典ARM7~ARM11与新型Cortex之间的对应关系。

表3-4 ARM7~ARM11与新型Cortex之间的对应关系

3.5.4 技术特征

1)指令长度及数据类型

ARM处理器可支持字节(8位)、半字(16位)、字(32位)3种数据类型,其中字需要4字节对齐、半字需要2字节对齐。所有的数据操作都以字为单位进行处理。加载/存储操作可以以字节、半字和字为单位与存储器间传送数据,加载时自动进行字节或半字的零扩展或符号扩展。

ARM处理器采用32位的体系结构,ARM指令长度为32位,与4字节边界对准;Thumb指令长度为16位,与2字节边界对准。

2)ARM处理器的工作状态

从编程的角度看,ARM处理器的工作状态一般有两种:ARM状态,此时处理器执行32位、字对齐的ARM指令;Thumb状态,此时处理器执行16位、半字对齐的Thumb指令。

ARM指令集和Thumb指令集均有切换处理器状态的指令,在程序执行过程中,处理器可以随时在两种工作状态之间切换,并且处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。但ARM处理器在开始执行代码时,应该处于ARM状态。当操作数寄存器的状态位为1时,可以采用执行BX指令的方法,使处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态发生异常(如IRQ、FIQ、Undef、Abort、Sw1等)时,则异常处理返回,并自动切换到Thumb状态。当操作数寄存器的状态位为0时,执行BX指令可以使处理器从Thumb状态切换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。

3)ARM体系结构的存储器格式

ARM体系结构将存储器看作从0地址开始的字节的线性组合。从第0个字节到第3个字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。作为32位的处理器,ARM体系结构所支持的最大寻址空间为4 GB。

ARM体系结构可以用两种方法存储字数据,称之为大端存储格式和小端存储格式。大端存储格式中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

4)处理器工作模式

用户模式下保护的系统资源是不能被访问的,此时应用程序也不能直接进行处理器模式的改变。当需要进行处理器模式改变时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式的改变。这种体系结构可以使操作系统控制整个系统的资源。除了用户模式以外,其余的所有6种模式称为非用户模式或特权模式。在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的改变。其中FIQ、IRQ、特权模式、中止模式和未定义模式这5种模式又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况。当应用程序发生异常中断时,处理器进入相应的异常模式。每一种异常模式下都有一组相应的寄存器,可以访问所用的系统资源,用来保证用户模式下的寄存器不被破坏。

系统模式仅在ARMV4及其以上版本中存在,该模式不能通过任何异常进入,且与用户模式有完全相同的寄存器,但不受用户模式的限制。它供需要访问系统资源的操作系统任务使用,但需要避免使用与异常模式有关的附加寄存器,以保证在任何异常出现时,都不会使任务的状态不可靠。

5)寄存器组织

ARM处理器共有37个32位寄存器,其中包括1个用作PC、1个用作CPSR、5个用作SPSR和30个通用寄存器。这些寄存器被布置在不同的组,但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决于处理器的工作状态及具体的运行模式。

在ARM状态下,任一时刻可以访问16个通用寄存器和1~2个状态寄存器。在非用户模式(特权模式)下,则可访问到特定模式分组寄存器。在ARM状态下有16个直接访问寄存器R0~R15,除R15寄存器外均为通用目的,可用来存储数据或地址值。除此之外,还有第17个寄存器用来存储状态信息。R14也称为子程序连接寄存或连接寄存器(LR)。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。寄存器R16用作当前程序状态寄存器(current program status register,CPSR),可在任何运行模式下被访问。它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。

6)中断和异常管理

ARM处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。ARM对异常的处理按以下步骤操作:

(1)将下一条指令的地址存入相应连接寄存器(LR)。若异常是从ARM状态进入,则LR中保存的是下一条指令的地址;若异常是从Thumb状态进入,则在LR中保存当前PC的偏移量。这样,异常处理程序就不需要确定异常是从何种状态进入,程序在处理异常返回时能从正确的位置重新开始执行。例如在软件中断异常SW1中,指令MOV PC,R14svc总是返回到下一条指令,不管SW1是在ARM状态执行,还是在Thumb状态执行。

(2)将CPSR复制到相应的SPSR中。

(3)根据异常类型,强制设置CPSR的运行模式位。

(4)强制PC从相应的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。进入异常处理前,可以设置中断禁止位,以禁止异常处理对中断的响应。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态,异常处理完毕之后从异常返回。 bPeSU4c1P9F8I8KYhFc1LTgnTL+pIb8FzJK/9anSDDb80r65qiIrIbFK5urje3Br

点击中间区域
呼出菜单
上一章
目录
下一章
×