?
這是計算機硬件間的數據路徑(即數據流動的路徑),下面將較詳細分析此圖:
PC(program counter, 程序計數器)是一個用于記錄當前計算機正在執行的指令的地址的寄存器(register),當前指令執行完后,PC的值加4(因為一條指令占4個字節),PC指向下一條指令。
?
?
PC根據指令地址找到對應的指令后(Read address),指令( Instruction)流向Register File,R-format指令需要讀取兩個寄存器,I-format指令則需要讀取一個。
?
?
在執行R-format指令時,Read data 1 與 Read data 2,即兩個寄存器的值, 作為ALU(Arithmetic and Logic Unit,算術邏輯單元)的inputs;在執行I-format指令時,一個input來自經過Sign-extend后的常量。
?
?
?
?在執行Beq(branch if equal)或Bne(Branch if not equal)時,若需要branch,PC的值需要被替換為Branch target的地址,Branch target的地址經過紅框內的步驟后計算出
(branch target address = (PC+4)+ offset_value*4)。
?
在執行lw(load word)指令時,根據ALU計算出來的地址值訪問對應的Data Memory 單元,獲取存在該單元里的數據,存到Register File中;在執行R-format時,直接將ALU的計算結果存到Register File中(Write data)。
?