Skip to content

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

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

题目

某计算机主存地址为 32 位,按字节编址,某 Cache 的数据区容量为 32KB,主存块大小为 64B,采用 8 路组相联映射方式,该 Cache 中比较器的个数和位数分别为( ),

错因

B

比较器个数选对(8 个),但 Tag 位数算错。把组索引位数用错——可能用 替代了 ,于是 位。易错根源:混淆了"路数 = 组内行数"和"组索引位数 = 组数的对数"。

C

Tag 位数算对了(20),但比较器个数搞错——把组数 64 当成了比较器数。组相联里每次访存只激活 1 个组,组内 8 行需要 8 个比较器并行比对——总共需要的比较器是"路数"(= 组内行数 = 8),不是"组数"。把组数当比较器数实际上接近"全相联"的算法(全相联里所有 Cache 行同时参与比较,比较器数 = 行数)。

D

两个都错(同 B + C)。组索引用 算成 3 → tag = 23;比较器用组数 = 64。两个错叠加。

总解析

第一步:拆主存地址

主存地址 32 位,按字节编址:

字段位数来源
块内偏移 Offset块大小
组索引 Index见第二步
标记 Tag剩余

第二步:算组数与组索引位

总 Cache 行数 = 行。

8 路组相联 → 每组 8 行 → 组数 = 组。

→ 组索引位数 = 位。

第三步:算 Tag 位数

3112Tag20 bits116Index6 bits50Offset6 bits

第四步:算比较器个数

组相联 Cache 命中判定流程:

  1. 用 Index 选中1 个组(共 64 组中的某一组)
  2. 该组内有 8 行(8 路)
  3. 把待查的 Tag 同时与 8 行的 Tag 比对——需要 8 个比较器并行
映射方式比较器个数比较器位数
直接映射1Tag 位数
8 路组相联8Tag 位数(= 20)
全相联总行数(= 512)Tag 位数

结论:8 个比较器,每个 20 位。

最终答案是 A(8,20)

关键易错点

  1. 比较器个数 = 路数(不是行数、也不是组数)
  2. 组索引位数 = ,不是
  3. 组数 = 总行数 ÷ 路数

速查表(这道题)

公式
总行数容量 ÷ 块大小
组数总行数 ÷ 路数
组索引位6 位
块内偏移6 位
Tag 位地址位 − 索引 − 偏移
比较器个数= 路数8

最后更新:

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

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