03.05 cpu和gpu在芯片上都是由二極管組成的,它們之間有什麼區別?

我屮浪好大


(在下才疏淺薄或有理解不當的,說錯舉例錯誤敬請諒解)

CPU、GPU芯片內晶體管是由二極管、三極管、電容、電阻等組成的集合體,屬於一個總稱,不全是純二極管組成。

二極管是晶體管的一種,但晶體管並不單指二極管。二極管具有僅允許電流從正極到負極單方向通過的特性,所以可以用二極管作為芯片的電流控制“逆止閥”。

CPU和GPU發展那麼多年,都有很詳細的工作原理圖,所以不再說明其工作過程。

這裡主要說他們的計算區別。


英偉達在CUDA文檔裡有提到:CPU和GPU之間浮點能力差異背後的原因是GPU專門用於計算密集型,高度並行計算 ,這正是圖形渲染的關鍵 。 因此GPU設計更多晶體管用於數據處理而不是數據緩存和流量控制。

△GPU為數據處理提供了更多的晶體管(綠色是計算單元,橙色是存儲單元,黃色是控制單元)

從上圖可以看出,CPU內單個ALU比GPU的ALU更為強大,所以在一個時鐘週期計算能力更為強大。CPU不僅被存儲單元佔據了大量空間,並且還擁有強大的控制單元(控制邏輯單元),相較而言計算能力只是CPU很小的一部分。這些設計和各種優化電路讓CPU擁有非常全面並且強大的計算能力,但有個缺點是無論簡單還是複雜的任務CPU都會一視同仁用心去完成,採用任務排隊的順序處理的串行計算方式——即每個時鐘週期只處理一個任務直到完成後才執行下個任務的計算。

GPU的設計是一個時鐘週期儘可能完成多而簡單的任務,計算方式是非常多的任務同時處理的計算方式。更詳細地說,GPU特別適合解決數據並行計算的問題 , 在許多數據上並行執行相同的程序 。因為對每個數據執行相同的程序,所以對複雜控制要求較低,並且因為它在許多數據上執行擁有高計算強度,所以可以不需要存儲單元來降低訪問延遲。

GPU並行計算將數據映射到並行處理線程,在3D渲染中大量像素和頂點被映射到並行線程。類似諸如渲染圖像的後處理、視頻編碼和解碼、圖像縮放、立體視覺和模式識別的圖像和媒體處理應用可以將圖像塊和像素映射到並行處理線程。

因為GPU和GPU計算方式差異,所以CPU的計算範圍幾乎無所不能並且高質高量,而GPU計算範圍較為單一但簡單快速粗暴。

此段來自英偉達官方:理解 GPU 和 CPU 之間區別的一種簡單方式是比較它們如何處理任務。CPU 由專為順序串行處理而優化的幾個核心組成,而 GPU 則擁有一個由數以千計的更小、更高效的核心(專為同時處理多重任務而設計)組成的大規模並行計算架構。

CPU是通用計算,GPU是專用計算。不過隨著GPU計算方式更新改進優化,目前已經實現了圖像渲染和處理領域之外的更多領域的計算應用。

唔~網友形容的CPU就是學校裡的老教授,微分積分啥都懂啥都會。GPU就是一大群小學生只會簡單的加減。

這天學校派了個任務,要求計算十萬個100個加減法的結果。老教授那是搞微積分怎能掉份呢?雖然轉念一想就可以搞定一個,但尼瑪有十萬個得花費多少時間呀。於是老教授把這些計算任務交給了那群小學生去計算,每個小學生各負責計算一部分不能互相干涉,最後把結果彙總呈報上來等待下一個多數量的簡單計算任務即可。

在大學教授豐富淵博的知識影響薰陶下,那群小學生慢慢地已經不止會做簡單的加減,還會做簡單的乘法除法……再再再後來,大學教授發現那群小學生已經成長為高中生了,正在攻讀《三年高考五年模擬》……

△深度學習圖示


IT數碼大排檔


芯片裡的CPU和GPU就像人體的器官一樣,起著很重要的作用,它們應用在不同的場景,處理不同的任務。

GPU的誕生是為了更好的處理圖形數據,比CPU更快

3D遊戲興起後,CPU就要處理大量圖形數據,還是無法達到畫面的顯示要求。於是將圖形計算的功能分離出來成為一塊芯片,減輕CPU的負擔,這就是我們所說的GPU。CPU開始是串行的運算方式,有很大的侷限性,而現在已發展成並行的運算模式多核心處理,這種模式也在向GPU的芯片上發展,GPU處理圖形渲染的能力比CPU快了21.6倍。


CPU和GPU運算方式的區別

CPU的控制單元、邏輯單元和存儲單元用來完成運算並進行控制協調。在運算時,從控制單元就開始工作,中間經過邏輯單元來執行指令,把數據輸入到CPU,運算結果傳輸到存儲單元就表示任務已經完成了。而GPU可以直接接收更多的指令並執行,處理圖形數據可以獨立輸出,圖像加載比CPU更快捷。

CPU和GPU架構的區別

GPU的圖形運算已經超越了CPU,採用軟硬件架構的方式,工程人員可以直接用C語言輸入代碼調用GPU的處理架構,開發門檻降低,運算時間大大提升。GPU的線程數和寄存器要多於CPU,緩存卻比CPU少。而CPU的架構更復雜,處理數據需要邏輯判斷,還會出現中斷或跳轉,不僅被緩存佔用了大量的空間。


CPU和GPU設計上的區別

CPU的設計是低延時的方式,需要在很短的時間內完成運算,現在的CPU可以達到64bit的精度。這種設計方式,運算乘法和加法的週期頻率非常高,數據保存在緩存裡,隨時都可以調用。 GPU就是巨大的週轉量設計,沒有多少緩存,直接為寄存器提供服務,它的數據存在內存裡,要獲取可直接訪問內存,所以CPU擅長邏輯運算,GPU擅長大規模的圖形處理。


綜上所述,GPU的目的就是為圖形處理而生,雖然是CPU附屬的一顆芯片,但處理圖形數據更強大,它減輕了CPU的運算壓力,兩者相互協作,發揮著不同的作用,讓芯片的性能達到最佳化。


星河方舟


CPU(central processing unit)叫做中央處理器,它是一塊超大規模的集成電路,是一臺計算機的控制於運算的核心,它的主要功能是解釋計算機指令和處理計算機軟件中的數據,相當於計算機的大腦。

GPU(graphics processing unit)叫做圖形處理器,又可稱為顯示芯片,是一種專門在個人電腦、工作站、遊戲機和一些移動設備(如平板電腦、智能手機等)上圖像運算工作的微處理器。GPU能夠把計算機所需要顯示的信息進行轉換,並向顯示器提供掃描信號,控制顯示器的正確顯示,是連接顯示器和個人電腦主板的重要元件,是人機對話的重要設備之一。

它們兩者由於針對不同的應用場景,因此設計目標不同,架構也大不相同。CPU的內部結構異常複雜,因為CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷、又會引入大量的分支跳轉和中斷的處理。而GPU面對計算環境相對來說結構單一,因而架構比CPU要簡單些。兩者架構如下圖。

其中綠色的是計算單元,紅色的是存儲單元,橙黃色的是控制單元。

緩存:

CPU緩存結構龐大,目前主流的CPU芯片上都有三級緩存,緩存結構消耗了大量的晶體管,在運行的時候耗電非常厲害。而GPU芯片最多兩級緩存,多出來的晶體空間GPU都可以用來做成ALU單元,也因此GPU比CPU的效率要高一些。

浮點運算:

CPU除了負責浮點整形運算外,還有很多其他的指令集的負載,比如硬件解碼、多媒體解碼等,所以CPU是個多面手。而GPU基本上就是隻做浮點運算的,也正是因為如此,所以架構簡單,因而速度更快。

響應方式:

CPU要求的是實時響應,對單任務的速度要求很高,所以就要用很多層緩存的辦法來保證單任務的速度。對GPU來說大家不關心第一個像素什麼時候計算完成,而是都關心最後一個像素什麼時候計算出來,所以GPU就把所有的任務都排好,然後再批處理,這樣對緩存的要求就很低了。舉個不恰當的例子,你敲擊10次鍵盤,CPU要每一次敲擊都要及時響應,而GPU會等第10次全部敲擊完成後,再一次性批處理響應。

應用方向:

像操作系統這一類應用,需要快速響應實時信息,需要針對延遲優化,所以晶體管數量和能耗都需要用在分支預測,亂序執行上,低延遲緩存等控制部分,而這都是CPU的所擅長的。對於像矩陣一類的運算,具有極高的可預測性和大量相似運算的,這種高延遲,高吞吐的架構運算,就非常適合GPU。

總結一下,CPU和GPU因為最初用來處理的任務就不同,所以設計上有不小的區別。CPU擅長處理複雜問題,但是對於某些機械化程度較高且又繁重的任務,GPU比CPU更有優勢。


分享到:


相關文章: