Abstract
Micro-programming was not a bright idea that came in a flash, but a solution slowly arrived at to a consciously posed problem, namely, that of finding a systematic way of designing the control unit of an electronic digital computer. As such it had to meet criticisms of inefficiency in rather the same way that high-level languages did at a later date. In both instances, a shift in emphasis has since taken the edge off such criticisms, but at the time the whole argument turned on them. In the case of micro-programming, therefore, stress was originally put on ways of realising the concept that would lead to efficient operation. One thought in terms of a long micro-instruction word, with no decoding of fields, and of the entire micro-operation being encompassed in one pulse time. This is what is now referred to as pure horizontal micro-programming. It imposed no restriction on the number of register transfers that could take place simultaneously. The long word gave a very large number of possible micro-instructions of which relatively few were usable. In these circumstances it was more natural to think of constructing a micro-instruction to do a certain job than to think of choosing one from a micro-instruction set.