(计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)相关的知识,希望对你有一定的参考价值。
文章目录
在(计算机组成原理)第三章存储系统-第六节2:Cache和主存的映射方式(全相联映射、直接映射和组相连映射)和(计算机组成原理)第三章存储系统-第六节3:页面置换算法(FIFO,近期最少使用算法-LRU,LFU)这两篇文章中我们分别探讨了主存、Cache之间的映射关系以及Cache的替换算法。关于Cache,我们最后解决的一个问题就是:如果保持Cache与数据母体的一致性?因为我们知道Cache中保存的只是主存的数据的副本,一旦进行写操作一定会导致两部分数据出现不一致,而对于读操作我们则不关心。这就是Cache写策略所要探讨的问题。
Cache写策略分写命中和写不命中两种情况。
- 写命中:有全写法和写回法
- 写不命中:有写分配法和非写分配法两种
一:写命中
写命中时主存块被调入Cache中,也即要被修改的单元在Cache中
(1)写回法(write-back)
写回法是指当CPU写命中时,只修改Cache中的内容,而不立即写入主存,只有当此块被换出时才写回主存
如下图,绿色主存块写命中修改时只在Cache上修改,而不立即写入主存,只有当绿色快被替换时才会写回主存。这种方法需要判断Cache是否被修改过,因此在对应Cache块还会增加一个“脏位”,用于标识是否修改过,如果对应为1表示修改过,那么在被替换时该Cache块中的内容会被写回至标记位所定位的主存块上。
写回法减少了访存次数,但是存在数据不一致的隐患
(2)全写法(write-through)
全写法又叫写直通法,是指当CPU对Cache写命中时,必须把数据同时写入Cache和主存,当某一块需要替换时,不必把这一块写回主存,新调入的块直接覆盖即可。
全写法实现简单,更能保持数据的一致性,缺点就是增加了访存次数,降低了Cache的效率
因此为了减少全写法直接写入主存的时间损耗,通常会在Cache和主存之间加入写缓冲(Write Buffer)。CPU同时写数据到Cache和写缓冲中,写缓冲再控制将内容写入主存,写缓冲是一个FIFO队列,可以解决速度不匹配的问题(注意频繁写会导致缓冲区溢出)
二:写不命中
(1)写分配法(write-allocate)
写分配法是指当写不命中时,会把主存的块加到Cache中,然后更新此Cache块,它,通常会结合写回法使用。
(2)非写分配法(not-write-allocate)
非写分配法是指当写不命中时,只会写入主存,不会调入Cache,会搭配全写法使用
多级Cache
现代计算机的Cache一般是多级的(通常3级),假定3级Cache**,按离CPU的远近可命名为L1 Cache、 L2 Cache、 L3Cache,离CPU越远,访问速度就越慢,容量也越大,反之相反。**其中指令Cache与数据Cache分离一般在L1级,此时通常为写分配法和写回法合用
下图是一个含有两级的Cache系统,L1对L2使用全写法,L2对主存使用写回法,由于L2的存在,其访问速度远大于主存,因此避免了因频繁写时导致的缓冲区溢出
如下图是资源管理器中显示的Cache信息
以上是关于(计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)的主要内容,如果未能解决你的问题,请参考以下文章
(计算机组成原理)第三章存储系统-第六节1:高速缓冲存储器Cache及其相关基本概念程序访问的局部性原理和命中率