skip to main content
Lisp on a reduced-instruction-set processor: characterization and optimization
Publisher:
  • Stanford University
  • 408 Panama Mall, Suite 217
  • Stanford
  • CA
  • United States
Order Number:UMI Order No. GAX87-20435
Bibliometrics
Skip Abstract Section
Abstract

As a result of advances in compiler technology, almost all programs are written in high-level languages, and the effectiveness of a computer architecture is determined by its suitability as a compiler target. This central role of compilers in the use of computers has led computer architects to study the implementation of high-level language programs. This thesis presents measurements for a set of Portable Standard Lisp programs that were executed on a reduced-instruction-set processor (MIPS-X), examining what instructions LISP uses at the assembly level, and how much time is spent on the most common primitive LISP operations. This information makes it possible to determine which operations are time critical and to evaluate how well architectural features address these operations.Based on these data, three areas for optimization are proposed: the implementation of the tags used for run-time type checking, reducing the cost of procedure calls, and interprocedural register allocation. A number of methods to implement tags, both with and without hardware support, are presented, and the performance of the different implementation strategies is compared. To reduce the cost of procedure calls, time critical LISP system functions were optimized and inlined, and procedure integration under control of the compiler was implemented. The effectiveness of these optimizations, and their effect on the miss rate in the MIPS-X on-chip instruction cache are studied. A simple register allocator uses interprocedural information to reduce the cost of saving and restoring registers across procedure calls. This register allocation scheme is evaluated, and its performance is compared with hardware register windows.

Cited By

  1. ACM
    Wall D (2004). Register windows vs. register allocation, ACM SIGPLAN Notices, 39:4, (270-282), Online publication date: 1-Apr-2004.
  2. ACM
    McFarling S Procedure merging with instruction caches Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation, (71-79)
  3. ACM
    McFarling S (1991). Procedure merging with instruction caches, ACM SIGPLAN Notices, 26:6, (71-79), Online publication date: 1-Jun-1991.
  4. ACM
    Santhanam V and Odnert D Register allocation across procedure and module boundaries Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation, (28-39)
  5. ACM
    Santhanam V and Odnert D (2019). Register allocation across procedure and module boundaries, ACM SIGPLAN Notices, 25:6, (28-39), Online publication date: 1-Jun-1990.
  6. ACM
    Mulder H (1989). Data buffering: run-time versus compile-time support, ACM SIGARCH Computer Architecture News, 17:2, (144-151), Online publication date: 1-Apr-1989.
  7. ACM
    Mulder H Data buffering: run-time versus compile-time support Proceedings of the third international conference on Architectural support for programming languages and operating systems, (144-151)
  8. ACM
    Wilson P and Moher T Design of the opportunistic garbage collector Conference proceedings on Object-oriented programming systems, languages and applications, (23-35)
  9. ACM
    Wilson P and Moher T (2019). Design of the opportunistic garbage collector, ACM SIGPLAN Notices, 24:10, (23-35), Online publication date: 1-Oct-1989.
  10. ACM
    Steenkiste P The impact of code density on instruction cache performance Proceedings of the 16th annual international symposium on Computer architecture, (252-259)
  11. ACM
    Steenkiste P (1989). The impact of code density on instruction cache performance, ACM SIGARCH Computer Architecture News, 17:3, (252-259), Online publication date: 1-Jun-1989.
  12. ACM
    Humphrey S and Krovetz B (1988). Selected AI-related dissertations, ACM SIGART Bulletin:104, (26), Online publication date: 1-Apr-1988.
  13. ACM
    Wall D Register windows vs. register allocation Proceedings of the ACM SIGPLAN 1988 conference on Programming language design and implementation, (67-78)
  14. ACM
    Chow F Minimizing register usage penalty at procedure calls Proceedings of the ACM SIGPLAN 1988 conference on Programming language design and implementation, (85-94)
  15. ACM
    Wall D (2019). Register windows vs. register allocation, ACM SIGPLAN Notices, 23:7, (67-78), Online publication date: 1-Jul-1988.
  16. ACM
    Chow F (2019). Minimizing register usage penalty at procedure calls, ACM SIGPLAN Notices, 23:7, (85-94), Online publication date: 1-Jul-1988.
  17. ACM
    Chow P and Horowitz M Architectural tradeoffs in the design of MIPS-X Proceedings of the 14th annual international symposium on Computer architecture, (300-308)
  18. ACM
    Steenkiste P and Hennessy J (1987). Tags and type checking in LISP: hardware and software approaches, ACM SIGARCH Computer Architecture News, 15:5, (50-59), Online publication date: 1-Nov-1987.
  19. ACM
    Steenkiste P and Hennessy J Tags and type checking in LISP: hardware and software approaches Proceedings of the second international conference on Architectual support for programming languages and operating systems, (50-59)
  20. ACM
    Steenkiste P and Hennessy J (1987). Tags and type checking in LISP: hardware and software approaches, ACM SIGOPS Operating Systems Review, 21:4, (50-59), Online publication date: 1-Oct-1987.
  21. ACM
    Steenkiste P and Hennessy J (1987). Tags and type checking in LISP: hardware and software approaches, ACM SIGPLAN Notices, 22:10, (50-59), Online publication date: 1-Oct-1987.
Contributors
  • Carnegie Mellon University

Recommendations