1. 程式人生 > >計算機指令執行過程詳解

計算機指令執行過程詳解

一、計算機的基本組成

馮·諾依曼計算機的特點(機器以運算器為中心)

1. 計算機由控制器(分析和執行機器指令並控制各部件的協同工作)、運算器(根據控制訊號對資料進行算術運算和邏輯運算)、儲存器(記憶體儲存中間結果,外存儲存需要長期儲存的資訊)、輸入裝置(接收外界資訊)和輸出裝置(向外界輸送資訊)五大部件組成
2. 指令(程式)和資料以二進位制不加區別地儲存在儲存器中
3. 程式自動執行

現代計算機由三大部分組成(已經轉化為以儲存器為中心)

1. CPU(Central Processing Unit) 中央處理器,核心部件為ALU(Arithmetic Logic Unit,算術邏輯單元)和CU

(Control Unit,控制單元)
2. I/O裝置(受CU控制)
3. 主儲存器(Main Memory,MM),分為RAM(隨機儲存器)和ROM(只讀儲存器)
//CPU與MM合成主機,I/O裝置可稱為外部裝置

二、一條指令在CPU的執行過程

// 專業術語
1. Ad(Address) 形式地址
2. DR(Data Register) 資料暫存器
3. AR(Address Register) 地址暫存器(MAR)
4. IR(Instruction Register) 指令暫存器
5. BR(Buffer Register) 緩衝暫存器(MBR)
5. ID(Instruction Decoder) 指令譯碼器
6. PC(ProgramCounter) 程式計數器

過程詳述:

幾乎所有的馮·諾伊曼型計算機的CPU,其工作都可以分為5個階段:

取指令

指令譯碼

執行指令

訪存取數

結果寫回

1.取指令階段
    取指令(Instruction FetchIF)階段是將一條指令從主存中取到指令暫存器的過程。
    程式計數器PC中的數值,用來指示當前指令在主存中的位置。當一條指令被取出後,PC中的數值將根據指令字長度而自動遞增:若為單字長指令,則(PC)+1àPC;若為雙字長指令,則(PC)+2àPC,依此類推。
    //PC -> AR -> Memory
    //Memory -> IR
2.指令譯碼階段 取出指令後,計算機立即進入指令譯碼(Instruction DecodeID)階段。 在指令譯碼階段,指令譯碼器按照預定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取運算元的方法。 在組合邏輯控制的計算機中,指令譯碼器對不同的指令操作碼產生不同的控制電位,以形成不同的微操作序列;在微程式控制的計算機中,指令譯碼器用指令操作碼來找到執行該指令的微程式的入口,並從此入口開始執行。 // { 1.Ad //Memory -> IR -> ID -> { 2.PC變化 // { 3.CU(Control Unit) 3.訪存取數階段 根據指令需要,有可能要訪問主存,讀取運算元,這樣就進入了訪存取數(MemoryMEM)階段。 此階段的任務是:根據指令地址碼,得到運算元在主存中的地址,並從主存中讀取該運算元用於運算。 //Ad -> AR -> AD -> Memory 4.執行指令階段 在取指令和指令譯碼階段之後,接著進入執行指令(ExecuteEX)階段。 此階段的任務是完成指令所規定的各種操作,具體實現指令的功能。為此,CPU的不同部分被連線起來,以執行所需的操作。 例如,如果要求完成一個加法運算,算術邏輯單元ALU將被連線到一組輸入和一組輸出,輸入端提供需要相加的數值,輸出端將含有最後的運算結果。 //Memory -> DR -> ALU 5.結果寫回階段 作為最後一個階段,結果寫回(WritebackWB)階段把執行指令階段的執行結果資料“寫回”到某種儲存形式:結果資料經常被寫到CPU的內部暫存器中,以便被後續的指令快速地存取;在有些情況下,結果資料也可被寫入相對較慢、但較廉價且容量較大的主存。許多指令還會改變程式狀態字暫存器中標誌位的狀態,這些標誌位標識著不同的操作結果,可被用來影響程式的動作。 //DR -> Memory 6.迴圈階段 在指令執行完畢、結果資料寫回之後,若無意外事件(如結果溢位等)發生,計算機就接著從程式計數器PC中取得下一條指令地址,開始新一輪的迴圈,下一個指令週期將順序取出下一條指令。 //重複 1~5 //遇hlt(holt on)停止