Software de-pipelining technique

Bogong Su, Jian Wang, Erh-Wen Hu, Manzano, J.. Software de-pipelining technique. In Source Code Analysis and Manipulation, 2004. Fourth IEEE International Workshop on. Sept. 2004. [doi]

Abstract

Software pipelining is an optimization technique used to speed up loop execution. It is widely implemented in optimizing compilers for VLIW and superscalar processors that support instruction level parallelism. Software de-pipelining is the reverse of software pipelining; it restores the assembly code of a software-pipelined loop back to its semantically equivalent sequential form. Due to the non-sequential nature of the often optimized assembly code, it is very difficult to gain insight into the meaning of the code. Consequently, the task of de-pipelining the code of a software-pipelined loop is very complex and challenging. We present in This work our de-pipelining algorithm with a formal description, proof, and a set of working examples. Experiments with loops taken from some practical DSP programs are conducted on popular VLIW digital signal processors to verify the algorithm. Some applications of software de-pipelining are discussed.