分支预测怎么知道自己猜错了

发布于 2022-08-27 12:26:45 字数 53 浏览 26 评论 0

分支预测如果猜对了可以调高执行效率,如果猜错了要回滚,我的问题是机器是如何知道自己猜错了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幻想少年梦 2022-09-03 12:26:45

分支预测并不是说不预测的那个分支就扔了!!!

理解分支预测就需要理解流水线技术。宏观上看做单元操作的一条CPU指令,事实上需要经过n个过程来完成(举例:读取、解码、执行、写回)。如果一个命令有n个操作,而真的一个命令完全执行了,再去开始下一条命令……则同时只有1个硬件动作,硬件的利用率和时间效率都是1/n。

所以流水线技术就是说第1条命令的动作2开始的时候,第2条命令的动作1也同步开始,以此类推。这样硬件可以全部被同时利用。

这种操作在顺序执行的时候没说的,但在遇到条件判断时,由于跳转指令没做完,不知道下一条语句是什么,本来流水线是没法继续的(必须等待)。分支预测器就是在此时赌一个分支,按照这个分支跑下去,哪怕暂时牺牲后边语句的正确性,也要让流水线一直保证占满。

但是此时流水线最前边的判断语句,仍然是在运行中的!当判断语句运行完毕之后,分支预测器比较自己的预测和语句实际运行的结果,当然就知道自己猜错了。

此时清空流水线把错误的执行结果全部扔掉(倒车操作),就可以让程序继续执行下去。

大致如此,定性回答。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文