快速链接:
说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 5.14
ARM提供三类软件维护cache的指令
总结如下:
- Invalidation:其实就是修改valid bit,让cache无效。如果再次发起对该地址数据的读,新数据将会重新缓存到cache
- Cleaning: 将cache line标记为dirty标,cache中的数据将回写到下一级cache或内存中
- Zero:将一个block的cache数据清0.
Clean 和 Invalidate又可以结合在一起使用。所以对于cache的操作,又变成了四类指令:I、C、CI、Z
Linux Kernel提供三类API函数:
- __flush_dcache_area() : Clean & Invalidate
- __inval_dcache_area() : Invalidate
- __clean_dcache_area_poc() : Clean
关注"Arm精选"公众号,备注进ARM交流讨论区。