存储器层次结构
图五
如何从内存中拿地址时先去判断缓冲是否存在
我们首先要了解一下cache的操作流程,见下图.
假如在主存中拿数据的时候有个映射就可以判断是否存在缓冲,这个映射有三种方式
- 直接
- 全相联
- 组相联
图一
图二
这三种方式如何理解呢?如下图,假如我们知道一个主存地址,一部分可以映射到Cache ,一部分是主存储器的位置,直接映射指的是每个主存地址对应Cache 的一个地址.缺点就是新的总是会替换掉久的,但是容易实现,命中时间短.
图三
图四
图五
图四图五分别是全相联和组相联映射,全相联是哪个地址都可以放,到时查找的时候再一个个匹配,可以知道这种方式速度比较慢,
组相联映射则结合以上两种方式,分组后再随意放,组称为一个set .
Cache 命中与不命中几个名词概念
可以有公式验算得出: 要提高平均访问速度,必须提高命中率.
图六
关联度
注意看图中的结论.
图七
图八
Cache写策略
写命中指的是我需要的那个block已经在cache里面了,那么由于我更新值,所以目的就是更新cache 更新 block .write through 就是同时写 cache 和主存单元,当时由于这样子操作太慢了,所以可以使用一种叫 写缓冲的(write buffer ),见图十,write back 是所有操作都在cache 中进行,同时锁住主存中的地址不给访问,让我操作完成后再回写给内存中.
图九
图十
而写不命中指的是我需要写的内存地址,在cache 并没有,一下总结来自参考文章,
1.CPU读Cache时:
●若hit,则CPU直接从Cache中读取数据即可。
●若miss,有两种处理方式:
>Read through,即直接从内存中读取数据;
>Read allocate,先把数据读取到Cache中,再从Cache中读数据。
2.CPU写Cache时:
●若hit,有两种处理方式:
>Write through:把数据同时写到Cache和内存中;
>Write back:先把数据写到Cache中,再通过flush方式写入到内存中。
●若miss,有两种处理方式:
>Write allocate:先把要写的数据载入到Cache中,写Cache,然后再通过flush方式写入到内存中;
>No write allocate:直接把要写的数据写入到内存中。
Cache 数目
问题一
答: 因为是为了流水线的执行,所以分开了指令cache 和 数据cache
问题二
答: 因为 L1要是不命中的话后面还有2和3.
问题三
答: 因为L2 既后续的Cache空间相比1大,而已,可以使用联合cache
问题四
答案:蓝色字