CONTRI BUTED ARTICLES MICROPROGRAMMING IN THE COMPUTER SCIENCE CURRICULUM C. W. HEMMING Medical Computing Resources Center University of Texas Southwestern Medical School at Dallas 5323 Harry Hines Blvd. Dallas, Texas 75235 The expansion of computer technology in recent years has presented many new and different concepts which are of utmost importance to the computer scientist. The incorporation of these into a computer science curriculum has, in many cases, caused a proliferation of topics with the inherent confusion of the student. Furthermore, the traditional techniques used to introduce the student to computer science are rapidly becoming obsolete. A detailed study of the architecture of a particular machine and expertise in its instruction set are no longer adequate for appreciation of the diversity of current hardware and software tec~nfques, much less a firm foundation. Indeed, a maturing of the fields of computer hardware and software indicates that a number of fundamental concepts relevant to all aspects of hardware and software can probably be isolated. These basic ideas, conveyed with specific examples and applications, should give the student of these areas of computer science a firm basis on which to proceed. Several of these have been identified, and one is Microprogramming. Microprogramming may-be presented at a number of levels, since i t is, in fact, a highly diverse technique, with far reaching implications. One may discuss the hardware required to optimize read-only microstore or the effects of cycle time in writable control store on machine performance, thereby examining certain hardware aspects of microprogramming. Alternately, one may present a viewpoint on emulation versus simulation for software compatibility, using microprogramming as a framework in which to cast efficient emulation. But the implications and applications of microprogramming pervade every aspect of computing hardware and software. The a b i l i t y to completely restructure the address space and redefine the instruction set of a processor indicates the power of a general purpose microprogrammed processor with writable control store. Thus, properly presented, microprogramming can be a highly effective techniaue for introducing the student to essential characteristics of general processor structure. For example, such concepts as the number of bits per instruction, use of tags, and method of generating the effective address may be modified, and even the meaning a particular field assumes may be completely redefined at the "virtual" machine level. On the software side, a number of individuals have considered the effectiveness of implementing algorithms in the virtual instruction set as opposed to a single virtual instruction calling an equivalent microprogrammed imolementation of the same algorithm. Another (quite practical) reason for including microprogramming in the curriculum of the forthcoming computer scientist is the wide application and popularity of the technique. The various machines composing the IBM 360-370 series are examples of the impact of microprogramming on the industry. Furthermore, the trend toward widespread application of microprogrammina techniques to "minicomputers" is significant. I f one accepts the tenet that microprogramming has a definite place in the computer science curriculum, then the question remains as to how i t may best be incorporated. A separate course may be offered using a text such as S m Husson's; or the topic may be presented within the framework of a course in architecture a or some other subject. Since most students are generally acquainted with programming techniques prior to beinq confronted with system architecture, the following approach appears reasonable, and has been used with moderate success on a t r i a l basis. A simple processor architecture is simulated at the register transfer level via PL/I or Fortran or some other language in which the structure of the program is easily modified. Then minor variations in architecture are simulated by changing the program. Using these methods, the basic concepts of architecture and modification of same are introduced. The simulation is an excellent vehicle, and can be used either in a course aimed directly at microprogramming, or prior to such a course. Of course, i f a register transfer language is available, i t could be used; however, the actual task of defining the registers and data paths in a known but more general purpose language seems to give the student more grasp of the problem. Microprogramming is not a panacea in the curriculum. As a concept underlying many aspects of computer architecture and program structure, i t is quite important, and should be presented to the student early in his academic career.
/lp/association-for-computing-machinery/microprogramming-in-the-computer-science-curriculum-2CtK6NKZRa