学习/题目解析
返回题库
软件设计师 · 高频练习

64KB Cache、64B 块大小时,直接映射的行号需要多少位?

中级 单选题 第 901 题 中等 软件设计师Cache直接映射地址划分计算机组成原理
题目

某计算机主存按字节编址,地址长度为 32 位。Cache 容量为 64KB,数据块大小为 64B,采用直接映射方式。主存地址中的 Cache 行号字段应占()。

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

Cache 共有 64KB/64B=1024 行,即 2^10 行,所以行号需要 10 位。每块 64B,需要 6 位块内偏移;32 位地址剩余 32-10-6=16 位作为标记。

选项分析

A

错误。6 位对应 64B 数据块内部的字节偏移,不是 Cache 行号。

B

正确。Cache 行数为 1024,直接映射要用 10 位选择其中一行。

C

错误。16 位是本题计算得到的标记位数。

D

错误。26 位是去掉块内偏移后的主存块号总位数,其中还包含行号。

本题为什么容易错

最容易混的是“主存块号”和“Cache 行号”。主存块号共有 26 位,但直接映射还要把它继续拆成 16 位标记和 10 位行号。

先看结论

简短答案

64KB Cache、64B 块大小时,直接映射的行号需要多少位,正确答案是 B(10 位)。Cache 共有 64KB/64B=1024 行,即 2^10 行,所以行号需要 10 位。每块 64B,需要 6 位块内偏移;32 位地址剩余 32-10-6=16 位作为标记。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
6 位 本题干扰项 错误。6 位对应 64B 数据块内部的字节偏移,不是 Cache 行号。 看到该词不要急着选,先判断是否真正解决题干问题
10 位 本题正确答案 正确。Cache 行数为 1024,直接映射要用 10 位选择其中一行。 看到题干核心场景时优先联想到它
16 位 本题干扰项 错误。16 位是本题计算得到的标记位数。 看到该词不要急着选,先判断是否真正解决题干问题
26 位 本题干扰项 错误。26 位是去掉块内偏移后的主存块号总位数,其中还包含行号。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 6 位:错误。6 位对应 64B 数据块内部的字节偏移,不是 Cache 行号。
  • 16 位:错误。16 位是本题计算得到的标记位数。
  • 26 位:错误。26 位是去掉块内偏移后的主存块号总位数,其中还包含行号。
复习

知识点详解

直接映射规定每个主存块只能放入唯一的一条 Cache 行,常用“主存块号 mod Cache 行数”确定行号。地址低位是块内偏移,中间位选择 Cache 行,高位标记用于判断该行当前保存的是哪个主存块。组相联映射时,中间字段改为组号,但计算思路相同。

备考速记

块大小定低位,行数定中间,剩下高位做标记。

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

Cache在本题中的核心价值,是解决“某计算机主存按字节编址,地址长度为 32 位。Cache 容量为 64KB,数据块大小为 64B,采用直接映射方式。主存地址中的 Cache 行号字段应占()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出 Cache 容量和块大小,计算地址字段位数。
  • 给出某个主存地址,判断它映射到哪一条 Cache 行。
Cache 在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把Cache放到计算机组成原理场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这类题最稳的做法是先算数量,不要直接拿 64KB 去取对数。一个块装 64B,因此 64KB 的 Cache 能分成 1024 行;1024=2^10,行号就是 10 位。块内 64 个字节的位置由 6 位表示,剩下的 16 位才归标记。三个字段相加回到 32 位,答案也就复核完了。

考点定位

直接映射地址通常拆成标记、行号和块内偏移。先用块大小求偏移位数,再用 Cache 行数求行号位数,最后才算标记位。

易错提醒

  • 把 64KB 当成 64B,容量单位没有先统一。
  • 只算出块内偏移后就把剩余 26 位全部当成行号。
  • 忘记直接映射的行数等于 Cache 容量除以块大小。

备考提示

  • 在草稿上固定写三格:Tag、Index、Offset,再把位数逐格填入。
  • 算完检查三段位数之和是否等于地址总长度。

你可能还想了解

  • 直接映射 Cache 的 Tag、Index、Offset 怎么算?
  • 64B 块大小为什么需要 6 位偏移?
  • 直接映射和组相联映射的地址格式有什么区别?

本文小结

64KB Cache按64B分块后共有1024行,因此行号占10位;64B块内偏移占6位,32位地址剩余16位为标记。计算顺序是先块大小、再行数、最后标记。