Software pipelining
- 1 September 1995
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Computing Surveys
- Vol. 27 (3) , 367-432
- https://doi.org/10.1145/212094.212131
Abstract
Utilizing parallelism at the instruction level is an important way to improve performance. Because the time spent in loop execution dominates total execution time, a large body of optimizations focuses on decreasing the time to execute each iteration. Software pipelining is a technique that reforms the loop so that a faster execution rate is realized. Iterations are executed in overlapped fashion to increase parallelism.Let {ABC}n represent a loop containing operations A, B, C that is executed n times. Although the operations of a single iteration can be parallelized, more parallelism may be achieved if the entire loop is considered rather than a single iteration. The software pipelining transformation utilizes the fact that a loop {ABC}n is equivalent to A{BCA}n−1BC. Although the operations contained in the loop do not change, the operations are from different iterations of the original loop.Various algorithms for software pipelining exist. A comparison of the alternative methods for software pipelining is presented. The relationships between the methods are explored and possibilities for improvement highlighted.Keywords
This publication has 20 references indexed in Scilit:
- Avoidance and suppression of compensation code in a trace scheduling compilerACM Transactions on Programming Languages and Systems, 1994
- Specification of software pipelining using petri netsInternational Journal of Parallel Programming, 1994
- Compiling for the CydraThe Journal of Supercomputing, 1993
- The cydra 5 minisupercomputer: Architecture and implementationThe Journal of Supercomputing, 1993
- Instruction-level parallel processing: History, overview, and perspectiveThe Journal of Supercomputing, 1993
- A development environment for horizontal microcodeIEEE Transactions on Software Engineering, 1988
- The program dependence graph and its use in optimizationACM Transactions on Programming Languages and Systems, 1987
- Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computingACM SIGMICRO Newsletter, 1981
- An approach to microprogram optimization considering resource occupancy and instruction formatsACM SIGMICRO Newsletter, 1977
- An efficient search algorithm to find the elementary circuits of a graphCommunications of the ACM, 1970