解構Larrabee核心高效率運行設計關鍵 智慧應用 影音
DIGIKEY
Event

解構Larrabee核心高效率運行設計關鍵

這顯示8到48個核心配置,跟每種遊戲的效能差異。
這顯示8到48個核心配置,跟每種遊戲的效能差異。

前言:
Larrabee的主要功能由CPU核心、純量單元與快取記憶體控制指令,向量處理器、處理器間環狀網路(inter-processor ring network),還有被選中採固定功能邏輯完成的部分,都與過去繪圖處理器架構有相當大的差異,值得深入分析…

本文:
Larrabee核心分析其單一中央處理器(CPU)核心,及它接到晶粒上內部連接網路連線,還有該核心部分L2快取記憶體。指令解碼器支援標準Pentium處理器x86指令集、及一些新加入指令。為簡化設計,純量與向量單元使用獨立暫存器組,在兩者間傳輸的資料會被寫入L1快取記憶體,再從L1快取記憶體中讀回。

分格式(binning)需寫入和讀寫分格,可避免階層式深度測試的眾多深度?色彩存取。

分格式(binning)需寫入和讀寫分格,可避免階層式深度測試的眾多深度?色彩存取。

顯示3種遊戲描繪(rendering)階段花費的平均時間。

顯示3種遊戲描繪(rendering)階段花費的平均時間。

Larrabee的L1快取記憶體支援低延遲存取快取記憶體,將資料放入純量與向量單元,配合Larrabee載入運算元(load-op)向量處理器(VPU)指令,這意味著L1快取記憶體可被視為延伸的暫存器群組(Register File)。

強化核心與快取改善演算法效能

Larrabee架構設計能大幅改善演算法效能,特別是有快取記憶體控制指令的演算法。單執行緒Pentium處理器提供8KB指令快取(Icache)與8KB資料快取(Dcache)。Larrabee則為32KB Icache與32KB Dcache,支援每個CPU核心4個執行緒。

Larrabee L2快取記憶體被分為各自獨立的近端子集部分(subset),每個中央處理器(CPU)核心都有1組。各中央處理器(CPU)可快速存取近端L2快取記憶體。中央處理器(CPU)核心讀取的資料會儲存在核心的L2快取記憶體部分,可快速存取與其他中央處理器(CPU)儲存自己的近端L2快取記憶體平行運作。

中央處理器(CPU)核心的寫入資料會儲存在該核心自己的L2快取記憶體子集,並視需要從其他子集部分中刷新過來。環狀網路確保分享資料連貫性,目前各L2快取記憶體部分為256KB(這可支援軟體描繪較大區塊)。

純量單元與快取記憶體指令

Larrabee純量管線衍生自雙指令執行(dual-issue) Pentium處理器,使用短且不昂貴的執行管線。Larrabee提供的現代化功能包括多執行緒、64位元延伸指令和精密(sophisticated)指令預取功能(perfetching)。這些核心支援完整Pentium處理器x86指令集,因此可執行現有程式碼,包括作業系統核心(kernel)與應用程式。 Larrabee也加入新純量指令,如位元計數(bit count)與位元掃描(bit scan),後者可尋找暫存器中下1個被設定的位元(set bit)。

Larrabee也加入新指令與指令模式支援明顯的快取記憶體控制(explicit cache control)。包括將資料預取到L1或L2快取記憶體的指令、及減少快取記憶體管線(cache line)優先權指令模式。例如,串流資料通常會將現有資料從快取記憶體中「掃出」(Sweeps Out)。Larrabee可標示各串流快取記憶體管線,在存取後收回。這些快取記憶體控制指令也讓L2快取記憶體模仿暫存式記憶體(scratchpad memory)使用方式,同時保持完整連貫性。

在單一核心內,多個執行緒同步存取共用記憶體的成本不高。在單一核心上的執行緒分享相同的近端L1快取記憶體,因此用單一原子旗標訊號(atomic semaphore)在L1快取記憶體內讀取就能勝任了。在多個核心間同步存取的成本就比較高(因為需要處理器間鎖定inter-processor locks)。這是多處理器設計的常見限制。

解決多核心難題

雙指令執行中央處理器(CPU)核心,經常因為難以發現可同時執行的指令,導致喪失應有效能。經測試,Larrabee的雙指令執行解碼器,具高速多指令執行率(multi-issue rate),主要與次要指令管線配對原則(pairing rules)具決定性(deterministic)關鍵,因此,編譯器可以執行廣泛範圍的離線分析,比起執行時期採非循序指令選取器(out-of-order instruction picker)分析會更有效率。

所有指令都能在主要管線上執行,如此一來可減少編譯程式的組合(combinatorial)問題。次要管線可執行大量純量x86指令集的子集部分(subset),包括載入、儲存、簡單算術邏輯運算單元(Arithmetic and Logic Unit;ALU)作業、分支、快取記憶體處理指令與向量儲存。因為次要管線相對小而便宜,無法在每個週期都執行雙指令而浪費的晶片面積與耗電有限。根據分析,編譯器替雙指令執行排程(schedule)是件相對容易的工作。

最後,Larrabee支援4執行緒,每個執行緒都有獨立暫存器組。如果編譯器替程式碼排程時,無法避免停滯(stall),就會切換執行緒。切換執行緒涵蓋從L2快取記憶體載入L1快取記憶體的部分延遲,因為在這些狀況下,資料無法先行載入L1快取記憶體。如果多執行緒在同1個核心上,使用同組資料執行,例如描繪(render)相同區塊(tile)上的三角形,快取記憶體的使用會更有效率。

Larrabee向量處理單元結構分析

Larrabee的運算密度來自16倍寬的向量處理器(16-wide VPU),它執行整數、單精度浮點與倍精度浮點指令。向量處理器(VPU)與其暫存器約占中央處理器(CPU)核心面積的1/3,提供大部分整數與浮點效能。

Larrabee選擇16倍寬(16-wide)的向量處理器(VPU),目的在增加運算密度、與更寬幅的向量處理器(VPU)難以獲得高使用率間所作的權衡。早期分析顯示,如果1次以16個通道處理1個元件的16個獨立像素,也就是1次以獨立指令處理16個像素的紅、綠色…等,而非1次處理多個顏色通道(color channels),則典型的像素渲染器(pixel shader)的工作負載為88%。

Nvidia GeForce 8運作在類似的模式,它安排其純量單指令流多資料流(SIMD)處理器,以32個為單位分組,每組執行相同指令。主要差異在於Larrabee的迴路控制、快取記憶體管理、和其他如與向量處理器(VPU)平行執行的程式碼運作,並非採固定功能邏輯。

Larrabee向量處理器指令容許多達3個運算元,其中之一會直接來自L1快取記憶體。如果該資料已被預取放入快取記憶體,L1快取記憶體事實上相當於1個延伸暫存器群組(Register File)。8位元萬國碼正規化(Unicode Normalization;unorm)、8位元不帶正?負號的整數(Unsigned Integer;uint) 、16位元帶正?負號的整數(Signed Integer;sint)、與16位元浮點資料(float data),可從快取記憶體中讀出,並轉換為32位元浮點或32位元整數,不會影響效能。這種設計能增加儲存在快取記憶體中的資料數量,並減少獨立資料轉換指令需求。

下一階段,將來自暫存器與記憶體資料,跟向量處理器(VPU)的處理通道(processing lanes)緊密結合(align)。暫存器資料可用數種方式替換(swizzling),如支援陣列相乘(matrix multiplication)。記憶體傳來的資料可跨越向量處理器(VPU)通道(lanes)間進行複製。這種運算方式在繪圖與非繪圖類平行資料處理相當常見,可提升快取記憶體效率。

向量處理器支援多種處理整數與浮點資料指令。該指令集提供標準算術運算,包括浮點混合乘加運算(fused multiply-add)、及標準邏輯運算,包括從像素中取出非位元組對齊欄位(non-byte-aligned fields)指令。這些都是載入運算元(load-op)指令(從暫存器或記憶體讀取資料,再將結果寫入向量暫存器)。額外的載入與儲存指令,支援更多種浮點值、及大多數繪圖處理器(GPU)較罕見或更複雜的資料格式間轉換。使用獨立指令處理這些格式,可大幅節約晶粒所佔面積與耗電,僅僅需付出少許效能成本。

VPU滿足複雜條件分支 令編譯器自由度更高

向量處理器(VPU)指令集包括支援收集(gather)與分散(scatter),即從非連續位址載入資料或將資料寫入非連續位址。作法並非從單一位址載入16倍寬(16-wide)的向量,而是將16個向量元素從高達16個不同位址載入,或存入多達16個不同位址,這些位址由另1個向量暫存器指定。

這容許平行執行16個渲染器執行個體(shader instances),每個看似連續,甚至於在使用運算出的索引來執行陣列存取時亦可行。收集(gather)與分散(scatter)執行速度受限於快取記憶體,通常1個週期僅能存取1次快取記憶體管線。但許多工作負載都有高度相互連結(coherent)存取關係,執行時間遠小於16個週期。

最後,經由遮罩暫存器(每個向量通道有1位元)控制,Larrabee的向量處理器指令可被預期。該遮罩(mask)控制向量暫存器或記憶體位置的某些部份會被寫入、而某些部分不會被更動。例如,純量假設用法(if-then-else)控制結構可被對應到(Mapped)到向量處理器(VPU) 。使用指令設定遮罩暫存器並比較之,再用遮罩控制器的相對極性來控制,要執行if或是else子句(Clauses)的寫入結果。如果遮罩暫存器全部為0或1,可以跳過整個子句。這能減少小型子句的分支預測錯誤成本,並帶給編譯器的指令排程器更高自由度。

向量處理器也用這些遮罩執行集體載入與儲存指令,從記憶體的連續位置存取已經致能的元件(enabled elements)。這讓程式設計師整合(bundle)稀疏矩陣執行串(sparse strands of execution) ,滿足複雜分支條件(branch conditions),達到提升向量運算目的。

段標:處理器間環狀網路架構分析

Larrabee採雙向環狀網路,讓中央處理器(CPU)核心、L2快取記憶體、與其他邏輯區塊…等晶片的主體(agent)彼此溝通。如果延展到超過16個核心,我們會使用多個短連結環(short linked ring)。

每個環的資料路徑寬度,每1個方向為512位元。所有路線安排(routing)決策都在訊息加入(injecting)網路前即已確定。例如,每個主體(agent)可在偶數時脈時接受來自1個方向的訊息,在奇數時脈時接受來自另1個方向的訊息。此舉能簡化路線安排(routing)邏輯,也表示訊息送上網路時,路線安排器(routers)就無需儲存訊息。在極低成本達到高頻寬、減少爭用(contention)的目的。

Larrabee L2快取記憶體設計方面,可讓各核心以高頻寬進行記憶體位址(其他核心未寫入的位址)存取,因此被儲存在該核心近端L2快取記憶體子集部分(subset)裡。每個核心都能平行存取自己的L2快取記憶體,而不需和其他核心溝通。但在分配L2快取記憶體內的新快取管線(line)時,會透過環狀網路確認資料分享,維持資料連貫性。

處理器間網路也提供L2快取記憶體存取記憶體途徑。通常高階實作(implementation)會包括多個標準設計記憶體介面,設置於處理器間網路上,以減少傳輸壅塞。晶粒上網路的延遲,會增加記憶體存取時間,但相較於DRAM存取延遲,額外的環延遲較少。

最後,晶粒上的處理器間網路,讓中央處理器核心存取固定功能邏輯主體(agent),後者則可存取L2快取記憶體和記憶體。至於記憶體控制器則通常設置在環狀網路上,以減少傳輸壅塞。

段標:Larrabee固定功能邏輯分析

現代繪圖處理器(GPU)內建固定功能邏輯,處理各種繪圖工作,包括材質過濾、顯示處理、後期渲染器(post-shader) 、alpha混合(alpha blending)、轉成掃描畫面(rasterization)與內插法(interpolation)。

圖標題:相對延展性與核心數的關係圖

在本文中,轉成掃描畫面(rasterization)的定義僅僅是尋找圖元(primitives)的涵蓋範圍,內插法(interpolation)指的是尋找圖元(primitives)中被涵蓋樣品位置的參數值。固定功能邏輯通常需採先進先出(FIFOs)來平衡運算負載。想同時避免浪費面積與破效能瓶頸,決定正確的邏輯區塊和其先進先出(FIFOs)大小,設計有其困難度。

如果軟體實作(implementation)能提供足夠效能時,Larrabee會以軟體取代固定功能邏輯。特別是Larrabee不包括轉成掃描畫面(rasterization)、內插(interpolation)或後期渲染器(post-shader) 、alpha混合(alpha blending)的固定功能邏輯。因此Larrabee可添加新功能與最佳化,並在描繪(rendering)管線不同地方實作這些工作,視特定應用在那裡執行效率最高而定。

圖標題:frame binning v.s. immediate mode頻寬比較


軟體實作也讓Larrabee視需要分配效能,而非設計硬體以滿足最高效能需求。Larrabee包括材質過濾邏輯,因為該作業無法以核心上的軟體高效率執行。經分析顯示,如果在核心上執行軟體材質過濾,運算所需時間為固定功能邏輯的12到40倍,其實這有4大肇因:

1、材質過濾仍多使用8位元色彩元件,用專屬邏輯過濾會比32位元寬度的向量處理器管道更有效率。

2、高效率選擇非對齊2 x 2方陣(2 x 2 quads)過濾,需專門管線聚集邏輯(pipelined gather logic)。

3、將材質資料載入向量處理器過濾,需要超乎實際的(impractical)暫存器群組(Register File)頻寬數量。

4、即時材質解壓縮使用專屬硬體,比中央處理器程式碼更有效率。

Larrabee材質過濾邏輯本質(internally)與一般繪圖處理器材質邏輯近似。它每個核心有32KB的材質快取記憶體,並支援常見作業,如DirectX 10壓縮材質格式、多圖像金字塔映射(Multi-Image Pyramid mapping;mipmapping)、非等向性過濾(anisotropic filtering)…等。

圖標題:點對點平均時間分析

核心透過L2快取記憶體將指令傳給材質單元,也以同樣方式收到結果。材質單元執行虛擬到實體頁面轉換(translation),並將遺失頁面報告給核心,而且重試材質過濾指令,直到頁面傳到記憶體。如果軟體效能夠快,Larrabee也可直接在核心執行材質作業。(本文與圖片由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授權同意之說明並據以申請。
- 本摘錄文部分段落標題為編者所加。