1992 · 184 citations · 17 references
ComputingComputer EngineeringComputer ScienceComputer ArchitectureHardware-software Co-designSchedulingInstruction SchedulingRegister AllocationInstruction Scheduling AlgorithmsLoop PipeliningPipeline DesignPipelinesPipeliningSoftware Pipelining
Software pipelining is an important instruction scheduling technique for efficiently overlapping successive iterations of loops and executing them in parallel. This paper studies the task of register allocation for software pipelined loops, both with and without hardware features that are specifically aimed at supporting software pipelines. Register allocation for software pipelines presents certain novel problems leading to unconventional solutions, especially in the presence of hardware support. This paper formulates these novel problems and presents a number of alternative solution strategies. These alternatives are comprehensively tested against over one thousand loops to determine the best register allocation strategy, both with and without the hardware support for software pipelining.
17
Monica S. Lam · ACM SIGPLAN Notices · 2004 · 890 citations
Register allocation & spilling via graph coloring
Gregory J. Chaitin · ACM SIGPLAN Notices · 1982 · 767 citations · Full text
Register allocation & spilling via graph coloring
Gregory J. Chaitin · 1982 · 668 citations
Conversion of control dependence to data dependence
John R. Allen, Ken Kennedy, Carrie Porterfield et al. · 1983 · 605 citations