一、基本概念
指令周期:取出並執行一條指令所需要的時間(解釋一條指令所需要的時間)

每條指令的指令周期不同
有些指令周期就沒有執行周期——例如空操作(NOP)
有些指令的取指周期和執行周期是等長的——add mem
有些指令的執行周期就比較長——mul mem
具有間址尋址的指令周期
因為尋址方式的不同,可能是間址尋址,所以在執行周期中要取出操作數,需要進行兩次訪存,那么這個時候,如果我們將指令周期划分為:取址周期,間址周期,執行周期
那么,這個時候,間址周期執行的是將操作數的地址從主存中取出,執行周期執行的是取出操作數並執行相應的操作並把結果保存在給定的寄存器當中。
帶中斷的指令周期
如果程序執行的過程中有中斷,那么就要添加一個中斷周期:如果有中斷請求的話,我們需要去響應中斷:保存斷電,形成中斷服務程序的入口地址,硬件關中斷

二、指令周期流程
在指令周期中,至少包含了1個周期:取址周期
在取址周期后,需要判斷是否有間址周期,如果沒有就進入到了執行周期,在執行周期過程中,需要判斷有沒有中斷程序,如果有,就響應中斷:保存斷點,生成中斷服務程序入口,硬件關斷點;如果沒有,就進入下一個取址周期

三、CPU工作周期的標志
由於處在不同的指令周期,控制器需要做不同的操作,所以控制器在指令周期的不同時段,需要發出不同的控制命令。控制器也要知道當前處於指令周期的哪一個階段。
四、指令周期的數據流
1.取址周期數據流

目標:需要將PC中的地址取出,並存在IR(指令寄存器中)
步驟:先將PC中的指令地址送到MAR(主存地址寄存器)中,再通過地址總線送到存取器中,然后CU通過控制總線將存儲器中的數據讀出來並通過數據總線將數據送到MDR中,然后再送到IR中。但是,這樣還沒有完,CU還會將PC+1,使得PC指向下一條指令所在的地址
2.間址周期數據流
間址周期說明IR中或者是MDR中保存的是操作數的地址。
假設我們的操作數的地址保存在了MDR中:
首先,MAR先從MDR中將數據地址的地址讀出,然后通過地址總線傳到存儲器中,CU發出控制信號,並通過控制總線將地址讀出通過數據總線放回到MDR中
3.執行周期數據流
不同指令執行周期數據流不同
4.中斷周期數據流

我們要知道中斷周期我們做了什么操作:
保存斷點
生成中斷服務程序入口地址
硬件關閉斷點
CU決定了把中斷保存在內存單元的哪一個地址(保存斷點是一個寫操作)
首先,我們需要保存斷點,但是有誰知道斷點需要保存在哪里呢——CU,所以第一步是將CU中的地址傳到MAR再通過地址總線傳到存儲器中,那么,我們是要保存當前斷點的地址,當前斷點的地址在哪里有呢——PC,所以第2步我們需要將PC的地址傳到MDR通過數據總線傳到存儲器中。而中斷程序的入口地址是由CU給出,CU直接將入口地址放入PC中
