【Cache缓存】cache的刷新

目录

Clean(缓存清理)

Invalidate(缓存失效)

flush


每条cache line 都有两个标志位 valid bit 和 dirty bit。 vaild bit:表示cache line中数据是否有效。1代表有效;0代表无效。当系统刚启动时,cache中的数据都应该是无效的。

  1. dirty bit:表示cache line里面的数据是否和下一级存储器内容一致。0代表非dirty,和下一级存储器内容一致。1代表dirty,和下一级存储内容不一致。

  2. 当cache外部的存储器数据发生改变时,需要清除相应位置的cache标志位。如果cache采用的写策略是write-back,还需要将cache中的旧数据刷到外部存储器。

ARM中通常使用术语clean和invalidate,有的地方会使用flush(invalidate+clean)描述两个操作。

在多核处理器的缓存系统中,cache clean(缓存清理)和cache invalidate(缓存失效)是维护缓存一致性、保证共享数据正确性的两个核心操作。

Clean(缓存清理)

clean指的是将响应位置的cache line状态置为脏(1: dirty)。通过这种方式可以让cache line中的数据和主存中的数据保持一致。

Invalidate(缓存失效)

invalidate指的是将相应位置的cache line状态置为无效(0: invalid),强制后续访问该数据时必须从下一级存储重新加载。这时候并不需要真的清除相应位置的cacheline数据。

在一般的系统中,复位必须清除掉所有cache line的valid状态,不然的话,这个cache的状态位就能够让芯片变成石头,因为复位后的内存访问可能会hit,从而拿到错误的不可预知的数据。如果cache采用了write-back写策略,cacheline可能包含了dirty数据,这个时候直接invalidate这个cache line也是不对的,可能会丢失本应该写入到主存中的数据。

flush

每条cache line 先clean,再invalid.

相关推荐
189228048611 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
丷丩2 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
柿柿快乐3 小时前
Redis 入门第一课:全局命令、内部编码与单线程模型
redis·学习·缓存·基础教学
磊 子4 小时前
1.4CPU缓存一致性
java·spring cloud·缓存·系统
Tirzano5 小时前
超大型组和用户缓存redis
redis·缓存·哈希算法
码云骑士8 小时前
Redis 入门实战:从 NoSQL 概念到安装与基础操作详解(一)
数据库·redis·缓存
高翔·权衡之境10 小时前
主题9:DMA与零拷贝——让CPU从数据搬运中解放
驱动开发·安全·缓存·系统安全·信息与通信
Hello--_--World10 小时前
为什么 用vite进行分包后,可以通过 浏览器强制缓存 提高性能?路由懒加载进行的分包与 vite进行的分包有什么不同?
前端·javascript·缓存·vite
wljt10 小时前
Redis的5种数据类型
数据库·redis·缓存
是娇娇公主~11 小时前
力扣——146.LRU缓存详解
算法·leetcode·缓存