Skip to content

2026年 408 计算机组成原理 第 18 题

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

题目

某计算机按字节编址,数据 Cache 共有 1024 行,采用 4 路组相联映射,主存块大小为 32B,若访问主存地址为 1028 的 4 字节数据,则该数据所在主存块对应的组号为( )。

错因

A

块内偏移当成了组号。1028 mod 32 = 4 是地址在 32 字节块内的偏移位置(用于定位"块里的第几个字节"),与组号无关。组号要先除掉块内偏移、得到块号,再 mod 组数。选 A 的人少做了"先把字节地址压缩成块号"这一步。

B

块大小算成了 64B(误以为按总线 / 字宽算)。这样块号 = 1028 / 64 = 16,组号 = 16 mod 256 = 16。但题目明说块大小 = 32B,不要被"4 字节数据"或"4 路"等数字干扰把块大小算错。

D

块大小算成了 16B。这样块号 = 1028 / 16 = 64,组号 = 64 mod 256 = 64。原因可能是把"4 字节数据访问长度"和"块大小"混在一起算(比如以为块就是访问粒度),或者把 32B 漏掉一半写成 16。

总解析

地址划分通用流程(组相联映射):

3113Tag19 bits125组号8 bits40块内偏移5 bits

上图按本题参数(5 位块内偏移 + 8 位组号 + 19 位 Tag)画出,与标准 32 位地址布局一致。

第一步:求各字段位数

参数计算位数
块大小 = 32 B块内偏移占 5
总行数 / 路数 = 1024 / 4 = 256 组组号占 8
剩余Tag

第二步:把字节地址 1028 拆成上面三段

地址 1028 的二进制:

按 [Tag | 组号 | 块内偏移] 切片(自高位到低位 = 19 + 8 + 5 位):

字段比特位值(十进制)
块内偏移(低 5 位)0 01004
组号(中间 8 位)0010 000032
Tag(高 19 位)全 00

第三步(验证):用除法核对

步骤计算结果
块号(整除)块号 = 32
组号组号 = 32
块内偏移偏移 = 4

两种方法都得到组号 32。

最终答案是 C(32)

关键速查

公式
块号
组号块号 组数
组数总行数 路数
块内偏移字节地址 块大小

避坑

  • 1024 是总行数,不是组数。组数 = 行数 ÷ 路数 = 256
  • 块号要用字节地址 ÷ 块大小,不能直接用字节地址 mod 组数
  • "4 字节数据"是访问长度,与块大小无关

最后更新:

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

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