2012.04.01 14:00

完全看懂 HD 7970 新架構,GPU 如何跑出更高的效能?

ADVERTISEMENT

圖解編譯器指令集排程

編譯器Wavefront時程序列

假設有A~O共15條Wavefront,順序是由A到O,且部分Wavefront存在相依性。其中C必須依賴B,也就是Wavefront C必須等到Wavefront B運算完畢之後,才能算Wavefront C。有點類似B+2=4,B+C=6,必須先求得B的解才能解第二個方程式。其餘E與F、F與G、L與K都是相同情況。



VLIW 4

在 4架構中缺乏動態調度功能,某些環境使用率相當低。在週期一當中,由於Wavefront C必須依賴Wavefront B,因此的第三與第四組ALU處在閒置狀態。同樣的情況在週期二、三、五都出現,特別是週期三與五效率特差,只有執行1組Wavefront。理 想中的高效率滿載狀態,只有週期四與六可達到。

ADVERTISEMENT


▲Wavefront B與C的相依性並未解決,加上缺乏動態調度,只能讓第三與第四組ALU閒置。


▲上個週期未處理的Wavefront C,被留到這個週期運算。由於Wavefront E與F又存在相依性,因此F不能在這個週期處理,使得第四組ALU閒置。


▲這個週期依序處理Wavefront F,由於Wavefront G依賴Wavefront F,因此Wavefront G、H、I只能延後處理。

ADVERTISEMENT


▲由於此週期沒有相依性,因此能依序處理Wavefront G、H、I、J。這也是VLIW 4架構最理想的狀態。

▲依序處理Wavefront K,但是Wavefront K與L又有相依性,週期五只能單獨處理Wavefront K。


▲剩下的Wavefront L、M、N、O都沒有相依性,因此能執行4個Wavefront。VLIW 4架構處理15個Wavefront總計花費6個週期。

Compute Unit

透過GCN的CU運算,由於具備動態調度功能,因此在允許的行況下,可先執行順位較低的Wavefront。像是週期一當中,可先略過依賴 Wavefront B的Wavefront C,先執行Wavefront D與E。如此一來,15條Wavefront只需要1組CU花費4個週期就能處理完畢,足足比VLIW 4少了2個週期。

ADVERTISEMENT


▲由於Wavefront B與C存在相依性,透過動態調度功能,可讓排程在後面的Wavefront D與E先行運算,讓CU的SIMD陣列滿載。


▲週期二接著處理Wavefront C,其中依照順序應該接著處理Wavefront F、G、H,不過Wavefront G與F有相依性,因此捨棄Wavefront G先行處理Wavefront I。


▲週期三繼續運算Wavefront G,Wavefront L跟K有相依性,因此先處理順位中的Wavefront M。

ADVERTISEMENT


▲最後一個週期將剩下的Wavefront處理完畢,一共花費4個週期就處理完畢。其中週期一、二與三都是滿載。

(下一頁:GCN:率先使用新規格)

ADVERTISEMENT