本文共 1254 字,大约阅读时间需要 4 分钟。
在采用全相联映射和组相联映射方式时,从主存向 Cache 传送一个新块,当 Cache 中的空间被占满时,就需要使用替换算法置换 Cache行。而采用直接映射则不需要考虑替换算法。
在二路组相联映射中采用 FIFO 替换算法:
在二路组相联映射中采用 LRU 替换算法:
因为 Cache 中的内容是主存块副本,当对 Cache 中的内容进行更新时,就需要选用写操作策略使得 Cache 内容和主存内容保持一致。此时分为两种情况。
当 CPU 对 Cache 写命中时,必须把数据同时写入 Cache 和主存。当某一块需要替换时,不必把这一块写回主存,用新调入的块直接覆盖即可。
当 CPU 对 Cache 写命中时,只需改 Cache 的内容,而不立即写入主存,只有当此块被换出时才写回主存。采用这种策略时,每个 Cache 行必须设置一个标志位(脏位),以反映此块是否被 CPU 修改过。
加载主存中的块到 Cache 中,然后更新这个 Cache 块。写分配法通常与写回法一起使用。(更新 Cahce )
只写入主存,不进行调块。非写分配法通常与全写法一起使用。(更新主存)
写缓冲(Write Buffer):为了减少全写法直接写入主存的时间损耗,在 Cahce 和主存之间增加一个写缓冲。CPU 同时写数据到 Cache 和写缓冲中,写缓冲再控制将内容写入主存。写缓冲是一个 FIFO 队列,写缓冲可以解决速度不匹配的问题。但若频繁写时,会使写缓冲饱和溢出。因此,结合两种模式,我们提出了含有两级 Cache 的系统。L1 Cache 对 L2 Cache 使用全写法,L2 Cache 对主存使用写回法,由于 L2 Cache 的存在,其访问速度大于主存,因此避免了因频繁写时造成的写缓冲饱和和溢出。
转载地址:http://fgkii.baihongyu.com/