GPU是什么意思?
GPU是什么意思?
圖形處理器(英語:graphics processing unit,縮寫:GPU),又稱顯示核心、視覺處理器、顯示芯片,是一種專門在個人電腦、工作站、游戲機和一些移動設備(如平板電腦、智能手機等)上做圖像和圖形相關運算工作的微處理器。
GPU是圖形處理器,一般GPU就是焊接在顯卡上的, 大部分情況下,我們所說GPU就等于指顯卡,但是實際情況是GPU是顯示卡的“心臟”,是顯卡的一個核心零部件,核心組成部分。它們是“寄生與被寄生”關系。GPU本身并不能單獨工作,只有配合上附屬電路和接口,才能工作。這時候,它就變成了顯卡。
理器”。(圖像處理單元)GPU是相對于CPU的一個概念,由于在現代的計算機中(特別是家用系統,游戲的發燒友)圖形的處理變得越來越重要,需要一個專門的圖形的核心處理器。

GPU工作原理
簡單說GPU就是能夠從硬件上支持T&L(Transform and Lighting,多邊形轉換和光源處理)的顯示芯片,由于T&L是3D渲染中的一個重要部分,其作用是計算多邊形的3D位置與處理動態光線效果,也能稱為“幾何處理”。
一個好的T&L單元,能提供細致的3D物體和高級的光線特效;只不過大多數PC中,T&L的大部分運算是交由CPU處理的(這就也就是所謂軟件T&L),因為CPU的任務繁多,除了T&L之外,還要做內存管理和輸入響應等非3D圖形處理工作,所以在實際運算的時候性能會大打折扣。
-
Infocode藍暢 評論
與CPU相比,專用圖形硬件唯一的計算優勢是速度,但速度卻至關重要。
這里首先介紹一下GPU中的數據并行處理通用策略,不同的處理器體系結構使用了不同的策略來避免延遲。CPU通常采用存取速度較快的本地緩存來避免延遲問題,還可以通過使用諸如分支預測、指令重新排序、寄存器重命名和緩存預取技術來避免延遲。
而GPU采用不同的策略,GPU芯片上的大部分區域都集成的shader core。shader core是由一大組(通常上千個)處理器(processors)構成的并行處理單元。GPU是一個流處理器,依次處理有序的相似數據集。比如一組頂點或片元就是相似的數據集。因此GPU可以以大規模并行的方式處理這些數據。另一個重要的因素是,數據處理是盡可能獨立的,因此它們不需要來自鄰近的(頂點,片元)信息,也不共享可寫的內存位置。這個規則有時會被打破,但會帶來多余的延遲。
GPU對數據處理速度做了單獨的優化,但是也有其自己的弊端。由于高速緩存(cache memory)和控制邏輯(control logic)的芯片面積更少。每個著色核心(shader core)的延遲通常比CPU處理器遇到的延遲要高得多。
這里以GPU運行時由于讀取紋理時遇到的延遲來舉例。這是最常見的發生延遲的情況,因為紋理通常存儲在外部內存(顯存)上而不是靠近shader core 的cache。讀取通常需要成百上千個時鐘周期。假如現在有100個片元等待計算。處理器正在執行第一個片元著色器,并按以下步驟執行:1.做一個簡單的代數計算。2.讀取紋理。為了隱藏第二步讀取紋理時的延遲,處理器會在等待數據傳輸時先切換到第二個片元著色器,并執行第二個片元著色器的第一步1.做一個簡單的代數計算。然后第二個片元著色器會讀取紋理,接著切換到第三個……一直到100個片元著色器的第一步都執行完畢。然后第一個片元著色器的紋理讀取此時已經完成,開始執行第一個片元著色器的后續步驟。
在上述例子中,GPU通過切換片元來保持繁忙來隱藏延遲。更進一步,gpu通過將指令執行邏輯與數據分離來使得這個設計更進一步。稱為single instruction, multiple data(SIMD)。顧名思義,這種設計使一組固定數量著色程序同步執行相同的指令,雖然計算時它們各自的數據可能有所不同。相比起單個邏輯和調度單元來運行每個程序,這樣會節省大量功耗以及減少用以處理,交換數據的芯片。
現在把上述的例子轉換成GPU中常用術語。對每個片元著色器的調用稱為線程(thread)。與cpu的線程稍微有點不用的是,GPU的線程需要為著色器程序的輸入準備少量的內存資源,同時還有執行期間的寄存器資源。使用相同著色器程序的線程被打包成組(比如一組內都是片元著色器或者頂點著色器)。這樣的一組被稱為warps(NVIDIA)或者wavefronts (AMD)。warp會由一些數量的shader core使用SIMD方案執行(sahder core的數量8到64不等 )。warp中的每一個線程(tread)對應了一個SIMD lane(可以理解為一個待執行線程對應著SIMD并行處理架構中的一個處理通道。)
現在用一個新的例子,這里有2000個片元著色器待處理。也就是2000個線程(thread)。nividia通常把32個線程綁定為一個warp。也就是分成了 2000/32 = 62.5 個warp。這里取整數也就是63個warp,第63個warp中少放點線程就行。warp中的32個線程會以在32個處理器上同步執行。當warp執行到內存讀取這種延遲較高的步驟時,此時warp中的32個線程因為同步,都在執行當前內存讀取的指令。為了減少延遲,這32個處理器會切換到下一個warp執行。和上文提到的單個處理器例子類似,只是處理器的數量和對應的線程數量變成了原來的32倍。但是切換時的速度還是和單核的一樣快。
2年前