|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Control unit |
|
|
|
|
|
|
|
How to control the
datapath? |
|
|
|
|
Need to generate the
control signals for MUXes, registers, and memory |
|
|
Look at instruction
formats |
|
|
|
|
|
R-type |
000000 |
$rs |
$rt |
$rd |
shamt |
function |
|
|
|
|
b31-26 |
b25-21 |
b20-16 |
b15-11 |
b10-6 |
b5-0 |
|
|
|
|
memory |
35 or 43 |
$rs |
$rt |
address |
|
|
|
|
|
|
b31-26 |
b25-21 |
b20-16 |
b15-0 |
|
|
|
|
|
branch |
4 |
$rs |
$rt |
address |
|
|
|
|
|
b31-26 |
b25-21 |
b20-16 |
b15-0 |
|
|
|
|
Observations: |
|
|
|
|
|
Opcode is always in
upper 6 bits: Op[5-0], function in lower 6 bits: F[5-0] |
|
|
|
|
Use to select operation
to perform |
|
|
|
|
|
Registers to read ($rs,
$rt) always in bits 25-21 and 20-16 |
|
|
|
|
Use as indexes to
register file for read |
|
|
|
|
Base register for
load/store always in bits 25-21 |
|
|
|
|
Offset always in bits
15-0 |
|
|
|
|
|
Destination register may
be in 2 places: |
|
|
|
|
bits 15-11 for R-type |
|
|
|
|
bits 20-16 for load |
|
|
|
|
|
|
|
Use as index to register
file to write: need MUX to select |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|