LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

在CPU Hit/MIss时,Cache和Main Memory之间交互策略

 关键词:Hit、Miss、Read Through、Read Allocate、Write Through、Write Back、Write Allocate、No Write Allocate等。

对Cache和Main Memory之间数据维护设计到性能问题,也涉及到一致性问题。

了解下面各种策略,有利于理解Cache和Main Memory行为和配置Cache属性。

1. 各种策略行为和优缺点

Read Through:CPU Read data Through(not Allocate) Cache to Main Memory.

Read Allocate:CPU Read data from Main Memory and Allocate it in cache

Write Through:CPU Write data Through Cache to Main Memory。

Write Back:CPU Write data Back to Cache.

Write Allocate: CPU Write data to Main Memory and Allocate it in Cache.

No Write Allocate: CPU Write data to Main Memory, but No Allocate it in Cache.

 

Read/Write在Hit/Miss情况下,不同策略的表现行为:

  行为    
Read Hit CPU直接从Cache获取数据。  

Miss

Read Through

直接从Main Memory读取内容到CPU,不经过Cache。

 避免Cache占用,但是对统一内容连续读效率很低。

Read Allocate

No Read Through

先把数据从Main Memory读取到Cache中,再从Cache中读取数据到CPU。

占用Cache, 
Write Hit Write Through 把数据同时从CPU写到Cache和Main Memory中。 优点:
 - 未命中的读不会导致写到Main Memory。
 - 较易实现。
 - Main Memory中内容往往是最新的,也即一致性。
缺点:
 - 写入Main Memory较慢。
 - 每次写操作都会触发访问Main Memory。
 - 所需带宽更大。
Write Back

只把数据从CPU写到Cache中。

后续可以通过flush方式把数据从Cache写入到Main Memory中。

优点:
 - 写的速度非常快,Cache访问速度远高于Main Memory。
 - 多次到Cache的写只需一次到Main Memory的写。
 - 所需带宽更小。
缺点:
  - 实现较难
  - Main Memory数据和Cache中不一致。
  - 导致Cache替换的读操作会将dirty快写入Main Memory。
Miss Write Allocate

先把要写的数据从Main Memory载入到Cache中,CPU将数据写入到Cache中。

后续通过flush将数据从Cache写入到Main Memory中。

 
No Write Allocate 数据在Main Memory中被修改,直接从CPU写入到Main Memory中。不会被加载到Cache中。  

2. Write策略组合

不同Write Hit和Write MIss策略组合下的行为: 

Write Hit Policy Write Miss Policy    
Write Through Write Allocate

Hit:将数据写入Cache和Main Memory。

Miss:将数据从Main Memory读到Cache中,然后CPU Hit,CPU再写到Cache和Main Memory中。

当Miss的时候将数据带到Cache中,然后再将数据写入Cache和Main Memory,其中Cache的操作不太合情理

 
Write Through No Write Allocate

Hit:将数据写入到Cache和Main Memory。

Miss:更新Main Memory中内容,并且不会在Cache中存在相关内容。

后续内容写入将更新Main Memory,因为使用了Write Through策略。因此,节省了一些时间,不会在Miss时将内容带进Cache中,因为它看起来毫无用处。

 
Write Back Write Allocate

Hit:将数据写入Cache并更新dirty位,Main Memory不会被更新。

Miss:更新Main Memory中的内容并将该块带到Cache中;

对同一块的后续写入,如果该块最初导致未命中,则下次将命中Cache,为该块设置脏位。这将消除额外的Main Memory访问,并比Write Through与Write Allocate组合执行更加有效。

 
Write Back No Write Allocate  

Hit:当它写入Cache设置块的脏位时,Main Memory不会被更新;

MIss:更新Main Memory中的块,而不将该块带到Cache中;

对同一块的后续写入,如果该块最初为Miss,则会一直导致Miss,并导致执行效率非常低

 

所以常见的组合是Write Through-No Write AllocateWrite Back-Write Allocate

3. 一个ARM内存实例

下图是M33的Cache策略实例:

 

 

参考文档:

Interaction Policies with Main Memory

Write Through and Write Back in Cache

posted on 2021-03-12 11:12  ArnoldLu  阅读(1852)  评论(0编辑  收藏  举报

导航