【问题标题】:What's a better branch predictor? Bimodal or Gshare?什么是更好的分支预测器?双峰还是Gshare?
【发布时间】:2014-05-08 13:13:18
【问题描述】:

仅供我个人了解...

Bimodal 或 Gshare 两者中哪一个提供的预测比另一个更正确?为什么?

【问题讨论】:

    标签: performance cpu-architecture computer-architecture branch-prediction


    【解决方案1】:

    对于预测器,没有“更好”之类的东西,您可以询问对于给定的工作负载/应用程序,或者一组类似基准套件的预测器,哪个性能更好(错误预测更少)。性能还取决于参数(表大小、历史长度等)。

    两者完全不同,每个都可以更好地用于不同的场景。你可以说双峰可能学得更快,碰撞更少,但全局变体更精细,更有机会捕捉复杂的模式。但是,由于表代表各种部分历史,因此它具有更高的冲突,并且在某些情况下收敛的机会更低。

    最好用这个例子来展示强/弱点:

    for (i=0; i<N; ++i) {
        if (A[i] < 50) 
            do_stuff();
        if (A[i] > 50)
            do_other_stuff()
    }
    

    分支依赖于数据(假设数据随机均匀分布在 [1..100] 中),因此双峰不太可能捕获它们。然而,一个全局预测器很容易知道第二个分支取决于第一个分支的结果(如果第一个被采用,第二个永远不会被采用,如果第一个没有被采用,第二个很可能被采用( A[i]==50 的情况只有 1% 的机会)。 现在采用相同的代码,但假设 A 已排序,双峰将轻松获胜,除了少数转换外,几乎所有预测都正确。

    如果没有更好的预测器,我们应该怎么做?好吧,当然要建立一个混合动力车!如今,许多高性能 CPU 都采用多个 CPU,尽管在结果之间组合/选择的算法可能无法在线获得。

    这种解释也忽略了尺寸和功耗等设计含义——这些当然也取决于实现的参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多