Software Pipelining in Nested Loops with Prolog-Epilog Merging - Archive ouverte HAL Accéder directement au contenu
Communication Dans Un Congrès Année : 2009

Software Pipelining in Nested Loops with Prolog-Epilog Merging

Résumé

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 et versions

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

Identifiants

Citer

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⟩
178 Consultations
0 Téléchargements

Altmetric

Partager

Gmail Facebook X LinkedIn More