DCU的Evict Buffer和Miss Buffer介绍

先给一句总览:

  • Evict Buffer(Victim Buffer) :管 "被赶出去的旧行"------Cache 满了要替换,被踢掉的那条先放这里,暂存、防颠簸、异步写回。
  • Miss Buffer(MSHR) :管 "没命中的新请求"------Cache 没找到,要去下级内存取,用它记录请求、跟踪回填、允许非阻塞。

下面拆开讲清楚,再给对比表。


一、Evict Buffer(淘汰 / 逐出缓冲)

核心职责

Cache → Evict Buffer → L2 / 内存 专门存放被替换(Evict)出来的旧 Cache 行

什么时候用

  • 发生写分配(Allocate):组满了,必须踢一条旧行,才能进新行。
  • 旧行被踢后:
    • 脏行(Dirty=1):先进 Evict Buffer,后台慢慢写回 L2 / 内存,不阻塞当前流水线。
    • 干净行(Dirty=0):可直接丢,或先放 Buffer 防 "马上又访问"。

关键作用

  1. 防颠簸(Anti-Thrashing):刚踢出去的行,下一拍又被访问 → 直接从 Evict Buffer 捞回,不用重访 L2。
  2. 解耦流水线:不用等脏行写回,Cache 立刻填新行,流水线不卡。
  3. 合并写回:攒几条脏行再批量写,省总线带宽。

数据流向

复制代码
L1 Cache (旧行) → Evict Buffer → L2/内存(异步写回)

二、Miss Buffer(MSHR,缺失缓冲)

核心职责

CPU 请求 → Miss Buffer → L2 / 内存 → 回填 L1 专门跟踪Cache Miss(读 / 写没命中)的请求 ,又叫 MSHR(Miss Status Holding Register)

什么时候用

  • 读缺失(Read Miss):地址不在 L1,要去 L2 / 内存读新行。
  • 写缺失(Write Miss):要写的地址不在 L1,需要 Allocate 新行(先读后写)。
  • 非阻塞 Cache(Non-blocking):Miss 时 CPU 继续跑,Miss Buffer 记录多个 outstanding 请求,等数据回来再回填。

关键作用

  1. 记录未完成请求:每个 Miss 占一项,存地址、类型、状态,防止重复发请求。
  2. 跟踪回填(Fill):L2 返回数据后,按 Buffer 里的记录写回 L1,并唤醒等待的指令。
  3. 支持流水线 / 乱序:一个 Miss 不堵后面的请求,提高吞吐。

数据流向

复制代码
CPU请求 → Miss Buffer → L2/内存(发请求)
L2/内存 → Miss Buffer → L1 Cache(回填)

三、一眼分清:对比表

表格

对比项 Evict Buffer (Victim) Miss Buffer (MSHR)
管什么 被踢出去的旧行 没命中的新请求
数据方向 Cache → 下级内存(出) 下级内存 → Cache(进)
触发场景 替换(Evict)、写分配(Allocate) 读缺失、写缺失(Miss)
核心目的 防颠簸、解耦写回、暂存脏行 跟踪请求、支持非阻塞、协调回填
别名 Victim Buffer MSHR、Miss Queue
容量 4~16 项(小) 4~32 项(稍大)

四、一句话极简记忆

  • Evict Buffer旧的别走,先在这待着(防后悔)。
  • Miss Buffer新的等着,我去帮你拿(管跑腿)。

相关推荐
海棠AI实验室5 个月前
海光DCU部署全攻略:开箱、配置到AI训练的最佳实践|2026工程化版本
人工智能·dcu·海光
Snail_202512145 个月前
海光DCU节点架构
架构·cpu·dcu·海光
JadenOliver6 个月前
基于海光8张Z100L算力服务器,vLLM 部署全量微调过的 qwen2.5-32B大模型。
vllm·dcu·海光·z100l·qwen-2.5-32b·全量微调
腾讯数据架构师6 个月前
海光dcu 虚拟化适配
云原生·kubernetes·mlops·dcu·海光·cube studio·vdcu
花花少年2 年前
快速体验LLaMA-Factory 私有化部署和高效微调Llama3模型(曙光超算互联网平台异构加速卡DCU)
llama-factory·llama3·scnet·dcu·国产异构加速卡
花花少年2 年前
曙光超算互联网平台SCNet之国产异构加速卡DCU
scnet·dcu·国产异构加速卡·曙光超算·超算互联网平台