Skip to content

2021年 408 计算机组成原理 第 16 题

计算机组成原理2021年选择题2分

题目

若计算机主存地址为 32 位,按字节编址,Cache 数据区大小为 32KB,主存块大小为 32B,采用直接映射方式和回写策略,则 Cache 行的位数至少是( )。

错因

B

漏算了脏位(dirty bit)。题目明说采用回写策略——回写策略下每行必须配 1 位脏位(标记本行是否被修改过、替换出去时要不要写回主存)。算成 17(tag)+ 1(valid)+ 256(data)= 274,少了一个 1。常见诱因:套用了"全写法(write-through)不需要脏位"的模板,把策略当成全写。

C

漏算了标记位(tag)。把 Cache 行误当成"只装数据 + 控制位",没考虑直接映射也需要 17 位标记区分映射到同一行的不同主存块。计算 1(valid)+ 1(dirty)+ 256(data)= 258。直接映射下"主存块 → Cache 行"是多对一关系,没有 tag 根本没法判定命中。

D

同时漏算 tag 和 dirty,只剩 1(valid)+ 256(data)= 257。两个漏点叠加。这是把 Cache 行简化成"标志位 + 数据"模型时最极端的版本,公式应是 行 = tag + valid + dirty + data(直接映射 + 回写)。

总解析

第一步:分解主存地址结构

3115Tag17 bits145Index10 bits40Offset5 bits
  • 块内偏移:主存块 = 32B = 5 位
  • 行索引:Cache 行数 = 10 位
  • 标记:$32 - 10 - 5 = $ 17 位

第二步:列出 Cache 行的组成

字段位数必需性
有效位 valid1总要——标识本行是否装有有效数据
脏位 dirty1回写策略才有——记录本行是否被改过
标记 tag17直接映射 / 组相联都要
数据 data块大小 × 8

第三步:求和

最终答案是 A(275)

Cache 行公式速查

写策略行结构
全写(write-through)valid + tag + data
回写(write-back)valid + dirty + tag + data

关键易错点

  1. 回写必带脏位——题目里看到"回写"立刻在公式里 +1 位
  2. tag 位数 = 主存地址位数 − 索引位数 − 块内偏移位数
  3. data 部分单位是 (块大小 × 8),不要写成字节

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数