Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Register allocation in the SPUR Lisp compiler
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Global register allocation at link time
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
The hardware architecture of the CRISP microprocessor
ISCA '87 Proceedings of the 14th annual international symposium on Computer architecture
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
Design tradeoffs to support the C programming language in the CRISP microprocessor
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
Lisp on a reduced-instruction-set processor: characterization and optimization
Lisp on a reduced-instruction-set processor: characterization and optimization
Benchmark Synthesis Using the LRU Cache Hit Function
IEEE Transactions on Computers
Register windows vs. register allocation
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Minimizing register usage penalty at procedure calls
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Using registers to optimize cross-domain call performance
ASPLOS III Proceedings of the third international conference on Architectural support for programming languages and operating systems
Computer architecture: a quantitative approach
Computer architecture: a quantitative approach
Register allocation across procedure and module boundaries
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Reduced instruction set computers
Communications of the ACM - Special section on computer architecture
A practical tool kit for making portable compilers
Communications of the ACM
An analysis of inline substitution for a structured programming language
Communications of the ACM
Reduced register saving/restoring in single-window register files
ACM SIGARCH Computer Architecture News
A reduced register file for RISC architectures
ACM SIGARCH Computer Architecture News
Register allocation by priority-based coloring
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
The Design of an Optimizing Compiler
The Design of an Optimizing Compiler
On the use of benchmarks for measuring system performance
ACM SIGARCH Computer Architecture News
ASPLOS I Proceedings of the first international symposium on Architectural support for programming languages and operating systems
Register allocation for free: The C machine stack cache
ASPLOS I Proceedings of the first international symposium on Architectural support for programming languages and operating systems
Register allocation & spilling via graph coloring
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Architecture of SOAR: Smalltalk on a RISC
ISCA '84 Proceedings of the 11th annual international symposium on Computer architecture
A portable machine-independent global optimizer--design and measurements
A portable machine-independent global optimizer--design and measurements
Reduced instruction set computer architectures for vlsi (microprocessor, risc, multiple-windows - of - registers)
Addressing modes for fast and optimal code generation (compilers)
Addressing modes for fast and optimal code generation (compilers)
Architectural and compiler support for efficient function calls
Architectural and compiler support for efficient function calls
Exploiting dead value information
MICRO 30 Proceedings of the 30th annual ACM/IEEE international symposium on Microarchitecture
The Named-State Register File: Implementation and Performance
HPCA '95 Proceedings of the 1st IEEE Symposium on High-Performance Computer Architecture
Proceedings of the 38th annual IEEE/ACM International Symposium on Microarchitecture
Hi-index | 0.00 |
The use of registers in a processor reduces the data and instruction memory traffic. Since this reduction is a significant factor in the improvement of the program execution time, recent VLSI processors have a large number of registers which can be used efficiently because of the advances in compiler technology. However, since registers have to be saved/restored across function calls, the corresponding register saving and restoring (RSR) memory traffic can almost eliminate the overall reduction. This traffic has been reduced by compiler optimizations and by providing multiple-window register files. Although these multiple-window architectures produce a large reduction in the RSR traffic, they have several drawbacks which make the single-window file preferable. We consider a combination of hardware support and compiler optimizations to reduce the RSR traffic for a single-window register file, beyond the reductions achieved by compiler optimizations alone. Basically, this hardware keeps track of the registers that are written during execution, so that the number of registers saved is minimized. Moreover, hardware is added so that a register is saved in the activation record of the function that uses it (instead of in the record of the current function); in this way a register is restored only when it is needed, rather than wholesale on procedure return. We present a register saving and restoring policy that makes use of this hardware, discuss its implementation, and evaluate the traffic reduction when the policy is combined with intraprocedural and interprocedural compiler optimizations. We show that, on the average for the four general-purpose programs measured, the RSR traffic is reduced by about 90 percent for a small register file (i.e., 32 registers), which results in an overall data memory traffic reduction of about 15 percent.