先给一句总览Evict BufferVictim Buffer管 “被赶出去的旧行”——Cache 满了要替换被踢掉的那条先放这里暂存、防颠簸、异步写回。Miss BufferMSHR管 “没命中的新请求”——Cache 没找到要去下级内存取用它记录请求、跟踪回填、允许非阻塞。下面拆开讲清楚再给对比表。一、Evict Buffer淘汰 / 逐出缓冲核心职责Cache → Evict Buffer → L2 / 内存专门存放被替换Evict出来的旧 Cache 行。什么时候用发生写分配Allocate组满了必须踢一条旧行才能进新行。旧行被踢后脏行Dirty1先进 Evict Buffer后台慢慢写回 L2 / 内存不阻塞当前流水线。干净行Dirty0可直接丢或先放 Buffer 防 “马上又访问”。关键作用防颠簸Anti-Thrashing刚踢出去的行下一拍又被访问 → 直接从 Evict Buffer 捞回不用重访 L2。解耦流水线不用等脏行写回Cache 立刻填新行流水线不卡。合并写回攒几条脏行再批量写省总线带宽。数据流向L1 Cache (旧行) → Evict Buffer → L2/内存异步写回二、Miss BufferMSHR缺失缓冲核心职责CPU 请求 → Miss Buffer → L2 / 内存 → 回填 L1专门跟踪Cache Miss读 / 写没命中的请求又叫MSHRMiss Status Holding Register。什么时候用读缺失Read Miss地址不在 L1要去 L2 / 内存读新行。写缺失Write Miss要写的地址不在 L1需要 Allocate 新行先读后写。非阻塞 CacheNon-blockingMiss 时 CPU 继续跑Miss Buffer 记录多个 outstanding 请求等数据回来再回填。关键作用记录未完成请求每个 Miss 占一项存地址、类型、状态防止重复发请求。跟踪回填FillL2 返回数据后按 Buffer 里的记录写回 L1并唤醒等待的指令。支持流水线 / 乱序一个 Miss 不堵后面的请求提高吞吐。数据流向CPU请求 → Miss Buffer → L2/内存发请求 L2/内存 → Miss Buffer → L1 Cache回填三、一眼分清对比表表格对比项Evict Buffer (Victim)Miss Buffer (MSHR)管什么被踢出去的旧行没命中的新请求数据方向Cache → 下级内存出下级内存 → Cache进触发场景替换Evict、写分配Allocate读缺失、写缺失Miss核心目的防颠簸、解耦写回、暂存脏行跟踪请求、支持非阻塞、协调回填别名Victim BufferMSHR、Miss Queue容量4~16 项小4~32 项稍大四、一句话极简记忆Evict Buffer旧的别走先在这待着防后悔。Miss Buffer新的等着我去帮你拿管跑腿。