Control Units are the traffic cops of a microprocessor. The Control Unit implements the microprocessor’s instruction set. The Control Unit handles the order of execution of programs and fetches and decodes the instructions to be executed Based on the bit combinations of the instructions the Control Unit moves data around the microprocessor and sends the necessary signals to the ALU to perform the operation needed. After instructions are executed the Control Unit sets various signals, called flags, that indicate the status of the microprocessor and execution of instructions. More advanced Control Units can respond to unplanned events inside and outside of the microprocessor through Interrupts, which cause the Control Unit to invoke programming to deal with these events, such as requests for service or errors. More advanced Control Units use Pipelining to handle the execution of multiple instructions at once, pre-execute instructions, and predict jump sequences.
There are two types of Control Units: Hardwired and Microprogrammed. The difference between them has to do with how the microprocessor’s instruction set is implemented, otherwise the function is pretty much the same. In a hardwired microprocessor, the instruction register, is hardwired to rest of the microprocessor. As described above, each bit, in each position, of an instruction causes the Control Unit to do something. They are instructions within an instruction to control how the microprocessor does what it does. This is a very efficient and cost-effective way of implementing a microprocessor, but it has one very major drawback. In the next generation of the microprocessor, if any significant changes are made to increase performance or even reliability. There is a very good chance that the instruction set will need to change because of the very tight coupling of the bits of the instruction and operation of the microprocessor.
To solve this problem, designers decided to put a buffer between the instructions and the Control Unit. Designers decided on a fixed macro-instruction set that would not change from one generation to the next, which programmers would use. The designers would also create a set of micro-instructions that that hardwired and optimized for each generation of microprocessor. The macro-instructions are then mapped to their corresponding micro-instruction(s). This mapping of micro-instructions are stored in a memory accessible by the Control Unit. During program execution, the Control Unit, when presented with these macro-instructions, fetches the corresponding micro-instruction(s) in place of the macro-instruction for execution. This concept allows the investment in programming to be preserved when upgrading to new generations of microprocessors. Famous examples of micropgramming include the IBM System/360 architecture and the Intel x86 architecture.