- "High Bit" box in diagram contains the logic to compute the
MPC's high-order bit
- this allows the next microinstruction's address to be determined
(altered) by the results of an ALU computation
- in particular, the ALU outputs N and Z can be used
to alter the next microinstruction address
- need 1-bit flip-flops for N and Z because after
rising edge of clock, B Bus is no longer being driven, so we must
assume ALU output is not valid (we use N and Z to
determine the value of MPC after the rising edge of the
clock.
- Let NEXT_ADDRESS[8]
be the high-order bit of the address field for a
microinstruction, then the truth table for the outputs of
the "High Bit" box are ("+" means logical OR):
JAMN | JAMZ | High Bit Output |
0 | 0 | NEXT_ADDRESS[8] |
0 | 1 | NEXT_ADDRESS[8] + Z |
1 | 0 | NEXT_ADDRESS[8] + N |
1 | 1 | NEXT_ADDRESS[8] + Z + N |
- the idea is that by changing the high-order bit, you can change
the address and thus the next instruction fetched from the control
store.
- The high order bit function should be (see next slide for details):
HighBit = (JAMZ · Z) + (JAMN · N) + NEXT_ADDRESS[8]
- since high-order value of MPC comes either directly from
a microinstruction, or is OR'ed with something that is '1', if the
microinstruction already had the high-order address set to '1',
there is really no need to have any concern about the values of the
N and Z ALU outputs (since it will not change the
value of MPC.)
- The effective value of the high order bit (assuming
NEXT_ADDRESS[8] = 0) is:
HighBit = (JAMZ · Z) + (JAMN · N)
|
|