微處理器設計/GPU
GPU(圖形處理單元)是一種電子晶片,安裝在顯示卡(圖形卡)上。有時被稱為視覺處理單元(VPU),它是一種專門的處理器,可以從微處理器中解除安裝 3D 圖形渲染。現代 GPU 不僅僅是一個強大的圖形引擎,而且還是一個高度並行的可程式設計處理器,其峰值算術和記憶體頻寬遠遠超過其 CPU 對應部分。

- 計算需求很大。即時渲染每秒需要數十億畫素,每個畫素需要數百次或更多操作。GPU 必須提供大量的計算效能才能滿足複雜即時應用程式的需求。
- 吞吐量比延遲更重要。GPU 對圖形管道的實現優先考慮吞吐量而不是延遲。人類視覺系統以毫秒時間尺度執行,而現代處理器內的操作需要納秒。這個六個數量級的差距意味著任何單個操作的延遲並不重要。因此,圖形管道非常深,可能數百到數千個週期,任何給定時間都有數千個基元處於飛行狀態。
GPU 的輸入是幾何基元的列表,通常是三角形,位於 3-D 世界座標系中。透過許多步驟,這些基元被著色並對映到螢幕上,在那裡它們被組裝以建立最終影像。在展示管道如何變得可程式設計之前,首先解釋規範管道中的特定步驟是有益的。
- 頂點操作:輸入基元由單個頂點形成。每個頂點必須轉換為螢幕空間並著色,通常透過計算它們與場景中的光線的互動來完成。由於典型場景有數十萬到數百萬個頂點,並且每個頂點可以獨立計算,因此此階段非常適合並行硬體。
- 基元裝配:頂點被組裝成三角形,這是當今 GPU 中最基本的硬體支援的基元。
- 光柵化:光柵化是確定螢幕空間畫素位置被每個三角形覆蓋的過程。每個三角形在其覆蓋的每個螢幕空間畫素位置生成一個稱為片段的基元。由於許多三角形可能在任何畫素位置重疊,因此每個畫素的顏色值可以從多個片段計算得出。
- 片段操作:使用來自頂點的顏色資訊,並可能從全域性記憶體中以紋理(對映到表面的影像)的形式獲取附加資料,每個片段都被著色以確定其最終顏色。就像頂點階段一樣,每個片段都可以平行計算。此階段通常是圖形管道中最耗費計算資源的階段。
- 合成:片段被組裝成一個最終影像,每個畫素有一個顏色,通常透過保留每個畫素位置最靠近相機的片段來完成。
GPU 的可程式設計單元遵循單程式多資料 (SPMD) 程式設計模型。為了提高效率,GPU 使用同一個程式並行處理許多元素(“頂點或片段”)。每個元素都獨立於其他元素,在基本程式設計模型中,元素無法相互通訊。所有 GPU 程式都必須以這種方式構建:許多並行元素,每個元素都由一個程式並行處理。每個元素都可以對 32 位整數或浮點資料進行操作,並具有相當完整的通用指令集。元素可以從共享的全域性記憶體中讀取資料,並且,對於最新的 GPU,還可以寫入共享全域性記憶體中的任意位置。這種程式設計模型非常適合直執行緒序,因為許多元素可以同步處理,執行完全相同的程式碼。以這種方式編寫的程式碼是單指令多資料 (SIMD)。
GPU 加速計算是指將圖形處理單元 (GPU) 與 CPU 結合使用以加速科學、工程和企業應用程式。GPU 加速計算透過將計算密集型應用程式部分解除安裝到 GPU 來提供前所未有的應用程式效能,而程式碼的其餘部分仍然在 CPU 上執行。從使用者的角度來看,應用程式只需執行得更快。

GPGPU(圖形處理單元上的通用計算)是一種高效能計算方法,它使用圖形處理單元來處理資料。使開發極高效能專用圖形處理器的圖形演算法的特點出現在其他 HPC 演算法中。這種相同的專用硬體也可以用來加速這些演算法。
非常適合 GPGPU 實現的演算法具有兩個特性:它們是資料並行的,並且是吞吐量密集型的。資料並行意味著處理器可以同時對不同的資料元素執行操作。吞吐量密集意味著演算法將處理大量資料元素,因此將有大量元素可以並行操作。利用這兩個特性,GPU 透過包含大量(數百個)相對簡單的處理單元來實現極高的效能,以同時操作許多資料元素。也許並不奇怪,基於畫素的應用程式,如計算機視覺以及影片和影像處理非常適合 GPGPU 技術,因此,這些領域中的許多商業軟體包現在都包含 GPGPU 加速。
CPU(中央處理器)通常被稱為 PC 的大腦。但是,這種大腦正越來越多地受到 PC 的另一個部分——GPU(圖形處理單元)的增強,GPU 是它的靈魂。從架構上講,CPU 由僅幾個核心組成,這些核心擁有大量快取記憶體,可以一次處理幾個軟體執行緒。相比之下,GPU 由數百個核心組成,可以同時處理數千個執行緒。具有 100 多個核心的 GPU 處理數千個執行緒的能力可以將某些軟體的加速提高到僅 CPU 的 100 倍。GPU 在比 CPU 更強大、更具成本效益的同時實現了這種加速。

- VAAPI : VAAPI(影片加速 API)是一個開源庫和 API 規範,它為影片處理提供對圖形硬體加速功能的訪問。它包含一個主庫和針對每個支援的硬體供應商的驅動程式特定加速後端。支援的硬體
- 英特爾® GMA X4500HD
- 英特爾® HD 顯示卡(在英特爾® 2010 酷睿™ i7/i5/i3 處理器系列中)
- 英特爾® HD 顯示卡 2000/3000(在第二代英特爾® 酷睿™ i7/i5/i3 處理器系列中)
- 英特爾® HD 顯示卡 2500/4000(在第三代英特爾® 酷睿™ i7/i5/i3 處理器系列中)
- Unix 影片解碼和呈現 API : Unix 影片解碼和呈現 API (VDPAU) 為解碼、後期處理、合成和顯示壓縮或未壓縮影片流提供了完整的解決方案。這些影片流可以與點陣圖內容組合(合成),以實現 OSD 和其他應用程式使用者介面。
VDPAU 分為兩個不同的模組
- 核心 API
- 視窗系統整合層
目的是讓大多數 VDPAU 功能在所有可能的視窗系統中都存在並以相同的方式執行。此功能是核心 API。但是,必須包含少量與底層視窗系統緊密耦合的功能。此功能是視窗系統整合層。可能包括以下示例
- 建立初始 VDPAU VdpDevice 控制代碼,因為此操作需要對底層視窗系統有深入的瞭解,例如特定顯示控制代碼或驅動程式標識。
- 將 VDPAU 表面轉換為/從底層視窗系統表面型別,例如,允許透過本機視窗系統 API 操作 VDPAU 生成的表面。
- 遊戲 : PC GPU 最初是為 PC 上的 3D 遊戲而發明的。使用現代 GPU 還使遊戲開發人員能夠構建動畫角色,使地圖栩栩如生。
- 生產力 : Microsoft Office 2010 現在為其某些圖形元素(如 WordArt 和 PowerPoint 過渡)提供 GPU 加速。
- 影片編輯 : 即使在高階 PC 上,影片編輯也需要大量使用系統資源。像 Adobe Premiere Elements 9 這樣的消費類應用程式提供了以前只供專業人士使用的功能。Premiere Elements 9 中的所有頁面翻頁、球體或卡片翻轉等過渡都已透過 GPU 加速。折射和漣漪等效果也由 GPU 加速。配備 AMD Radeon GPU 的顯示卡將加快預覽和最終渲染速度,使其建立影片更加快速和有趣。

- 在共享記憶體系統上 GPU 和 CPU 上的協同處理 SPMD 計算,印第安納大學布盧明頓資訊學與計算學院,普適技術研究所,作者:Hui Li、Geoffrey Fox、Gregor Laszewski、Zhenhua Guo、Judy Qiu
- GPU 工作原理,作者:David Luebke,英偉達研究,以及 Greg Humphreys,弗吉尼亞大學