在基于单片机的嵌入式应用中,软件存储在非易失性存储器(通常是闪存)中并从中运行。闪存虽然为存储和执行代码提供了一种有效的介质,但从闪存中执行时,许多因素会限制确定性代码性能。影响确定性代码行为的一个重要因素是系统总线矩阵的复杂性。从 SRAM 中运行代码时,由于与闪存相同的原因,也会出现确定性代码性能问题。
非确定性代码性能主要是由于代码从存储器传播到 CPU 的时间不同造成的,而传播时间的不同与连接存储器和 CPU 的系统总线矩阵有关。如果系统中存在多个实体需要访问系统总线,非确定性代码性能问题将会更加明显。
在实时应用中,某些情况下会有一些小的、关键的代码片段要求限时执行。不建议从闪存或 SRAM 中运行这类代码,因为系统总线仲裁可能会导致达不到预期的确定性时序,也就是说,从闪存或 SRAM 中提取代码时出现了高速缓存未命中情况。代码访问时间会因系统总线访问的可用性而异,因为需要在多个总线实体之间进行仲裁。
实现关键代码确定性代码性能的有效方法是将代码从紧耦合存储器(Tightly Coupled Memory,TCM)传播到处理器执行,以避免高速缓存未命中的情况。基于 Microchip Cortex®-M4 的单片机(MCU)上的Arm® Cortex-M 高速缓存控制器(CMCC)支持从高速缓存存储器中运行关键代码以实现确定性性能。
主要内容
1、概念
2、解决方案
3、确定性性能分析
4、相关资源