首页|资源下载
登录|注册

您现在的位置是:首页 > 技术阅读 >  刷cache的3种操作:clean/invalid/flush

刷cache的3种操作:clean/invalid/flush

时间:2024-07-15

cache line

cache被平均分成了多个cache line。
cache line是cache和DDR之间数据传输的最小单位。

什么意思呢?当CPU试图load一个字节数据的时候,如果cache miss,那么cache控制器会从主存中一次性的load cache line大小的数据到cache中。

例如,cache line大小是64字节。CPU即使读取一个byte,在cache缺失后,cache会从主存中load 64字节填充整个cache line。

每条cache line 都有两个标志位

vaild bit:

表示cache line中数据是否有效(例如:1代表有效;0代表无效)。当系统刚启动时,cache中的数据都应该是无效的.

dirty bit:

表示cache line里面的数据是否和下一级存储一致。=0非dirty,和下一级存储一致,=1 dirty,和下一级存储不一致。

cache的3种操作:

clean:

检查对应内存cache line 的dirty bit。如果dirty bit为1,将cache line的内容写回下一级存储,并将dirty bit置为0.

invalid:

检查对应内存cache line 的valid bit.如果valid bit 为1,置为0.

flush:

每条cache line 先clean,再invalid.

tips:

1.如果CPU先读了一块内存,接下来要DMA/其他硬件要访问这块内存,无需clean. DMA/其他硬件改写了这段DDR后,要将这段cache置为invalid,这样后续如果CPU访问这段内存,就不会使用cache中的数据。

2.如果CPU先写了一块内存,接下来要DMA/其他硬件要访问这块内存,要先clean,确保DMA/其他硬件访问到的DDR数据是准确的。

3.如果能确认数据访问的流向,可以只使用clean或者invalid,而不是flush。

————————————————

原文链接:https://blog.csdn.net/weixin_37515325/article/details/118496921