【基礎知識】CPU指令周期


完整執行一條指令所需要的時間

 

基本概念

指令周期讀取-執行周期(fetch-and-execute cycle)是指CPU要執行指令經過的步驟。

計算機之所以能自動地工作,是因為CPU能從存放程序的內存里取出一條指令並執行這條指令;緊接着又是取指令,執行指令,如此周而復始,構成了一個封閉的循環。除非遇到停機指令,否則這個循環將一直繼續下去。
cpu執行完每條指令后,都會檢測是否有中斷信息。
指令周期 :CPU從內存取出一條指令並執行這條指令的時間總和。
CPU周期 :又稱機器周期,CPU訪問一次內存所花的時間較長,因此用從內存讀取一條指令字的最短時間來定義。
時鍾周期: 通常稱為節拍脈沖或T周期。一個CPU周期包含若干個 時鍾周期 [1]  
 

在取指令的階段,指令是放在存儲器(也就是內存)里的,實際上,通過PC寄存器和指令寄存器取出指令的過程,是由控制器(Control Unit)操作的。指令的解碼過程,也是由控制器進行的。

一旦到了執行指令階段,無論是進行算術操作、邏輯操作的 R 型指令,還是進行數據傳輸、條件分支的 I 型指令,都是由算術邏輯單元(ALU)操作的,也就是由運算器處理的。不過,如果是一個簡單的無條件地址跳轉,那么可以直接在控制器里面完成,不需要用到運算器。

馮諾伊曼的指令周期模型

 

 

IF(Instruction fetch) 取指:從 Instruction-Memory 中讀取指令,並在下一個時鍾上升沿到來時把指令送
到 ID 級的指令緩沖器 id_ir 中。該級控制信號決定下一個指令指針的 pc 信號(即 Instruction-Memory 的指令地址 i_addr)
ID(Instruction decode)指令譯碼: 對 IF 級的指令進行譯碼,根據指令操作碼獲取操作數read reg_1、read reg_2 或者要 直接儲存的數據內容 smdr,並在下一個時鍾上升沿到來前把指令 id_ir(前 8 位,操作碼+operand1)送 到 EX 級的指令緩沖器 ex_ir 中
EX(Execute)執行:該級進行算術運算(加、減)、簡單傳輸(JUMP 操作)、邏輯運算(與、或、異或) 或移位操作(邏輯左移、邏輯右移、算術左移、算術右移)。算術邏輯單元 ALU 根據指令對兩個操作數 reg_A、 reg_B 進行操作,將獲得的結果 ALUo 送到下一級的 reg_C,在此過程中,控制標志信號 cf、nf、zf 並將 其傳到相應的緩沖寄存器 ;或者產生存儲數據的使能信號 d_we,同時將要直接儲存的數據內容 smdr 傳到 MEM 級的 smdr1。在下一個時鍾上升沿到來前把指令 ex_ir 送到 MEM 級的指令緩沖器 mem_ir 中。總的來說就是拿到譯碼后的數據在ALU中進行計算,並將計算的結果放在MEM中的緩沖區中。
MEM(Memory Access):數據存儲器訪問: 根據指令處理 reg_C 獲取需要的內容存儲到緩沖器 reg_C1,並在下 一個時鍾上升沿到來前把指令 mem_ir 送到 WB 級的指令緩沖器 wb_ir 中。只有在執行 LOAD、STORE 指令 時才對存儲器進行讀、寫操作,對於此之外的其他指令,MEM 級只起到一個周期的作用。
WB(Write Back) 寫回:對於需要刷新通用寄存器的操作,WB級把指令執行的結果回寫到通用寄存器中

cpu執行完每條指令后,都會檢測是否有中斷信息。


免責聲明!

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



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