Software pipelining

  • Authors:
  • Vicki H. Allan;Reese B. Jones;Randall M. Lee;Stephen J. Allan

  • Affiliations:
  • Utah State Univ., Logan;Evans and Sutherland, Salt Lake City, UT;DAKCS, Ogden, UT;Utah State Univ., Logan

  • Venue:
  • ACM Computing Surveys (CSUR)
  • Year:
  • 1995

Quantified Score

Hi-index 0.02

Visualization

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.