計算機架構與加速器
指令級平行(ILP)
ILP 是隱藏在單一指令流裡的平行性。即使是普通程式,也含有彼此不相依的運算——若第 1 行算 A+B、第 2 行算 C×D,根本沒理由一前一後做。超純量處理器藉著多個執行單元,每個週期發出二、四條甚至更多互不相依的指令,就像一間有多位廚師、各自同時做不同菜餚的廚房。
為了找出可獨立進行的工作,現代核心採用亂序執行:在一個含數十條後續指令的視窗中往前看,只要輸入備妥就先執行(未必照程式順序),再悄悄地依原始順序「退役」結果,讓程式行為正確。這極其複雜——暫存器重新命名、保留站、重排緩衝區——而且回報遞減,因為真實程式有相依鏈。正是這遞減的回報,讓業界從不斷加寬單核心,轉向在晶片上放進許多核心。
VLIW(超長指令字)是相反的哲學:讓編譯器(而非硬體)把平行運算排進一條寬指令——矽片更簡單,但成敗全繫於編譯器。Intel 的 Itanium 嘗試此路,大致失敗。
又稱
另見