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位