Course contentsShow
← Embedded Systems & Computer Architecture
Lesson 37 of 9361. Foundations of Digital Logic and Computer ArchitectureFree lesson

Optimizing Data Path Throughput

Learners will identify critical paths within a complete data path design and apply pipelining techniques to improve overall system clock frequency.

In this lesson, you will learn how to identify the "bottleneck" in your circuit and use pipelining to boost your system's clock speed.

Identifying the Critical Path

In any synchronous digital system, your clock frequency is limited by the critical path. This is the longest delay path between any two registers. Imagine a data path where a signal must travel through an Adder, then a Multiplier, then a Multiplexer before reaching the next Flip-Flop. The clock period must be long enough for the signal to finish all these operations. If the total delay is 10ns, your maximum clock frequency is capped at 100MHz (f=1/Tf = 1/T). If you try to run it faster, the signal won’t reach the destination register before the next clock edge, causing a timing violation.

Improving Throughput with Pipelining

To improve throughput, we use pipelining. This technique involves inserting registers into the middle of a long combinational path, effectively breaking one large task into several smaller "stages."

Consider our previous example:

  1. Original Design: Register A -> [Adder + Multiplier + Mux] -> Register B (10ns delay).
  2. Pipelined Design: Register A -> [Adder] -> Register C -> [Multiplier + Mux] -> Register B.

By adding Register C, we have split the work. Now, the longest delay is the longest stage, which might only be 6ns. We can now increase our clock frequency to roughly 166MHz!

// Pipelined Stage Concept
always @(posedge clk) begin
    stage1_result <= data_a + data_b;      // Stage 1
    stage2_result <= stage1_result * mult; // Stage 2
end

While the total time for a single piece of data to travel from start to finish (the latency) remains similar, the throughput—how many operations we complete per second—increases dramatically. Every clock cycle, the first stage starts a new calculation while the second stage finishes a previous one, much like an assembly line in a factory. By strategically placing registers to balance these stages, we maximize our clock frequency and overall system performance.

Key Takeaway: Pipelining increases system throughput by inserting registers to break long combinational paths into smaller, faster stages, effectively shortening the critical path.