🏷️ 知识点:Cache写策略
假定主存地址位数为32位,按字节编址,主存和Cache 之间采用直接映射方式,主存块大小为4个字, 每字32位,写操作时采用回写 (Write Back) 方式,则能存放4K 字数据的Cache 的总容量的位数至少是 ()。
A.146K
B.147K
C.148K
D.158K
[tag_link]
正确答案:C
直接映射的 地址结构 为: 主存字块标记 | 行号 | 块内地址 主存块大小为 4 个字,每字 32 位,因此块大小为: 4 × 32 bit = 128 bit = 16 B 。计算机按字节编址,故块内地址占 lo g 2 ( 16 ) = 4 位。Cache 可存放 4K 字数据,块大小为 4 字,因此 Cache 行数为: 4 K /4 = 1 K = 1024 , 行号占 lo g 2 ( 1024 ) = 10 位。主存地址位数为 32 位,块内地址占 4 位,行号占 10 位, 因此主存字块标记占 32 − 4 − 10 = 18 位。写操作采用回写(Write Back)方式,每行标记字段包括: 18 位主存字块标记、1 位有效位、1 位脏位, 合计 18 + 1 + 1 = 20 位。每行数据部分大小为 4 字 × 32 位 = 128 位。Cache 总容量为: ( 20 + 128 ) × 1024 = 148 × 1024 位 = 148 Kb
假定编译器将赋值语句“x=x+3;”转换为指令“add xaddr,3”,其中 xaddr 是x 对应的存储单元地址。 若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的TLB, 且Cache 使用直写 (Write Trough) 方式,则完成该指令功能需要访问主存的次数至少是()。
A.0
B.1
C.2
D.3
[tag_link]
正确答案:B
上述指令的执行过程可划分为取数、运算和写回过程,取数时读取 xaddr 可能不需要访问主存而直接访问 Cache,而 直写法 需要把数据同时写入 Cache 和主存,因此至少访问 1 次。
若计算机主存地址为32位,按字节编址,Cache 数据区大小为32KB, 主存块大小为32B, 采用直接 映射方式和回写( Write Back) 策略,则Cache行的位数至少是()。
A.275
B.274
C.258
D.257
[tag_link]
正确答案:A
由于是 直接映射 ,所以物理地址的结构分为以下几个部分: | Tag(17 bits) | Cache 块号(10 bits) | 块内偏移(5 bits) | Cache 行包含以下几个部分:标记(tag 17bits)、有效位(valid 1bit)、修改位(dirty 1bit)、数据区(32B) Cache 行的大小为 17 + 1 + 1 + 32 * 8 = 275