assembly - 如何确定误判惩罚?(CPU流水线)
问题描述
我正在读一本教科书,上面写着:
假设错误预测的概率是 p,执行代码没有错误预测的时间是 T OK并且错误预测的惩罚是 T MP。那么执行代码的平均时间作为 p 的函数是:
T avg (p) = (1− p)T OK + p(T OK + T MP )
我有点困惑,不应该是:
T avg (p) = (1− p)T OK + pT MP
例如,假设p为0.5,当分支预测正确时cpu需要10个时钟周期,而当分支预测不正确时cpu需要20个时钟周期,平均时钟周期不是0.5(10+20)= 15 个时钟周期?
解决方案
T MP定义为错误预测惩罚,或识别处理器采取错误路径并回到执行正确路径的轨道的时间量,其中不包括实际执行正确路径所需的时间,即 T好的。这就是为什么当出现错误预测时,需要 T MP + T OK而不仅仅是 T MP来完成执行。
推荐阅读
- cordova - Cordova 应用程序卡在 iOS 14 Beta 的启动画面上
- entity-framework-core - EF Core 3.1.7 表中多个 1:1 关系的数据注释
- python - 如何在同一个 paho-mqtt 脚本下运行多个设备
- pandas - 如何使用 pandas groupby 功能更改 X 标签?
- java - 如何提高迭代循环的性能
- python - 从 google colab 文档执行代码以创建 Deepfakes 图像动画时出现运行时错误
- javascript - Chrome选项卡重复未发出网络请求
- java - 如何在 Java8 中为编码竞赛获取输入?
- css - CSS动画延迟不适用于角度和scss - 惊人的效果
- javascript - nwjs 使用 ifream 父子通讯?