(计算机组成原理)第三章存储系统-第六节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及其相关基本概念程序访问的局部性原理和命中率

(计算机组成原理)第三章存储系统-第六节2:Cache和主存的映射方式(全相联映射直接映射和组相连映射)

网络层-第六节4:边界网关协议BGP的基本工作原理

网络层-第六节2:路由信息协议RIP的基本工作原理

网络层-第六节3:开放最短路径优先OSPF的基本工作原理

应用层-第六节:电子邮件