Cortex-M55 处理器提供更高的设备处理性能,同时保持 Cortex-M 的易用性,包括单一工具链和熟悉的软件开发生态系统。与现有 Cortex-M 处理器相比,超过 150 条新的标量和向量指令、低开销循环和半精度浮点都有助于将机器学习性能提高多达 15 倍,信号处理性能提高多达 5 倍。
Cortex-M55 处理器高度可配置,具有多种选项,可提高性能和安全性。矢量单元支持每个周期用于 DSP 应用的两个 32 位 MAC 运算,扩展的算术支持包括用于 ML 工作负载的 8 位定点。
Cortex-M55 处理器汇集了多项优势,包括提高 ML 和 DSP 性能、简单的程序员模型、统一控制和信号处理,以及支持常见的 ML 框架,例如用于微控制器的 TensorFlow Lite。当 Cortex-M55 处理器与 Ethos-U55 相结合时,ML 工作负载将进一步加速,Ethos-U55 是第一个用于 Cortex-M 的 Arm microNPU。世界上最小的设备现在将参与人工智能革命。
在 Cortex-M55 处理器上探索和开发
Arm 工具使软件能够在基于 Cortex-M55 的芯片可用之前进行编译、执行和调试。
嵌入式软件开发人员使用 Arm 工具来学习新的向量指令、循环增强、新寄存器、节拍的概念以及对编程模型的其他增强。
算法开发人员使用 Arm 工具将现有算法移植到基于 Cortex-M55 的设备并优化代码,以利用提高的性能和降低的软件复杂性。
SoC 架构师使用 Arm 工具进行性能分析,将基于 Cortex-M55 的系统与之前的 Cortex-M 设计进行比较,并为即将到来的项目做出明智的 IP 选择决策。
以下是可用工具的概述:
Keil MDK(微控制器开发套件)——最流行的 Cortex-M 项目工具链,包括版本 5.30 中支持 Cortex-M55 处理器的 µVision IDE
Arm Development Studio – 适用于任何 Arm IP 的完整开发环境,包括 Cortex-A、R、M,在 2020.0 版中支持 Cortex-M55 处理器*
Arm Fast Models – 一个全面的建模环境,用于为早期软件开发创建自定义虚拟平台,在 11.10 版本中支持 Cortex-M55 处理器
Arm 固定虚拟平台 (FVP) – 使用 Arm Fast Models 构建的虚拟
开发板,用于 无需物理板的软件开发,在 11.10 中支持 Cortex-M55 处理器
Arm 周期模型– 100% 周期精确的 Arm IP 模型,用于性能分析和 IP 选择,在Arm IP Exchange上支持 Cortex-M55 处理器
* Development Studio 白金版用户可以在2019.b 版本中提前使用 Armv8.1-M 功能。
让我们看看这些工具如何帮助充分利用 Cortex-M55 处理器。
构建您的代码——针对性能和功耗进行优化
Arm Compiler 6包含在 Keil MDK 和 Arm Development Studio 中,是适用于 Arm 架构的最新编译器,包括 Armv8.1-M 和 Cortex-M55 处理器。Arm Compiler 6.14 增加了对 Cortex-M55 处理器的特定支持。它汇集了现代 LLVM 编译器基础设施和高度优化的 Arm 库和链接器,以生成性能和功耗优化的嵌入式软件。
与任何新的编译器支持一样,性能和代码大小会随着时间的推移而提高,这是由实际用例的经验和反馈驱动的。对于 Cortex-M55 处理器,Arm Compiler 支持 Armv8.1-M 的新指令以及自动矢量化。
要针对 Armv8.1-M,请在 armclang 命令行上使用 -march=armv8.1-m.main+mve.fp+fp.dp
要指定 Cortex-M55,请在 armclang 命令行上使用 -mcpu=cortex-m55
对于 Arm 汇编器 armasm 和 Arm 链接器 armlink,使用 --cpu=8-M.Main.dsp
使用 fromelf 反汇编也支持没有特殊参数的 Cortex-M55 处理器
为了演示 Arm 工具,github 上有一个用于 Cortex-M55 处理器的小型 hello world 程序。
该示例包含一个用于编译应用程序的 Makefile。Makefile 包括 makefile.inc,它隔离了 Cortex-M55 开关。
运行 hello.c 应用程序
hello.c 应用程序重点介绍了有关 Cortex-M55 处理器的一些内容。它演示了如何使用 CPACR 寄存器启用扩展处理单元 (EPU)。EPU 执行标量浮点运算和 Helium(也称为 M-profile Vector Extensions,MVE)运算。EPU 在复位时被禁用,必须启用才能演示向量指令。该应用程序还演示了使用内联汇编来执行向量指令。最后,应用程序执行乘法累加运算,该运算使用低开销循环并由 Arm Compiler 6 向量化。这是 MLA 函数的源代码。查看反汇编文件以查看 Arm Compiler 6 生成的指令。
全屏
还提供了使用固定虚拟平台执行软件的运行脚本。这是熟悉使用 Cortex-M55 处理器进行软件开发的简单方法。
从 Arm 编译器 5 迁移到 Arm 编译器 6
Arm 编译器迁移和兼容性指南通过比较命令行选项、源代码差异、汇编语法和其他感兴趣的主题来帮助评估过程。
例如,从 Arm Compiler 5 上的 Cortex-M4 处理器更改为 Arm Compiler 6 上的 Cortex-M55 处理器时,需要更改一些编译器命令行选项:
迁移指南提供了与特定交换机相关的更多详细信息,但这些是开始的基础。某些编译器开关可能需要删除,因为它们特定于 armcc 并且不需要。
调试你的代码
来自 Keil MDK v5.30 的 Development Studio 2020.0(青铜版及更高版本)和 µVision 都为软件调试添加了 Cortex-M55 支持。这包括 Armv8.1-M 中新寄存器的反汇编和更新的寄存器视图。
Keil MDK 是最全面的 Cortex-M 项目软件开发环境,而Development Studio可与任何 Arm IP 一起使用。
Development Studio 中的反汇编窗口显示了前面示例中的向量指令。
同样, µ Vision 调试器也显示了 向量 指令的反汇编:
Development Studio 和µ Vision 展示了 向量 寄存器,包括 Q 寄存器(以最适合您需要的格式)和 VPR(向量预测状态和控制寄存器)。
同样, µ Vision 具有 可配置 显示的 Helium寄存器的专用视图:
使用快速模型在没有硬件的情况下开发代码
计数指令是初步估计算法将如何执行的好方法。快速模型是 Arm IP 的快速、灵活的程序员视图模型,允许您在硅可用之前开发驱动程序、固件、操作系统和应用程序等软件。它们允许完全控制模拟,包括分析、调试和跟踪。快速模型可以导出到 SystemC,允许集成到更广泛的 SoC 设计过程中。Cortex-M55 快速模型提供了一种很好的方式来了解新指令的详细信息,而无需硬件开发板。
快速模型典型用例:
功能软件调试
软件分析和优化
软件验证和持续集成
Cortex-M55 处理器的快速模型将于 3 月作为快速模型 11.10 的一部分发布
快速模型非常适合构建具有与正在设计的 SoC 相匹配的内存映射和外设的定制虚拟平台。除了使用 Arm IP 模型创建虚拟平台外,还可以扩展系统以包括使用 SystemC 的自定义外围设备和其他模型。
对于不需要自定义虚拟平台的用户,Arm 提供固定虚拟平台。FVP 是对 Arm 系统的完整模拟,包括处理器、内存和外围设备。Cortex-M55 FVP 将在上述 Keil MDK 和 Development Studio 版本中提供。
使用循环模型分析性能
循环模型 直接从 Arm RTL 编译并保持完整的功能准确性。这使得基于使用基准软件的 SystemC
仿真的可靠 IP 选择决策成为可能。许多项目根据应用程序特定的软件操作选择 CPU,例如流式小矩阵或算法的其他重要部分。周期模型非常适合研究在项目的 IP 选择阶段关键软件功能需要多少周期的细节,并比较 Arm IP 的性能。循环模型在 SystemC 模拟器中运行,包括 Accellera 参考模拟器和来自 EDA 合作伙伴的模拟器。
Cortex-M55 SystemC 循环模型支持多种有助于性能分析的特性:
SystemC信号接口
指令跟踪(也称为停机坪)
PMU 事件跟踪
波形生成
原作者:杰森·安德鲁斯