CPU和GPU擅長和不擅長的方面


從它們執行運算的速度與效率的方面來探討這個論題。
?? CPU和GPU都是具有運算能力的芯片, CPU更像“通才”——指令運算(執行)為重+數值運算GPU更像“專才”——圖形類數值計算為核心。在不同類型的運算方面的速度也就決定了它們的能力——“擅長和不擅長”。芯片的速度主要取決于三個方面:微架構,主頻和IPC(每個時鐘周期執行的指令數)。
1.微架構
?? 從微架構上看,CPU和GPU看起來完全不是按照相同的設計思路設計的,當代CPU的微架構是按照兼顧“指令并行執行”和“數據并行運算”的思路而設計,就是要兼顧程序執行和數據運算的并行性、通用性以及它們的平衡性。CPU的微架構偏重于程序執行的效率,不會一味追求某種運算極致速度而犧牲程序執行的效率。
?? CPU微架構的設計是面向指令執行高效率而設計的,因而CPU是計算機中設計最復雜的芯片。和GPU相比,CPU核心的重復設計部分不多,這種復雜性不能僅以晶體管的多寡來衡量,這種復雜性來自于實現:如程序分支預測,推測執行,多重嵌套分支執行,并行執行時候的指令相關性和數據相關性,多核協同處理時候的數據一致性等等復雜邏輯。
?? GPU其實是由硬件實現的一組圖形函數的集合,這些函數主要用于繪制各種圖形所需要的運算。這些和像素,光影處理,3D坐標變換等相關的運算由GPU硬件加速來實現。圖形運算的特點是大量同類型數據的密集運算——如圖形數據的矩陣運算, GPU的微架構就是面向適合于矩陣類型的數值計算而設計的,大量重復設計的計算單元,這類計算可以分成眾多獨立的數值計算——大量數值運算的線程,而且數據之間沒有像程序執行的那種邏輯關聯性。
?? GPU微架構復雜度不高,盡管晶體管的數量不少。從應用的角度看,如何運用好GPU的并行計算能力主要的工作是開發好它的驅動程序。GPU驅動程序的優劣很大程度左右了GPU實際性能的發揮。
?? 因此從微架構上看, CPU擅長的是像操作系統、系統軟件和通用應用程序這類擁有復雜指令調度、循環、分支、邏輯判斷以及執行等的程序任務。它的并行優勢是程序執行層面的,程序邏輯的復雜度也限定了程序執行的指令并行性,上百個并行程序執行的線程基本看不到。 GPU擅長的是圖形類的或者是非圖形類的高度并行數值計算,GPU可以容納上千個沒有邏輯關系的數值計算線程,它的優勢是無邏輯關系數據的并行計算。
2.主頻
?? 另外,GPU執行每個數值計算的速度并沒有比CPU快,從目前主流CPU和GPU的主頻就可以看出了,CPU的主頻都超過了1GHz,2GHz,甚至3GHz,而GPU的主頻最高還不到1GHz,主流的也就500~600MHz。要知道1GHz= 1000MHz。所以GPU在執行少量線程的數值計算時并不能超過CPU。
目前 GPU數值計算的優勢主要是浮點運算,它執行浮點運算快是靠大量并行,但是這種數值運算的并行性在面對程序的邏輯執行時毫無用處。
3.IPC(每個時鐘周期執行的指令數)
?? 這個方面,CPU和GPU無法比較,因為GPU大多數指令都是面向數值計算的,少量的控制指令也無法被操作系統和軟件直接使用。如果比較數據指令的IPC,GPU顯然要高過CPU,因為并行的原因。但是,如果比較控制指令的IPC,自然是CPU的要高的多。原因很簡單,CPU著重的是指令執行的并行性。
另外,目前有些GPU也能夠支持比較復雜的控制指令,比如條件轉移、分支、循環和子程序調用等,但是GPU程序控制這方面的增加,和支持操作系統所需要的能力CPU相比還是天壤之別,而且指令執行的效率也無法和CPU相提并論。
最后總結一下:
?? CPU擅長的:操作系統,系統軟件,應用程序,通用計算,系統控制等等;游戲中人工智能,物理模擬等等;3D建模-光線追蹤渲染;虛擬化技術——抽象硬件,同時運行多個操作系統或者一個操作系統的多個副本等等。
GPU擅長的圖形類矩陣運算,非圖形類并行數值計算,高端3D游戲
?? 綜上所述,在一臺均衡計算的計算機系統中,CPU和GPU還是各司其職,除了圖形運算,GPU將來可能主要集中在高效率低成本的高性能并行數值計算,幫助CPU分擔這種類型的計算,提高系統這方面的性能。而當前的典型應用還是高端3D游戲,一個高效的GPU配合一個高效的CPU,3D游戲的整體效率才能得到保證。“高端3D游戲只需要高端顯卡”或者“高端3D游戲只需要CPU”都是無稽之談。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254308.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一些IO流的知識

IO流: 輸入流:輸出流: 字節流:字符流:為了處理文字數據方便而出現的對象。 其實這些對象的內部使用的還是字節流(因為文字最終也是字節數據) 只不過,通過字節流讀取了相對應的字節數,沒有對這些…

為人示弱,做事留余 | 摸魚系列

我很喜歡結交有很好的自然觀察能力的朋友,這是種對周圍環境和文化的洞察力。 一方面的原因是優秀的領導者、企業家和投資人能利用這種能力發現新市場,預測新潮流,設計出有效的市場營銷活動,并找到需要重點關注的人群。 另一方面&a…

從一般到特殊-C#中的對象

文章目錄對象的概念對象的創建和使用匿名類型和初始化器構造函數和析構函數構造函數析構函數范例參數傳遞博主寫作不容易,孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 對象的概念 類是具有相同特征一類事物的抽象,而對象是類的實例。 類和對象…

如何用面對對象來做一個躁動的小球?

今天來看看怎樣用面對對象來做一個躁動的小球。 首先我們先創建一個對象&#xff0c;他的屬性包含小球的隨機水平、縱向坐標&#xff0c;隨機寬、高&#xff0c;隨機顏色&#xff0c;以及創建小球的方法。 html: <div id"wrap"></div> js:function Boll(…

關于MyEclipse項目的名字的修改對項目導入導出的影響

不要修改項目名字&#xff0c;不管是在MyEclipse中(.project文件里面的額name會變)還是在G:\MyEclipseData目錄下(.project文件里面的額name不會變)&#xff0c;否則導入的時候不能訪問&#xff0c;會出現400的錯誤&#xff0c;而訪問的網址必須是以前沒改名前的那個名字才可以…

Gcc詳解以及靜態庫、動態庫生成

[轉] Gcc詳解以及靜態庫、動態庫生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1。gcc包含的c/c編譯器 gcc,cc,c,g,gcc和cc是一樣的&#xff0c;c和g是一樣的&#xff0c;(沒有看太明白前面這半句是什 么意思:))一般c程序就用gcc編譯&#xff0c;c程序…

改變世界的七大NLP技術,你了解多少?(上)

什么是NLP&#xff1f; 自然語言處理&#xff08;NLP&#xff09; 是計算機科學&#xff0c;人工智能和語言學的交叉領域。目標是讓計算機處理或“理解”自然語言&#xff0c;以執行語言翻譯和問題回答等任務。 隨著語音接口和聊天機器人的興起&#xff0c;NLP正在成為信息時代…

MINI類-結構體

文章目錄結構體的定義和使用實例類和結構體的關系博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 結構體與類相似&#xff0c;通常用來封裝小型的相關變量組&#xff0c;例如&#xff0c;學生的學號、姓名、性別、年齡等。結構是一種值類型&am…

由.def文件生成lib文件[轉]

最近在學習curl庫時&#xff0c;碰到一個問題&#xff0c;從官網上下載了一個lib版的&#xff0c;卻發現只有.dll&#xff0c;沒有lib文件&#xff0c;感覺很奇怪&#xff0c;google了之后才知道&#xff0c;原來庫作者的用意是讓用戶自己生成lib文件&#xff0c;下載到的lib文…

union 和 union all 有什么不同?

假設我們有一個表 Student&#xff0c; 包括以下字段與數據&#xff1a;drop table student;create table student( idint primary key,name nvarchar2(50) not null,score number not null);insert into student values(1,Aaron,78);insert into student values(2,Bill,76);in…

暴風影音硬件加速播放高清影片

近年來&#xff0c;高清視頻因為畫面清晰、視覺效果好&#xff0c;越來越受到眾多電腦用戶的厚愛。暴風影音3.6版本在高清的支持上&#xff0c;筆者必須得說&#xff0c;是暴風影音在高清方面的一個大跨越&#xff0c;在這個技術上&#xff0c;暴風把KMP等播放器都遠遠的拋在后…

SSL雙向認證的實現

2019獨角獸企業重金招聘Python工程師標準>>> 環境 系統&#xff1a;archlinux/centOS nginx&#xff1a;nginx/1.12.2 瀏覽器&#xff1a;火狐firefox 前提&#xff1a;1.安裝nginx。    2.安裝openssl。 生成證書 新建工作目錄 首先建立一個工作目錄&#x…

partial 分部類-龐大類的瘦身計劃

文章目錄使用情況語法博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 一般來說&#xff0c;一個類、結構或者接口位于一個源文件中&#xff0c;但是某些情況&#xff0c;比如大型項目、特殊部署時&#xff0c;可能需要把一個類、結構或者接口放…

scroll-view——小程序橫向滾動

這是官方給的布局代碼 <view class"section"><view class"section__title">vertical scroll</view><scroll-view scroll-y style"height: 200px;" bindscrolltoupper"upper" bindscrolltolower"lower"…

二期設計

電子鎖管理 設備管理 設備管理 1 信息編輯;回收電子鎖發放 電子鎖初始化&#xff0c;發放 4 記錄車輛在發車時使用的電子鎖電子鎖開鎖聯系人管理 電子鎖開鎖聯系人管理 1 根據訂單路線中的投點&#xff0c;設置每個投遞點的開鎖聯系人&#xff0c;通過短信的方式下發給你開…

音視頻同步系列文章之------時間戳與時間尺度(time scale)

根據一些文章我自己推敲了一下幾個概念如下&#xff1a; 采樣頻率是每秒鐘抽取聲波幅度樣本的次數。8000 幀率是每秒顯示幀數。 20 時間戳單位&#xff1a;時間戳計算的單位不為秒之類的單位&#xff0c;而是由采樣頻率所代替的單位&#xff0c;這…

30秒無需編碼完成一個REST API服務

JSON Server 30秒內無需編碼快速完成一個模擬的REST API服務。 這個服務主要是給那些需要快速的模擬原型后端接口的前端人員使用的 GitHub&#xff1a;github.com/typicode/js… 安裝 $ npm install -g json-server 復制代碼Example 新建一個 db.json 文件 {"posts":…

namespace-C#命名空間

博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 C#程序是利用命名空間組織起來的。命名空間既做程序的內部組織系統&#xff0c;又用做外部組織系統。就像一個國家為了便于管理&#xff0c;分成多個省份一樣。 聲明命名空間 命名空間是.NET …

NKU 專題一 題解

A - Flip Game 總的情況數只有2^16次方種&#xff0c;顯然直接bfs就可以了 1 #include<iostream>2 #include<queue>3 #include<cstring>4 using namespace std;5 int W,B,start;6 bool have[1000000];7 struct plot{8 int n,step;9 }; 10 void input(int…

僵尸進程(轉)

前面的文章中&#xff0c;我們已經了解了父進程和子進 程的概念&#xff0c;并已經掌握了系統調用exit的用法&#xff0c;但可能很少有人意識到&#xff0c;在一個進程調用了exit之后&#xff0c;該進程并非馬上就消失掉&#xff0c;而是留下一個稱為僵尸進 程&#xff08;zomb…