这是计算机硬件间的数据路径(即数据流动的路径),下面将较详细分析此图:
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)。