5.1 一般数据处理能力
在通用微控制器市场中,经常使用基准数据来衡量微控制器的性能。表7显示了Cortex-M处理器常用基准测试的性能数据:
表7: Cortex-M处理器常用benchmakr性能分数
(来源:CoreMark.org 网站和ARM 网站)
关于Dhrystone需要注意的是,用于测试的Dhrystone是从官方源程序编译而来,没有启用内联和多文件编译编译选项(官方评分)。然而,许多微控制器制造商引用了经过完全优化和编译的Dhrystone 测试数据。
然而,基准测试工具的性能测试数据可能无法准确反映您的应用程序可以达到的性能。例如,在单周期I/O接口和DSP应用中使用SIMD,或者在Cortex-M4/M7中使用FPU的加速效果并没有体现在这些测试数据中。
一般来说,Cortex-M3和Cortex-M4能够提供更高的数据处理性能,原因如下:
更丰富的指令集
哈佛总线架构
写缓存(单周期写操作)
跳跃目标的预测获取
Cortex-M33同样基于哈佛总线架构,拥有丰富的指令集。但与Cortex-M3 和Cortex-M4 不同的是,Cortex-M33 处理器流水线是一种重新设计的高效流水线,支持有限指令双发(一个时钟周期内最多可以执行两条指令)。
Cortex-M7 支持更高的性能,因为M7 具有双发出六级流水线并支持分支预测。此外,通过支持指令和数据缓存以及紧密耦合的内存,可以实现更高的系统级性能,即使在使用慢速内存(例如嵌入式闪存)时也可以避免性能损失。
然而,一些I/O 密集型任务在Cortex-M0+ 上运行速度更快,因为:
更短的流水线(跳转只需要两个周期)
单周期I/O口
当然也有设备相关的因素。例如系统级设计、内存速度也会影响系统性能。
您自己的应用程序通常是您需要的最佳基准。 CoreMark 分数是另一个处理器两倍的处理器并不意味着它运行应用程序的速度是其他处理器的两倍。对于I/O密集型应用,设备相关的系统级架构对性能影响巨大。
5.2 中断延迟
另一个与性能相关的指标是中断延迟。这通常以从中断请求到执行中断服务例程的第一条指令的时钟周期数来衡量。表8 列出了Cortex-M 处理器在零等待内存系统条件下的中断延迟比较。
表8: 零等待内存系统条件下的中断延迟比较
事实上,真正的中断延迟是受内存系统的等待状态影响的。例如,许多运行速度超过100Mhz 的微控制器都与非常慢的闪存(例如30 至50MHz)配对。尽管使用Flash访问加速硬件来提高性能,但中断延迟仍然受到Flash存储系统的等待状态的影响。因此,在零等待内存系统上运行的Cortex-M0/M0+ 系统完全有可能比Cortex-M3/M4/M7 具有更短的中断延迟。
在评估性能时,不要忘记考虑中断处理程序的执行时间。一些8位或16位处理器架构可能具有非常短的中断延迟,但需要数倍的时钟周期才能完成中断处理。非常短的中断响应时间和非常短的中断处理时间实际上是有效的。