計算機執行一條指令的主要步驟:取指(fetch)譯碼(decode)執行(execute)回寫(write back)
計算機執行指令的過程 順序是
第一步 取指 控制器將指令的地址送往存儲器
存儲器按給定的地址讀出指令內容,送回控制器
(1.控制器發出控制信號將PC寄存器中的內容通過內部總線傳送到MAR中,
2.MAR把這個地址送到地址總線上,與此同時控制電路會在控制總線上發出相應的控制信號,代表這次訪問存儲器的操作是要讀數據,
3.這樣存儲器的MAR寄存器就會收到地址總線上傳送來的地址並把它保存下,存儲器中的控制邏輯,也會收到控制總線中傳來的控制信號得知這次仿真操作是一次讀操作,
4.這樣存儲器通過地址譯碼器就可以查找到對應地址的存儲單元的內容,並將存儲單元的內容送到MDR寄存器中,
5.然后存儲器的控制邏輯,會通過控制總線將CPU反饋,當前的傳輸已經准備好了,同時MDR中的內容也會送到數據總線上。隨后CPU中的控制電路檢測到來自控制總線的准備好的READY信號,就知道當前數據總線上已經准備好了數據,
6.因此MDR寄存器就會將數據總線上傳送來的數值保存下來,
7.MDR中的內容必須要傳到指令寄存器中,也就是IR寄存器,
8.再把PC寄存器更新為下一條指令所需要訪問的地址,取指令階段完成。)
第二步 譯碼 控制器分析指令的操作性質
控制器向有關部件發出指令所需的控制信號
(1.當前的指令寄存器IR中指令編碼會送到指令譯碼部件,
2.指令譯碼部件根據指令編碼確定指令類型,控制電路就據此產生對應的控制信號,發到相關部件中,譯碼階段完成)
第三步 執行 控制器從通用寄存器或存儲器取出操作數
控制器命令運算器對操作數進行指令規定的運算
(1.在MAR中放置要訪問的存儲器的地址
2.MAR將地址發到地址總線,同時控制電路在控制總線發出讀操作的控制信號,存儲器的MAR控制邏輯會接收到相應的信號,然后查找對應的地址,對應的內容會送到MDR寄存器,然后控制邏輯會向CPU反饋當前數據已經准備好了的信號,然后MDR的內容也會被放置到數據總線上,CPU接收數據並保存在MDR寄存器上,
3.假如數據要進行加法運算,控制器會進一步將MDR中的數據傳送到ALU的輸入暫存到Y寄存器中,如果另一個數據放在R0中,控制器還會將R0中的數據傳送到ALU的另一個輸入端,也就是X寄存器,
4.在控制電路的控制下ALU就會進行運算,再將X、Y中的內容執行加法並計算出結果,執行階段完成)
第四步 回寫 將運算結果寫入通用寄存器或存儲器
(運算結果在ALU的輸出端,也就是Z寄存器中,控制電路會給出相應的控制信號,將Z寄存器當中的內容傳送到R0中,R0目前的內容是之前的原操作數,隨后會被新的結果所覆蓋,回寫階段完成)
然后CPU會執行下一條指令