The computer programming technique of microprogramming involves implementing control logic required by a given set of instructions in a processor. It was initially developed to simplify the development of computer control logic. This techniques works by using low-level microinstructions and using these to create the corresponding control signals and information for microprogram sequencing.
While microprogramming has often erroneous been used as a term to describe programming a microcomputer, this idea does not completely define to term, according to Clemson University. Defined in more depth and in a more technical way, microprogramming is rather a systematic method of putting the control logic of a computer’s CPU to use. Using microprogramming, programmers can replace hardwired control circuitry with stored-program logic.
Microprogramming: Horizontal vs. Vertical
According to Florida International University, microprogramming can be classified as either horizontal or vertical. Whereas width is narrow and n control signal are coded as log2 n bits in vertical microprogramming, horizontal program utilizes wide memory word and involves coding the n control signals differently. Although vertical micoprogramming is likely to require and external memory word decoder, because of the excessive encoding of control information that is necessary, horizontal microcoding involves much less encoding of control information.
Tools and Programming Languages Associated with Microprogramming
There is no standard and universal language of microprogramming. Although efforts have been made to develop HLMLs (high-level microprogramming languages), these efforts were eventually abandoned, because both machine-dependent and machine-independent methods of creating such a language wound up at dead ends due to inefficient microcodes, the high costs of development, and the inability to port such languages to other implementations.
Optimization is a traditional tool of microprogramming. A microcode needs to be efficient, and optimization increases the efficiency of the microcode through a type of optimization known as microcode compaction. Partiticular horizontal microprogramming can depend on a technique for optimization known as trace scheduling, which involves finding a “trace”, or a probably path of execution for horizontal microprograms.
Microprogramming’s Advantages and Disadvantages
There are both advantages and disadvantages to the technique of microprogramming, and programmers must look at these factors and consider them to determine if microprogramming is appropriate for a given task. Microprogramming’s systematic design and imitative capabilities when it comes to other computer systems a programmer is working with make it effective in many situations. Using microprogramming, programmers are often easy to debug faulty systems using microdiagnostics. Microprogramming even has some cost advantages. Its use often exhibits low marginal cost in relation to the advanced functioning it can offer.
However, some of the problems with microprogramming stem form the fact that the support tools that it offers are somewhat limited and the technique is not economical for smaller systems. Also, the instruction cycle time often that goes along with microprogramming sometimes poses problems in its tendency to limit control store access time.
Related Resources: Information Systems
Microprogramming techniques are still being developed. Approaches that involve microprogramming ideas have been seen in projects addressing programming tasks and tools such as code compression, low-power designs, and application-specific processors. New applications of microprogramming and new development on current techniques will perhaps be seen in the near future.