In computer science, software pipelining is a technique used to optimize loops, in a manner that parallels hardware pipelining. Software pipelining is a type of out-of-order execution, except that the reordering is done by a compiler (or in the case of hand written assembly code, by the programmer) instead of the processor. Some computer architectures have explicit support for software pipelining, notably Intel's IA-64 architecture.
It is important to distinguish software pipelining, which is a target code technique for overlapping loop iterations, from modulo scheduling, the currently most effective known compiler technique for generating software pipelined loops.
Software pipelining has been known to assembly language programmers of machines with instruction-level parallelism since such architectures existed. Effective compiler generation of such code dates to the invention of modulo scheduling by Rau and Glaeser.[1]
Lam showed that special hardware is unnecessary for effective modulo scheduling. Her technique, modulo variable expansion is widely used in practice.[2]
Gao et al. formulated optimal software pipelining in integer linear programming, culminating in validation of advanced heuristics in an evaluation paper.[3] This paper has a
good set of references on the topic.
^B.R. Rau and C.D. Glaeser, "Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computing", In Proceedings of the Fourteenth Annual Workshop on Microprogramming (MICRO-14), December 1981, pages 183-198
^M. Lam, "Software pipelining: An effective scheduling technique for VLIW machines", In Proceedings of the ACM SIGPLAN 88 Conference on Programming Language Design and Implementation (PLDI 88), July 1988 pages 318-328. Also published as ACM SIGPLAN Notices 23(7).
^J. Ruttenberg, G.R. Gao, A. Stoutchinin, and W. Lichtenstein, "Software pipelining showdown: optimal vs. heuristic methods in a production compiler", In Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, June 1996, pages 1-11. Also published as ACM SIGPLAN Notices 31(5).
and 21 Related for: Software pipelining information
computer science, softwarepipelining is a technique used to optimize loops, in a manner that parallels hardware pipelining. Softwarepipelining is a type of...
legacy HTTP/1.1 servers do not support pipelining correctly, forcing most HTTP clients to not use HTTP pipelining. The technique was superseded by multiplexing...
instruction word (VLIW) containing instructions from parallel operations. Softwarepipelining in a custom Fortran compiler generated code that would run efficiently...
the only dependencies are between iterations of the outer loop. Softwarepipelining – a type of out-of-order execution of loop iterations to hide the...
architecture also added rotating register files, a tool useful for softwarepipelining since it avoids having to manually unroll and rename registers. There...
When they finish the next subtask is handed to the TPU(s). Adding softwarepipelining allows the second subtask to run using partial results from the first...
efficiently accommodated using softwarepipelining of memory block transfers using a multi-buffering strategy. The software cache offers a solution for random...
following a pipeline through a "production-like environment", without doing so manually. It aims at building, testing, and releasing software with greater...
through the DCF standard), a date and time (widely used by smartphone camera software and for screenshots), and/or a comment such as the name of a subject or...
block boundaries. Modulo scheduling: an algorithm for generating softwarepipelining, which is a way of increasing instruction level parallelism by interleaving...
body inside each of the if and else clauses of the conditional. Softwarepipelining The loop is restructured in such a way that work done in an iteration...
of Open64 that was released in 2002 was missing its very advanced softwarepipelining code generator, and had only a rudimentary code generator for Itanium...
one of the first software programs to use XML pipelines. 1998 PolarLake build XML Operating System, which includes XML Pipelining. 2002 Notes submitted...
every transaction of the business. Pipeline tracking is one of the key features of an accounting system and software for asset management. This provides...
Lueh and James Reinders. Modeling Instruction-Level Parallelism for SoftwarePipelining. In Proceedings of the IFIP WG10.3 Working Conference on Architectures...
applications. PGI compilers incorporate global optimization, vectorization, softwarepipelining, and shared-memory parallelization capabilities targeting both Intel...
operation of these assets, some pipeline companies are using what is called "Advanced Pipeline Applications", which are software tools installed on top of the...
cycle and an instruction passes through the stages sequentially. Without pipelining, in a multi-cycle processor, a new instruction is fetched in stage 1 only...
The Colonial Pipeline is the largest pipeline system for refined oil products in the U.S. The pipeline – consisting of three tubes – is 5,500 miles (8...