跳到主要内容

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 信息。