Lesson 29: Hardwired Vs Micro Programmed: Objectives of The Lecture
Lesson 29: Hardwired Vs Micro Programmed: Objectives of The Lecture
Lesson 29: Hardwired Vs Micro Programmed: Objectives of The Lecture
160
3.152/3A.152/3B.152/3E.152
The Hard-Wired Control Unit Figure 2 is a block diagram showing the internal organization of a hard-wired control unit for our simple computer. Input to the controller consists of the 4-bit opcode of the instruction currently contained in the Instruction Register and the negative flag from the accumulator. The controllers output is a set of 16 control signals that go out to the various registers and to the memory of the computer, in addition to a HLT signal that is activated whenever the leading bit of the op-code is one. The controller is composed of the following functional units: A ring counter, an instruction decoder, and a control matrix. The ring counter provides a sequence of six consecutive active signals that cycle continuously. Synchronized by the system clock, the ring counter first activates its T0 line, then its T1 line, and so forth. After T5 is active, the sequence begins again with T0. Figure 3 shows how the ring counter might be organized internally. The instruction decoder takes its four-bit input from the opcode field of the instruction register and activates one and only one of its 8 output lines. Each line corresponds to one of the instructions in the computers instruction set. Figure 4 shows the internal organization of this decoder. The most important part of the hard-wired controller is the control matrix. It receives input from the ring counter and the instruction decoder and provides the proper sequence of control signals. Figure 5 is a diagram of how the control matrix for our simple machine might be wired. To understand how this diagram was obtained, we must look carefully at the machines instruction set (Table 1). Table 2 shows which control signals must be active at each ring counter pulse for each of the instructions in the computers instruction set (and for the instruction fetch operation). The table was prepared by simply writing down the instructions in the left-hand column. (In the circuit these will be the output lines from the decoder). The various control signals are placed horizontally along the top of the table. Entries into the table consist of the moments (ring counter pulses T0, T1, T2, T3, T4, or T5) at which each control signal must be active in order to have the instruction executed. This table is prepared very easily by reading off the information for each instruction given in Table 1. For example, the Fetch operation has the EP and LM control signals active at ring count 1, and ED, LI, and IPC active at ring count 2. Therefore the first row (Fetch) of Table 2 has T0 entered below EP and LM, T1 below R, and T2 below IP, ED, and LI. Once Table 2 has been prepared, the logic required for each control signal is easily obtained. For each an AND operation is performed between any active ring counter (Ti) signals that were entered into the signals column and the corresponding instruction contained in the far left-hand column. If a column has more than one entry, the output of the ANDs are ORed together to produce the final control signal. For example, the LM column has the following entries: T0 (Fetch), T3 associated with the LDA instruction, and T3 associated with the STA instruction. Therefore, the logic for this signal is: LM = T0 + T3*LDA + T3*STA This means that control signal LM will be activated whenever any of the following conditions is satisfied: (1) ring pulse T0
3.152/3A.152/3B.152/3E.152
(first step of an instruction fetch) is active, or (2) an LDA instruction is in the IR and the ring counter is issuing pulse 3, or (3) and STA instruction is in the IR and the ring counter is issuing pulse 3. The entries in the JN (Jump Negative) row of this table require some further explanation. The LP and EI signals are active during T3 for this instruction if and only if the accumulators negative flag has been set. Therefore the entries that appear above these signals for the JN instruction are T3*NF, meaning that the state of the negative flag must be ANDed in for the LP and EI control signals. Figure 6 gives the logical equations required for each of the control signals used on our machine. These equations have been read from Table 2, as explained above. The circuit diagram of the control matrix (Figure 5) is constructed directly from these equations. It should be noticed that the HLT line from the instruction decoder does not enter the control matrix, Instead this signal goes directly to circuitry (not shown) that will stop the clock and thus terminate execution. A Micro-programmed Control Unit s we have seen, the controller causes instructions to be executed by issuing a specific set of control signals at each beat of the system clock. Each set of control signals issued causes one basic operation (micro-operation), such as a register transfer, to occur within the data path section of the computer. In the case of a hard-wired control unit the control matrix is responsible for sending out the required sequence of signals. An alternative way of generating the control signals is that of micro-programmed control. In order to understand this method it is convenient to think of sets of control signals that cause specific micro-operations to occur as being microinstructions that could be stored in a memory. Each bit of a microinstruction might correspond to one control signal. If the bit is set it means that the control signal will be active; if cleared the signal will be inactive. Sequences of microinstructions could be stored in an internal control memory. Execution of a machine language instruction could then be caused by fetching the proper sequence of microinstructions from the control memory and sending them out to the data path section of the computer. A sequence of microinstructions that implements an instruction on the external computer is known as a microroutine. The instruction set of the computer is thus determined by the set of micro-routines, the microprogram, stored in the controllers memory. The control unit of a microprogramcontrolled computer is essentially a computer within a computer. Figure 7 is a block diagram of a micro-programmed control unit that may be used to implement the instruction set of the computer we described above. The heart of the controller is the control ROM memory in which 24-bit long microinstructions are stored. Each is composed of two main fields: a 16-bit wide control signal field and an 8-bit wide next-address field. Each bit in the control signal field corresponds to one of the control signals discussed above. The next-address field contains bits that determine the address of the next microinstruction to be
COMPUTER ARCHITECTURE
161
fetched from the control ROM. We shall see the details of how these bits work shortly. Words selected from the control ROM feed the microinstruction register. This 24-bit wide register is analogous to the outer machines instruction register. Specifically, the leading 16 bits (the control-signal field) of the microinstruction register are connected to the control-signal lines that go to the various components of the external machines data path section. Addresses provided to the control ROM come from a microcounter register, which is analogous to the external machines program counter. The micro-counter, in turn, receives its input from a multiplexer which selects from : (1) the output of an address ROM, (2) a current-address incrementer, or (3) the address stored in the next-address field of the current microinstruction. The logic that selects one of these three alternatives will be explained shortly. The controllers address ROM is fed by the outer computers instruction register. The address ROM maps the op-code of the instruction currently contained in the op-code field of the instruction register to the starting address of the corresponding microroutine in the control ROM. Address zero of the address ROM contains the control-ROM address of the fetch routine; each other addresses in the address-ROM corresponds to one of the op-codes of the computers instruction set. Table 3 shows the contents of the address ROM for the instruction set of our simple computer. To see how the address ROM works, let us assume that an ADD instruction has been fetched into the outer computers instruction register. Since the op-code of the ADD instruction is 3, the number stored at location 3 of the address ROM (a 9) is the starting address in the control ROM of the microroutine that implements the ADD instruction. Details of a microinstructions next address field are shown in Figure 8. The 5-bit CRJA (Control ROM Jump Address) subfield holds a microinstruction address. Thus, the address of the next microinstruction may be obtained from the current microinstruction. This permits branching to other sections within the microprogram. The combination of the MAP bit, the CD (condition) bit, and the negative flag from the accumulator of the external machine provide input to the logic that feeds the select lines of the multiplexer and thereby determine how the address of the next microinstruction will be obtained. If the MAP bit is one, the logic attached to the multiplexers select lines produces a 10 which selects the address ROM. Therefore, the address of the micro-routine corresponding to the instruction in the outer machines instruction register will be channeled to the control ROM. It should be clear that the MAP bit must be set in the last microinstruction of the fetch micro-routine, since it is at that moment that we want the newly-fetched instruction to be executed. If the MAP bit is zero and the CD bit is zero, (unconditional branch), the multiplexer logic produces a 01, which selects the CRJA field of the current instruction. Therefore, the next instruction will come from the address contained in the current instructions next-address field. With MAP=0 and CD=1 (conditional branch), the logic that feeds the multiplexer will produce either a 00 or a 01, depending on the value of the
162
negative flag. If the flag is set, it is a 01, which selects the jump address contained in the current microinstruction. If the negative flag is cleared, the select lines to the multiplexer receive a 00, which causes the incrementer to be selected. The next microinstruction will come from the next address in sequence. It should be noticed that with this scheme, if we are not doing branching, the CRJA field should contain the address of the next microinstruction and the CD bit should be cleared. This will cause branch to the next microinstruction to occur. The one exception to this rule is the case of the last microinstruction within a micro-routine. Normally we would then want to branch back to the fetch micro-routine. Since this routine starts at control-ROM location 00000, that address should be contained in the CRJA field and CD should be 0. The HLT bit is used to terminate execution. If it is set, the clock that synchronizes activities within the entire machine is stopped. Notice that the micro-counter is triggered by a rising clock edge, and the microinstruction register by a falling edge. Thus, we see that on each positive edge, the micro-counter receives the address of the microinstruction and presents it to the control ROM, which has until the next negative edge to output the addressed control word to the microinstruction register. Since all operation in the data path section are positive-edge triggered, there is adequate time for the signals specified in the control word contained in the microinstruction register to go out to all sections of the external machine. The sequence of latching the address of microinstruction i+1 into the micro-counter while microinstruction i executes (positive edge) and then presenting the control word of microinstruction i+1 to the microinstruction register (negative edge) continues until a set HLT bit stops the clock. Table 4 shows a microprogram which, when loaded into the control ROM, will implement the instruction set of the computer we have been describing. For each microinstruction, the control ROM address has been expressed in hexadecimal, and the contents in binary. The order of the bits in the control signal field is the same as that shown in table 2: IP, LP, EP, LM, R, W, LD, ED, LI, EI, LA, EA, A, S, EU, LB, reading from left to right. The last four columns of table 4 express the status of the CD, MAP, and HLT bits, and the Control ROM Jump Address, expressed in hexadecimal. In order to clarify how the microprogram works, a description is now given of the fetch and JN (jump on negative) micro-routines. The fetch micro-routine occupies control ROM addresses 0, 1, and 2. The active EP and LM control-signal bits in its first microinstruction cause a register transfer from the program counter to the memory address register to occur. The MAR will now contain the address in RAM of the next instruction. Since CD and MAP are both zero (unconditional branch), the next microinstruction will come from the address stored in the CRJA field (01) the next consecutive location. The microinstruction stored at that location has only the R bit active. Thus, the word stored in the memory location being accessed by the MAR (presumably the next instruction ) will be gated to the Memory Data Register (MDR). The zeroes in CD and MAP again cause the microinstruction to be fetched from the address specified in the CRJA field, (02). Active control signal bits for
COMPUTER ARCHITECTURE
3.152/3A.152/3B.152/3E.152
that microinstruction are ED, LI, and IP. The first two transfer the word in the MDR to the Instruction Register, and the last increments the program counter. The new instruction is safely in the IR, and the PC is pointing to the next instruction in sequence. We have completed an instruction fetch. Since the MAP field in the last microinstruction of this fetch microroutine is equal to 1, the address of the next microinstruction is determined by the address ROM, which, in turn, depends upon the opcode of the instruction that has just been loaded into the instruction register. When the JN instruction is executed, control is supposed to be transferred to the address specified by the least significant eight bits of the number contained in the instruction register if the negative flag is set. If the negative flag is not set, execution should continue with the next instruction in sequence. Let us see how the micro-routine stored at control-ROM locations 0D, 0E, and 0F implement this conditional jump. In the first microinstruction, none of the control signal bits is set. Thus, nothing will occur in the data path section of the computer. However, the fact that the CD bit is set means that IF THE NEGATIVE FLAG IS SET, the next microinstruction will be fetched from the control-ROM address specified in the CRJA field (a 0F in this case). The microinstruction stored at that location has the EI and LP control signal bits set. Thus, the contents of the instruction register (the least significant eight bits) will be transferred to the program counter. The zeroes stored in the CD and MAP bits cause the next microinstruction to be fetched from the address contained in the CRJA field a 00 in this case. This is the start of the fetch micro-routine. Thus we see that if the negative flag is set, the JN micro-routine places the jump address in the program counter and transfer to the fetch routine. When that fetch is performed, control will have been transferred to the jump address. If, on the other hand, the negative flag is NOT SET when the JN micro-routine executes, then the set CD bit in its first microinstruction causes the current address stored in the microcounter to be incremented. Thus, the next microinstruction would be fetched from location 0E. That microinstruction also has no active control signals bits, but with CD=0 and CRJA=00, the next microinstruction will be the first one in the fetch routine. Notice that in this case, the JN instruction simply returns us to the next fetch. Since the program counter has not been altered, that fetch will be from the next sequential memory location, as usual. Hardwired vs. Micro-programmed Computers It should be mentioned that most computers today are microprogrammed. The reason is basically one of flexibility. Once the control unit of a hard-wired computer is designed and built, it is virtually impossible to alter its architecture and instruction set. In the case of a micro-programmed computer, however, we can change the computers instruction set simply by altering the microprogram stored in its control memory. In fact, taking our basic computer as an example, we notice that its four-bit opcode permits up to 16 instructions. Therefore, we could add seven more instructions to the instruction set by simply expanding its microprogram. To do this with the hard-wired version of our computer would require a complete redesign of the controller circuit hardware.
3.152/3A.152/3B.152/3E.152
Another advantage to using micro-programmed control is the fact that the task of designing the computer in the first place is simplified. The process of specifying the architecture and instruction set is now one of software (micro-programming) as opposed to hardware design. Nevertheless, for certain applications hard-wired computers are still used. If speed is a consideration, hard-wiring may be required since it is faster to have the hardware issue the required control signals than to have a program do it. The Lecture in a GO ! ! ! ! ! ! ! ! ! ! ! ! ! The intent of this article has been to present, through example, the distinction between hardwired and micro-programmed computers. In the process, it is hoped that the reader has gained insight into what really occurs inside a digital computer as a program executes.
COMPUTER ARCHITECTURE
163
IP = T2 W = T5*STA LP = T3*JMP + T3*NF*JN LD = T4*STA LA = T5*LDA + T3*ADD + T3*SUB EA = T4*STA + T3*MBA EP = T0 S = T3*SUB A = T3*ADD LI = T2 LM = T0 + T3*LDA + T3*STA ED = T2 + T5*LDA R = T1 + T4*LDA EU = T3*ADD+T3*SUB EI = T3*LDA + T3*STA + T3*JMP + T3*NF*JN LB = T3*MBA Figure 6. The logical equations required for each of the hardwired control signals on the basic computer. The machines control matrix is designed from these equations.
COMPUTER ARCHITECTURE
164 Copy Right: Rai University
3.152/3A.152/3B.152/3E.152
COMPUTER ARCHITECTURE
Table 4. The Microprogram that Implements the Basic Computers Instruction Set
ADD (Add B to A)
A < -- A + B
SUB 4 (Sub. B from A) MBA (Move A to B) JMP (Jump to Address) JN (Jump if Negative) HLT "Fetch" 5
A < -- A-B
1. A < -- ALU(sub)
S, EU, LA
B < -- A
1. B < -- A
EA, LB
PC <-- Mem
1. PC <-- IR
EI, LP
PC <-- Mem if negative flag is set Stop clock IR <-- Next Instruction
NF: EI, LP
8-15
Table 2. A Matrix of Times at which Each Control Signal Must Be Active in Order to Execute the Hard-wired Basic Computers Instructions
Control Signal: IP LP EP LM R W LD ED LI EI LA EA A S EU LB Instruction: ----------------------------------------------------------------------------"Fetch" T2 T0 T0 T1 T2 T2 LDA T3 T4 T5 T3 T5 STA T3 T5 T4 T3 T4 MBA T3 T3 ADD T3 T3 T3 SUB T3 T3 T3 JMP T3 T3 JN T3*NF T3*NF
Micro-programmed Control Use sequences of instructions (see earlier notes) to control complex operations Called micro-programming or firmware
Implementation (1)
All the control unit does is generate a set of control signals Each control signal is on or off Represent each control signal by a bit Have a control word for each micro-operation
Address-ROM Address Address-ROM Contents Have a sequence of control words for each machine code (Instruction Op-Code) (Control-ROM Microinstruction Routine Start Address) -------------------------------------------------------------------------------------------------------- Add an address to specify the next micro-instruction, "Fetch" 0 00 depending on conditions LDA 1 03 STA 2 06 Implementation (2) ADD 3 09 Todays large microprocessor SUB 4 0A MBA 5 0B Many instructions and associated register-level hardware JMP 6 0C JN 7 0D Many control points to be manipulated Available for 8-E 10-1E This results in control memory that New Instructions HLT F 1F Contains a large number of words: co-responding to the number Instruction Mnemonic
of instructions to be executed Has a wide word width :Due to the large number of control points to be manipulated Micro-program Word Length
Based on 3 factors
3.152/3A.152/3B.152/3E.152
165
The way control information is represented or encoded The way in which the next micro-instruction address is specified Micro-instruction Types Each micro-instruction specifies single (or few) microoperations to be performed : (vertical micro-programming)
Each micro-instruction specifies many different microoperations to be performed in parallel: (horizontal micro-
COMPUTER ARCHITECTURE
external memory word decoder to identify the exact control line being manipulated Vertical Micro-programming diag
Micro -instruction Address Function Codes Jump Conditi
Jump Condition
buffer register
Control buffer register contents generates control signals and
based on next address information from control buffer register and ALU flags Advantages and Disadvantages Simplifies design of control unit Cheaper Less error-prone
Slower
166
3.152/3A.152/3B.152/3E.152
COMPUTER ARCHITECTURE
Design Considerations
Size of microinstructions Address generation time
Determined by instruction register:Once per cycle, after instruction is fetched Next sequential address:Common in most designed Branches:Both conditional and unconditional Sequencing Techniques
Based on current microinstruction, condition flags, contents
of IR, control memory address must be generated Based on format of address information Two address fields Single address field Variable format Address Generation Explicit Two-field Unconditional Branch Conditional branch Execution
The cycle is the basic event Each cycle is made up of two events
3.152/3A.152/3B.152/3E.152
167