计算机体系结构习题求助:Tag大小与Cache总位数计算
Cache总位数计算方法
首先明确:Cache总位数不止包含数据存储区的容量,还要额外计入每个Cache块配套的控制位开销。
已知参数梳理
- 地址位宽:32bit
- 块参数:128项/块,8bit/项 → 单块大小为
128B - Cache布局:6路组相联,数据区总大小192KB
- 写策略:写回(Write Back)
- 已求得Tag位宽:17bit
核心计算公式
Cache总位数 = 数据区总位数 + 所有Cache块的控制位总位数
步骤1:计算Cache总块数
总块数 = Cache数据总大小 ÷ 单块大小
本题代入得:
总块数 = 192KB ÷ 128B = (192×1024B) ÷ 128B = 1536块
步骤2:计算单块控制位大小
每个Cache块的控制位包含三部分:
- Tag位:本题为17bit,用于地址匹配
- 有效位:固定1bit/块,标记当前块是否存储有效数据
- 脏位:写回策略下需额外加1bit/块,标记当前块是否被修改过、是否需要写回主存;写直达策略无需该位
本题单块控制位总和 = 17 + 1 + 1 = 19bit
步骤3:求和得到总位数
- 数据区总位数 = 192KB × 8bit/B = 192×1024×8 = 1572864bit
- 控制位总位数 = 总块数 × 单块控制位 = 1536 × 19 = 29184bit
- Cache总位数 = 1572864 + 29184 = 1602048bit
补充说明:你之前提到的地址结构拆分存在笔误,正确32位地址拆分应为「Tag17bit + 组索引8bit + 块内偏移7bit」,组索引8bit对应2^8=256组(1536块÷6路=256组),块内偏移7bit对应单块128B的寻址需求,三者相加刚好为32bit。
内容的提问来源于stack exchange,提问作者Nessya Nakache
相关产品推荐
相关产品推荐

