Automatic microcode generation for horizontally microprogrammed processors

A procedure is described which permits applications problems coded in a Higher Level Language to be compiled to microcode for horizontally microprogrammed processors. An experimental language has been designed which is suitable for expressing computationally oriented problems for such processors in a distributed processing environment. Source programs are compiled first to a machine independent intermediate language and then to a machine dependent form consisting of elementary microoperations, with optimizations performed during each step. The microoperations are then compacted into executable microinstructions for a specific target machine. The procedure has been implemented for experimental purposes and used to compile several different types of applications programs. The experimental results are presented with an interpretation and analysis, along with recommendations for future study.

[1]  David J. DeWitt A Control Word Model for detecting conflicts between microprograms , 1975, MICRO 8.

[2]  Alfred V. Aho,et al.  Code Generation for Expressions with Common Subexpressions , 1977, J. ACM.

[3]  Alfred V. Aho,et al.  Optimal Code Generation for Expression Trees , 1976, J. ACM.

[4]  Jeffrey D. Ullman,et al.  The Generation of Optimal Code for Arithmetic Expressions , 1970, JACM.

[5]  Susan L. Graham,et al.  Table-Driven Code Generation , 1980, Computer.

[6]  John L. Bruno,et al.  Code Generation for a One-Register Machine , 1976, J. ACM.

[7]  Ashok K. Agrawala,et al.  Foundations of microprogramming : architecture, software, and applications , 1976 .

[8]  Perng-Yi Ma Optimizing the microcode produced by a high level microprogramming language , 1978 .

[9]  William H. Harrison A New Strategy for Code Generation - the General-Purpose Optimizing Compiler , 1979, IEEE Trans. Software Eng..

[10]  Peter Calingaert,et al.  Assemblers, Compilers, and Program Translation , 1979 .

[11]  Patrick Wayne Mallett Methods of compacting microprograms , 1979 .

[12]  Henrik Schutz On the Design of a Language for Programming Real-Time Concurrent Processes , 1979, IEEE Transactions on Software Engineering.

[13]  Ken Kennedy,et al.  An algorithm for reduction of operator strength , 1977, Commun. ACM.

[14]  Ted Lewis,et al.  Design objectives for high level microprogramming languages , 1978, MICRO 11.

[15]  Jeffrey M. Barth A practical interprocedural data flow analysis algorithm , 1978, CACM.

[16]  J. J. Horning,et al.  A compiler generator , 1970 .

[17]  Edward S. Lowry,et al.  Object code optimization , 1969, CACM.

[18]  Ikuo Nakata,et al.  On compiling algorithms for arithmetic expressions , 1967, CACM.

[19]  Samir S. Husson,et al.  Microprogramming: principles and practices , 1971, SIGM.

[20]  David Johns Dewitt A machine independent approach to the production of optimized horizontal microcode. , 1976 .

[21]  Carl G. Davis,et al.  Ballistic Missile Defense: A Supercomputer Challenge , 1980, Computer.

[22]  Subrata Dasgupta,et al.  The Identification of Maximal Parallelism in Straight-Line Microprograms , 1976, IEEE Transactions on Computers.

[23]  W. M. McKeeman,et al.  Peephole optimization , 1965, CACM.

[24]  Richard Karl Johnsson An approach to global register allocation. , 1976 .

[25]  David Gries Use of transition matrices in compiling , 1968, CACM.

[26]  Mario Tokoro,et al.  A technique of global optimization of microprograms , 1978, MICRO 11.

[27]  C. V. Ramamoorthy,et al.  A High-Level Language for Horizontal Microprogramming , 1974, IEEE Transactions on Computers.

[28]  Harold W. Lawson Programming-Language-Oriented Instruction Streams , 1968, IEEE Transactions on Computers.

[29]  Herbert Hellerman,et al.  Digital Computer System Principles , 1967 .

[30]  Masahiro Tsuchiya,et al.  Toward Optimization of Horizontal Microprograms , 1976, IEEE Transactions on Computers.

[31]  Bruce D. Shriver,et al.  Local Microcode Compaction Techniques , 1980, CSUR.