回答

2

對於預測變量,不存在「更好」這樣的事情,您可以針對給定的工作負載/應用程序或像基準測試套件這樣的一組變量來問哪一個性能更好(誤預測性更低)。性能還取決於參數(表格大小,歷史長度等)。

這兩者是完全不同的,每個人都可以更好地適應不同的情況。你可以說雙峯可能學習速度更快,衝突更少,但全局變體更加精細,並且有更好的機會捕捉複雜的模式。然而它有更高的碰撞,因爲表格代表了各種部分歷史,並且在某些情況下收斂的可能性較低。

這是更好地展示這個例子強/弱點:

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使用多個,儘管在結果之間進行組合/選擇的算法可能不能在線獲得。德標誌含義如大小和功耗 - 這些當然也取決於實施的參數。