DCache、SBuffer 与一致性边界
DCache 是 LSU 与缓存一致性系统的交界。它不仅服务普通 Load/Store,还要处理 refill、writeback、probe、原子操作和错误信息。
源码入口
cache/dcache/DCacheWrapper.scala:顶层 IO、Cache 组织和流水连接;cache/dcache/下的 load/store/main pipe;mem/sbuffer/:已提交 Store 的缓冲与合并;- 下层 TileLink/一致性接口:连接 L2。
Load 命中路径
地址经翻译后访问 meta/data array,tag 命中且权限允许时返回数据。未命中则进入 miss machinery;同一 Cache line 上的后续请求可能合并或等待。
SBuffer 的作用
Store 在 ROB 提交后已是架构上不可撤销的,但未必能当拍写入 DCache。SBuffer 解耦提交带宽和 Cache 写端口,并可合并相邻写入;同时必须参与后续 Load 的数据转发与顺序判断。
一致性事件
外部 probe 可能要求数据降级或失效。若本地存在尚未排空的写入或正在执行的 Load,DCache/LSU 必须协调,不能只把它当成普通读写 Cache。
波形检查表
tag hit、bank conflict、miss request/MSHR、refill、SBuffer enq/deq、probe、writeback,以及返回 LSU 的 replay/exception 信息。