ARM:使用缓存内存加快关键代码



假设我有一个嵌入式项目(如果有差异,则有一个臂皮层),其中代码的一部分至关重要,并且需要快速运行,并且在确定性的时间内运行尽可能多地运行尽可能。

是否可以牺牲部分缓存并将其保留给关键代码/数据?然后,我可以加载关键代码/数据,并始终以L1缓存速度运行/访问它们。

好吧,我认为答案是"从技术上讲,不"。缓存控制器使用分配为缓存内存的内存来完成应有的操作,这就是缓存。

因此,希望芯片供应商提供了从可用的最快内存中运行代码的方法。如果芯片具有TCM,则加载关键代码应该很好,并在L1缓存中缓存时运行的快速运行。如果芯片提供闪光灯和RAM,则在RAM上加载关键代码也应该更快。在后一种情况下,缓存控制器(如果存在)可以配置为使用同一RAM进行运行缓存代码。

是的,这是可能的:

TB3186"如何使用Acortex™-M缓存控制器实现确定性代码性能"

http://ww1.microchip.com/downloads/en/devedoc/how-to-to-woce-achieve-deterministic-code-performance-using-cortexm-cache-cache-cache-controller-ds90003186a.pdf

...使用CMCC,通过以某种方式加载关键代码并将其锁定来,可以将缓存的一部分用作确定性代码性能的TCM。当特定方式锁定时,CMCC不会使用锁定方式进行例行缓存交易。带有加载的关键代码的锁定缓存方式充当了始终确定的缓存状态。

最新更新