Skip to content

2024年 408 计算机组成原理 第 17 题

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

题目

某计算机按字节编址,采用页式虚拟存储管理方式,虚拟地址为 32 位,主存地址为 30 位,页大小为 1KB。若 TLB 共有 32 个表项,采用 4 路组相联映射方式,则 TLB 表项中标记字段的位数至少是( )。

错因

A

可能是把"TLB 32 项"当成了"32 个组"(漏看了 4 路组相联):组数 = 32 → 组号位数 = → 标记 = 22 − 5 = 17。错点是没区分"项"和"组"——4 路组相联意味着每组有 4 项,组数 = 项数 / 路数 = 32 / 4 = 8,组号占 3 位,不是 5 位。

B

把"4 路"直接当成"组号位数"——做 22 − 4 = 18。这是对组相联结构的常见误读:"4 路"是每组的项数,不是地址域里组号的位数。组号位数取决于组数,由 决定。组数 = 32 / 4 = 8 → 组号 3 位 → 标记 = 22 − 3 = 19,不是 18。

D

可能是把"主存地址 30 位 − 页内偏移 10 位 = 20 位"的物理页号当成了 TLB 标记。TLB 标记字段对应的是"虚拟"页号去掉组号后的高位,不是物理页号——TLB 用虚拟地址查找,标记必须由虚拟页号产生(22 − 3 = 19)。物理页号在 TLB 表项的"数据"部分(命中后输出)里,不在"标记"字段里。

总解析

TLB 表项的标记字段位数 = 虚拟页号位数 − 组号位数

逻辑:组相联映射下,虚页号被劈成"组号 + 标记"两部分——组号决定查哪一组,标记用来在组内 4 路中精确匹配。

第一步:求虚拟页号位数

  • 虚拟地址 = 32
  • 页大小 = 1 KB = B → 页内偏移 = 10
  • 虚拟页号 = 32 − 10 = 22
3110vpn22 bits22位90offset10 bits10位

第二步:求组号位数

  • TLB 共 32
  • 4 路组相联 → 每组 4 项 → 组数 = 32 / 4 = 8
  • 组号位数 = 3

第三步:把虚页号劈成"标记 + 组号"

213tag19 bits19位20set_index3 bits3位

最终答案是 C(19)

通用公式速记

公式
页内偏移
虚拟页号虚拟地址位数 − 页内偏移
组数TLB 项数 ÷ 路数
组号位数
TLB 标记位数虚页号位数 − 组号位数

易错点

  • "项"≠"组"——n 路组相联下,组数 = 项数 / 路数
  • TLB 标记看的是虚拟页号,不是物理页号(物理页号是 TLB 表项的"数据"部分而非"标记"部分)
  • 路数(n)≠ 组号位数;组号位数 =

最后更新:

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

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