Skip to content

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

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

题目

某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为 16MB,主存(物理)地址空间大小为 1MB,页面大小为 4KB:Cache 采用直接映射方式,共 8 行:主存与 Cache 之间交换的块大小为 32B。系统运行到某一时刻时,页表的部分内容和 Cache 的部分内容分别如题 44-a 图、题 44-b 图所示,图中页框号及标记字段的内容为十六进制形式。

image-20260501023708961

请回答下列问题∶

(1) 虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框号(物理页号)?

(2) 使用物理地址访问 Cache 时,物理地址应划分成哪几个字段?要求说明每个字段的位数及在物理地址中的位置。

(3) 虚拟地址 001C60H 所在的页面是否在主存中?若在主存中,则该虚拟地址对应的物理地址是什么?访问该地址时是否 Cache 命中?要求说明理由。

(4) 假定为该机配置一个 4 路组相连的 TLB,该 TLB 共可存放 8 个页表项,若其当前内容(十六进制)如题 44-c 图所示,则此时虚拟地址 024BACH 所在的页面是否在主存中?要求说明理由。

image-20260501023723524

解析

本题是地址转换 + Cache 检索 + TLB 检索 的组合大题。三层存储抽象:

  • 虚拟地址 ↔ 物理地址:通过页表(或 TLB 加速);
  • 物理地址 ↔ Cache:直接映射,分 Tag / 行号 / 块内偏移 三段;
  • TLB:组相联结构,靠"组号 + 标记"匹配。

每一步的关键都是 对地址做位段划分——把字节地址按位宽切成几个字段。

(1) 虚拟地址 / 物理地址的位数 [2 分]

虚拟地址位数。 虚拟地址空间 16MB,按字节编址:

虚页号位数。 页面大小 4KB:

故虚页号 = 24 − 12 = 12 位,即虚拟地址的高 12 位([23:12])。

物理地址位数。 主存空间 1MB,按字节编址:

页框号位数。 页内偏移仍是 12 位,故页框号 = 20 − 12 = 8 位,即物理地址的高 8 位([19:12])。

字段虚拟地址(24 位)物理地址(20 位)
高位虚页号 [23:12](12 位)页框号 [19:12](8 位)
低位页内偏移 [11:0](12 位)页内偏移 [11:0](12 位)

(2) 物理地址访问 Cache 的字段划分 [2 分]

直接映射 Cache 把物理地址划分为 Tag / 行号 / 块内偏移 三段(高 → 低):

  • 块内偏移:块大小 32B → 位,占 [4:0];
  • Cache 行号:共 8 行 → 位,占 [7:5];
  • Tag:剩余高位 = 20 − 5 − 3 = 12 位,占 [19:8]。
字段TagCache 行号块内偏移
位数1235
物理地址位[19:8][7:5][4:0]

(3) 虚拟地址 001C60H 是否在主存?是否 Cache 命中?[4 分]

Step 1. 拆解虚拟地址。

虚页号 = 001H

Step 2. 查页表判断是否在主存。

题干的页表 001H 项:有效位 = 1 → 该页在主存中。其页框号 = 04H

Step 3. 拼物理地址。

Step 4. 把物理地址按 Cache 字段切分。

04C60H = 0000 0100 1100 0110 0000B,按 [Tag 12 | 行号 3 | 偏移 5] 切:

字段二进制十六进制 / 十进制
Tag([19:8])0000 0100 110004CH
行号([7:5])0113
块内偏移([4:0])000000

Step 5. 查 Cache 行 3。

题干 Cache 第 3 行:有效位 = 1,但 Tag = 105H04CHCache 不命中

易错点: 看到"有效位为 1"不代表命中,还要比 Tag。直接映射下,主存块只能落到一个固定的 Cache 行,所以只比这一行就够了;但若 Tag 不匹配,说明这行装的是另一个主存块,必须把当前块换进来。

(4) 虚拟地址 024BACH 是否在主存?(用 TLB)[3 分]

Step 1. 算 TLB 的组号 / 标记位宽。

TLB 共 8 项,4 路组相联 → 组数 = 8/4 = 2 组 → 组号 1 位,TLB 标记 = 12 − 1 = 11 位

Step 2. 拆解虚拟地址。

虚页号(高 12 位)= 0000 0010 0100B,再切:

  • TLB 标记(高 11 位):0000 0010 010B = 012H
  • TLB 组号(最低 1 位):0
  • 页内偏移(低 12 位):B AC H

Step 3. 查 TLB 第 0 组(4 路)。

题干 TLB 第 0 组中存在 有效位 = 1、TLB 标记 = 012H 的项 → TLB 命中

结论: 虚拟地址 024BACH 所在页面 在主存中

易错点: 组相联 TLB 的查找不需要遍历所有项,只需查 (组号) 命中的那一组里的 4 路。本题之所以能直接得出"在主存中",是 TLB 命中省去了访问页表这一步。

编者注(生僻术语): TLB(Translation Lookaside Buffer,地址转换后备缓冲)专门缓存"虚页号 → 页框号"的映射,通常组相联,命中后直接拼出物理地址。它和数据 Cache 是两套独立硬件——TLB 缓存"地址翻译",Cache 缓存"数据"。

最后更新:

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