1.ARMv8.xM架构提供了哪些计算能力?
ARMv7-M时代,Cortex-M系列CPU以提供通用计算能力为主。ARMv8-M架构提供了更加多样的计算能力。
首先,提供Thumb2指令集提供整数通用计算能力。
其次,ARMv8.x-M架构手册明确列出了更多可选的CPU拓展计算能力。
The Floating-point Extension,浮点计算能力。ARMv8-M架构提供了单精度,双精度浮点计算能力。ARMv8.1-M架构还提供了半精度浮点计算能力。
The Digital Signal Processing Extension,DSP计算能力。以Cortex-M33为例,该CPU采用ARMv8-M架构,其DSP拥有下面的拓展计算能力。
M-Profile Vector Extension。ARM对此有另一个品牌ARM Helium。因为ARMv8架构有NEON的SIMD的计算能力。ARMv7-M架构完全没有这方面的计算能力,而ARMv8.1-M提供了适用于Cortex-M系列的SIMD计算能力。这个技术就是MVE。
The Custom Datapath Extension。ARMv8.x-M架构的CPU内部可能集成一个名字叫做CDE的模块(比如STM32N6使用的Cortex M55)。该模块支持CPU提供用户定义第三方指令。
总结一下。
计算需求 | 对应技术 |
通用整数计算能力 | Thumb2 |
浮点计算能力 | The Floating-point Extension |
DSP计算能力 | The Digital Signal Processing Extension |
SIMD计算能力 | MVE (Helium) |
第三方定制计算能力 | CDE |
2.部分ARMv8.x-M架构CPU的计算能力分析
简单统计了一下,可能有误,仅供参考。
CPU | 架构 | Thumb2 | FP | DSP | MVE | CDE |
Cortex M23 | ARMv8-M | Yes | No | No | No | No |
Cortex M33 | ARMv8-M | Yes | Yes | Yes | No | Yes |
Cortex M55 | ARMv8.1-M | Yes | Yes | Yes | Yes | Yes |
Cortex M85 | ARMv8.1-M | Yes | Yes | Yes | Yes | Yes |
3.Cortex M55的实现
Cortex M55提供了比较完整的计算能力,其对架构的实现代表了目前ARM对ARMv8.x-M架构的实现方式。
首先,IFU,DPU和LSU是传统CPU最基础的组成部分,执行的是取指,译码,执行,访存,写回的经典流水线步骤。
IFU负责取指。
DPU负责译码,执行。
LSU负责访存。
DPU更为常见的名称是EXU。印象里ARM以前的CPU也叫EXU,但是现在确实是DPU了。内部包含的是ALU等典型计算单元。
另一个与计算密切相关的是PDEPU供电的这一部分。显然,这部分的EPU或CDE都是可选实现。但是如果要实现ARMv8.1-M架构完整的浮点向量计算能力,还是要实现EPU的。如果实现用户定义指令,CDE也需要实现。