Register allocation for free: The C machine stack cache

  • Authors:
  • David R. Ditzel;H. R. McLellan

  • Affiliations:
  • Computing Science Research Center, Bell Laboratories, Murray Hill, New Jersey;Massachusetts Institute of Technology, Cambridge, MA

  • Venue:
  • ASPLOS I Proceedings of the first international symposium on Architectural support for programming languages and operating systems
  • Year:
  • 1982

Quantified Score

Hi-index 0.02

Visualization

Abstract

The Bell Labs C Machine project is investigating computer architectures to support the C programming language.1 One of the goals is to match an efficient architecture to the language and the compiler technology available. Measurements of different C programs show that roughly one out of every twenty instructions executed is either a procedure call or return.2 Procedure call overhead is therefore a very important consideration in the overall machine design. A second and related area of primary concern in overall machine efficiency is the register allocation strategy. While use of additional registers can offer considerable improvement in execution times, adding registers usually has the adverse effects of increasing the procedure call overhead due to register saving and creating an undue burden on the compiler. In this paper we describe a piece of the C Machine architecture which effectively eliminates the register allocation problem, and improves procedure calling by drastically reducing storage references required by traditional register saving. The technique can be generalized for other languages and architectures, though we will only directly address those issues involving the C language.