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