Memory Register File Imm Extend ALU A1 A2 A3 WD RD1 RD2 A WD RD 0 1 0 1 Instr Instr[19:15] Instr[11:7] Instr[31:7] ImmExt PC_Next PC ALUResult ALUOut Data ReadData Result PCWrite AdrSrc IRWrite RegWrite ImmSrc ALUCtl ResultSrc rd