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
  • SoC Architecture Tradeoffs9
  • Architecture Interview Prep14
    • Interview Method and Worked Scenarios
      • Architecture Whiteboard Framework
      • Scenario: Cache MPKI Storm
      • Scenario: NoC Deadlock Under Load
      • Scenario: Accelerator Starvation
      • Scenario: Coherency Traffic Storm
      • Validation, PPA and the Close
    • Architecture Interview Q&A Bank
Loading lesson

‹Interview Method and Worked Scenarios
  1. Topics
  2. Computer Architecture
  3. Architecture Interview Prep
  4. Interview Method and Worked Scenarios
  5. Scenario: Coherency Traffic Storm

Computer Architecture · All levels

Scenario: Coherency Traffic Storm

False-shared counters flooding the fabric, proved with line math and padded away.

On this page

    Separate core IPC from system traffic

    Core IPC looks healthy while NoC bandwidth and system power explode. Per-core metrics hide a system traffic problem.

    Assume 64 cores sharing a counter array, one 64-byte line, and a storm mix that sums to 100 percent. Coherence is the largest class.

    NoC traffic class (storm)

    Share

    Data

    35%

    Coherence invalidations and acks

    41%

    Writebacks

    14%

    Control

    10%

    1. 0-5 min: split core IPC from fabric and power counters.

    2. 5-15 min: measure coherence transaction rate and invalidation clusters.

    3. 15-25 min: map hot lines to source layout.

    4. 25-35 min: compare software layout vs hardware policy fixes.

    5. 35-45 min: validate on application traces, not microbenchmarks.

    Prove false sharing with line math

    Eight 8-byte counters pack into one 64-byte line. Each core writes only its counter, yet every write moves the whole line.

    At 10M increments per second per core over 64 cores, line traffic is 640M x 64 B = 41 GB/s. Useful bytes are 640M x 8 B = 5.1 GB/s, an 8 to 1 overhead.

    Diagram
    Increments: 64 cores x 10M per s = 640M line moves per s
    Traffic:   640M x 64 B = 41 GB/s of coherence traffic
    Useful:    640M x 8 B = 5.1 GB/s of counter bytes
    Overhead:  64 / 8 = 8 to 1, all false sharing

    MESI state

    Meaning

    This storm

    Modified

    One owner, dirty, memory stale

    The hot line lives here, bouncing owner to owner

    Exclusive

    One owner, clean, memory fresh

    Never rests here: every other write steals it

    Shared

    Several readers, memory fresh

    Read-mostly lines stay here and stay quiet

    Invalid

    No valid copy

    Entry point after each invalidation

    Pad and align the hot layout

    Pad each counter to 64 bytes and align the array to a line. Each core then owns its line in Modified state and the bouncing stops.

    Line traffic falls from 41 GB/s toward zero plus true sharing only. One layout edit beats any fabric upgrade.

    line_next.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    module line_next (
      input  logic [1:0] cur,
      input  logic       rd,
      input  logic       wr,
      input  logic       other_wr,
      output logic [1:0] nxt
    );
      localparam [1:0] ST_I = 2'b00, ST_E = 2'b01, ST_M = 2'b10;
      always_comb begin
        nxt = cur;
        if (cur == ST_I) begin
          if (wr) nxt = ST_M;
          else if (rd) nxt = ST_E;
        end else if (cur == ST_E) begin
          if (wr) nxt = ST_M;
          else if (other_wr) nxt = ST_I;
        end else if (cur == ST_M) begin
          if (other_wr) nxt = ST_I;
        end
      end
    endmodule
    

    The testbench walks the exclusive-owned subset used in this storm. Reads take Invalid to Exclusive, writes take Exclusive to Modified, and another writer returns either state to Invalid.

    Match the protocol to the sharing

    Snoop fits small uniform domains with cheap broadcast. A directory fits 64 sharers with targeted invalidations instead of broadcast.

    CHI is a separate protocol with decoupled transaction channels, not a revision of ACE. Name the one the SoC uses and its invalidation path.

    Common pitfall

    A faster NoC without the layout fix carries the same 41 GB/s more quickly. Bandwidth hides the storm on the graph while power pays for it.

    Interview

    Likely traps and the calm replies.

    • Trap: average IPC only. Reply: split core IPC from fabric bytes first.

    • Trap: faster fabric. Reply: padding removes the traffic, fabric only moves it.

    • Trap: name states without traffic. Reply: walk one line through M, E and I with owners.

    Check yourself Padding fixed the counters, but one hot line remains with true sharing. What now?

    True sharing needs algorithm or scope work: privatize, replicate read-mostly data, or batch updates. Hardware cannot remove bytes the program truly shares.

    Check yourself Why does the Exclusive state matter in the whiteboard walk?

    A lone reader holds the line Exclusive, and its later write moves to Modified with no bus traffic. Without Exclusive, that write needs an upgrade transaction, so the quiet padded case depends on it.

    Related topics

    • Cache coherence for the architect

    • On-chip networks

    Previous

    77 / 86

    Next: Validation, PPA and the Close

    Up next

    Up nextValidation, PPA and the Close

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Architecture Whiteboard Framework
    • Scenario: Cache MPKI Storm
    • Scenario: NoC Deadlock Under Load