内存CACHE中invaild、clean、flush的作用

内存CACHE中invaild、clean、flush的作用

这里说的内存,主要是指主存。它的读写速度虽然比磁盘快很多。但是相对于CPU的速度依旧还是慢。为加快cpu访问内存的速度,CPU和主存储器之前都会增加一级乃至三级高速缓存,cpu访问cache时,如果能到找到匹配的地址,会直接从缓存中取数据或将写入数据,而无需访问主存。
在这里插入图片描述

缓存cache被平均分成了多个cache line, cache line是cache和cpu之间数据传输的最小单位 如果系统上的cache line大小是64 bytes,在cache缺失后,CPU即使读取一个byte,cache也会从主存中load 64字节填充整个cache line。
在这里插入图片描述

cache的3种操作:

1.clean

检查对应内存cache line 的dirty bit。如果dirty bit为1,将cache line的内容写回下一级存储,并将dirty bit置为0;
在这里插入图片描述

CPU先读了内存中某块地址中的内容, DMA/其他硬件改写了这段DDR后,要将这段cache置为invalid,即OSIDcaheInvalidata ,目的是检查内存cahe line 的valid 位是否为1,为1则置为0,这样后续CPU访问此内存时,就不会使用cache中的数据,保证cpu访问的是改写后的数据,而不是cache中的旧数据。

2.invalid

检查对应内存cache line 的valid bit.如果valid bit 为1,置为0;
在这里插入图片描述
CPU写入新内容到内存的某块地址中,如果cache存储器中修改的部分被写入的主存位置的cache行有效,那么代码有可能只会被写入到cache中,而没有写入主存,程序跳转执行该处指令代码时,可能会导致执行主存中的原代码,而不是修改后的代码,OSIDcaheClean的意思是把脏的(即被改写过,dirty bit 为1)cache line强制写回到主存,并把cache行中的dirty位清零。这样便可以重建cache与主存之间的一致性。

3.flush

每条cache line 先clean,之后再invalid(如果能确认数据访问的流向,可以只使用clean或者invalid,而不必使用flush)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值