我必须在ARM汇编语言中刷新4MB缓存,我们有效的方法是什么呢?
我想过分配4MB内存,写一些随机数据并回读
我正在实施一个测试主内存的工具。为了确保我的工具只测试主内存,我必须刷新缓存
我正在使用Cortex A8处理器,我想清除所有L1,L2,L3缓存
答案 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和数据缓存,并完全避免此问题。