Assembly line - start up 1. 2. 3. 4. 5. Chassis Axels Motor Seats Body Start up waste t
Assembly line - stop 1. 2. 3. 4. 5. Chassis Axels Motor Seats Body 1. 2. 3. 4. 5. Chassis Axels Motor Seats Body Nothing to do
Assembly line At start: final stations idle At stop: start stations idle 5 “stages” for each car Each car still takes 5 stages but... ... we produce one car each step
Assembly line Time-set car Cycles instruction Without pipelining: = 5 5 cycles 1 instr. With pipelining = 1 5 cycles 5 instr.
Pipelining T = Nq * CPI * Tc We can bring this But what down to 1 determines this? The slowest pipeline stage “Rate determining step”
How we draw this? “At time t, pipeline step n works at the green car”
Pipeline is most efficient... ...when the work is equally shared “critical path” delay same for each stage or as close as possible
How do we break up a long critical path? Insert flip - flops!
But - “no free lunch” Delay: 30 ns 10 ns Latency: 1 cycle 3 cycles Also: The flip-flops have a cost!
Pipeline problem: Start-up waste Unexpected problem in a stage (stall) No more orders (flush)
Zero ext. = = Branch logic A ALU 4 B + = = 31 + Sgn/Ze extend