|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Multi-cycle datapath:
control signals |
|
|
|
|
|
|
|
|
|
|
|
What else is needed? Branches and jumps |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Possible sources for PC
value: |
|
Fig. 5.33 |
|
|
|
(PC + 4) directly from
ALU |
|
|
|
|
ALUout: result of branch
calculation |
|
|
|
|
Result of concatenation
of left-shifted 26 bits with upper 4 bits of PC (jump) |
|
|
Note
that the PC is updated both unconditionally and conditionally, |
|
|
|
|
so 2 control signals are
needed |
|
|
|
PCWriteCond: ANDed with
ALU Zero to control PC update for branch |
|
|
|
This result is ORed with
PCWrite |
|
|
|
PCSource: controls MUX to
select input to PC |
|
|
|
0: ALU result |
|
|
|
1: ALUOut |
|
|
|
2: Jump address |
|
|
|
Why do we need both 0 and
1 inputs? |
|
|
|
Control signals are
listed in Fig. 5.34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|