1

仅以我个人的知识...

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

4

1 回答 1

2

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

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

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

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

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

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

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

于 2014-03-29T15:13:16.557 回答