Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Architecture Metrics Reference
  • Workload Taxonomy for Architects
  • Architecture Glossary
  • Computer Architecture Cheatsheet
  • Pipeline Fundamentals14
  • Memory Hierarchy15
  • NoC and Interconnect Architecture6
  • Coherency and Memory Ordering9
  • Performance Analysis9
  • Accelerator Architectures6
    • Accelerators for the Architect
      • When an Accelerator Pays Off
      • Dataflow Patterns as Reuse Contracts
      • Systolic Execution and Utilization Cliffs
      • Locality, Scratchpads and Tile Sizing
      • DMA and Double Buffering
      • Integration, Launch Cost and Signoff
  • SoC Architecture Tradeoffs9
  • Architecture Interview Prep14
Loading lesson

‹Accelerators for the Architect
  1. Topics
  2. Computer Architecture
  3. Accelerator Architectures
  4. Accelerators for the Architect
  5. Systolic Execution and Utilization Cliffs

Computer Architecture · All levels

Systolic Execution and Utilization Cliffs

A pipelined MAC engine shows fill, drain and padding losses, proved by a runnable model.

On this page

    A pipeline, not magic

    A systolic engine is a pipeline of multiply-accumulate stages. Weights stay at their stage while one activation row per cycle flows in.

    Throughput is one row per cycle after fill. Latency is 3 cycles here, and it is paid on every short phase.

    Rows fed (latency 3)

    Cycles (latency + rows)

    Active slots / total

    Utilization

    64 (long stream)

    67

    256 / 268

    96%

    4 (full tile)

    7

    16 / 28

    57%

    3 (short phase)

    6

    12 / 24

    50%

    3 wide on 4-wide array

    6

    9 / 24

    38%

    Fill, drain and padding

    Padding a 3-wide tile to width 4 multiplies the 50% phase efficiency by 3/4. The result is 37.5%, about 38%.

    Diagram
    4 rows: cycles = 3 + 4 = 7, util = (4 x 4) / (4 x 7) = 16 / 28 = 57.1% ≈ 57%
    3 rows: cycles = 3 + 3 = 6, util = (3 x 4) / (4 x 6) = 12 / 24 = 50%
    3 rows padded to width 4: 50% x 3 / 4 = 37.5% ≈ 38%
    64 rows: cycles = 3 + 64 = 67, util = 256 / 268 = 95.5% ≈ 96%

    Testbench

    The model below is a pipelined MAC stage with stationary weights. The testbench feeds 4 rows then 3 padded rows and checks every sum plus the first-result latency of 3.

    mac_pipe4.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    module mac_pipe4 (
      input  logic        clk,
      input  logic        rst_n,
      input  logic        in_valid,
      input  logic [7:0]  a_vec0,
      input  logic [7:0]  a_vec1,
      input  logic [7:0]  a_vec2,
      input  logic [7:0]  a_vec3,
      input  logic [7:0]  w0,
      input  logic [7:0]  w1,
      input  logic [7:0]  w2,
      input  logic [7:0]  w3,
      output logic        out_valid,
      output logic [15:0] sum_out
    );
      logic [15:0] s0, q1, q2, q3;
      logic v1, v2, v3;
      always_ff @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
          s0 <= 16'd0; q1 <= 16'd0; q2 <= 16'd0; q3 <= 16'd0;
          v1 <= 1'b0; v2 <= 1'b0; v3 <= 1'b0; out_valid <= 1'b0;
        end else begin
          s0 <= a_vec0 * w0 + a_vec1 * w1 + a_vec2 * w2 + a_vec3 * w3;
          q1 <= s0; q2 <= q1; q3 <= q2;
          v1 <= in_valid; v2 <= v1; v3 <= v2; out_valid <= v3;
        end
      end
      assign sum_out = q3;
    endmodule
    

    Common mistakes

    Common pitfall

    Reading MAC-active counters as end-to-end speed repeats the legacy trap. Idle feeders and padded lanes hide inside high MAC activity.

    Interview

    Likely probes: fill math and skinny-shape cliffs.

    • Total cycles equal depth plus rows; divide active slots by total slots.

    • Padding multiplies phase efficiency by the used width fraction.

    • Long streams amortize fill; short phases pay it every time.

    Check yourself Latency is 3 and 4 rows are fed. How many cycles pass, and what is utilization?

    7 cycles. Active slots are 16 over 28 total, so about 57%.

    Check yourself A 3-wide tile runs on a 4-wide array with latency 3. What is combined efficiency?

    Phase gives 12/24 = 50%, times width 3/4, giving 37.5%, about 38%.

    Related topics

    • AI Accelerator Systems

    • GPU Design

    Previous

    60 / 86

    Next: Locality, Scratchpads and Tile Sizing

    Up next

    Up nextLocality, Scratchpads and Tile Sizing

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • When an Accelerator Pays Off
    • DMA and Double Buffering
    • Integration, Launch Cost and Signoff