Computer Science 237 |
Lecture 23: Tanenbaum's MIC1 Microarchitecture
Date: November 4, 2005
Each register may be independently loaded onto two buses (A and B) and loaded from a third (C). At most one register is attached to each bus at a time.
Each register has control lines that govern the targeted output buses, and a strobe line that allows latching from the input bus.
The strobe line on some register is high when the enable C line is high (ENC).
The ALU supports (in Tanenbaum) four operations: A+B, A AND B, NOT(A), and A.
The shifter supports three operations: logical shift left or right by one bit, or do nothing.
Both require two control lines; the ALU delivers N and Z bits that describe the state of the current value computed by the ALU. Both units are combinational.
In real life, there is a much larger discrepency.
For n-bit register (e.g., MAR):
00 | A+B |
01 | A and B |
10 | NOT A |
11 | A |
See Fig. 3-16 of Tanenbaum 2006.
In Tanenbaum's architecture this consists of 22 bits:
The microsequencer determines the interpretation of these bits. The total is, then, 22+8+2=32 bits per microinstruction.
There is nothing special about the number 32 in this case; microcode could have, say, 31 bits or 47 bits.
Notice that the elimination of a single bit from the microinstruction would allow the addition of 8 more instructions in the same space.
COND | MUX setting | Comments |
00 | 0 | don't branch |
01 | !N | Branch if N |
10 | !Z | Branch if Z |
11 | 1 | always branch |
We need to coordinate the flow of information through the datapath.
Tanenbaum uses a 4-cycle clock. See Figure 4-5 in Tanenbaum 1990.
One full cycle during which a complete operation can be performed is comprised of 4 sub-cycles:
The entire MIC1 microarchitecture is represented by the diagram in Tanenbaum 1990's Figure 4-10.