Skip to content

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

计算机组成原理2021年综合题11分

题目

假设计算机 M 的主存地址为 24 位,按字节编址;采用分页存储管理方式,虚拟地址为 30 位,页大小为 4KB;TLB 采用 2 路组相联方式和 LRU 替换策略,共 8 组。请回答下列问题。

(1) 虚拟地址中哪几位表示虚页号?哪几位表示页内地址?

(2) 已知访问 TLB 时虚页号高位部分用作 TLB 标记,低位部分用作 TLB 组号,M 的虚拟地址中哪几位是 TLB 标记?哪几位是 TLB 组号?

(3) 假设 TLB 初始时为空,访问的虚页号依次为 10、12、16、7、26、4、12 和 20,在此过程中,哪一个虚页号对应的 TLB 表项被替换?说明理由。

(4) 若将 M 中的虚拟地址位数增加到 32 位,则 TLB 表项的位数增加几位?

解析

本题考查 TLB 作为"存放页表项的 Cache" 的解读方式:把 TLB 当 Cache 来分析它的字段、命中、替换。关键映射:

  • 虚页号 → 像主存块号一样被切成 TLB 标记 + TLB 组号
  • 2 路组相联 → 每组容纳 2 项;
  • LRU → 当组满且新项要进时,替换掉"最近最少使用"的那一项。

(1) 虚拟地址的字段划分 [2 分]

页大小 4KB = B → 页内偏移 12 位。虚拟地址 30 位:

字段位数地址位
虚页号18[29:12]
页内偏移12[11:0]

(2) TLB 标记与 TLB 组号 [2 分]

TLB 共 8 组、2 路组相联:

虚页号 18 位拆成:

TLB 字段来源(取自虚页号)位数在虚拟地址中的位
TLB 标记虚页号高 15 位15[29:15]
TLB 组号虚页号低 3 位3[14:12]

(3) 哪个虚页号被替换?[4 分]

Step 1. 算每个虚页映射到哪个 TLB 组。 公式:组号 = 虚页号 mod 8。

访问序号虚页号TLB 组号(mod 8)
1102
2124
3160
477
5262
644
7124
8204

Step 2. 跟踪每个 TLB 组的状态。

只有组 4 被多次命中,且访问数 > 2 路容量。其他组都不超过 2 次访问,不需替换。集中跟踪组 4:

步骤访问组 4 内容([最旧,..最新])动作
2VPN=12[12]装入
6VPN=4[12, 4]装入(组内 2 路填满)
7VPN=12[4, 12]命中,更新 LRU 顺序
8VPN=20[12, 20](4 被替换出)替换 VPN=4(最近最少用)

结论:访问第 8 次(VPN=20)时,VPN=4 的 TLB 项被替换。

易错点(LRU 跟踪): 步骤 7 访问 VPN=12,此时组 4 命中(不引发装入),但需要更新 LRU 顺序——把 12 标为最新使用,4 滑落为"最近最少用"。这是步骤 8 替换 4 的关键铺垫。

(4) 虚拟地址扩到 32 位时 TLB 表项增几位 [3 分]

虚拟地址 30 → 32 位,多出 2 位都加在虚页号上:

虚页号被划分为 TLB 标记 + TLB 组号。组号位数由 TLB 容量决定(8 组 → 3 位,不变),所以 多出来的 2 位全部进入 TLB 标记字段

每个 TLB 表项 = 标记 + 实页号 + 控制位(有效位、LRU 等)。其中:

  • TLB 标记 + 2 位;
  • 实页号位数 = 物理地址 24 - 12 = 12 位(不变,物理地址未变);
  • 控制位(有效位、LRU、脏位等)也不变。

编者注(生僻术语): 虚拟地址扩展不影响物理地址也是页式管理的常见操作——比如 x86-64 一开始用 48 位虚拟地址、52 位物理地址,后来虚拟扩到 57 位,物理扩到 56 位,但 TLB 标记字段变化的幅度只对应虚页号宽度差。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题