13

vesperW · 5月20日

RA8 Cortex-M85 Helium入门指南(1)

瑞萨电子在2023年10月底推出强大的RA8系列MCU,具备突破性的3000 CoreMark,并可满足客户应用所需的完全确定性、低延迟及实时操作要求。RA8系列MCU同时也是业界首款采用Arm® Cortex®-M85处理器的产品,能够提供卓越的6.39 CoreMark/MHz性能——这一性能水平将使系统设计人员能够使用RA MCU替代应用中常用的微处理器(MPU)。全新系列产品是广受欢迎的基于Arm Cortex-M处理器的RA产品家族中的一员。此外,为其它RA产品构建的现有设计可以轻松移植到新型RA8 MCU上。

新型RA8系列MCU部署了Arm Helium™技术,即Arm的M型矢量扩展单元(M-profile Vector Extension——MVE)。MVE是ARM v8.1M架构中非常重要的一部分。目前ARM v8.1M架构下的内核包括Cortex®-M52、Cortex®-M55、Cortex®-M85三种。下面的表格Arm Cortex-M Processor Comparison Table详细展示了从Arm®v6到Arm®v8.1M内核之间的不同。可以容易地发现,Cortex®-M85是目前性能最强的Arm® Cortex®-M内核MCU。

image.png

您可识别下方二维码或复制链接到浏览器中打开获取该表格原文:

Arm Cortex-M Processor Comparison Table

https://armkeil.blob.core.windows.net/developer/Files/pdf/product-brief/arm-cortex-m-processor-comparison-table.pdf

Arm v8.1-M架构是Arm v8-M架构的扩展版本。除了新的矢量指令集架构(Helium)以外,还有几个其他新特性:

  • 循环和分支增强的附加指令集(低开销分支扩展,Low Overhead Branch Extension)。
  • 支持半精度浮点指令。
  • 调试功能增强,包括性能监测单元(Performance Monitoring Unit,PMU)和针对信号处理应用程序开发的调试附加功能支持。
  • 用于FPU的TrustZone管理增强指令集。
  • 非特权调试扩展。
  • 内存保护单元(Memory Protection Unit,MPU)提供了一个新的内存属性,即“特权模式下永不执行”(Privileged eXecute Never,PXN)的属性。这允许当CPU处于特权模式下时阻止执行任意代码,而这些代码可能已经写入了用户空间。这是一个重要的安全特性。
  • 可靠性、可用性及可维护性(Reliability,Availability and Serviceability,RAS)扩展。

引入Helium是为了在Cortex®-M内核MCU上实现更高效的DSP类和机器学习操作。它和Cortex®-A内核MPU中Neon有很多相似之处。Neon和Helium都使用FPU中的寄存器作为矢量寄存器。两者都使用128位向量,并且许多向量处理指令对于两种体系结构都是通用的。然而,Helium是一种全新的设计,可在小型处理器中实现高效的信号处理性能。它为嵌入式用例提供了许多新的架构功能,因为它针对面积(成本)和功耗进行了优化,为M-Profile架构带来了类似Neon的功能(Cortex-A的SIMD注指令)。Helium经过优化,可有效利用较小Cortex-M内核中的所有可用硬件。下表详细给出了Helium和Neon之间的对比信息。

Helium与Neon对比表

image.png

注:SIMD(Single Instruction Multiple Data)即单指令多数据,表示在该硬件中的多个处理单元中可以同时对多个数据项执行相同的操作,也就是说,CPU可以同时执行并行计算,但只有一个指令正在执行。这是数据级的并行。

目前有许多系统将Cortex-M处理器和专用可编程的DSP处理器结合来使用。Helium允许这样的系统只用一个处理器来实现。这样做有如下优点:

  • 从软件开发的角度来看,它允许使用单个工具链,而不是分别对CPU和DSP使用各自的编译器和调试器。这就意味着程序员只需要熟悉一种架构。
  • 消除了对处理器间通信的需求,这点可能非常重要,因为要对实时交互的两个运行时处理器中的不同软件进行调试既困难也耗时。
  • Cortex-M系列的CPU相比专用DSP而言,更易于编程。
  • 在硬件设计层面,使用一个处理器(而不是两个处理器)可以简化系统,从而减少芯片面积和成本,并缩短开发周期。

在详细介绍Helium之前,我们现在来聊聊标量和矢量的概念。

数学和物理世界中的观点

  • 标量是一个只要大小的量
  • 比如纯数字,质量,速率,温度,体积等
  • 矢量是一个有大小而且有方向的量
  • 比如速度,加速度,位移,重力,摩擦力等

计算机科学世界中的观点

  • 标量(处理器)是一次性处理一个数据元素的处理器。
  • 通常用来处理通用的计算任务,如文字处理和电子表格。
  • 功耗低,价格便宜。
  • 矢量(处理器)是一次性对多组数据(每组一般为两个数据)成批地进行同样的运算,得到一批结果的处理器。如一次将100个加数与100个被加数相加,同时得到100个和的运算。
  • 对于图像,视频,音频数据处理等需要并行处理大量数据的任务特别有用。
  • 也可用于科学计算,加速复杂算法的处理。
  • 功耗高,价格稍高。

Helium寄存器、数据类型和通道

Helium寄存器是128位的,一共有8个Helium寄存器,寄存器数量不可修改。它和浮点单元(FPU)共同使用。在FPU中使用S0~S31来访问32个单精度(32位)寄存器,同样的硬件寄存器也可看做16个双精度(64位)寄存器D0~D15。例如,D0和S0、S1共用64位相同的硬件寄存器。在Helium架构中,Helium使用8个矢量寄存器Q0~Q7。这就意味着,Helium寄存器Q0和S0~S3、D0~D1浮点寄存器使用相同的物理寄存器,Q1和S4~S7、D2~D3浮点寄存器使用相同的物理寄存器,其他Helium寄存器以此类推。因为Helium寄存器重用了标量FPU寄存器,所以当发生异常时无须使用额外的资源去保存和恢复这些寄存器(同样不影响中断延迟)。

image.png

每个Helium寄存器都可以划分为8位,16位,32位宽的通道。每个通道可以被一条指令看作:

  • 整型数值(8/16/32位宽)
  • 定点饱和值(Q7/Q15/Q31)
  • 浮点数值(半精度FP16/单精度FP32)

image.png

下图是一个矢量寄存器相加的示例。Helium寄存器q5和q0都是8个int16的元素数据(8个通道),将他们相加的结果存在q0中。

image.png

Helium允许矢量中的每个通道有条件地执行,这称作通道预测。矢量预测状态和控制寄存器(VPR)保存每个通道的条件值。某些矢量指令(比如矢量比较VCMP)可以改变VPR中的条件值,当这些条件值被设置好以后,接下来就可以使用VPT(矢量条件预测)指令,以每个通道为基础在矢量预测中实现条件执行。

作者:Ant Ling
来源:瑞萨嵌入式小百科

推荐阅读

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
2891
内容数
285
分享一些在嵌入式应用开发方面的浅见,广交朋友
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息