Nonlinear Pipelining: Nonlinear Pipeline: Which Allows
Nonlinear Pipelining: Nonlinear Pipeline: Which Allows
S1 S1
S2 S2
S3 S3
=X4
S1
S2
S3
Indicates collisions
Nonlinear Pipelining
Latency Analysis
Consider the same pipeline again, lets
see initiations in the pipeline for
function X, with latency=5
1 2 3 4 5 6 7 8 9 10 11
S1
S2
S3
Nonlinear Pipelining
Latency Analysis
Forbidden latency: that causes collision.
Permissible latency: that doesn’t.
In the previous example 2 and 5 were
forbidden latencies.
With the help of these latencies we will find
out the minimal average latency (MAL) that
will give maximum efficiency of pipeline
without collisions.
The method is called “Collision-free
scheduling”.
Nonlinear Pipelining
Latency Analysis
Formal Methods to find out Permissible &
Forbidden Latencies:
To detect a forbidden latency, find out the distance
between any two check marks in the same row of the
reservation table and the rest are permissible
latencies.
Q. Find out permissible and forbidden latencies of the
reservation table for function x.
F.Lx = 2,4,5,7
P.Lx = 1,3,6,8
Nonlinear Pipelining
Latency Analysis
Collision-free Scheduling:
Let us first look at some basic terms:
Latency sequence: a latency sequence
is a sequence of permissible latencies
between successive tasks initiations.
Latency cycle:is a latency sequence
which repeats itself.
Nonlinear Pipelining
Latency Analysis
Constant cycle: which contains a
single latency value.
State diagram: will be used here to
specify the permissible state transitions among
successive tasks initiations.
Collision vector: (collision array) is a
combined set of permissible and forbidden
latencies.
C = ( Cm Cm-1 …… C2 C1 )
Nonlinear Pipelining
Latency Analysis
Collision vector: C = ( Cm Cm-1 …… C2 C1 )
Q. Find out collision vector for F.L y = 4,2 & P.Ly = 1,3,5,6.
Cy = 1010
Nonlinear Pipelining
Latency Analysis
1011010
Starting state
1111111
Current state.
Nonlinear Pipelining
Latency Analysis
1011010
1011011
1111111
Nonlinear Pipelining
Latency Analysis
1011010
1011011 1111111
Now, right shift the sixth bit and see what you get after
ORing it with the start state..
Nonlinear Pipelining
Latency Analysis
1011010
1011011 1111111
So we get,
1011011 1111111
S1
S2
S3
setup time
Mark every 3 x 3 array of squares as a frame.
= x 100
= 88.89%
S1
S2
S3
matched
Mark every 9 x 3 array of squares as a frame.
(since greedy cycle is (1,8) & 1+8=9 & we have 3 stages)
Enter the next task with latency 1.
Now enter the next task with latency 8.
Now again enter the next task with latency 1 and then 8
and so on.. Until the frames match.
Calculating the efficiency: With in a frame we have,
Total stages=27
Stages busy=16
= 59.23%
Which is less than what we got from greedy cycle (3),
because (3) is the MAL not (1,8).