这可能是一个愚蠢的问题,但我对ARM CMSIS Cache操作函数的措辞有些拘泥。
ARM CMSIS公开了可以“清除”缓存的函数、可以“失效”缓存的函数以及一组同时执行这两种功能的函数。
这些实际上做了什么还不清楚,而且arm文档坦率地让我感到困惑:
我的理解是,缓存中的“刷新”数据将导致将其写回主内存,而缓存中的“无效”数据将导致处理器在下一次访问有关数据的尝试中重新读取主内存。
然而,ARM文档似乎在暗示一个刷新操作实际上是一个无效操作,而我一直在想的是一个刷新操作实际上是一个“干净”操作。
我想我只是严重曲解了文件。有人能给我指明正确的方向吗?
我专门为皮层M7开发,如果它是相关的话。
发布于 2017-06-07 20:28:51
他们从armv7-m手臂上得到了这条短信。
这些行动的定义如下: 打扫 缓存清理操作确保控制高速缓存的观察者所做的更新对可以在执行该操作的点访问内存的其他观察者可见。清理完成后,新的内存值保证在执行操作的点上是可见的,例如,到统一点。从缓存中清除缓存项可以覆盖由另一个观察者写入的内存,只有当该条目包含一个已被该内存位置的共享域中的观察者写入的位置时。 无效 缓存失效操作确保在定义失效点时访问内存的观察者所做的更新对于控制缓存的观察者是可见的。这可能导致访问缓存的观察者写入的受无效操作影响的位置的更新丢失。如果无效操作的条目的地址没有正常的可缓存属性,或者如果缓存被禁用,则无效操作还会确保缓存中不存在此地址。
我读到这句话时说,清理会将那些没有保存到下一级内存的缓存中的项目写入内存中(像我这样的人称之为同花顺)。如果存在未写入的值,则无效,它将准备缓存,就像没有要保存的值一样,准备接受新的地址和数据。
我就是这么读的..。
https://stackoverflow.com/questions/44421754
复制相似问题