【廣告】
程序的運行過程,實際上是程序涉及到的、未涉及到的一大堆的指令的執(zhí)行過程。當(dāng)程序要執(zhí)行的部分被裝載到內(nèi)存后,CPU要從內(nèi)存中取出指令,然后指令解了碼(以便知道類型和操作數(shù),簡單的理解為CPU要知道這是什么指令),然后執(zhí)行該指令。再然后取下一個指令、解了碼、執(zhí)行,以此類推直到程序退出。
CPU,是電子計算機的主要設(shè)備之一,電腦中的核心配件。其功能主要是解釋計算機指令以及處理計算機軟件中的數(shù)據(jù)。CPU是計算機中負責(zé)讀取指令,對指令譯碼并執(zhí)行指令的核心部件。每個CPU都有一套自己可以執(zhí)行的專門的指令集(注意,這部分指令是CPU提供的,CPU-Z軟件可查看)。正是因為不同CPU架構(gòu)的指令集不同,使得x86處理器不能執(zhí)行ARM程序,ARM程序也不能執(zhí)行x86程序。(Intel和AMD都使用x86指令集,手機絕大多數(shù)使用ARM指令集)。
用戶態(tài)的CPU,只允許執(zhí)行指令集中的部分指令。一般而言,IO相關(guān)和把內(nèi)存保護相關(guān)的所有執(zhí)行在用戶態(tài)下都是被禁止的,此外其它一些特權(quán)指令也是被禁止的,比如用戶態(tài)下不能將PSW的模式設(shè)置控制位設(shè)置成內(nèi)核態(tài)。
控制器之所以知道數(shù)據(jù)放哪里、做什么運算(比如是做加法還是邏輯運算?)都是由指令告訴控制器的,每個指令對應(yīng)一個基本操作,比如加法運算對應(yīng)一個指令。例如,將兩個MDR寄存器(保存了來自內(nèi)存的兩個數(shù)據(jù))中的值拷貝到ALU中,然后根據(jù)的操作指令執(zhí)行加法運算,將運算結(jié)果拷貝會一個MDR寄存器中,后寫入到內(nèi)存。
關(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,這部分負責(zé)運算,稱為算術(shù)邏輯單元(ALU)。
5、CPU中還有一個控制器(CU),負責(zé)將存儲器中的數(shù)據(jù)送到ALU中去做運算,并將運算后的結(jié)果存回到存儲器中??刂破鬟€包含了一些控制信號。