Design of a LISP-based microprocessor

We present a design for a class of computers whose “instruction sets” are based on LISP. LISP, like traditional stored-program machine languages and unlike most high-level languages, conceptually stores programs and data in the same way and explicitly allows programs to be manipulated as data, and so is a suitable basis for a stored-program computer architecture. LISP differs from traditional machine languages in that the program/data storage is conceptually an unordered set of linked record structures of various sizes, rather than an ordered, indexable vector of integers or bit fields of fixed size. An instruction set can be designed for programs expressed as trees of record structures. A processor can interpret these program trees in a recursive fashion and provide automatic storage management for the record structures. We discuss a small-scale prototype VLSI microprocessor which has been designed and fabricated, containing a sufficiently complete instruction interpreter to execute small programs and a rudimentary storage allocator.

[1]  F. Lockwood Morris,et al.  A time- and space-efficient garbage compaction algorithm , 1978, CACM.

[2]  Gerald Jay Sussman,et al.  The Conniver Reference Manual , 1972 .

[3]  Richard M. Stallman Phantom Stacks: If You Look Too Hard, They Aren't There , 1980 .

[4]  Mitchell Wand,et al.  Continuation-Based Program Transformation Strategies , 1980, JACM.

[5]  Gerald Jay Sussman,et al.  The SCHEME-79 Chip , 1980 .

[6]  Gerald Jay Sussman,et al.  Design of LISP-Based Processors , 1979 .

[7]  John McCarthy,et al.  LISP 1.5 Programmer's Manual , 1962 .

[8]  Donald E. Knuth,et al.  The art of computer programming: V.1.: Fundamental algorithms , 1997 .

[9]  Richard D. Greenblatt,et al.  A LISP machine , 1974, CAW '80.

[10]  Gerald Jay Sussman,et al.  The Dream of a Lifetime: A Lazy Scoping Mechanism , 1979 .

[11]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[12]  A. Church The calculi of lambda-conversion , 1941 .

[13]  Wilfred J. Hansen,et al.  Compact list representation: definition, garbage collection, and system implementation , 1969, CACM.

[14]  Gerald Jay Sussman,et al.  An Interpreter for Extended Lambda Calculus , 1975 .

[15]  D. Bobrow,et al.  THE PROGRAMMING LANGUAGE LISP: ITS OPERATION AND APPLICATIONS, , 1967 .

[16]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[17]  Daniel G. Bobrow,et al.  A model and stack implementation of multiple environments , 1973, CACM.

[18]  Gerald Jay Sussman,et al.  Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode , 1979 .

[19]  Richard D. Greenblatt,et al.  LISP Machine Progress Report. , 1977 .

[20]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[21]  Gerald Jay Sussman,et al.  The Revised Report on SCHEME: A Dialect of LISP. , 1978 .

[22]  Guy L. Steele Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMBDA: The Ultimate GOTO , 1977, ACM '77.

[23]  Gerald Jay Sussman,et al.  The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two) , 1978 .

[24]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[25]  Daniel G. Bobrow,et al.  An efficient, incremental, automatic garbage collector , 1976, CACM.

[26]  William M. Waite,et al.  An efficient machine-independent procedure for garbage collection in various list structures , 1967, CACM.

[27]  Henry G. Baker,et al.  List processing in real time on a serial computer , 1978, CACM.

[28]  Gérard Le Lann,et al.  Distributed Systems - Towards a Formal Approach , 1977, IFIP Congress.

[29]  David A. Moon,et al.  The Lisp Machine manual , 1981, SGAR.

[30]  Lynn Conway,et al.  Introduction to VLSI systems , 1978 .

[31]  Marvin Minsky,et al.  A LISP Garbage Collector Algorithm Using Serial Secondary Storage , 1963 .

[32]  David Gries An exercise in proving parallel programs correct , 1977, CACM.

[33]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[34]  M. Levin,et al.  MATHEMATICAL LOGIC FOR COMPUTER SCIENTISTS , 1974 .