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