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和主存的映射方式替换算法写策略