Abstract

This paper is a scientific comparison of two code generation techniques with identical goals --- generation of the best possible software pipelined code for computers with instruction level parallelism. Both are variants of modulo scheduling, a framework for generation of software pipelines pioneered by Rau and Glaser [RaG181], but are otherwise quite dissimilar.One technique was developed at Silicon Graphics and is used in the MIPSpro compiler. This is the production compiler for SGI's systems which are based on the MIPS R8000 processor [Hsu94]. It is essentially a branch--and--bound enumeration of possible schedules with extensive pruning. This method is heuristic because of the way it prunes and also because of the interaction between register allocation and scheduling.The second technique aims to produce optimal results by formulating the scheduling and register allocation problem as an integrated integer linear programming (ILP1) problem. This idea has received much recent exposure in the literature [AlGoGa95, Feautrier94, GoAlGa94a, GoAlGa94b, Eichenberger95], but to our knowledge all previous implementations have been too preliminary for detailed measurement and evaluation. In particular, we believe this to be the first published measurement of runtime performance for ILP based generation of software pipelines.A particularly valuable result of this study was evaluation of the heuristic pipelining technology in the SGI compiler. One of the motivations behind the McGill research was the hope that optimal software pipelining, while not in itself practical for use in production compilers, would be useful for their evaluation and validation. Our comparison has indeed provided a quantitative validation of the SGI compiler's pipeliner, leading us to increased confidence in both techniques.

Keywords:
Computer science Software pipelining Instruction scheduling Compiler Parallel computing Register allocation Scheduling (production processes) Code generation Software Modulo Optimizing compiler Instruction-level parallelism Very long instruction word Computer architecture Programming language Parallelism (grammar) Dynamic priority scheduling Operating system Schedule Two-level scheduling

Metrics

94
Cited By
8.15
FWCI (Field Weighted Citation Impact)
39
Refs
0.98
Citation Normalized Percentile
Is in top 1%
Is in top 10%

Citation History

Topics

Parallel Computing and Optimization Techniques
Physical Sciences →  Computer Science →  Hardware and Architecture
Embedded Systems Design Techniques
Physical Sciences →  Computer Science →  Hardware and Architecture
Real-Time Systems Scheduling
Physical Sciences →  Computer Science →  Hardware and Architecture

Related Documents

JOURNAL ARTICLE

Software pipelining showdown

John C. RuttenbergGuang R. GaoArthur StoutchininWoody Lichtenstein

Journal:   ACM SIGPLAN Notices Year: 1996 Vol: 31 (5)Pages: 1-11
JOURNAL ARTICLE

Software pipelining

Monica S. Lam

Journal:   ACM SIGPLAN Notices Year: 2004 Vol: 39 (4)Pages: 244-256
BOOK-CHAPTER

Software Pipelining

Monica S. Lam

Kluwer international series in engineering and computer science Year: 1989 Pages: 83-124
JOURNAL ARTICLE

Software pipelining

Reese B. JonesVicki H. Allan

Year: 1991 Pages: 82-92
© 2026 ScienceGate Book Chapters — All rights reserved.