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
    • Latency, Fairness and QoS
      • Anatomy of a Miss Latency
      • Fairness on a Contended Line
      • QoS Classes and Coherence
      • Starvation Cases
    • 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

‹Latency, Fairness and QoS
  1. Topics
  2. Cache Coherency
  3. Progress and the Fabric
  4. Latency, Fairness and QoS
  5. Starvation Cases

Part 5 · Progress and the Fabric · All levels

Starvation Cases

Locate unbounded bypass and separate eventual service from bounded response time.

On this page

    Where does the waiting request lose its place?

    Consider C1 waiting for X while the rest of the fabric keeps completing work. First find a stage at which C1 is continuously eligible. If no such stage exists, investigate admission, credit return and retry rules before blaming the visible request arbiter. Starvation is a property of executions and service rules, not just a large counter value.

    Case

    Why C1 waits

    Evidence or repair to examine

    Three cores, fixed priority: C0 and C2 alternate GetM on X (a lock ping-pong)

    Fixed priority ranks both above C1, so H always has a higher-priority eligible GetM and C1's queued GetM is never selected

    The policy admits an infinite execution that serves only C0 and C2. Rotate priority or age requests.

    C1 retries reset age

    Each attempt is treated as a fresh youngest request

    Preserve request identity/age or provide an explicit retry-service rule.

    Low-priority response never served

    C1 was admitted but its completion obligation is bypassed

    Fairness must include response scheduling and service at each receiver.

    Required credit never returns after a fault

    A required action cannot become enabled

    Do not claim a fairness fix repairs lost capacity or permanent failure.

    The investigation follows whether C1 stays eligible and whether its selection rule permits unbounded bypass.
    Trace eligibility and service stage by stage instead of treating a timeout as a classification.

    A bound needs stronger assumptions

    Take the three cores of the ping-pong case, but with strict three-source round-robin (order C0, C1, C2) instead of fixed priority. Assume: all three requests stay queued at this scheduler, at most one transaction for X is active, every transaction completes within B cycles including delivery and acceptance by its receivers, no other priority class intervenes, arbitration decisions take zero time, and C1 stays eligible. Once C1 is eligible here, at most two other transactions, one from each of C0 and C2, can precede it. Each is either already active (at most B remaining) or selected before C1 (at most B). C1's own transaction takes at most B, so C1 completes within 3B cycles. With only two requesters, at most one C0 transaction, either already active (at most B remaining) or selected next (at most B), can precede C1, so C1 completes within 2B under the same assumptions. Queueing before this scheduler is outside the bound.

    Choose B = 20 illustrative cycles only if every relevant path has actually been bounded by 20. The single upgrade timeline earlier does not establish that all dirty interventions, evictions and backpressured responses meet the same B: the cold GetS in that lesson's comparison already takes 43. Under merely eventual fair delivery there may be no finite numeric B at all.

    The newest-data rule does not depend on this waiting-time analysis: a timeout must never discard C0's dirty value, as QoS Classes and Coherence shows.

    Common pitfall

    Promoting a finite simulation with no observed starvation into a universal guarantee. Inspect the policy and its enabling assumptions, then use traces to challenge them.

    Interview

    Explain why weak fairness may give eventual service but not a cycle bound, and why a bound at one scheduler excludes waiting before that scheduler.

    Check yourself Does the 3B argument survive unbounded receiver backpressure?

    No. Acceptance by the receivers is part of the assumption that every transaction completes within B. Remove that assumption and B is not established, so neither is 3B.

    Related topics

    • Shared course model

    • Eligibility and selection

    • Failure classifications

    Previous

    57 / 167

    Next: Hierarchical and Chiplet Coherence

    Up next

    Up nextHierarchical and Chiplet Coherence

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Anatomy of a Miss Latency
    • Fairness on a Contended Line