指令周期
編輯指令周期(也稱為獲取-解碼-執行周期,或簡稱為獲取-執行周期)是中央處理器 (CPU) 從啟動到計算機關閉以處理指令所遵循的周期 . 它由三個主要階段組成:取指階段、解碼階段和執行階段。
在更簡單的 CPU 中,指令周期是按順序執行的,每條指令在下一條指令開始之前被處理。 在大多數現代 CPU 中,指令周期是通過指令流水線并發執行的,而且通常是并行執行的:下一條指令在前一條指令完成之前開始處理,這是可能的,因為周期被分解成單獨的步驟。
組件的作用
編輯程序計數器(PC)是一個特殊的寄存器,保存著下一條要執行的指令的內存地址。 在獲取階段,PC 中存儲的地址被復制到內存地址寄存器 (MAR) 中,然后 PC 遞增以指向下一條要執行的指令的內存地址。 然后,CPU 在 MAR 描述的內存地址處獲取指令,并將其復制到內存數據寄存器 (MDR) 中。 MDR 還充當雙向寄存器,用于保存從內存中獲取的數據或等待存儲在內存中的數據(因此也稱為內存緩沖寄存器 (MBR))。 最終,MDR 中的指令被復制到當前指令寄存器 (CIR) 中,該寄存器充當剛剛從內存中獲取的指令的臨時存放地。
在解碼階段,控制單元(CU)將解碼 CIR 中的指令。 然后,CU 將信號發送到 CPU 內的其他組件,例如算術邏輯單元 (ALU) 和浮點單元 (FPU)。 ALU 執行算術運算,例如加法和減法,還可以通過重復加法進行乘法運算,通過重復減法進行除法運算。 它還執行邏輯運算,例如 AND、OR、NOT 和二進制移位。 FPU 保留用于執行浮點運算。
階段總結
編輯每臺計算機的CPU根據不同的指令集可以有不同的周期,但都會類似下面的周期:
- 取指階段:從程序計數器當前存儲的內存地址中取下一條指令,存入指令寄存器。 在獲取操作結束時,PC 指向將在下一個周期讀取的下一條指令。
- 解碼階段:在此階段,指令寄存器中的編碼指令由解碼器解釋。
- 讀取有效地址:在內存指令(直接或間接)的情況下,執行階段將在下一個時鐘脈沖期間。 如果指令有間接地址,則從主存中讀取有效地址,并從主存中取出任何需要處理的數據,然后放入數據寄存器(時鐘脈沖:T3)。 如果指令是直接指令,則在此時鐘脈沖期間不執行任何操作。 如果這是 I/O 指令或寄存器指令,則操作在時鐘脈沖期間執行。
- 執行階段:CPU的控制單元將解碼后的信息作為控制信號序列傳遞給CPU的相關功能單元,以執行指令所需的動作,例如從寄存器中讀取值,將它們傳遞給 ALU 對它們執行數學或邏輯函數,并將結果寫回寄存器。 如果涉及 ALU,它會將條件信號發送回 CU。 運算產生的結果存儲在主存儲器中或發送到輸出設備。 根據 ALU 的反饋,PC 可能會更新到一個不同的地址,下一條指令將從該地址獲取。
- 重復循環
此外,在大多數處理器上都可能發生中斷。 這將導致 CPU 跳轉到中斷服務程序,執行該程序然后返回。 在某些情況下,一條指令可以在中途被中斷,該指令不會有任何效果,但會在從中斷返回后重新執行。
啟動
編輯系統一通電,循環就開始了,初始 PC 值由系統架構預定義(例如,在 Intel IA-32 CPU 中,預定義的 PC 值為 0xfffffff0)。
通常,此地址指向只讀存儲器 (ROM) 中的一組指令,這些指令開始加載(或引導)操作系統的過程。
獲取階段
編輯每條指令的獲取步驟都是相同的:
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/196064/