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

  • How to Use This Course
  • Reading Path
  • Cache Coherency Glossary
  • The Shared Course Model
  • Cache Coherency Revision Sheet
  • Why Coherence Exists8
  • States and Protocols12
  • Transactions12
  • Races and Controller Design8
  • Progress and the Fabric16
    • Virtual Networks and Progress
    • Filtering and Snoop Pruning
      • The Cost of Broadcast
      • Snoop Filter Correctness
      • Multicast and Ack Collection
      • Filter Eviction and Back-Invalidation
    • Latency, Fairness and QoS
    • Hierarchical and Chiplet Coherence
  • Ordering and Synchronization12
  • Performance and Scalability12
  • Real Protocols12
  • SoC Integration12
  • Power, Clocking and Reliability12
  • Verification12
  • Debug and Bring-up12
  • Interview and Design Review17
  • Capstone: A Coherent Model Lab5
Loading lesson

‹Filtering and Snoop Pruning
  1. Topics
  2. Cache Coherency
  3. Progress and the Fabric
  4. Filtering and Snoop Pruning
  5. The Cost of Broadcast

Part 5 · Progress and the Fabric · All levels

The Cost of Broadcast

Count probes and responses, and keep message counts separate from link traffic and completion latency.

On this page

    What does a broadcast actually cost?

    If C1 requests X while only C0 may hold it, a peer broadcast and an exact holder lookup both target C0. In this two-core case there is no saving for that request. The value of filtering appears when the peer is known absent, or in a larger system.

    Use independent stable snapshots derived from the course's X = 0 start, not successive transactions. A row describes what a later request would need to investigate. The ordinary H directory still determines legal permission and data handling; a filter does not invent a new grant rule.

    Independent snapshot

    C0 state / value

    C1 state / value

    H directory

    Memory

    Newest data

    Targets to investigate for C1

    No private copy

    I / -

    I / -

    U

    0

    memory: 0

    None if absence is trustworthy

    One clean reader

    S / 0

    I / -

    S{C0}

    0

    C0 and memory: 0

    C0 for a GetM

    Dirty exclusive copy after C0 stored 1

    M / 1

    I / -

    exclusive(C0)

    0

    C0: 1

    C0 for data and permission recovery

    A request uses absence knowledge, a conservative target set or a fallback before collecting required responses.
    Pruning saves work only when the remaining set still covers every holder.

    Count probes and responses

    Each probe needs a response (Inv-Ack, or Data from the holder), so count both. With N private caches, a broadcast sends N-1 probes and collects N-1 responses. A filter with k candidates, 0 <= k <= N-1, sends k and collects k, plus one filter lookup at H. Why N-1 tag checks per miss scale badly is covered in Choosing Snoop or Directory. These are message counts, not bytes or router-link traversals: a multicast tree may share links, and a slow required response can still dominate latency even when k is small.

    Illustrative case

    Broadcast

    Filter

    N = 8, k = 2

    7 probes + 7 responses = 14 messages

    4 messages, plus one filter lookup at H

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def counts(n, requester, candidates):
        peers = set(range(n)) - {requester}
        assert n >= 2 and requester in range(n)
        assert candidates <= peers
        return 2 * len(peers), 2 * len(candidates)
    assert counts(2, 1, {0}) == (2, 2)
    assert counts(2, 1, set()) == (2, 0)
    assert counts(8, 0, {2, 5}) == (14, 4)
    assert counts(8, 0, set(range(1, 8))) == (14, 14)
    broadcast, filtered = counts(8, 0, {2, 5})
    assert broadcast - filtered == 10
    print("PASS: probes plus responses, 14 for broadcast and 4 for k = 2 at N = 8")

    Common pitfall

    Calling a reduction from 14 messages to 4 a 3.5x miss-latency improvement. The remaining data source, queueing and grant path can determine the critical path.

    Interview

    Ask whether the metric counts messages, links, payload bytes or time. Then ask what proves the omitted caches cannot hold a copy.

    Check yourself Why might a one-destination filtered request still be slow?

    That destination may hold the only current value or be backpressured. Fewer probes do not remove its data or permission obligation, or guarantee a bounded service time.

    Related topics

    • Shared course model

    • Hybrids and Snoop Filters

    • A required dirty data source

    Previous

    50 / 167

    Next: Snoop Filter Correctness

    Up next

    Up nextSnoop Filter Correctness

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Multicast and Ack Collection
    • Filter Eviction and Back-Invalidation