Improved spill code generation for software pipelined loops

Citation
J. Zalamea et al., Improved spill code generation for software pipelined loops, ACM SIGPL N, 35(5), 2000, pp. 134-144
Citations number
29
Categorie Soggetti
Computer Science & Engineering
Journal title
ACM SIGPLAN NOTICES
ISSN journal
15232867 → ACNP
Volume
35
Issue
5
Year of publication
2000
Pages
134 - 144
Database
ISI
SICI code
1523-2867(200005)35:5<134:ISCGFS>2.0.ZU;2-B
Abstract
Software pipelining is a loop scheduling technique that extracts parallelis m out of loops by overlapping the Execution of several consecutive iteratio ns. Due to the overlapping of iterations, schedules impose high register re quirements during their execution. A schedule is valid if it requires at mo st the number of registers available in the target architecture. If not its register requirements have to be reduced either by decreasing the iteratio n overlapping or by spilling registers to memory. In this paper we describe a set of heuristics to increase the quality of register-constrained module schedules. The heuristics decide between the two previous alternatives and define criteria for effectively selecting spilling candidates. The heurist ics proposed for reducing the register pressure can be applied to any softw are pipelining technique. The proposals are evaluated using a register-cons cious software pipeliner on a workbench composed of a large set of loops fr om the Perfect Club benchmark and a set of processor configurations. Propos als in this paper are compared against a previous proposal already describe d in the literature. For one of these processor configurations and the set of loops that do not Bt in the available registers (32), a speed-up of 1.68 and a reduction of the memory traffic by a factor of 0.57 are achieved wit h an affordable increase in compilation time. For all the loops, this repre sents a speedup of 1.38 and a reduction of the memory traffic by a factor o f 0.7.