計算機的指令運行過程

例如:ADD R0 [6] (默認第一個操做數便是原操做數,又是目的操做數)編碼

將通用寄存器R0中的數據,與存儲器地址爲6的數據相加,返回給寄存器R0設計

假設計算機已有初始值,R0中的值爲00000011,PC中的值爲0001,存儲器地址0001中的指令用10101010指代,
具體過程詳解:
1.取指:控制器將指令地址送往存儲器,存儲器按給定的地址讀出數據,送回控制器
(1)控制器發出控制信號,將PC寄存器中的內容經過CPU內部總線傳送到MAR中(MAR中也保存了0001)
(2)MAR將地址送到地址總線,與此同時,控制電路在控制總線上發出控制信號,表明這次操做爲read,這樣存儲器上MAR寄存器就會收到地址總線上傳送來的地址,並把它保存下來
存儲器中的控制邏輯也會收到控制總線上的信號,表示這次操做爲read,這樣存儲器經過地址譯碼器,就能夠查找到對應地址0001的存儲單元上的內容,並將其中的數據傳送到MDR寄存器中
(3)存儲器的控制邏輯經過控制總線向CPU反饋當前傳輸狀態READY,同時MDR中的內容傳送到數據總線上,隨後CPU中控制電路檢測到控制總線上的Ready信號,就知道當前數據總線上已經準備好了數據,
所以,CPU中MDR就會將數據總線傳送的數據保存下來,而後將MDR中的數據必需要傳送到IR寄存器中
(4)PC寄存器中的數據更新到下一條指令所需訪問的地址0010(取值階段完成)blog

2.譯碼:控制器分析指令的操做性質,控制器向有關部件發出指令所需的控制信號
(1)當前IR寄存器中的數據送到指令譯碼部件,指令譯碼部件根據指令編碼解析10101010(ADD R0 [6]),控制電路據此產生對應的控制信號,發送到相關部件中im

3.執行:控制器從通用寄存器或存儲器取出操做數,控制器命令運算器對操做數進行指令規定的運算。
(1)MAR中會產生0110(即6)隨後的過程相似於取值階段,由於最後傳送到CPUMDR中的數據要進行加法運算,因此隨後還會將其傳送到ALU的Y寄存器中
(2)另外一個操做數存儲在R0中,所以因此會將R0中的數據傳送到ALU的另外一個輸入端,即X寄存器上
(3)在控制電路的做用下,ALU進行運算,將XY中的內容執行加法,計算出結果00000101
4.回寫:將運算結果寫入通用寄存器或存儲器中
(1)當前運算結果還在ALU的輸出端即Z寄存器中,控制電路給出相應的控制Z寄存器中的數據傳送到R0中,R0本來的數據被新的結果覆蓋
(2)CPU中PC寄存器進行下一條指令數據

相關文章
相關標籤/搜索