CPU Architect · Technical / Simulator Design

Cache地址分解与缺失成本:容量、关联度和冲突

解释cache时先明确line、set、way及替换/写策略。

题目重点:解释cache时先明确line、set、way及替换/写策略。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练byte-addressed、容量C、line B、A路组相联,C/B/A为二幂set数。
  • 多级延迟按串行访存简化分析;乱序重叠、预取与带宽另算,不能用平均延迟直接预测IPC。

解题路线

  1. offset=address mod B,set=floor(address/B) mod S,tag=floor(address/(B·S))。同set超过A条活跃line会冲突,即使全cache仍有空位。
  2. 区分compulsory/capacity/conflict miss,通过相同trace的无限cache/同容量全相联参考帮助归因。write-through/write-back与write-allocate/no-allocate是不同选择维度。
  3. 训练平均访问延迟hitTime+missRate×missPenalty,必须说明penalty为额外等待且包含何级。实际memory级联每层是条件miss率,不能把全局miss率随意相乘或加。

手动走一遍

C32KiB、B64、A8,S64:offset6bits、set6bits,其余tag。hit1cycle、missRate0.05、额外penalty100,简化平均6cycle;并行访存下吞吐不一定每6cycle一个。

规模与取舍

数据容量C,加tag/valid/dirty/replacement等元数据;访问训练O(A)比较或并行硬件结构,不把软件循环的O(A)当实际硬件固定时延。

易错点与追问

容易失分的边界

  • 两地址同set不必互相驱逐,直到超过关联度。
  • 增容量不一定降低所有延迟,hitTime/面积/功耗可能上升。

继续深挖

  • 怎样设计trace区分容量不足与stride冲突?
  • 预取降低miss但提高带宽时,哪些统计显示净收益?

技术参考

✓已复制微信号!