我在ARM cortex A9处理器的核心之一上运行裸机应用程序。我的ISR非常小,我想知道是否可以将我的ISR指令锁定在L1缓存中?可能吗?是否有人会解释这样做的一些缺点?
此致 Ñ
答案 0 :(得分:3)
Cortex-A9不支持L1缓存锁定(既不是指令也不是数据)。
缺点是取走大块缓存(锁定通常是在整个缓存方式的粒度上完成)会降低系统中其他所有内容的性能。
更不用说如果您的ISR确实很小并且经常被调用,那么无论如何它都有可能在缓存中。
这样做有什么好处?
答案 1 :(得分:2)
您的情况非常适合快速中断。 (FIQ)
您只需为该特定ISR分配最后一个中断号。
虽然其他中断号只是向量,但最后一个数字直接分支到代码区,因此节省了一个内存负载和互锁。你可以节省大约三个周期。
此外,i-cache锁定不如d-cache锁定效率高。
CA9不支持L1缓存锁定(出于某些原因),所以不要打扰。
确保ISR与高速缓存行对齐,以实现最高效率。 (通常为32或64byte)