缓存分 bank 与 bank 冲突
更新时间:2026-10-01。乱序核每周期可能发起多次 load,单块 SRAM 供不上,分 bank 是标准解法。
本文要回答的问题
- 为什么需要多 bank?
- bank conflict 何时发生、代价是什么?
一、多 bank 提吞吐
把数据阵列切成多个可独立访问的 bank,不同 bank 可同周期并行读写,用较低成本支持多 load/取指,而不必做昂贵的全多端口 SRAM。
二、bank 冲突
若两个访问恰好映射到同一 bank,该周期只能满足一个、另一个延后(bank conflict)。用地址位交错映射 bank(而非连续落同 bank)可降低冲突概率;宽发射核上冲突停顿值得单独统计。
三、常见坑
- 假设每周期任意多次访问都能并行。
- bank 映射用高位导致连续访问挤同 bank。
- 忽略宽发射代码中的 bank 冲突。
小结
分 bank 用便宜方式换多访问吞吐,交错映射降冲突;同 bank 访问要串行,是易被忽略的停顿源。下一篇 缓存访问关键路径。
总结
单块 SRAM 每周期只能服务有限次访问,缓存把数据阵列切成多个独立 bank,用远低于全多端口 SRAM 的代价支持乱序核同周期多发 load/取指;代价是多个访问若映射到同一 bank 就只能串行等一拍(bank conflict),因此地址到 bank 要用低位交错映射、避免连续访问挤在一起。它说明缓存吞吐不只看端口数,bank 划分与映射方式决定了宽发射代码里那些看不见的冲突停顿。