mips - MIPS 架构:如果在执行 beq r1,r3,00 之类的操作时 r1 不等于 r3 会发生什么?
问题描述
哪条指令将进入流水线,那些已经获取并在流水线中的指令会产生什么结果?
解决方案
这取决于处理器的实现。
一些处理器会预测该分支将通过而不是被采用。对于您的问题,正确预测的处理器不会受到任何惩罚。
预测机制的复杂性和确定成功/失败预测的时间差异很大。在预测不正确的情况下,可能会丢失一个或多个周期,但这又取决于实施情况,多年来 MIPS 已经有很多这样的情况。
多年来,预测已经从简单的预测(所有分支:预测未采用)改进为使用基于动态历史的预测。在某些演变过程中,在进行动态预测时,实际进行预测的阶段也在管道中向后移动。此外,最终决定实际分支/不决定的管道阶段也在管道中向后移动。这些改进限制了错误预测的数量,以及错误预测所浪费的周期。
提取的指令(因此开始执行)但在错误预测的代码路径上根本没有提交,浪费了一个周期,有些人称之为泡沫。
推荐阅读
- tsql - 如何在字符串中查找/替换奇怪的空格
- linux - Docker Redis 从使用 -v 的持久存储开始会给出错误(chown:更改 '.' 的所有权:权限被拒绝)
- c++ - 设备 serial-master/src/unix.cpp 的 ioctl 不合适
- php - 如何获取测试的 Doctrine 类元数据?
- angular - 创建一个包含其他组件的组件
- elasticsearch - 在 Kibana 中可视化漏斗
- swift - Xcode显示弹出但没有错误
- android - 应用程序在后台运行时在三星手机中重新启动,并且用户从建议的应用程序中单击应用程序图标
- typescript - 使用映射类型将泛型类型数组映射到不同的(返回)数组
- freeswitch - freeswitch什么时候停止向asr引擎传输语音流?