是否可以将ISR指令锁定到L1缓存?

时间:2013-11-28 10:37:38

标签: arm interrupt-handling cpu-cache isr

我在ARM cortex A9处理器的核心之一上运行裸机应用程序。我的ISR非常小,我想知道是否可以将我的ISR指令锁定在L1缓存中?可能吗?是否有人会解释这样做的一些缺点?

此致 Ñ

2 个答案:

答案 0 :(得分:3)

Cortex-A9不支持L1缓存锁定(既不是指令也不是数据)。

缺点是取走大块缓存(锁定通常是在整个缓存方式的粒度上完成)会降低系统中其他所有内容的性能。

更不用说如果您的ISR确实很小并且经常被调用,那么无论如何它都有可能在缓存中。

这样做有什么好处?

答案 1 :(得分:2)

您的情况非常适合快速中断。 (FIQ)

您只需为该特定ISR分配最后一个中断号。

虽然其他中断号只是向量,但最后一个数字直接分支到代码区,因此节省了一个内存负载和互锁。你可以节省大约三个周期。

此外,i-cache锁定不如d-cache锁定效率高。

CA9不支持L1缓存锁定(出于某些原因),所以不要打扰。

确保ISR与高速缓存行对齐,以实现最高效率。 (通常为32或64byte)