1.2 Arm处理器的分类
Arm公司根据不同的应用场景及需求,开发了一系列可广泛应用的处理器产品,设计人员可以根据需求选择最适合他们的处理器。例如,智能手机和电机控制器的应用需求截然不同,因此设计时需使用不同类型的处理器。为了满足广泛的应用需求,Arm公司还提供了多样化的Cortex处理器系列产品:
● Cortex-A系列——面向复杂系统的处理器,如Cortex-A53。Cortex-A系列可作为智能手机、PDA、机顶盒等高性能应用的处理器,支持Linux、Android、Microsoft Windows等操作系统。
● Cortex-R系列——面向实时、高性能系统的处理器,如Cortex-R52。Cortex-R具有高性能、低延迟,以及鲁棒性的特征,典型的应用场景有硬盘控制器和基带通信设备。
● Cortex-M系列——面向微控制器应用的处理器,如Cortex-M3。Cortex-M3应用于深度嵌入式和低成本领域,并且可以提供良好的性能和快速中断响应,典型的应用包括工业控制、电子消费产品(如便携式音频设备和数码相机等)。
表1.1总结了Cortex处理器的关键特征。
表1.1 Cortex处理器的关键特征
(续)
㊀ NEON是一种基于SIMD思想的Arm技术,相比于Armv6或之前的架构,NEON结合了64位和128位的SIMD指令集,提供128位的向量运算。NEON技术从Armv7开始被采用,目前可以在Arm Cortex-A和Cortex-R系列处理器中采用。NEON在Cortex-A7、Cortex-A12、Cortex-A15处理器中被设置为默认选项,但是在其余的Armv7 Cortex-A处理器中是可选项。NEON与VFP共享同样的寄存器,但它有自己的执行流水线。——译者注
㊁ SIMD(Single Instruction Multiple Data)顾名思义就是“一条指令处理多个数据(一般是以2为底的指数数量)”的并行处理技术,相比于“一条指令处理几个数据”,运算速度将会大大提高。它是Michael J. Flynn在1966年定义的四种计算机架构之一(根据指令数与数据流的关系定义,其余还有SISD、MISD、MIMD)。
许多程序都需要处理大量的数据集,这些数据很多都是由少于32位的位数来存储的,比如在视频、图形、图像处理中的8位像素数据,音频编码中的16位采样数据等。在诸如上述的情形中,很可能充斥着大量简单而重复的运算,且少有控制代码的出现,SIMD就擅长为这类程序提供更高的性能。
在32位处理器(如Cortex-A系列)上,如果不采用SIMD,则会将大量时间花费在处理8位或16位的数据上,但是处理器本身的ALU、寄存器、数据深度又是主要为了32位运算而设计的,因此NEON应运而生。——译者注
Cortex-A处理器支持Linux操作系统,Xilinx和Intel(前身是Altera)这两家公司都有可内置Cortex-A处理器子系统的FPGA产品。Cortex-M处理器则更加适用于实时性要求高的小型嵌入式系统。
Cortex-M处理器有不同类型,可以分为三个产品系列,如表1.2所示。
表1.2 不同架构的Cortex-M处理器
使用Armv6-M架构处理器能够进行一般数据处理和控制,可满足多种使用需求。
● Cortex-M0处理器是最小的Arm处理器,最低配置仅需12000门,采用3级简单流水线的冯·诺依曼总线架构,不使用特权等级分离技术,也没有存储器保护单元(Memory Protection Unit,MPU)。
● Cortex-M1处理器是类似于Cortex-M0,但针对FPGA应用优化过的处理器。它提供紧耦合存储器(Tightly-Coupled-Memory,TCM)接口以简化FPGA系统内存的集成,并提供更高的时钟频率。
● Cortex-M0+处理器同样基于Armv6-M架构,具有特权等级分离和可选的存储器保护单元。它具有可选的单周期I/O接口,用于连接需要低延迟访问的外设寄存器,还具有低成本指令跟踪模块——被称为微跟踪缓冲区(Micro Trace Buffer,MTB)。
● Cortex-M23处理器具有Arm TrustZone安全扩展机制,适用于安全性要求高的嵌入式系统。除此之外,Cortex-M23处理器相比于其他Armv6-M架构处理器还有一些增强功能,例如:
■ 附加指令(例如硬件除法、比较和分支);
■ 支持更多中断(高达240个);
■ 使用嵌入式跟踪宏单元(Embedded Trace Macrocell,ETM)进行实时指令跟踪;
■ 更多可配置选项。
● Cortex-M3处理器采用Armv7-M架构,更适用于复杂数据处理的场景。Armv7-M架构的指令集支持多寻址模式、条件执行、位域操作、乘法和累加(Multiply And Accumulate,MAC)等。因此,即使使用规模相对较小的Cortex-M3处理器,也可以拥有性能相对较高的系统。
● Cortex-M4处理器支持32位SIMD操作并内建可选的单精度浮点单元(Floating-Point Unit,FPU),相比于Cortex-M3更适用于密集数字信号处理或单精度浮点数操作。
● Cortex-M7处理器是当今性能最高的Cortex-M处理器,采用6级流水线和超标量设计,每个周期最多允许执行两条指令。与Cortex-M4类似,它支持32位SIMD操作并内建可选的FPU。Cortex-M7中的FPU可配置为支持单精度或单双精度并行的浮点运算。它还支持指令和数据缓存以及TCM,在复杂的内存系统中能表现出优越的性能。
● Cortex-M33处理器是一款中端的Armv8-M架构处理器,其器件规模与Cortex-M4相当,还增加了TrustZone安全扩展机制、协处理器接口和更新的流水线,以实现更高的性能。
● Cortex-M35P处理器类似于Cortex-M33处理器,但增强了防篡改功能,可以防止物理安全攻击,如旁路攻击、故障注入攻击等。它还内建了一个可选的指令缓存。
对于初学者所参与的多数项目,特别适合选用Cortex-M0、Cortex-M1或Cortex-M3处理器开展工作。