Skip to content

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

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

题目

某计算机主存地址空间大小为 256MB,按字节编址。虚拟地址空间大小为 4GB,采用页式存储管理,页面大小为 4KB,TLB(快表)采用全相联映射,有 4 个页表项,内容如下表所示。

有效位标记页框号
0FF180H0002H
13FFF1H0035H
002FF3H0351H
103FFFH0153H

则对虚拟地址 03FFF180H 进行虚实地址变换的结果是( )。

错因

B

把虚页号"03FFFH"误匹配到了第 2 行的"3FFF1H"。两个十六进制串看着像,但前 4 位 0x03FF 与 0x3FFF1 的前 4 位 0x3FFF 不同——前者第 4 位是 F、后者第 4 位是 F 但前面是 3FFF1(5 位),整体值不同。匹配虚页号必须整串严格相等,不能"模糊像"就算命中。第 2 行的 frame=0035H 配上 offset=180H 凑出 0035180H,看着合理却是错的。

C

误以为找不到匹配。诱因可能是:① 看到第 1、3 行有效位 = 0 就直接放弃;② 比较 tag 时被前导零干扰,没意识到 0x03FFF 与第 4 行的 0x03FFF 完全相等。第 4 行有效位=1、tag=03FFFH 与虚页号 03FFFH 完全匹配,TLB 命中,不缺失。

D

把"TLB 缺失"和"缺页"概念混淆。即使真的 TLB 没命中,也只是要去内存中查页表——只有页表项的有效位也是 0、即该虚页根本不在主存时,才发生缺页。本题里 TLB 命中(第 4 行),连查页表都没必要,更谈不上缺页。

总解析

第一步:拆地址字段——确定 offset 和 vpn 的边界

  • 页面大小 4KB = 字节 → 页内偏移 12 位
  • 虚拟地址 4GB = → 共 32 位
  • 虚拟页号 = 32 − 12 = 20 位

物理地址侧:

  • 主存 256MB = → 物理地址 28 位
  • 物理帧号 = 28 − 12 = 16 位

第二步:把 03FFF180H 切成 vpn 和 offset

03FFF180H 二进制:

3112vpn20 bits03FFFH110offset12 bits180H
字段位区间十六进制
虚拟页号 vpn[31:12](高 20 位)03FFFH
页内偏移 offset[11:0](低 12 位)180H

注:低 12 位 = 0001 1000 0000 = 180H;高 20 位 = 0000 0011 1111 1111 1111 = 03FFFH。

第三步:在 TLB 里全相联查找 tag = 03FFFH

行号有效位tag页框号是否命中
10FF180H0002H无效,跳过
213FFF1H0035Htag 不等(0x03FFF ≠ 0x3FFF1),失败
3002FF3H0351H无效,跳过
4103FFFH0153H完全匹配 → 命中

第四步:拼物理地址 = 帧号 × 页大小 + 偏移

帧号 0153H 对应物理地址的高 16 位,offset 180H 对应低 12 位:

2712frame16 bits0153H110offset12 bits180H

直接拼接更直观:高位 0153 || 低位 180 = 0153180

最终答案是 A(0153180H)

全相联 TLB 三步法速记

  1. 切地址:先按 page size 把虚拟地址切成 vpn || offset
  2. 遍历 TLB:只看 valid=1 的行,tag 与 vpn 整串严格相等才算命中
  3. 拼物理:命中 → frame || offset;未命中 → 查页表(再看有效位决定 TLB 缺失 vs 缺页)

最后更新:

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

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