【廣告】
因為CPU有大量的緩存和復(fù)雜的邏輯控制單元,因此它非常擅長邏輯控制、串行的運算。相比較而言,GPU因為有大量的算術(shù)運算單元,因此可以同時執(zhí)行大量的計算工作,它所擅長的是大規(guī)模的并發(fā)計算, 計算量大但是沒有什么技術(shù)含量,而且要重復(fù)很多次。這樣一說,我們利用GPU來提高程序運算速度的方法就顯而易見了。使用CPU來做復(fù)雜的邏輯控制,用GPU來做簡單但是量大的算術(shù)運算,就能夠大大地提高程序的運行速度。
CPU有強大的算術(shù)運算單 元,可以在很少的時鐘周期內(nèi)完成算術(shù)計算。同時,有很大的緩存可以保存很多數(shù)據(jù)在里面。此外,還有復(fù)雜的邏輯控制單元,當程序有多個分支的時候, 通過提供分支預(yù)測的能力來降低延了時。GPU是基于大的吞吐量設(shè)計,有很多的算術(shù)運算單元和很少的緩存。同時GPU支持大量的線程同時運行,如果他們需要訪問同一個數(shù)據(jù),緩存會合并這些訪問,自然會帶來延了時的問題。盡管有延了時,但是因為其算術(shù)運算單元的數(shù)量龐大,因此能夠達到一個非常大的吞吐量的效果。
關(guān)于CPU的基本組成
1、CPU是用來運算的(加法運算 、乘法運算*、邏輯運算and not or等),例如c=a b。
2、運算操作涉及到數(shù)據(jù)輸入(input)、處理、數(shù)據(jù)輸出(output),a和b是輸入數(shù)據(jù),加法運算是處理,c是輸出數(shù)據(jù)。
3、CPU需要使用一個叫做存儲器(也就是各種寄存器)的東西保存輸入和輸出數(shù)據(jù)。
4、CPU還要將一些常用的基本運算工具(如加法器)放進CPU,這部分負責運算,稱為算術(shù)邏輯單元(ALU)。
5、CPU中還有一個控制器(CU),負責將存儲器中的數(shù)據(jù)送到ALU中去做運算,并將運算后的結(jié)果存回到存儲器中??刂破鬟€包含了一些控制信號。
每核上的多線程CPU都共享該核的CPU資源。
假設(shè)每核CPU都只有一個"發(fā)動機"資源,那么線程1這個虛擬CPU使用了這個"發(fā)動機"后,線程2就沒法使用,只能等待。
所以,超線程技術(shù)的主要目的是為了增加流水線上更多個獨立的指令,這樣線程1和線程2在流水線上就盡量不會爭搶該核CPU資源。所以,超線程技術(shù)利用了superscalar(超標量)架構(gòu)的優(yōu)點。