Abstract
One of the major factors that distinguishes LISP from many other languages (Pascal, C, Fortran, etc.) is the need for run-time type checking. Run-time type checking is implemented by adding to each data object a tag that encodes type information. Tags must be compared for type compatibility, removed when using the data, and inserted when new data items are created. This tag manipulation, together with other work related to dynamic type checking and generic operations, constitutes a significant component of the execution time of LISP programs. This has led both to the development of LISP machines that support tag checking in hardware and to the avoidance of type checking by users running on stock hardware. To understand the role and necessity of special-purpose hardware for tag handling, we first measure the cost of type checking operations for a group of LISP programs. We then examine hardware and software implementations of tag operations and estimate the cost of tag handling with the different tag implementation schemes. The data shows that minimal levels of support provide most of the benefits, and that tag operations can be relatively inexpensive, even when no special hardware support is present.
- Bawden, A., Greenblatt, R., Holloway, J., Knight, T., Moon, D., and Weinreb, D. LISP Machine Progress Report. Memo No 444, MIT Artificial Intelligence Laboratory, August, 1977.Google Scholar
- Bosshart, P., Hewes, C., Chang, M., and Chau, K. A 553K-Transistor LISP Processor Chip. Digest 1987 International Solid-State Circuits Conference, IEEE, New York, February, 1987, pp. 202--203.Google ScholarCross Ref
- Brooks, R., Posner, D., McDonald, J., White, J., Benson, E., and Gabriel, R. Design of An Optimizing, Dynamically Retargetable Compiler for Common Lisp. Proceedings of the 1986 Conference on LISP and Functional Programming, ACM, Boston, August, 1986, pp. 67--85. Google ScholarDigital Library
- Charniak, E., Riesbeck, C. K., and McDermott, D. V. Artificial Intelligence Programming. Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1980. Google ScholarDigital Library
- Chow, P., and Horowitz, M. Architectural Tradeoffs in the Design of MIPS-X. Proceedings of the 14th Annual International Symposium on Computer Architecture, ACM, June, 1987, pp. Google ScholarDigital Library
- Corley, C. J. and Statz, J. A. "LISP workstation brings AI power to a user's desk". Computer Design 24, 1 (January 1985).Google Scholar
- Gabriel, R. P. Computer Systems Series. Volume: Performance and evaluation of LISP systems. The MIT Press, 1985. Google ScholarDigital Library
- Griss, M. L. and Hearn, A. C. "A Portable LISP Compiler". Software - Practice and Experience 11, 6 (June 1981), 541--605.Google ScholarCross Ref
- Griss, M. L., Benson, E., and Maguire, G. Q. PSL:A Portable LISP System. Proceedings of the 1982 Symposium on LISP and Functional Programming, Pittsburgh, August, 1982, pp. 88--97. Google ScholarDigital Library
- Horowitz, M., Hennessy, J., Chow, P., Gulak, P., Acken, J., Agarwal, A., Chu, C. Y., McFarling, S., Przybylski, S., Richardson, S., Salz, A., Simoni, R., Stark, D., Steenkiste, P., Tjiang, S., and Wing, M. A 32b Microprocessor with On-Chip 2K Byte Instruction Cache. Digest 1987 International Solid-State Circuits Conference, IEEE, New York, February, 1987, pp. 30--31.Google ScholarCross Ref
- Kranz, D., Kelsey, R., Rees, R., Hudak, P., Philbin, J. and Adams, N. ORBIT: An Optimizing Compiler for Scheme. Proceedings of the SIGPLAN'86 Symposium on Compiler Construction, ACM, Palo Alto, June, 1986, pp. 219--233. Google ScholarDigital Library
- Milner, R. "A Theory of Type Polymorphism in Programming". Journal of Computer and System Science 17, 3 (December 1978), 348--375.Google ScholarCross Ref
- Moon, D. A. Maclisp Reference Manual. MIT, Laboratory of Computer Science, 1983.Google Scholar
- Moon, D. A. Architecture of the Symbolics 3600. Proceedings of the 12th Annual International Symposium on Computer Architecture, ACM, Boston, June, 1985, pp. 76--83. Also in SIGARCH Newsletter 13(3). Google ScholarDigital Library
- Rees, J. and Adams, N. T: A Dialect of Lisp or, or LAMBDA: The Ultimate Software Tool. Proceedings of the 1982 Symposium on LISP and Functional Programming, Pittsburgh, August, 1982, pp. 114--122. Google ScholarDigital Library
- Steele, G. L. Jr. Fast Arithmetic in MacLISP. Proceedings of the 1977 MACSYMA Users' Conference, July, 1977.Google Scholar
- Steele, G. L. Jr. Common Lisp - The Language. Digital Press, 1984. Google ScholarDigital Library
- Steenkiste, P., and Hennessy, J. LISP on a Reduced-Instruction-Set-Processor. Proceedings of the 1986 Conference on LISP and Functional Programming, ACM, Boston, August, 1986, pp. 192--201. Google ScholarDigital Library
- Steenkiste, P. LISP on a Reduced-Instruction-Set Processor: Characterization and Optimization. Ph.D. Th., Stanford University, March 1987. Google ScholarDigital Library
- Stritter, E., and Gunter, T. "A Microprocessor Architecture for a Changing World: The Motorola 68000". IEEE Computer 12, 2 (February 1979), 43--52.Google ScholarDigital Library
- Taylor, G. S., Hillfinger, P. N. Larus, J., et al. Evaluation of the SPUR Lisp Architecture. Proceedings of the 13th Annual International Symposium on Computer Architecture, ACM, Tokyo, June, 1986, pp. 444--452. Google ScholarDigital Library
- Ungar, D. The Design and Evaluation of A High Performance Smalltalk System. Ph.D. Th., UC Berkeley, March 1986. Technical Report UCB/CSD 86/287. Google Scholar
- White, J. "LISP/370: A Short Technical Description of the Implementation". SIGSAM 12, 4 (November 1978), 23--27. Google ScholarDigital Library
- White, J. Reconfigurable, Retargetable Bignums. Proceedings of the 1986 Conference on LISP and Functional Programming, ACM, Boston, August, 1986, pp. 174--191. Google ScholarDigital Library
- Winston, P. and Horn, B. Lisp. Addison-Wesley Publishing Company, 1981. Google ScholarDigital Library
Index Terms
- Tags and type checking in LISP: hardware and software approaches
Recommendations
Tags and type checking in LISP: hardware and software approaches
One of the major factors that distinguishes LISP from many other languages (Pascal, C, Fortran, etc.) is the need for run-time type checking. Run-time type checking is implemented by adding to each data object a tag that encodes type information. Tags ...
Tags and type checking in LISP: hardware and software approaches
ASPLOS II: Proceedings of the second international conference on Architectual support for programming languages and operating systemsOne of the major factors that distinguishes LISP from many other languages (Pascal, C, Fortran, etc.) is the need for run-time type checking. Run-time type checking is implemented by adding to each data object a tag that encodes type information. Tags ...
Tags and type checking in LISP: hardware and software approaches
One of the major factors that distinguishes LISP from many other languages (Pascal, C, Fortran, etc.) is the need for run-time type checking. Run-time type checking is implemented by adding to each data object a tag that encodes type information. Tags ...
Comments