系统如何确保内存和缓存之间的一致性

时间:2010-09-29 03:11:18

标签: c caching x86

例如,如果我写入特定的内存位置(例如:DMA传输),它在缓存中会受到什么影响?

2 个答案:

答案 0 :(得分:1)

缓存是CPU功能;如果您通过CPU写入内存,缓存将更新并保持一致。

如果您以其他方式写入内存(例如DMA传输,如您所建议的那样),您将需要(可能)预先刷新缓存,然后告诉CPU缓存无效。如何执行此操作取决于您的系统 - 例如,请参阅INVDWBINVD了解x86。

关于缓存一致性和DMA的两篇好文章是Understanding CachingUsing DMA(均由James Bottomley发表,发表在Linux Journal;“缓存”发表于第117期,2004年1月和“DMA”)第121期,2004年5月)。

答案 1 :(得分:0)

需要注意的一点是:INVBD和WBVD指令是特权指令,因此您无法直接从用户空间运行它们。