小分支预测练习(不做作业)

时间:2016-09-06 18:47:10

标签: assembly branch-prediction micro-architecture

这不是家庭作业。我正在阅读this site,IMO对分支预测有很好的介绍,并决定在讲座后尝试解决问题:

  

考虑以下代码[无分支延迟槽]:

last-of-type
     

第一个添加指令位于地址0。

     
      
  1. 如果我们只使用带有2个条目的模式历史表,那么我们的错误预测率是多少? [错误预测率=#mispredictions /#predictions]
  2.   
  3. 如果我们使用带有2项本地历史记录表的本地历史记录预测器和4项目模式历史记录表怎么办?
  4.   

首先,我想知道,如果条件中有错误,并且两个添加指令都必须像其余部分一样,addi是立即0而不是$ 0。任何熟悉该主题的人都能评论它吗?

第二次,我试图解决问题(考虑添加为addi,立即为0,如上所述),并考虑强烈不采用饱和计数器的初始状态。我的答案是:

1.错误预测率8/10(8个误预测,10个预测)
2.错误预测率13/5(13个误预测,5个预测)
任何熟悉该主题的人都可以检查一下吗?只是想知道我是否确实理解了讲座的内容。 感谢。

1 个答案:

答案 0 :(得分:1)

$ 0(也为r0或$ zero)是一个始终为零的寄存器。在比较和设置变量时很方便,在您的示例中,它用于设置变量。注意,“ add $ 2,$ 0,$ 0”等效于“ addi $ 2,$ 0,0”,即(类似C的表示法)“ $ 2 = 0;”。使用不同格式的mips指令(R and I respectively)

编码的同一表达式

如果我们要以类似C的方式编写该汇编代码,它将看起来像这样:

$11 = 5;
$12 = 3;

$2 = 0;
while ($2 != $12){
    $2++;
    $1 = 0;
    while ($1 != $11)
        $1++;
    }

希望这会有所帮助。