You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cache标记位(tag)位数计算及映射方式判定问题

Cache标记位(tag)计算方法

前置默认约定

计组科目中这类Cache计算题目,除非题干明确说明特殊编址规则,否则统一遵循以下默认前提:

  • 主存按字节编址,即1个内存地址对应1Byte的存储单元
  • 块内偏移位长度仅和Cache行(块)大小有关,和地址映射方式无关
  • tag位长度通用计算公式:tag位数 = 主存地址总位数 - 块内偏移位数 - 索引位数,其中索引位长度由映射方式决定:
    • 直接映射:索引位数 = log₂(Cache总行数)
    • 全相联映射:索引位数 = 0
    • N路组相联映射:索引位数 = log₂(Cache总行数 / N)

针对本题的分步推导

1. 计算主存地址总长度

题干给出主存容量为64KB,换算为字节单位是64 * 1024 B = 2^16 B,按字节编址时需要16位地址才能覆盖所有存储单元,因此主存地址总长度为16bit。

2. 计算块内偏移位长度

题干给出Cache每行大小为32Bytes,即32B = 2^5 B,需要5位地址才能索引单个Cache行内的任意字节,因此块内偏移固定为5bit,和映射方式无关。

3. 结合参考答案确认映射规则

已知任课教师给出的tag参考答案为11bit,代入通用公式可反推出索引位长度:
索引位数 = 16 - 5 - 11 = 0bit
索引位为0对应两种等价的地址结构:

  • Cache采用全相联映射
  • Cache采用4路组相联映射(4行全部属于同一个组,组数为1,不需要索引位,地址结构和全相联完全一致)
    如果题目采用直接映射,索引位应为log₂(4)=2bit,对应tag位为16-5-2=9bit;如果采用2路组相联,索引位应为log₂(4/2)=1bit,对应tag位为16-5-1=10bit,均和给出的参考答案不符,因此可以确定本题默认采用全相联映射。

这类题的通用解题步骤

遇到同类型题目时按固定顺序计算即可:

  1. 确定主存地址总位数:默认按字节编址,总位数为log₂(主存总容量/1B);如果题干明确说明按字编址,就先换算为总字数再取对数
  2. 计算块内偏移位:长度为log₂(Cache单块大小/编址单位),该值不受映射方式影响
  3. 根据题干明确给出的映射方式计算索引位长度,没有明确说明时可以结合配套答案反推题目默认的映射规则
  4. 代入通用公式计算tag位长度即可

内容的提问来源于stack exchange,提问作者Jordan Kotiadis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:01:14