(2015.15)假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用写回法,则能存放4K字数据的Cache的总共容量位数至少是 C.
A. 146K B. 147K C.148 D.158K
这题解题的前提是计算题中Cache中保存了什么,也就是Cache的工作原理,这里简单阐述一下:
根据所给的主存地址,分离出主存地址中的主存字块标记,通过这个主存字块标记,检索Cache中是否存在该主存字块标记,并该块在Cache中有效位为1(这里设有效位为1表示有效),此时便找到了这个数据块,在进行后续操作即可。。。
直接映射下主存地址格式 | 主存字块标记= ( 位数=主存容量大小/Cached数据大小) (由Cache存下) | Cache行号 | 字块内地址 | |
全相联映射下主存地址格式 | 主存字块标记(Cache存下) | 字块内地址 | ||
组相联映射下主存地址格式 | 主存字块标记(Cache存下) | 组地址 | 字块内地址 |
Cache每行中存储(有效位,脏位(写回法有该位,全写法没有该位),主存字块标记,数据块)
现在就可以来解题了
第一步分析计算
cache行数:4K/4=1K行
第二步分析计算:
已经得到Cache行数,现在求每行有的位数,这两个相乘,便是Cache至少总共容量位数
方法一:(主存字块标记 位数=主存容量大小/Cached数据大小)=18
方法二: =总地址位数—Cache行号—字块内地址(按字节)=32-10-4=18
本题采用写回法,需要每行设置有脏位(1位),如果本题采用全写法(写直通法)就不需要设置脏位。
每行必有有效位(1位)
每行数据位有:一个数据块,4个字也就是128位.
Cache每行二进制位数=128(数据位数)+1(脏位)+1(有效位)+18(主存字块标记)=148位
第三步计算cache总容量:
行数*行大小=1K*148=148K
答案选择:C