为什么缓存回写会以它的方式发生?

时间:2016-01-15 20:55:54

标签: caching memory operating-system computer-architecture

Wikipedia says:

  

当系统将数据写入缓存时,它必须在某个时刻将该数据写入后备存储。

为什么呢?我的课程说明并不能证明这一点。是否有任何组件,但处理器对缓存中的内容感兴趣?显然这种镜像甚至不是很紧急,因为我们可以推迟写作......

  

此写入的时间由所谓的写入策略控制。

     

有两种基本的写作方法:

     
      
  • ...

  •   
  • 回写(或后写):最初,只对缓存进行写入。对后备存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。

  •   

所以它被推迟,直到即将被替换?这有什么意义 - 你正在镜像你知道即将改变的信息!当添加块时,为什么不这样做?

1 个答案:

答案 0 :(得分:1)

让我们假设我们正在讨论CPU缓存。实际上,以下规则适用于所有类型的回写高速缓存(例如数据库等)。

缓存的一个目标是使用时间局部性:少量内存地址经常写入(" hot"地址),而所有其他地址都是& #34;冷&#34 ;.例如" hot"地址是程序的堆栈,因为每次程序进入函数时,参数都会被复制到堆栈中,每次程序存在函数时,都会从中删除参数。因此,不断重用相同的堆栈地址。在这种情况下直接使用RAM会非常慢(RAM延迟约为200个CPU周期,L1缓存延迟仅为~4个周期)。这就是为什么当执行写操作时,它只修改缓存条目,并且此缓存条目也标记为"脏"。当以下事件之一发生时,此缓存条目将在稍后与RAM同步:

  1. 对缓存中不存在的某个地址执行了写操作。因为所有缓存条目通常都被占用,所以我们需要搜索" victim"缓存条目。如果这是"受害者"缓存条目是脏的(a),然后需要将其复制到主存储器中(运行缓慢,CPU在执行时被阻止)。如果不是(b),则只需删除(快速)此缓存条目。
  2. 内存子系统尝试降低(a)支持(b)的可能性。它是通过定期复制后台中的所有脏缓存条目并从中删除脏标志来实现的。