1. 程式人生 > >CPU和GPU的物理結構,效能和應用場景比較

CPU和GPU的物理結構,效能和應用場景比較

1. 寫了啥

CPU和GPU作為電子計算機的重要部件,在近年來受到工業界的廣泛關注,正處於高速迭代的發展期。發展到今日,CPU與GPU同作為計算部件,在應用場景上已經出現明顯的區別,與之對應的,二者在結構上,也大不相同。

CPU全稱為中央處理器,是一塊超大規模的整合電路板,與內部儲存器和輸入輸出裝置一起被稱為計算機的三大核心部件。從最早的Intel4004和Intel8008,經歷數個階段的發展迭代,現在已經成為集處理指令順序,執行操作,控制時間,進行復雜計算為一體的運算核心和控制核心,電子計算機的“大腦”。目前工業界的主流產品是Intel i5和i7系列。

GPU全稱為圖形處理器,是計算機顯示卡的核心部件。在個人電腦上,GPU通常被用於2D和3D圖形處理,即進行復雜的數學和幾何計算。但近幾年來,由於GPU在浮點計算和平行計算上,擁有極其出色的效能,甚至超越了CPU的數十倍,使其被廣泛使用在資料探勘,深度學習等需要大量重複計算的工程之中。目前,主流GPU廠商NVIDIA生產的GTX和GT系列顯示卡佔據了市場較大份額,而同為NVIDIA生產的Titan V目前效能最為強大。

本文立足於目前CPU和GPU的發展現狀,討論了CPU和GPU的物理結構之間的異同。事實上,CPU與GPU在構造上有很大的區別,由於GPU需要滿足大量重複的圖形計算,計算單元佔據了絕大部分體積,CPU由於綜合性能的要求,還需要一定數量的儲存單元和控制單元。除了在物理結構上的不同,本文還將討論兩者在效能和應用場景的具體區別。除此之外,還將簡要介紹CPU和GPU協同工作的並行處理機制,這是當前本領域的研究熱點。

2. 物理結構

2.1 計算單元

如圖1所示[1],在CPU與GPU中,都存在一種結構佔據了大量的體積空間,即ALU(arithmetic and logic unit),算術邏輯單元為CPU和GPU提供了強大的邏輯計算能力,滿足基本的計算功能。但其中不同在於,GPU的計算單元佔比遠高於CPU,這導致了GPU擁有在單一的邏輯運算中效能遠高於CPU的特性。除此之外,如圖2所示[2]

,GPU在計算核心的數量上也遠高於CPU,所以其並行處理能力強悍,而CPU更適合做一些小型的序列計算,當然,多核CPU的出現,也使現在的CPU[1]擁有了一定的並行處理能力,但其ALU數量的限制依然存在。


圖1 CPU與GPU物理結構對比[1]

2.2 控制單元和儲存單元

除了在ALU上的差異之外,CPU和GPU在控制單元和儲存單元上也有很大區別,如圖一所示。CPU作為中央處理器,要處理指令順序,安排操作執行的順序,所以有很大體積的控制單元和儲存單元,其中儲存單元Cache為CPU提供了快速I/O的能力,I/O的速度將影響CPU處理指令集的速度,從而影響計算機的響應速度。而GPU僅具有少量的簡單控制單元和小型儲存單元,其作用是控制多執行緒合併處理和儲存少量的並行執行指令。


圖2 CPU與GPU計算核心數量示意圖[2]

 特性和應用場景對比

 特性

由於物理結構的不同,CPU和GPU具有完全不同的特性。CPU存在大量的控制和儲存單元,導致其擁有強大的分支處理能力,可以將來自不同地方的指令調整順序,使命令按次序順利和高效執行。同時由於具有一定的計算單元,所以也可以處理一些序列計算任務,多核CPU則可以處理一些簡單的並行任務。

GPU僅具有極大數量的ALU,和少量用於輔助的控制和儲存單元,所以其特性也是單一的強大計算能力。又因為ALU往往被劃分為多個計算核心,所以GPU適合於處理大型的重複計算任務,因為重複計算任務往往更容易並行化。

事實上,CPU和GPU在計算方面的差異正是複雜程度和規模程度,對於複雜的邏輯計算,往往在邏輯上難以並行劃分,只能按照邏輯順序序列處理,這種情況下因為CPU具有更快的記憶體讀寫速度,往往表現更加優異。相反,對於邏輯簡單但規模龐大的計算問題,例如大型矩陣的運算,往往易於並行化,自然GPU在效能上的表現更加優異。在(劉進鋒,郭雷;2011)中,比較了CPU和GPU在矩陣乘法運算上的效能。對於矩陣規模為1024的矩陣乘法,GPU上的最佳實現比CPU上的最佳實現快了大約6倍[3]。同樣的,在(劉勇,蘇軍; 2010)中,在快速傅立葉變換上比較了CPU和GPU的運算時間,CPU耗時高達GPU的40倍[4]

 應用場景

由於特性上的差異,CPU與GPU適用於不同的應用場景,從適用範圍上來看,CPU要更勝一籌。

CPU擁有強大的指令處理和計算能力,往往用於進行電子計算機的核心工作,即解釋計算機指令和處理計算機軟體中的資料。事實上,在大多數的個人電腦中,使用者和軟體都會不斷地產生指令流,而處理指令流之間執行的先後順序,就是CPU要完成的一個重要工作。CPU將從I/O裝置接收到的指令集儲存在儲存單元中,然後按照一定的規則,取出相應的指令,並轉化成對應的操作控制訊號,傳送給所屬的計算機部件。

除此之外,CPU還要負責處理計算機軟體所產生的資料。考慮到軟體資料型別多樣而且處理邏輯複雜,所以CPU往往在這類資料上表現出更優異的效能。

GPU相對於CPU而言,擁有單一的強大平行計算能力,所以用途往往是需要大規模平行計算的場景。早期GPU多被用於2D和3D圖形的計算和處理,因為圖形資料的處理往往涉及到大量的大型矩陣運算,計算量大但易於並行化。在近些年來,由於大資料成為了計算機學術界的研究熱點。所以GPU也常常被用於需要大量重複計算的資料探勘領域,如研究機器學習,深度學習,雲端計算等方向的研究機構,往往使用以GPU為計算核心的大型伺服器作為硬體平臺。

聯合CPU和GPU的並行處理機制

事實上,由於CPU和GPU各自在處理和計算上有著強大的效能,關於CPU和GPU的聯合處理方案一直是學術界和工業界研究的熱點。在(盧風順,宋君強等; 2011)中提出,CPU/GPU異構混合並行系統以其強勁計算能力、高性價比和低能耗等特點成為新型高效能運算平臺[5]。在(張雲雷,李軻等; 2017)中,研究了基於CPU/GPU的雷達脈衝壓縮演算法並行機制[6]。除了學術界,在工業界,使用GPU加速計算機軟體執行也是一大課題。GPU廠商NVIDIA一直致力於研究科學,工程,消費和企業應用程式的GPU加速計算,並取得了顯著的成果。

但正如(盧風順,宋君強等; 2011)中所言,CPU/GPU協同平行計算屬於新興研究領域,其中還有很多挑戰有待解決。同時,目前主流的個人計算機軟體並沒有很好的並行工作能力,這仍然需要技術和行業的持續發展。

總結

CPU和GPU作為電子計算機的重要部件,無論是從物理結構上,還是從效能特性以及應用場景上,都有著很大的區別。相較於擔負計算機核心大腦功能,負責處理調配計算機指令的CPU,GPU提供單一強勁的多計算核心用於滿足圖形處理,資料探勘等大規模並行重複計算的需要。CPU和GPU作為不同應用場景的處理器,在目前的科技水平下,都是個人計算機中不可缺少的組成部分。

而根據二者的特點以及當下的發展趨勢,未來可能會出現成熟的CPU與GPU並行處理方案,在CPU與GPU互補的情況下,可以極大的提高計算機的計算能力和軟體響應速度,同時也將大大降低計算產生的功耗,從而大大降低個人計算機的體積重量,帶來更好的使用者體驗。 

參考文獻

[1] NVIDIA. NVIDIA CUDA Documentation[DB/OL].http://www.nvidia.cn/object/cuda_develop_cn_old.html, 2018-03-08

/object/what-is-gpu-computing-cn.html,2018-03-08

[3] 劉進鋒, 郭雷. CPU與GPU上幾種矩陣乘法的比較與分析[J]. 計算機工程與應用, 2011, 47(19):9-11.

[4]劉勇, 蘇軍. 基於CPU與GPU/OpenCL的快速傅立葉變換的實現和效能比較[J]. 科技資訊, 2010, 2(17):545+600.

[5]盧風順, 宋君強, 銀福康,等. CPU/GPU協同平行計算研究綜述[J]. 電腦科學, 2011, 38(3):5-9.

[6]彭培, 張雲雷, 李軻,等. 基於CPU/GPU處理器的雷達脈衝壓縮演算法並行機制研究[J]. 艦船電子工程, 2017(10):30-32.