在ARM程序集中刷新高速缓存的有效方法

时间:2014-06-30 14:05:57

标签: assembly arm cpu-cache

我必须在ARM汇编语言中刷新4MB缓存,我们有效的方法是什么呢?

我想过分配4MB内存,写一些随机数据并回读

我正在实施一个测试主内存的工具。为了确保我的工具只测试主内存,我必须刷新缓存

我正在使用Cortex A8处理器,我想清除所有L1,L2,L3缓存

1 个答案:

答案 0 :(得分:2)

从字面上理解问题,刷新CPU缓存的最有效方法是使用the cache maintenance operations来清除+使用set / way无效 - 请参阅v7_flush_dcache_all以获取示例,但请注意,以获得最佳性能the order of the loops can make a noticable difference,特别是如果缓存的地址是非随机的。

对于外部缓存(即L3),您自己需要咨询TRM,无论您实施的是什么。

但是,由于您正在编写内存测试程序而不是操作系统,因此更明智的方法是首先关闭MMU和数据缓存,并完全避免此问题。