首页 > 解决方案 > 为什么将分支目标缓冲区设计为缓存?

问题描述

BHT 不是缓存,也不需要是缓存,因为在访问时出错也没关系。然而,BTB 被设计为缓存,因为它总是必须返回命中或未命中。为什么 BTB 不能出错?

标签: cpu-architecture

解决方案


BTB可能会出错,并且当跳转指令实际执行(或解码,对于直接分支)时会检测到错误推测,从而导致前端重新引导从正确位置获取数据时出现气泡。

或者对于间接分支的无序推测执行,核心可能必须回滚到最后一个已知的良好状态,就像从条件分支的错误分支方向恢复一样。


推荐阅读