A dynamic pipeline can be reconfigured to perform variable functions at different times. It allows feed-forward and feedback connections in addition to the streamline connection.

 

  Difference Between Linear and Non-Linear pipeline:

 

Linear Pipeline
Non-Linear Pipeline
Linear pipeline are static pipeline because they are used to perform fixed functions.
Non-Linear pipeline are dynamic pipeline because they can be reconfigured to perform variable functions at different times.
Linear pipeline allows only streamline connections.
Non-Linear pipeline allows feed-forward and feedback connections in addition to the streamline connection.
It is relatively easy to partition a given function into a sequence of linearly ordered sub functions.
Function partitioning is relatively difficult because the pipeline stages are interconnected with loops in addition to streamline connections.
The Output of the pipeline is produced from the last stage.
The Output of the pipeline is not necessarily produced from the last stage.
The reservation table is trivial in the sense that data flows in linear streamline.
The reservation table is non-trivial in the sense that there is no linear streamline for data flows.
Static pipelining is specified by single Reservation table.
Dynamic pipelining is specified by more than one Reservation table.
All initiations to a static pipeline use the same reservation table.
A dynamic pipeline may allow different initiations to follow a mix of reservation tables.

 

A Three stage Pipeline

 

  Reservation Table: Displays the time space flow of data through the pipeline for one function evaluation.
Time
                                                          1      2    3     4     5     6    7     8
X
X
X
X
X
X
X
X
S1
            Stage         S2
S3
Reservation function for a function x                                  

 

 Latency:The number of time units (clock cycles) between two initiations of a pipeline is the latency between them. Latency values must be non-negative integers.

 

  Collision:When two or more initiations are done at same pipeline stage at the same time will cause a collision. A collision implies resource conflicts between two initiations in the pipeline, so it should be avoided.

 

  Forbidden and Permissible Latency: Latencies that cause collisions are called forbidden latencies. (E.g. in above reservation table 2, 4, 5 and 7 are forbidden latencies).

 

Latencies that do not cause any collision are called permissible latencies. (E.g. in above reservation table 1, 3 and 6 are permissible latencies).

 

  Latency Sequence and Latency Cycle: A Latency Sequence is a sequence of permissible non-forbidden latencies between successive task initiations.

 

A Latency cycle is a latency sequence which repeats the same subsequence (cycle) indefinitely.

 

The Average Latency of a latency cycle is obtained by dividing the sum of all latencies by the number of latencies along the cycle.

 

The latency cycle (1, 8) has an average latency of (1+8)/2=4.5.

 

A Constant Cycle is a latency cycle which contains only one latency value. (E.g. Cycles (3) and (6) both are constant cycle).

 

  Collision Vector:The combined set of permissible and forbidden latencies can be easily displayed by a collision vector, which is an m-bit (m<=n-1 in a n column reservation table) binary vector C=(CCm-1….C2C1). The value of Ci=1 if latency I causes a collision and Ci=0 if latency i is permissible. (E.g. Cx= (1011010)).

 

  State Diagram:Specifies the permissible state transitions among successive initiations based on the collision vector.

 

The minimum latency edges in the state diagram are marked with asterisk.

 

 Simple Cycle, Greedy Cycle and MAL: A Simple Cycle is a latency cycle in which each state appears only once. In above state diagram only (3), (6), (8), (1, 8), (3, 8), and (6, 8) are simple cycles. The cycle(1, 8, 6, 8) is not simple as it travels twice through state (1011010).

 

A Greedy Cycle is a simple cycle whose edges are all made with minimum latencies from their respective starting states. The cycle (1, 8) and (3) are greedy cycles.

 

MAL (Minimum Average Latency) is the minimum average latency obtained from the greedy cycle. In greedy cycles (1, 8) and (3), the cycle (3) leads to MAL value 3.