ARM Cortex 处理器中缓存清理_和_无效的意义是什么?

问题描述 投票:0回答:1

ARM Cortex 处理器中缓存的 clean invalidate 有何意义? clean将缓存内容写入内存,然后invalidate保证下次访问时再次读取这些刚刚写入的内容?

我很确定我在这里遗漏了一些微不足道的东西,否则 SCB 中就不会有单独的寄存器来清理和无效。我尝试过谷歌搜索、阅读ARM 参考手册等等,但我没有看到任何与我上面写的内容不同的内容?

caching embedded cpu-cache cortex-m
1个回答
3
投票

Clean 将脏缓存提交到内存并将其标记为干净。

Invalidate 会从内存中删除那些缓存的项目。

如果它们被重新访问,是的,它们将被重新加载到缓存中,但如果没有......那么,现在缓存可用于其他事情。

您通常对已完成工作且从处理器角度不再关心的缓冲区使用 clean 和 invalidate。 一个很好的例子就是将音频缓冲区发送到 DMA 馈送的 I2S 端口或 DAC 设备。

稍后编辑:

Invalidate主要用于当你想从外部获取数据到处理器进行计算时。 在这种情况下,I2S DMA 输入:使您感兴趣的缓冲区无效,然后正常访问它。

话虽如此,尝试执行此操作可能会很棘手,因为整个缓存行已加载/无效等。 如果缓冲区附近有任何其他变量,您最终可能会陷入缓存操作并意外丢弃“正确的”数据。

© www.soinside.com 2019 - 2024. All rights reserved.