【廣告】
因為CPU有大量的緩存和復(fù)雜的邏輯控制單元,因此它非常擅長邏輯控制、串行的運算。相比較而言,GPU因為有大量的算術(shù)運算單元,因此可以同時執(zhí)行大量的計算工作,它所擅長的是大規(guī)模的并發(fā)計算, 計算量大但是沒有什么技術(shù)含量,而且要重復(fù)很多次。這樣一說,我們利用GPU來提高程序運算速度的方法就顯而易見了。使用CPU來做復(fù)雜的邏輯控制,用GPU來做簡單但是量大的算術(shù)運算,就能夠大大地提高程序的運行速度。
CPU控制技術(shù)的主要形式,時間控制。將時間定時應(yīng)用于各種操作中,就是所謂的時間控制。在執(zhí)行某一指令時,應(yīng)當(dāng)在規(guī)定的時間內(nèi)完成,CPU的指令是從高速緩沖存儲器或存儲器中取出,之后再進行指令譯碼操作,主要是在指令寄存器中實施,在這個過程中,需要注意嚴(yán)格控制程序時間。
更優(yōu)化的CPU架構(gòu)是superscalar架構(gòu)(超標(biāo)量架構(gòu))。這種架構(gòu)將取指、解了碼、執(zhí)行單元分開,有大量的執(zhí)行單元,然后每個取指 解了碼的部分都以并行的方式運行。比如有2個取指 解了碼的并行工作線路,每個工作線路都將解了碼后的指令放入一個緩存緩沖區(qū)等待執(zhí)行單元去取出執(zhí)行。
用戶態(tài)CPU想要執(zhí)行特權(quán)操作,需要發(fā)起系統(tǒng)調(diào)用來請求內(nèi)核幫忙完成對應(yīng)的操作。其實是在發(fā)起系統(tǒng)調(diào)用后,CPU會執(zhí)行trap指令陷入(trap)到內(nèi)核。當(dāng)特權(quán)操作完成后,需要執(zhí)行一個指令讓CPU返回到用戶態(tài)。除了系統(tǒng)調(diào)用會陷入內(nèi)核,更多的是硬件會引起trap行為陷入內(nèi)核,使得CPU控制權(quán)可以回到操作系統(tǒng),以便操作系統(tǒng)去決定如何處理硬件異常。
關(guān)于CPU上的高速緩存
1、高速的緩存是CPU的寄存器,它們和CPU的材料相同,靠近CPU或接近CPU,訪問它們沒有時延(<1ns)。但容量很小,小于1kb。
2、寄存器之下,是CPU的高速緩存。分為L1緩存、L2緩存、L3緩存,每層速度按數(shù)量級遞減、容量也越來越大。
3、每核心都有一個自己的L1緩存。L1緩存分兩種:L1指令緩存(L1-icache)和L1數(shù)據(jù)緩存(L1-dcache)。L1指令緩存用來存放已解了碼指令,L1數(shù)據(jù)緩存用來放訪問非常頻繁的數(shù)據(jù)。
4、L2緩存用來存放近期使用過的內(nèi)存數(shù)據(jù)。更嚴(yán)格地說,存放的是很可能將來會被CPU使用的數(shù)據(jù)。
5、多數(shù)多核CPU的各核都各自擁有一個L2緩存,但也有多核共享L2緩存的設(shè)計。無論如何,L1是各核私有的(但對某核內(nèi)的多線程是共享的)。