假设我有一个嵌入式项目(如果它有所不同,则使用ARM Cortex-M),其中部分代码是关键的,并且需要尽可能快地在确定的时间内运行。
是否有可能牺牲部分L1缓存并为关键代码/数据保留它?然后,我可以加载关键代码/数据,并始终以L1缓存速度运行/访问它们。
答案 0 :(得分:1)
好的我认为答案是"从技术上讲,不是"。高速缓存控制器使用分配为高速缓存存储器的存储器来做它应该做的事情,那就是高速缓存。
所以希望芯片供应商提供了从最快的内存中运行代码的方法。如果芯片有TCM,那么加载你的关键代码应该没问题,并且运行速度与在L1缓存中缓存时运行的速度一样快。如果芯片提供闪存和RAM,那么在RAM上加载关键代码也应该快得多。在后一种情况下,高速缓存控制器(如果存在)可以配置为使用相同的RAM来运行高速缓存的代码。
答案 1 :(得分:1)
是的,有可能:
TB3186 “如何使用aCortex™-M缓存控制器实现确定的代码性能”
... 使用CMCC,可以通过将关键代码加载到WAY中并对其进行锁定来将一部分缓存用作TCM,以提高确定性的代码性能。当特定WAY被锁定时,CMCC不会将锁定的WAY用于常规高速缓存事务。带有已加载的关键代码的已锁定高速缓存WAY始终会成为高速缓存命中条件。