計算機執行指令


1.示例

指令格式:ADD R0,[6]

指令功能:

ADD這是一條加法指令

通用寄存器R0的內容+地址為6存儲單元的內容=運算結果(更新到R0)

2.過程

R0里面數為00000011十進制為3

地址為0110(6)存儲單元內容為00000010十進制為2

也就是計算3+2=5並且把運算結果返回到R0

2.1取指

①控制器將指令的地址送往存儲器。

②存儲器按給定地址獨處指令內容,送回控制器。

上圖具體步驟

1.控制器發出控制信號將PC寄存器里面的地址通過內部總線傳送到MAR寄存器里

2.MAR寄存器將地址送到地址總線上,與此同時控制電路會在控制總線上發出控制信號,並表示這次訪問

存儲器是讀取數據。

3.存儲器的MAR寄存器收到地址總線上的地址,並將其保存下來,存儲器里面的控制邏輯也會收到

控制總線過來的控制信號,得知這次操作是讀操作。

4.存儲器通過地址譯碼器對應地址0001存儲單元內容,並將該存儲單元內容送到MDR寄存器中。

存儲器的控制邏輯會通過控制總線向cpu反饋當前的傳輸已經主備好了。

5.同時MDR里面內容也送到數據總線上,隨后,cpu控制電路檢測到來自控制總線准備好Ready信號,得知

數據總線上准備好了數據。

6.因此cpu中的MDR寄存器將當前數據總線上傳送來的數值保存下來,這就獲得了我們要取的指令。

7.cpu中MDR寄存器的內容要傳送到IR指令寄存器中,當指令進入IR中,取指這部分算是完成了嗎?

8.PC寄存器更新為下一條指令的地址。0001變為0010,取指階段到此完成

2.2譯碼

①控制器分析指令的操作性質

②控制器向有關部件發出指令所需控制信號

上圖具體步驟

1.當前IR指令寄存器中的指令編碼送到指令譯碼部件。

2.指令譯碼部件根據指令編碼很快會發現這是一條加法指令,而且是吧R0

和存儲器地址為6的單元內容相加,把結果存入R0中。控制電路據此產生控制信號發到相關部件中

譯碼階段到此完成。

譯碼得到的指令:ADD R0,[6]

2.3執行

①控制器從通用寄存器或存儲器取出操作數

②控制器命令運算器對操作數進行指令規定的運算

 

上圖具體步驟

1.根據這條指令需要去取操作數,其中一個操作數在存儲器中地址為6的單元,因此在MAR寄存器中放入要取的操作數地址0110(十進制的6)。

2.MAR寄存器將地址發送到地址總線,同時控制電路發送讀取的信號到控制總線,存儲器的控制邏輯和MRA寄存器會接收到相應的信號,然后

查找到對應地址0110里面的內容00000010,送到MDR寄存器,存儲器控制邏輯向cpu反饋當前數據已經准備好的信號,MDR內容會被放到

地址總線上,cpu接收數據並放在MDR寄存器中。

3.cpu里面MDR寄存器數據要參與加法運算,cpu控制器會將MDR寄存器數據通過內部總線傳送到ALU的輸入Y寄存器中,這一個操作數已經准備好了。另一個操作數存放在R0寄存器中,因此控制器會將R0里面數據通過內部總線傳送到ALU另一個輸入端X寄存器。

4.現在兩個操作數R0和6已經准備好了,在控制電路的控制下ALU就會進行運算將X和Y寄存器里面的內容進行加法運算。結果是00000101(十進制5)

到此執行階段就結束了。

2.4回寫

①將運算結果寫入通用寄存器或存儲器

 

1.現在運算結果還在ALU的輸出端Z寄存器,控制電路會給出相應控制信號,將z寄存器內容傳送到

R0寄存器中,R0里面原來的數據會被新的結果覆蓋。這個加法運算的結果就保存到R0寄存器中

回寫階段到此完成。

3.CPU就會執行下一條指令

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM