Theory of linear and integer programming
Theory of linear and integer programming
REAL: a program for REgister ALlocation
DAC '87 Proceedings of the 24th ACM/IEEE Design Automation Conference
The priority-based coloring approach to register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A data locality optimizing algorithm
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Time Optimal Linear Schedules for Algorithms with Uniform Dependencies
IEEE Transactions on Computers
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Register allocation for software pipelined loops
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Access normalization: loop restructuring for NUMA compilers
ASPLOS V Proceedings of the fifth international conference on Architectural support for programming languages and operating systems
Lifetime-sensitive modulo scheduling
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Improvements to graph coloring register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Memory estimation for high level synthesis
DAC '94 Proceedings of the 31st annual Design Automation Conference
Background memory area estimation for multidimensional signal processing systems
IEEE Transactions on Very Large Scale Integration (VLSI) Systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Improving data locality with loop transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimal and near-optimal global register allocations using 0–1 integer programming
Software—Practice & Experience
Exact memory size estimation for array computations without loop unrolling
Proceedings of the 36th annual ACM/IEEE Design Automation Conference
Linear scan register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reducing memory requirements of nested loops for embedded systems
Proceedings of the 38th annual Design Automation Conference
Optimizing compilers for modern architectures: a dependence-based approach
Optimizing compilers for modern architectures: a dependence-based approach
Introduction to Algorithms
A Loop Transformation Theory and an Algorithm to Maximize Parallelism
IEEE Transactions on Parallel and Distributed Systems
On Time Mapping of Uniform Dependence Algorithms into Lower Dimensional Processor Arrays
IEEE Transactions on Parallel and Distributed Systems
MICRO 14 Proceedings of the 14th annual workshop on Microprogramming
Register allocation for optimal loop scheduling
CASCON '93 Proceedings of the 1993 conference of the Centre for Advanced Studies on Collaborative research: distributed computing - Volume 2
Software pipelining: an effective scheduling technique for VLIW machines
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Improving register allocation for subscripted variables
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Optimistic register coalescing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Fast memory footprint estimation based on maximal dependency vector calculation
Proceedings of the conference on Design, automation and test in Europe
On Periodic Register Need in Software Pipelining
IEEE Transactions on Computers
Computation of storage requirements for multi-dimensional signal processing applications
IEEE Transactions on Very Large Scale Integration (VLSI) Systems
Register allocation by puzzle solving
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Copy coalescing by graph recoloring
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Aliased register allocation for straight-line programs is NP-complete
Theoretical Computer Science
Journal of Signal Processing Systems
A fast cutting-plane algorithm for optimal coalescing
CC'07 Proceedings of the 16th international conference on Compiler construction
Register allocation via coloring
Computer Languages
Data dependency size estimation for use in memory optimization
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
Hi-index | 0.00 |
Efficient register usage is crucial to avoid the bottlenecks associated with accessing memory. This problem becomes magnified in loop nests since the number of variable accesses accumulated increases in each iteration. Although cache memory helps alleviate the speed penalties associated with memory access, having a register file with sufficient capacity to avoid spilling registers is needed to extract the maximum performance of a system. In this paper, we discuss an approach to minimize register pressure of loop nests with regular dependencies through the use of linear schedules in conjunction with loop unrolling. Linear scheduling is a method of partitioning the indexes of loop nests into a series of hyperplanes defined by a vector parameter @P. Once a suitable linear schedule has been discovered, the loop nest will be unrolled in a way that satisfies @P. For each linear schedule, we determine the minimum number of registers needed by the loop nest to avoid spilling (i.e. each variable is loaded into a register exactly once during a loop nest). In the case where the loop nests contains variables with at most one dependence we present a method to estimate the number of registers used. Otherwise we employ a more general method to determine the exact register requirements. Our experimental results indicate that an optimal linear schedule uses 36% fewer register than a schedule that uses the most registers on average.