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. |
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.
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.