You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomasulo算法缓存行为疑问:分支预测失败后的命中判断及更新时机

问题解答

1. 缓存命中还是缺失?

这是缓存命中。原因如下:

  • 缓存总容量32字节,块大小16字节,当前已存入a0、a1两个16字节的块,刚好填满缓存空间。
  • 加载a2的操作因分支预测失败未完成阶段,说明a2的块还未写入缓存,缓存内的内容仍然是a0和a1。
  • 新指令请求加载的a0仍在缓存中,因此直接命中。

2. 缓存更新与加载流水线相关问题

  • 缓存内容更新时机:缓存的更新(即写入新内存块)发生在加载指令完成**写回阶段(WB)**之后。只有当加载操作成功从内存获取数据,且完成流水线所有必要阶段(访存、写回等),才会将新块写入缓存并更新LRU等缓存状态。若加载指令因分支预测失败被冲刷(flush),该操作会被终止,不会完成后续阶段,缓存自然也不会被更新。
  • 加载指令的流水线执行阶段是否必须完成?
    • 缓存命中场景:加载指令通常在访存阶段即可获取缓存中的数据,无需等待完整的执行阶段(访存阶段已完成核心数据获取),后续阶段可快速推进。
    • 缓存缺失场景:需要等待内存返回数据,此时流水线会 stall 至数据到达,之后完成剩余阶段。但如果中途出现分支预测失败等情况,未完成的加载指令会被直接丢弃,不会完成后续阶段,也不会更新缓存。

内容的提问来源于stack exchange,提问作者Andreas Christophilopoulos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:59:54