软件维护cache的三类指令

185 阅读1分钟

快速链接:


说明: 在默认情况下,本文讲述的都是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交流讨论区。

1138106487-65f6cf311889c.png