A method of accomplishing the control unit function by describing the steps in that function as a sequence of register-transfer level operations that are much more elementary than instructions. In this method of designing and building a control unit, an additional memory, commonly called a microprogram store, contains a sequence of microinstructions. A number of microinstructions will be required to carry out an ordinary machine instruction, thus the microprogram store should be faster – have a shorter cycle time – than the normal fast memory.
Microinstructions are usually classified as either horizontal or vertical. In a horizontal microinstruction most of the bit positions have a one-to-one correspondence with specific control functions. Horizontal microinstructions provide explicit control of functions at particular points within the CPU. For example, a particular bit in the microinstruction would call for a specific register to be cleared at a specific clock time. A vertical microinstruction generally contains highly coded fields describing elementary operations to be performed by certain elements of the control unit and ALU, and the sources and destinations of information passing between these units. In such a microinstruction, a field, say of three bits, might be decoded to indicate which of eight registers is to be one source of an operation to be performed in an ALU. Other fields would define the operation and any other necessary sources. Horizontal microinstructions will in general contain more bits, or be wider, hence the word horizontal. Vertical microinstructions, although containing fewer bits, require more decoding.
Some microprogrammed control units go through two levels of microprogramming. The first level consists of addresses of horizontal microinstructions. The second level is the used or useful subset of all horizontal microinstructions. This provides for more efficient use of a horizontal microprogram memory at the expense of two memory references per microinstruction execution. In this form of microprogramming the first memory has been called the microprogram store and the second memory has been called the nanostore.
The control units of most CISC processors are microprogrammed. This permits a more orderly and flexible approach to control unit design and permits changes in a control unit by changing the memory contents. Most microprogram stores are made with ROM. These memories are generally faster and are potentially less prone to errors. Other microprogram stores, usually called writeable control stores (WCS), are made with RAM. These provide greater ease of change of control unit function; in some cases users are permitted or encouraged to “build” specialized instructions. Some microprogrammed control units have a mixture of ROM and RAM microprogram stores. These permit special microprograms to be loaded for maintenance and diagnostic purposes.
Manufacturers of supercomputers have not, in general, employed microprogramming because they have been prepared to accept the higher complexity of hardwired control for the sake of ultimate performance. The simpler designs of current RISC processors have also opted for hardwired techniques to optimize instruction-execution rates of their simple instruction sets.