某计算机主存按字节编址,地址长度为 32 位。Cache 容量为 64KB,数据块大小为 64B,采用直接映射方式。主存地址中的 Cache 行号字段应占()。
Cache 共有 64KB/64B=1024 行,即 2^10 行,所以行号需要 10 位。每块 64B,需要 6 位块内偏移;32 位地址剩余 32-10-6=16 位作为标记。
选项分析
错误。6 位对应 64B 数据块内部的字节偏移,不是 Cache 行号。
正确。Cache 行数为 1024,直接映射要用 10 位选择其中一行。
错误。16 位是本题计算得到的标记位数。
错误。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位为标记。计算顺序是先块大小、再行数、最后标记。