Evolving Machine Microprograms: Application to the CODE2 Microarchitecture

The realization of a control unit can be done either using a complex circuitry or microprogramming. The latter may be considered as an alternative method of implementation of machine instructions that can reduce the complexity and increase the flexibility of the control unit. Microcode efficiency and speed are of vital importance for the computer to execute machine instructions fast. This is a difficult task and it requires expert knowledge. It would be interesting and helpful to have automated tools that, given a machine instruction description, could generate an efficient and correct microprogram. A good option is to use evolutionary computation techniques, which have been proved effective in the evolution of computer programs. We have developed a microarchitecture simulator of a real machine in order to evaluate every individual and to assign it a fitness value (to determine whether this candidate solution correctly implements the instruction machine). Proposed method is successful in generating correct solutions, not only for the machine code instruction set, but also for new machine instructions not included in such set. We show that our approach can generate microprogramms to execute (to schedule microinstructions) the machine level instructions for a real machine. Moreover this evolutive method could be applied to any microarchitecture just by changing the microinstruction set and pre-conditions of each machine instruction to guide evolution.

[1]  William Stallings Computer Organization and Architecture: Designing for Performance , 2010 .

[2]  Darrell Whitley,et al.  Motivation and framework for using genetic algorithms for microcode compaction , 1990, MICRO 23.

[3]  C. V. Ramamoorthy,et al.  Optimization Strategies for Microprograms , 1971, IEEE Transactions on Computers.

[4]  J. David Schaffer,et al.  Proceedings of the third international conference on Genetic algorithms , 1989 .

[5]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[6]  David A. Greve Symbolic Simulation of the JEM1 Microprocessor , 1998, FMCAD.

[7]  Paul J. Layzell,et al.  Explorations in design space: unconventional electronics design through artificial evolution , 1999, IEEE Trans. Evol. Comput..

[8]  A. E. Eiben,et al.  Introduction to Evolutionary Computing , 2003, Natural Computing Series.

[9]  Sunil R. Das,et al.  A survey on bit dimension optimization strategies of microprograms , 1990, [1990] Proceedings of the 23rd Annual Workshop and Symposium@m_MICRO 23: Microprogramming and Microarchitecture.

[10]  John R. Koza,et al.  Automated synthesis of analog electrical circuits by means of genetic programming , 1997, IEEE Trans. Evol. Comput..

[11]  Wolfgang Banzhaf,et al.  Efficient evolution of machine code for CISC architectures using instruction blocks and homologous crossover , 1999 .

[12]  John R. Koza,et al.  Genetic programming 2 - automatic discovery of reusable programs , 1994, Complex Adaptive Systems.

[13]  Andrew S. Tanenbaum,et al.  Structured Computer Organization , 1976 .

[14]  J. K. Kinnear,et al.  Advances in Genetic Programming , 1994 .

[15]  Mandayam K. Srivas,et al.  Formal verification of the AAMP5 microprocessor: a case study in the industrial use of formal methods , 1995, Proceedings of 1995 IEEE Workshop on Industrial-Strength Formal Specification Techniques.

[16]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

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

[18]  Jim Tørresen,et al.  A Scalable Approach to Evolvable Hardware , 2002, Genetic Programming and Evolvable Machines.

[19]  Xin Yao,et al.  Digital filter design using multiple pareto fronts , 2004, Soft Comput..

[20]  Donald J. Patterson,et al.  Computer organization and design: the hardware-software interface (appendix a , 1993 .

[21]  David Jackson,et al.  Evolution of Processor microcode , 2005, IEEE Transactions on Evolutionary Computation.

[22]  Michael O'Neill,et al.  Evolving Multi-line Compilable C Programs , 1999, EuroGP.

[23]  Imtiaz Ahmad,et al.  An evolutionary technique for local microcode compaction , 1995, Microprocess. Microsystems.

[24]  David Jackson,et al.  Automatic Synthesis of Instruction Decode Logic by Genetic Programming , 2004, EuroGP.

[25]  Julian Francis Miller,et al.  Principles in the Evolutionary Design of Digital Circuits—Part II , 2000, Genetic Programming and Evolvable Machines.

[26]  Matthew Ferrens Microprogramming and Microarchitecture , 1996, Computer.

[27]  P JouppiNorman,et al.  Computer Technology and Architecture , 1991 .

[28]  Krister Wolff,et al.  A Brute-Force Approach to Automatic Induction of Machine Code on CISC Architectures , 2002, EuroGP.

[29]  Maurice V. Wilkes The Growth of Interest in Microprogramming: A Literature Survey , 1969, CSUR.

[30]  C. V. Ramamoorthy,et al.  Execution time (and memory) optimization in microprograms , 1974, MICRO 7.