软件设计师 · 高频练习

32位地址、64KB Cache、64B块、二路组相联时Tag有多少位?

中级 单选题 第 1085 题 较难 软件设计师Cache二路组相联地址划分计算机组成原理
题目

某计算机主存地址为32位,Cache数据容量为64KB,块大小为64B,采用二路组相联映射。忽略有效位等附加信息,主存地址中的Tag、组索引和块内偏移位数依次为()。

A 17位、9位、6位
B 16位、10位、6位
C 18位、8位、6位
D 17位、6位、9位
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

块大小64B=2^6B,所以偏移6位。Cache行数为64KB÷64B=1024行;二路组相联每组2行,因此有512组=2^9组,组索引9位。Tag=32-9-6=17位。

选项分析

A

正确。Tag 17位、组索引9位、块内偏移6位,合计32位。

B

错误。10位是直接按1024行计算得到,忽略二路相联后每组含2行。

C

错误。8位组索引对应256组,与题目容量和二路条件不符。

D

错误。把组索引和块内偏移的位置及位数颠倒。

本题为什么容易错

“64KB除64B等于1024”这一步没错,错在1024是Cache行数,不是二路组相联的组数。每组容纳两行,组数还要再除2。

先看结论

简短答案

32位地址、64KB Cache、64B块、二路组相联时Tag有多少位,正确答案是 A(17位、9位、6位)。块大小64B=2^6B,所以偏移6位。Cache行数为64KB÷64B=1024行;二路组相联每组2行,因此有512组=2^9组,组索引9位。Tag=32-9-6=17位。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
17位、9位、6位 本题正确答案 正确。Tag 17位、组索引9位、块内偏移6位,合计32位。 看到题干核心场景时优先联想到它
16位、10位、6位 本题干扰项 错误。10位是直接按1024行计算得到,忽略二路相联后每组含2行。 看到该词不要急着选,先判断是否真正解决题干问题
18位、8位、6位 本题干扰项 错误。8位组索引对应256组,与题目容量和二路条件不符。 看到该词不要急着选,先判断是否真正解决题干问题
17位、6位、9位 本题干扰项 错误。把组索引和块内偏移的位置及位数颠倒。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 16位、10位、6位:错误。10位是直接按1024行计算得到,忽略二路相联后每组含2行。
  • 18位、8位、6位:错误。8位组索引对应256组,与题目容量和二路条件不符。
  • 17位、6位、9位:错误。把组索引和块内偏移的位置及位数颠倒。
复习

知识点详解

组相联Cache中,主存块先由组索引定位到唯一一组,再比较该组各路的Tag。提高相联路数会减少组数和Index位数,增加同组候选位置;块大小不变时Offset位数不变。

备考速记

块定偏移,路数分行成组,剩下全归Tag。

Cache 在计算机组成原理场景中的作用

本题若改为四路组相联,组数变为256,Index为8位,Tag为18位。用这种改参对比,比单独背答案更容易掌握规律。

拓展

同类题怎么考

  • 计算组相联Cache的组数和地址字段。
  • 比较直接映射、全相联与组相联的索引位变化。
Cache 在软件设计师软考中的考法

题目给容量、块大小和相联路数时,先写公式:组数=Cache容量÷块大小÷路数。后面只做以2为底的位数换算。

解题思路

按三个小问题算:一块多大决定Offset,多少组决定Index,剩余才是Tag。64B对应6位;64KB里有1024块,二路意味着两块一组,所以只有512组,对应9位;最后32-6-9=17,选A。

考点定位

先求总行数,再除以相联路数得到组数。最常见的错误是把1024行直接当成1024组。

易错提醒

  • 把64KB写成64000B,导致不是2的幂。
  • 相联路数乘到组数上,而不是用总行数除以路数。
  • 把Tag存储开销计入题干给出的数据容量,混淆题意。

备考提示

  • 固定顺序:Offset看块,Index看组,Tag做减法。
  • 算完检查三段位数之和是否等于地址总位数。

你可能还想了解

  • 二路组相联的组数怎么算?
  • 64B块为什么是6位偏移?
  • 相联路数增加时Tag位怎么变?

本文小结

64KB Cache含1024个64B行,二路组相联得到512组;Offset 6位、Index 9位,32位地址剩余17位为Tag。