指令層級平行與亂序執行

ILP 的複雜度與功耗代價(the complexity and power cost of ILP)

榨取指令層級平行並不是免費的硬體魔法;它的代價以電晶體、設計複雜度、尤其是電力來支付。想像聘了一支龐大的後勤團隊,他們唯一的工作就是搞清楚哪些任務能平行做——他們確實讓真正的工作更快完成,但他們本身也消耗薪水、空間與咖啡。在 CPU 裡,更名表、保留站、重排序緩衝區、分支預測器、喚醒/選擇邏輯,就是這份額外負擔:一大堆耗能的機制,投入的不是計算你的答案,而是發掘並管理其周圍的平行性。

具體來說,代價隨核心多激進而以超過線性的速度惡化。把亂序視窗加倍,意味著每個週期要搜尋與比較更多項目;決定哪些等候指令能發射的喚醒與選擇邏輯,大致以發射寬度與視窗大小的平方成長,且以全時脈速度切換,燃燒動態功耗(其大小正比於電容 x 電壓平方 x 頻率)。更糟的是,這些能量有很大一部分花在推測上——花在會被壓掉的錯誤路徑指令上——所以它做了真實的電功、卻換到零有用結果。一顆高效能核心相當一部分的功耗,是花在這份「聰明的額外負擔」上,而非花在算術上。

這正是 ILP 作為一種策略撞牆的關鍵。一旦 Dennard 微縮在 2000 年代中期告終、功率牆來臨,為了多榨出幾個百分點的單執行緒效能所付出的能量代價變得難以承受——你花掉不成比例更多的瓦特,換來愈來愈少的速度。好幾顆較簡單的核心,每瓦交付的總工作量勝過一顆巨大的亂序核心,這正是多核心、乃至更後來的領域專用加速器背後的經濟論據。誠實的總結:亂序 ILP 是出色的工程,但它耗電、報酬遞減,並因此重塑了整個產業。

在錯誤路徑的推測上,一顆核心可能提取、更名、排程並執行數十道之後被壓掉的指令。那每一步都拉了電流——真實功耗被燒掉,換到的卻是永不提交的結果。把這乘上數十億次分支,能量就積少成多。

大量 ILP 硬體把功耗燒在發掘平行性與錯誤路徑工作上——是額外負擔,而非答案。

亂序 ILP 不是「免費的效能」——它的複雜度與(尤其是)功耗都難以擴展,所以過了某一點,每多一個百分點的單執行緒速度都得付出不成比例的瓦特。這代價在 Dennard 微縮告終後,正是讓多核心成為理性選擇的原因。

又称
the power cost of out-of-orderILP overhead亂序的功耗代價