計算機組成原理——指令執(zhí)行過程
一個指令和一條數(shù)據(jù)在存儲上并沒有區(qū)別,那么一條指令是如何被執(zhí)行的呢?
指令周期
CPU從主存中取出并執(zhí)行一條指令的時間,包括取指、間址、執(zhí)行(取操作數(shù))、中斷四部分
指令周期包括若干機器周期,一個機器周期包括若干時鐘周期(也稱節(jié)拍或T周期)
指令周期的數(shù)據(jù)流
在指令執(zhí)行的不同階段,要求依次訪問的數(shù)據(jù)序列是不同的。我們依據(jù)這個特點將指令分為以下幾個周期
取指周期
顧名思義,取指周期的任務(wù)是根據(jù)PC中的內(nèi)容從主存中取出指令代碼并存放在IR中。

取值周期的數(shù)據(jù)流如下:
程序計數(shù)器將當前指令地址送去存儲器地址寄存器。
控制單元發(fā)出控制信號,經(jīng)總線傳送至主存。
存儲器將當前指令地址所指的數(shù)據(jù)傳送至存儲器數(shù)據(jù)寄存器中
存儲器數(shù)據(jù)寄存器將數(shù)據(jù)發(fā)送至指令寄存器中
控制單元發(fā)出控制信號,PC++
間址周期
間址周期的任務(wù)是獲取操作數(shù)的有效地址(因為可能是操作數(shù)直接記錄一個地址,這個反應(yīng)到我們編程中可以理解為指針,所以也會出現(xiàn)指針的指針等套娃)

從指令寄存器中取出操作數(shù),并將其寫入至存儲器地址寄存器中。
控制單元發(fā)出控制信號,經(jīng)總線傳送至主存。
主存通過數(shù)據(jù)總線將數(shù)據(jù)寫入至存儲器數(shù)據(jù)寄存器中。
執(zhí)行周期
顧名思義這個就是執(zhí)行指令了,不過不同的指令的實現(xiàn)肯定是不同的,因此數(shù)據(jù)流向肯定也是不同的,這里就不一一列舉了。
中斷周期
中斷周期的任務(wù)是處理中斷請求. 中斷的意思是暫停當前任務(wù),先去執(zhí)行其他任務(wù),這就需要我們保存斷點。否則無法在執(zhí)行其他任務(wù)后恢復(fù)任務(wù)。
我們用SP表示棧頂?shù)刂贰2⒓s定進棧操作是先修改地址,再存入數(shù)據(jù)(這里理解的有些困難的同學(xué)建議去看看CSAPP)。
通過控制單元將SP地址--,并將修改后的地址送入存儲器地址寄存器。
控制單元向主存發(fā)送控制信號
程序計數(shù)器經(jīng)過存儲器數(shù)據(jù)寄存器經(jīng)過數(shù)據(jù)總線寫入主存(這個操作就是將中斷發(fā)生前的程序數(shù)據(jù)寫入主存)
控制單元將中斷服務(wù)程序地址賦值給PC。
作者:山花
鏈接:https://juejin.cn/post/7022313020550283294
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
