分支预测器和分支目标缓冲区如何共存



我的问题是它们在现代CPU体系结构中是如何共存和协同工作的?

您已经稍微颠倒了一下。在每次获取时,您将索引到分支预测器中,该预测器告诉您刚刚接收到的指令是否将被解码为已获取的分支。如果没有,则获取下一个顺序地址。但是,如果你的分支预测器说它将是一个被占用的分支,你就不知道下一个要取哪个指令,因为你还没有解码这个指令。因此,为了不浪费等待分支解析的周期,您将使用分支目标缓冲区(或BTB)。BTB存储分支重定向控制流的先前地址。使用此机制,您将尝试预测控制流这次将重定向到何处。这种技术对于无条件分支、函数调用和与返回地址堆栈配对时的返回具有100%的成功率。在条件分支上,成功率略低,但考虑到分支目标的高时间局部性,仍然非常好。例如,您可以考虑循环的向后分支,它将始终分支到相同的位置。

当分支指令被实际解析时(通常在流水线的解码或执行阶段,具体取决于实现),您将调整分支预测器和BTB中的值,以便为未来的预测提供更多最新信息。

以下是BTB查找和更新的图片说明:

http://www-ee.eng.hawaii.edu/~tep/EE461/Notes/ILP/buffer.html

相关内容

  • 没有找到相关文章

最新更新