【廣告】
程序的運行過程,實際上是程序涉及到的、未涉及到的一大堆的指令的執(zhí)行過程。當程序要執(zhí)行的部分被裝載到內存后,CPU要從內存中取出指令,然后指令解了碼(以便知道類型和操作數(shù),簡單的理解為CPU要知道這是什么指令),然后執(zhí)行該指令。再然后取下一個指令、解了碼、執(zhí)行,以此類推直到程序退出。
CPU有強大的算術運算單 元,可以在很少的時鐘周期內完成算術計算。同時,有很大的緩存可以保存很多數(shù)據在里面。此外,還有復雜的邏輯控制單元,當程序有多個分支的時候, 通過提供分支預測的能力來降低延了時。GPU是基于大的吞吐量設計,有很多的算術運算單元和很少的緩存。同時GPU支持大量的線程同時運行,如果他們需要訪問同一個數(shù)據,緩存會合并這些訪問,自然會帶來延了時的問題。盡管有延了時,但是因為其算術運算單元的數(shù)量龐大,因此能夠達到一個非常大的吞吐量的效果。
用戶態(tài)CPU想要執(zhí)行特權操作,需要發(fā)起系統(tǒng)調用來請求內核幫忙完成對應的操作。其實是在發(fā)起系統(tǒng)調用后,CPU會執(zhí)行trap指令陷入(trap)到內核。當特權操作完成后,需要執(zhí)行一個指令讓CPU返回到用戶態(tài)。除了系統(tǒng)調用會陷入內核,更多的是硬件會引起trap行為陷入內核,使得CPU控制權可以回到操作系統(tǒng),以便操作系統(tǒng)去決定如何處理硬件異常。
關于CPU的基本組成
1、CPU是用來運算的(加法運算 、乘法運算*、邏輯運算and not or等),例如c=a b。
2、運算操作涉及到數(shù)據輸入(input)、處理、數(shù)據輸出(output),a和b是輸入數(shù)據,加法運算是處理,c是輸出數(shù)據。
3、CPU需要使用一個叫做存儲器(也就是各種寄存器)的東西保存輸入和輸出數(shù)據。
4、CPU還要將一些常用的基本運算工具(如加法器)放進CPU,這部分負責運算,稱為算術邏輯單元(ALU)。
5、CPU中還有一個控制器(CU),負責將存儲器中的數(shù)據送到ALU中去做運算,并將運算后的結果存回到存儲器中。控制器還包含了一些控制信號。