Software Pipelining in Nested Loops with Prolog-Epilog Merging - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Conference Papers Year : 2009

Software Pipelining in Nested Loops with Prolog-Epilog Merging

Abstract

Software pipelining (or modulo scheduling) is a powerful back-end optimization to exploit instruction and vector parallelism. Software pipelining is particularly popular for embedded devices as it improves the computation throughput without increasing the size of the inner loop kernel (unlike loop unrolling), a desirable property to minimize the amount of code in local memories or caches. Unfortunately, common media and signal processing codes exhibit series of low-tripcount inner loops. In this situation, software pipelining is often not an option: it incurs severe fill/drain time overheads and code size expansion due to nested prologs and epilogs. We propose a method to pipeline series of inner loops without increasing the size of the loop nest, apart from an outermost prolog and epilog. Our method achieves significant code size savings and allows pipelining of low-trip-count loops. These benefits come at the cost of additional scheduling constraints, leading to a linear optimization problem to trade memory usage for pipelining opportunities.

Dates and versions

inria-00445489 , version 1 (08-01-2010)

Identifiers

Cite

Mohammed Fellahi, Albert Cohen. Software Pipelining in Nested Loops with Prolog-Epilog Merging. HiPEAC 2009 - High Performance and Embedded Architectures and Compilers, Jan 2009, Paphos, Cyprus. ⟨10.1007/978-3-540-92990-1_8⟩. ⟨inria-00445489⟩
179 View
0 Download

Altmetric

Share

Gmail Facebook X LinkedIn More