Reading and Tools
- Patterson & Hennessy: 2.10, 4.1–4.4, D.2
Over the past three assignments, you've implemented portions on a simple MIPS datapath to support instruction selection, the register file, and arithmetic/logical operations. Here, we'll finish our simulation:
Control unit. This unit should take as input the upper six bits of each instruction (i.e. the opcode) and output a set of 1-bit signals, per the discussion given in section 4.4 of P&H.
Data memory unit. Provide an abstraction of the components necessary to support the lw and sw operations, so that data is correctly read and written between the registers (in the arithmetic/logic component) and a RAM.
NOTE: Don't forget that a RAM component in Logisim is only 24-bit addressable, and only by word, not by byte. You should feel free to use the "32/24" hack from my Instruction selection solution.
Here are some key instructions that are missing from our simple datapath:
- mult, div, and mul
- mfhi and mflo
- bne, bgez, bgtz, blez, and bltz
- sll and srl
- jr and jal
Extend your simple datapath to implement some or all of these instructions.
To hand in your files:
You should save all the parts of this work as individual sub-circuits in a file named "mini_mips.circ". Put everything in a folder called hw9 and submit that to your hand-in directory.