計算機架構與加速器

分支預測(Branch prediction)

每當程式碰到「if」或迴圈,處理器就面臨岔路:下一條該執行哪條,取決於一個可能還沒算完的比較。分支預測器不會停下等待,而是「賭一把」——猜測分支會往哪走並推測地往前衝,就像快遞司機在調度員確認地址前就先選好路線,押注在最可能的答案上。

好的預測器會學習規律:跑 1000 次的迴圈有 999 次是「成立」,所以它預測「成立」,命中率 99.9%。現代預測器用分支歷史表,準確率達 95% 到 99%。一旦猜錯,處理器必須丟棄所有推測執行的工作、從正確路徑重新開始——預測失誤的代價是 10 到 20 個週期。分支預測太關鍵了,推測執行的漏洞正是著名的 Spectre 與 Meltdown 資安漏洞的根源。

Spectre/Meltdown(2018)顯示推測執行可能透過快取計時的旁通道洩漏機密資料——提醒我們效能花招也可能帶來資安代價。

又稱
分支預測器speculative execution