Larrabee平行運算繪圖架構與描繪模式分析 智慧應用 影音
Event
DFORUM

Larrabee平行運算繪圖架構與描繪模式分析

前言:Larrabee工作排程完全以軟體,而非採固定功能邏輯執行。相對繪圖處理器(GPU),該架構可自訂軟體描繪管線使用分格式(binning,如葡萄酒窖一格一格的格子),減少所需記憶體頻寬、鎖爭奪(lock contention),並增加平行運算機會。Larrabee原生程式設計模型支援各種使用非規則性(irregular)資料結構的高度平行運用,應用效能分析展現Larrabee執行多種平行運算的豐沛潛能。

Larrabee使用多核心循序(in-order) x86中央處理器(CPU)核心,並增加了寬幅向量處理單元(wide vector processing unit)與一些固定功能邏輯區塊(fixed function logic blocks)。執行高平行工作負載時,與非循序(out-of-order)中央處理器(CPU)相較能大幅提昇每瓦效能與單位面積效能。和標準繪圖處理器(Graphics Processing Unit;GPU)相較能增加架構彈性與程式設計便利性。

Larrabee使用多核心循序(in-order) x86中央處理器(CPU)核心,並增加了寬幅向量處理單元(wide vector processing unit)與一些固定功能邏輯區塊(fixed function logic blocks)。執行高平行工作負載時,與非循序(out-of-order)中央處理器(CPU)相較能大幅提昇每瓦效能與單位面積效能。和標準繪圖處理器(Graphics Processing Unit;GPU)相較能增加架構彈性與程式設計便利性。

本文:
為支援先進繪圖演算法和其他平行應用,現代繪圖處理器(GPU)發展出能以程式控制的特質。但繪圖管線(graphic pipeline)通用化程式設計能力受限記憶體模式、及排定平行執行緒固定功能區塊。例如,像素處理順序受制於轉成掃瞄畫面(rasterization;光柵化=水平掃瞄線化)邏輯與其他專屬排程邏輯。

Larrabee它使描繪管線完全可編程化(programmable)。Larrabee架構以循序中央處理器(CPU)核心為基礎,這些核心執行x86指令集的延伸版,包括寬幅向量處理和一些特殊純量指令。觀察Larrabee架構圖。每個核心都能存取自己專屬的相互連結(coherent) L2快取記憶體,並簡化資料分享與同步。

Larrabee比現有繪圖處理器(GPU)更有彈性。以x86為基礎,類似中央處理器(CPU)的架構支援子程式(subroutine)與分頁錯誤(page faulting)。繪圖處理器(GPU)傳統以固定功能邏輯執行的部分功能,如轉成掃瞄畫面(rasterization)和後期渲染器混合(post-shader blending),而Larrabee完全以軟體執行。與繪圖處理器(GPU)近似的是Larrabee以固定功能邏輯執行材質過濾(texture filtering),但以核心協助固定功能邏輯(如支援分頁錯誤page faults)。

Larrabee架構上擁有高效率執行軟體描繪管線。它用binning提升平行處理、並減少記憶體頻寬,同時避免先前區塊式(tile-based)架構遭遇的問題。以軟體實作的描繪器(renderer)可將既有功能針對工作負載最佳化,並添加新功能。例如,可編程化混合(blending)與和順序無關的透明功能(transparency),可輕易與Larrabee軟體管線相容。

Larrabee亦可支援常見的程式設計模型,如影像處理、物理模擬及醫療與財務分析。Larrabee支援非規則性資料結構,並具分散收集(scatter-gather)功能,讓它適合於這些大生產能力的應用程式(throughput applications)。

Larrabee採用的新繪圖核心,顛覆以往GPU運算模式。

Larrabee採用的新繪圖核心,顛覆以往GPU運算模式。

革命性多核心繪圖結構

觀察Larrabee架構的基本方塊圖,可以發現Larrabee的設計以循序中央處理器(CPU)核心的多個執行實體(instantiations)為基礎,並增加寬幅向量處理器(Vector Processing Unit;VPU)。根據特定的應用,核心需要透過高頻寬內部連接(interconnect)網路,與固定功能邏輯、記憶體輸入?輸出介面溝通。

Larrabee採循序核心搭配VPU。目前可用這類例子類比,如以Intel Core 2 Duo雙核心處理器(非循序中央處理器)最高效能,比較以Pentium處理器的設計效能,此Pentium處理器的核心經改造可支援4個執行緒與16倍寬(16-wide)向量處理器(VPU)。觀察單一中央處理器(CPU)在1個時脈內可執行的非向量指令數目、及1個時脈內可執行的總向量作業數目,發現差異大到將近20倍,而且這2種配置採用的電晶體面積與耗電卻相同。

若面積和耗電相同,針對提升輸出處理能力的設計會使最高單串流效能減少1/2,但最高向量輸出處理能力達20倍。每秒浮點程式數(FLOPS)可達40倍差異,因為寬幅向量處理器(VPU)支援浮點混合乘加運算(fused multiply-add),但SSE不支援。這些循序核心雖非Larrabee,但十分類似。

Larrabee負載平衡與平行執行

Larrabee採用的不是一般GPU繪圖模式,而是新的平行運算概念。對任何平行描繪(rendering)演算法而言,達到高效能的關鍵在於將描繪(rendering)工作劃分成許多子工作(subtask),可進行負載平衡並平行執行,且同步點(synchronization point)極少。因為Larrabee採高彈性記憶體模式與軟體排程控制,提供平行處理選項較一般繪圖GPU更多,約可分為下列幾個步驟:

1、

Larrabee軟體描繪器(Renderer)結構:可平行處理多組圖元(primitives),圖元組(PrimSets),填入每區塊(tile)的分格(bins),後者隨後會加以平行處理,描繪(render)螢幕上的區塊(tiles)。

Larrabee軟體描繪器(Renderer)結構:可平行處理多組圖元(primitives),圖元組(PrimSets),填入每區塊(tile)的分格(bins),後者隨後會加以平行處理,描繪(render)螢幕上的區塊(tiles)。

2、

描繪目標組(RTset)相依性圖:根據圖元組(PrimSets)修改的表面(描繪目標(render target)),它們會被指定給某描繪目標組(RTset)節點。相依性確保不會使用該表面,直到修改該表面的圖元組(PrimSets)已經描繪(render)了,而且直到使用它的圖元組(PrimSets)被描繪(render)過後,該表面才會被修改。

描繪目標組(RTset)相依性圖:根據圖元組(PrimSets)修改的表面(描繪目標(render target)),它們會被指定給某描繪目標組(RTset)節點。相依性確保不會使用該表面,直到修改該表面的圖元組(PrimSets)已經描繪(render)了,而且直到使用它的圖元組(PrimSets)被描繪(render)過後,該表面才會被修改。

3、

圖元組(PrimSet)的前端描繪(rendering)順序:描繪器(renderer)會渲染(shades)所有圖元(primitive)所需要的頂點,再將最終的圖元(primitives)放入區塊(tiles)與圖元(primitives)交會的分格(bins)。

圖元組(PrimSet)的前端描繪(rendering)順序:描繪器(renderer)會渲染(shades)所有圖元(primitive)所需要的頂點,再將最終的圖元(primitives)放入區塊(tiles)與圖元(primitives)交會的分格(bins)。

4、

區塊(Tile)後端描繪(rendering)順序:1個設定執行緒(Setup Thread)處理圖元(primitives),並將它們指定給3個工作執行緒(Work Thread)之一,這些執行緒執行早期Z軸深度測試、像素渲染器(pixel shader)處理、晚期Z軸深度測試、與alpha blending。

區塊(Tile)後端描繪(rendering)順序:1個設定執行緒(Setup Thread)處理圖元(primitives),並將它們指定給3個工作執行緒(Work Thread)之一,這些執行緒執行早期Z軸深度測試、像素渲染器(pixel shader)處理、晚期Z軸深度測試、與alpha blending。

Larrabee容許前端平行同時處理多個圖元組(PrimSets)。據描繪目標組(RTset)內圖形相依性,決定那些圖元組(PrimSets)在特定時間描繪(render),並將這些圖元組(PrimSets)加入活動有效清單(active list)。執行前端作業的Larrabee核心會不斷從該活動有效清單,取用圖元組(PrimSets)。

各核心會獨立處理其圖元組(PrimSet)。等到資料處理完成,會從活動有效清單(active list)中取出下1個。每個核心處理每個區塊(tile)時,會使用自己的分格(bin)部分,這可排除與其他前端核心的鎖爭奪(lock contention)問題。圖元組(PrimSet)的順序識別碼(ID)被寫入分格(bins)中,因此,後端是識別(ID)最小的子分格(sub-bin)讀取圖元(primitives),恢復其原始順序。(本文與圖片由ACM授權刊載)

- 本文摘錄自論文「Larrabee:支援視覺運算的多核心x86架構 (Larrabee: A Many-Core x86 Architecture for Visual Computing) 」之中譯版,該論文原文由ACM授權Intel使用,並僅於電子時報中文版進行譯文摘要及圖表A之單次刊登。圖表B為Intel提供電子時報單次使用。完整之論文內容請參考
http://www.intel.com/technology/visual/microarch.htm?iid=tech_micro+larrabee (包含技術介紹及論文原稿)
www.intel.com.tw/pressroom (論文中譯本)
- 本摘錄文及所有圖表禁止其他單位或個人未經ACM & Intel同意即逕行轉載重製。其他單位或個人如欲使用本論文(包含英文原文及中譯本),請參考論文內有關如何取得ACM授權同意之說明並據以申請。
- 本摘錄文部分段落標題為編者所加。


關鍵字