cache的读写机制

CPU读Cache时:

●如果cache hit,则CPU直接从Cache中读取数据即可。

●如果cache miss,有两种处理方式:

   > Read through,即直接从内存中读取数据;

   > Read allocate,把目标地址所在的 cache line 从内存加载到 Cache,然后 CPU 从这个 cache line 中取得需要的数据

 

CPU写Cache时:

●如果cache hit:

根据是write-back还是write-through来具体操作:

> write-back:将数据更新到cache,并不更新到内存(DRAM),待后续flush cache时存入内存;

> write-through:数据同时会更新到cache和内存;

●如果cache miss:

根据是write-allocate或是write-no-allocate:

> write-allocate:将要写入的位置从内存读到cache,然后按照上述write hit继续操作;

> write-no-allocate:不会将要写入的数据从内存读到cache,直接将数据写的到内存(DRAM)

 

1. 读 Cache 策略对比

策略Cache miss 时怎么做优点缺点适合场景
Read allocate 从内存加载目标地址所在的 cache line 到 Cache,再从 Cache 读 利用空间局部性;后续访问附近数据可能 hit;普通程序性能好 可能污染 Cache;占用内存带宽;一次性访问时不划算 普通数据读取、数组遍历、结构体访问
Read no-allocate / Cache bypass 直接从内存或下一级 Cache 读,不放入当前 Cache 避免 Cache 污染;节省 Cache 空间;适合大块流式读 后续再访问同一数据仍然 miss;不能利用局部性 一次性读取、大块 streaming、DMA/I/O 数据

2. 写 hit 策略对比

策略Cache hit 时怎么做优点缺点适合场景
Write-back 只更新 Cache,并把 cache line 标记为 dirty,之后再写回内存 写性能高;减少内存写流量;适合频繁修改同一数据 内存中数据可能不是最新;一致性维护复杂;dirty line 替换时成本高 通用 CPU、高性能系统、频繁写数据
Write-through 同时更新 Cache 和内存,或至少更新到下一级存储 内存数据较新;实现简单;一致性更容易处理 写流量大;频繁写时性能较差;通常需要 write buffer 简单处理器、嵌入式系统、I/O 相关区域

3. 写 miss 策略对比

策略Cache miss 时怎么做优点缺点适合场景
Write-allocate 先从内存加载目标地址所在的 cache line 到 Cache,再执行写操作 写完后继续读/写容易 hit;适合有局部性的数据;常与 write-back 搭配 写 miss 代价高;需要先读整条 cache line;可能污染 Cache 普通变量写入、数组更新、写后还会访问的数据
Write-no-allocate / Write-around 不加载进 Cache,直接写到内存或下一级 Cache 避免 Cache 污染;省去读入 cache line 的开销;适合一次性写 写完后再读/改仍然 miss;不能利用写局部性 大块流式写、一次性 buffer 写入、I/O 输出

 

 

 

posted @ 2026-06-08 11:48  验证cc  阅读(2)  评论(0)    收藏  举报