cache主存同时访问缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cache主存同时访问缺点相关的知识,希望对你有一定的参考价值。

参考技术A 其中一个缺点就是,程序的执行时间变得不确定。

因为cache很小并且只保存主存的一个子集,cache会在程序执行时迅速填满。当cache被填满时,必须删除(evict)现有指令或数据以为新的指令或者数据腾出空间。

因此,在任何给定时间,程序或者程序员都无法确定是否能够在cache中找到特定的指令或数据。

实时系统

这意味着不同cache状态下特定程序的执行时间可能会有很大差异。所以,在实时系统(强调确定性)中,cache行为的不确定性是一个很大的问题。

外设空间

有时,程序员希望能够立马从外设寄存器中读取最新数据,例如timer,这个时候外设寄存器的值就不应该填充到cache中。

cache写回策略

有时,我们希望确认处理器内核写入的数据已经到达内存,而不是仅停留在cache中。

cache一致性

有时,cache和主存的内容可能不一样,这是因为处理器更新了cache的内容,这些内容还没有写回(write-back)。或者多个内核共享内存,其中一个内核修改了主存,而另一个内核的cache中还包含旧的无效数据。

Cache写机制

Cache 写机制分为:Write-through和Write-back

 

Write-through(直写模式)

定义:在数据更新时,同时写入缓存Cache和后端存储(主存);

优点:操作简单;

缺点:因为数据修改需要同时写入存储,数据写入速度较慢。

 

对于写缺失使用no write allocate policy(见下文)的write through 处理流程

 

 

Write-back(回写模式)

定义:在数据更新时只写入缓存Cache,只在数据被替换出缓存时,被修改(用dirty标记)的缓存数据才会被写到后端存储(主存);

优点:数据写入速度快,因为不需要写到后端存储(主存);

缺点:一旦更新后的数据未被写入存储时出现系统掉电的情况,数据将无法找回。

 

对于写缺失使用write allocate policy(见下文)的write back 的处理流程:

注意:上述两种写模式都是针对当缓存cache中存在要写的数据的地址时的分配策略,然而,当要写的数据的地址不在缓存cache中,即发生Write miss。

 

Write-miss(写失效)

write-miss(即所要写的数据的地址不在cache中)的处理方式有两种:

no write allocate policy:将要写的内容直接写回main memory;

write allocate policy:将要写的地址所在的块先从main memory(主存)调入cache中,然后写cache;

 

注意:拿L1 Dcache为例,因为对一个cache line的写入一般不会刚好是一个cache line的长度(抓了trace看过,肉眼观察是8个字节的访问粒度居多),

一个cache line一般是64字节,你的一次register spilling只有几个字节,也就是说你的一次写入只更新了一个cache line的一小部分,其他部分的值必须保持和内存一致,

所以你不能在cache里随便找一个地方就写,而是要先把旧值取上来,再写入,这是write-allocate的做法。

 

以上是关于cache主存同时访问缺点的主要内容,如果未能解决你的问题,请参考以下文章

计算机组成原理 王道考研2021 第三章:存储系统 -- 高速缓冲存储器Cache基本概念和原理(程序访问的局部性原理)Cache和主存的映射方式替换算法写策略

高速缓冲存储器例题二

(计算机组成原理)第三章存储系统-第六节1:高速缓冲存储器Cache及其相关基本概念程序访问的局部性原理和命中率

底层原理深入理解Cache (上)

主存/外存层次和cache/主存层次的共同点

Cache写机制