【问题标题】:Is it possible the to lock the ISR instructions to L1 cache?是否可以将 ISR 指令锁定到 L1 缓存?
【发布时间】:2013-11-28 10:37:37
【问题描述】:

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

问候, 否

【问题讨论】:

    标签: arm interrupt-handling cpu-cache isr


    【解决方案1】:

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

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

    更不用说如果你的 ISR 确实很小,而且它被频繁调用,它还是有可能在缓存中。

    您期望从这样做中获得什么好处?

    【讨论】:

    • 感谢您的回答。我的唯一目的是进行实验,以深入了解影响中断延迟抖动的因素。我正在尝试优化硬实时应用程序的中断延迟。至于你的第二个论点,我没有在那个核心做任何事情,它只是处理我的关键中断(可能我稍后会添加一些后台处理),所以系统其余部分的性能并不重要(因为 L1 是核心私有)。
    • altera.com/literature/wp/wp-01190-real-time-socs.pdf 根据本文档(第 9 页第 1 段),它说这是可能的,因此我想知道。否则上网搜索,只能找到二级缓存的缓存锁定。
    • 有些 SoC 有 TCM(紧耦合内存),您可以在那里永久放置 ISR 代码。它的延迟通常与 L1 相同或稍好一些,但通常比 L2 好很多。
    • 我检查了 Altera 文档,在第 9 页它只建议代码应该小于 L1 icache,因此它可以一直保留在那里。如果代码大于 L1,他们建议在第 11 页将其锁定在 L2 中。
    • 如果我发现自己试图优化中断延迟以满足严格的实时限制,那么我会考虑重新设计 SW 架构。
    【解决方案2】:

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

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

    虽然其他中断编号只是向量,但最后一个编号直接分支到代码区域,从而节省了一次内存负载和互锁。您可以节省大约三个周期。

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

    CA9 无论如何都不支持 L1 缓存锁定(出于某些充分的原因),所以不要打扰。

    只需确保 ISR 与高速缓存行对齐即可实现最高效率。 (通常为 32 或 64 字节)

    【讨论】:

    • Jake,“你说将最后一个中断号分配给 ISR 是什么意思” - 你的意思是因为 FIQ 处理程序不需要分支指令,因为它是向量中的最后一个异常表(如 asm-vector.s 中定义的)?我如何确保 ISR 缓存对齐?现在关于答案,这如何确保我的例程在缓存中(或者它只是一个假设,因为除了这个关键中断之外我没有运行任何重要的东西?)。据我所知,FIQ 只是一个优先级中断它抢占了 IRQ 并通过存储少量 reg 来节省一些时钟周期。
    • 很难对齐 FIQ 处理程序,因为偏移量在 ARM 架构中编码为 0x1c ;-)
    • 说实话,我更像是一个算法优化器而不是系统级程序员。话虽这么说,我在中断处理方面可能是错的,因为我只在论文上阅读过它而从未真正实现过它。如果我错了,请纠正我,FIQ 是 #16,对吗?然后它会自动 64 字节对齐。如果由于某种原因无法将 #16 分配给 ISR,最好在 ISR 的第一条指令之前放置一个“对齐”指令。
    • 但是,严重依赖 ISR 调用并不是很明智,因为开销可能会严重削弱性能。此外,不必将某些例程保留在 d-cache 中,因为 CA9 非常智能地获取指令。
    • FIQ 建议很好,因为它可以减少延迟,这对 OP 来说可能很重要。 ARM 向量表是 32 字节对齐的,当 FIQ 发生时,PC=vector table+0x1c。由于它是表中的最后一个条目,您的完整 FIQ 例程可能会放在这里。即,除了从异常中最终返回之外,没有分支。由于有许多存储寄存器,因此代码通常非常少。
    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2018-02-10
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多