Adding Data Memory to Datapath
The figure shows the datapath including data memory for load and store (I-type) instructions where
- The ALU is also used to calculate data memory address.
BusB is connected to Data_in of data memory for store instructions.
It also includes three multiplexors:
- The left one selects
RW as either rt (I-type) or rd (R-type).
- The middle one selects the second ALU input as either source register
rt (R-type) data on BusB or the extended immediate (I-type).
- The right one selects data on
BusW as either ALU result (R- or I- type) or memory Data_out (I-type).
ALUCtrl is derived from either the op (I-type) or funct (R-type) field.
RegWrite enables the writing of the ALU result or Data_out.
ExtOp controls the extension of the 16-bit immediate.
RegDst selects the destination as either rt (I-type) or rd (R-type).
ALUSrc selects the second ALU source as BusB (R-type) or extended immediate (I-type).
MemRead is for load instructions.
MemWrite is for store instructions.
MemtoReg selects data on BusW as ALU result (R- or I- type) or memory Data_out (I-type).