最近看一篇文章讲cache的内容,其中涉及到cache total size的计算,所介绍的方法相对有点复杂,我按自己的理解给一个简单一些的计算方法:
1、计算cache total size
我的解法:
地址一共64位,分为两块:1、cache内部寻址 2、tag使用
总的data是16KB,所以地址中用来cache内部寻址的地址位数一共是:4+10=14bits
那么用做tag的位数就是:64-14=50bits
cache total size = block_num * block_size
block_size = 50 + 32*4 + 1 = 179bits
block_num = 16kB/(4*4)=1k
cache total size = 1k * 179 = 179kbits
2. 地址映射计算
我的解法:
地址1200对应的2进制数:10010110000;
由于cache总的size是 64block * 16byte,其对应的地址为:6位,4位
也就是说在这个cache结构中,字节地址(1200)的最低4bit是block内部寻址地址,后面的6位就是
block index的地址,那么对于 1200:
1 001011 0000
红色部分:block内部寻址地址
蓝色部分:block index的地址
紫色部分:tag内容
所以1200映射的cache地址是 001011 ,对应的10进制就是11