|
【馮東的回答(64票)】: @Clones 的答案是一個常見的說法,但是沒有觸及到本質(zhì)。 首先,「速度區(qū)別主要是來自于架構(gòu)上的區(qū)別」是一個表面化的解釋。對,架構(gòu)是不同。但是這種不同是目前各個廠家選擇的現(xiàn)狀,還是由于本質(zhì)的原因決定的?CPU 能不能增加核?GPU 那張圖為什么不需要 cache? 首先,CPU 能不能像 GPU 那樣去掉 cache?不行。GPU 能去掉 cache 關(guān)鍵在于兩個因素:數(shù)據(jù)的特殊性(高度對齊,pipeline 處理,不符合局部化假設(shè),很少回寫數(shù)據(jù))、高速度的總線。對于后一個問題,CPU 受制于落后的數(shù)據(jù)總線標(biāo)準(zhǔn),理論上這是可以改觀的。對于前一個問題,從理論上就很難解決。因為 CPU 要提供通用性,就不能限制處理數(shù)據(jù)的種類。這也是 GPGPU 永遠無法取代 CPU 的原因。 其次,CPU 能不能增加很多核?不行。首先 cache 占掉了面積。其次,CPU 為了維護 cache 的一致性,要增加每個核的復(fù)雜度。還有,為了更好的利用 cache 和處理非對齊以及需要大量回寫的數(shù)據(jù),CPU 需要復(fù)雜的優(yōu)化(分支預(yù)測、out-of-order 執(zhí)行、以及部分模擬 GPU 的 vectorization 指令和長流水線)。所以一個 CPU 核的復(fù)雜度要比 GPU 高的多,進而成本就更高(并不是說蝕刻的成本高,而是復(fù)雜度降低了成片率,所以最終成本會高)。所以 CPU 不能像 GPU 那樣增加核。 至于控制能力,GPU 的現(xiàn)狀是差于 CPU,但是并不是本質(zhì)問題。而像遞歸這樣的控制,并不適合高度對齊和 pipeline 處理的數(shù)據(jù),本質(zhì)上還是數(shù)據(jù)問題。 【Clones的回答(9票)】: 速度區(qū)別主要是來自于架構(gòu)上的區(qū)別。架構(gòu)的不同則是因為硬件的設(shè)計目的不一樣。 英偉達的CUDA文檔里給了這樣一幅圖: ![]()
其中ALU就是“算術(shù)邏輯單元(Arithmetic logic unit)”。 CPU和GPU進行計算的部分都是ALU,而如圖所示,GPU絕大部分的芯片面積都是ALU,而且是超大陣列排布的ALU。這些ALU都是可以并行運行的,所以浮點計算速度就特別高了。 相比起來,CPU大多數(shù)面積都需要給控制單元和Cache,因為CPU要承擔(dān)整個計算機的控制工作,沒有GPU那么單純。 所以GPU的程序控制能力相比CPU來說不強,稍早時候的CUDA程序像是遞歸都是不能用的(較新的設(shè)備上可以了)。 我覺得也不是CPU不能提高浮點計算速度,而是因為沒什么特別的必要了。咱們通常的桌面應(yīng)用根本沒有什么特別的浮點計算能力要求。而同時GPU這樣的設(shè)備已經(jīng)出現(xiàn)了,那么需要浮點計算的場合利用上就行了 【石磊的回答(0票)】: 外行看熱鬧。 其實這是跟人類的需求相負荷的,最早出來的時候人們對多媒體并沒有這么大的需求,也就是對浮點的需求并不強烈,那自然就先解決重要的整數(shù)了,就這樣一直發(fā)展著,直到后來GPU后來才有了較大發(fā)展。 至于說為什么現(xiàn)在不提高cpu,只能說不需要不劃算,cpu是通用型的設(shè)備,它要提供多種復(fù)雜的服務(wù),而Gpu則相對來說比較單一,這樣實現(xiàn)相同功能gpu最劃算,就像常見的家用游戲機的效果比電腦好一樣,實際上我們可以看到電腦的配置并不必家用機差,這就是專用和通用體現(xiàn)出來的一些區(qū)別,當(dāng)然這些是基于現(xiàn)在的情況。 【王磊的回答(0票)】: GPU的出現(xiàn)就是為了大量的浮點運算(圖形圖像處理),除圖形圖像外的其他任務(wù)很少用到浮點運算,所以CPU不是不能提高浮點運算能力,而是沒必要。也許未來的哪一天GPU再次和CPU整合,不再作為單獨的部件存在了。 這世界嘛,合久必分分久必合。 【伊恩別的回答(0票)】: 首先想糾正一下可能有的誤解:CPU不是"不能"擁有那么高的浮點運算能力,而是不能在固定的成本下,在滿足其它通用計算的性能的前提下,還擁有那么高的浮點運算能力。圖中標(biāo)出的都是對應(yīng)年份發(fā)布的商品的性能,而不是技術(shù)能達到極限能力。另外,CPU的最主要用途是來做通用計算,而不是浮點運算,所以浮點運算的能力只要夠用就好。 【勞鈞浩的回答(0票)】: XBOX是最佳解決方案,請百度 原文地址:知乎 |
|
|