计算机系统原理:cache容量计算

Cache容量计算例题:

假定主存地址位数为32位,按字节编址,主存和cache之间采用4-路组相联映射方式,主存块大小为4个字,每字32位,采用直写(Write Throght)方式和LRU替换策略,则能存放32K字数据的cache的总容量至少应有( )位。

得分/总分

A.

4672K

B.

1168K

C.

1184K

D.

4736K

正确答案:C

解析: C、cache共有32K字/4字=8K行,因为采用4-路组相联,因而共有8K/4=2K组,组号占11位;每个主存块为4字=4×32位=16B,故块内地址占4位。因此,标志占32-11-4=17位。4路组相联方式下,LRU替换算法需要每行有2位LRU位 (因为要表示0-3的数字吧);直写(Write Throght)方式无需修改位(dirty bit)。因而cache总容量为8K×(1+17+2+4×32)=1184K位。

 

 

Cache 写穿和写回模式

CPU使用高速缓存(dcache)时,它对内存的的写操作有两种模式:写穿(write-throuht)、写回(write-back)。

写穿(write-throuht)模式: 也叫直写式

该模式下,CPU对主存写数据时,不经过dcache直接写到内存,此时对于写的实现比较简单,如果系统只用写穿模式的话,dcache则变成了读缓存了。

写回(write-back)模式:

  1. 什么是写回 
    CPU写入数据时,不直接将数据写入内存,而是写入cache,当cache数据被替换出去时才写回主存。 
    此时存在一个问题,并不是所有的cache中的数据都被修改过,因此没必要把所有替换出去的数据都重新写入主存。 
    为了表示哪些数据被修改过(dcache中是数据和主存中的数据是否不一致),cache中每一块增加了一个记录信息位,CPU修改过的cache时,设置此记录信息位(此时数据块为脏的(dirty), cache数据写入到主存时清理此位(此时数据块为干净的(clean)。 
    有了次记录信息位,数据从cache替换到主存时只替换脏的数据块即可),
  2. 为什么有写回模式 
    大家都是知道cache速度远大于RAM(主存)。通过dcache吸收系统的写操作,在必要的时候再统一写入主存,从而减少频繁的相对较慢的对主存的写操作,这样明显能加速系统。同样的思想在主存与磁盘中也存在。

 

cache容量计算总结:

有效位1位必存在。

如果是写回法:多个1位脏位;如果是直写法,不用多脏位;

在组相联映射中,如果采用LRU替换,2路组相联映射:有1位LRU位,4路组相联映射,有2位LRU位

 

 

 

上一篇:《redis深度历险》十-LRU\LFU


下一篇:设计LRU缓存结构