Figure: a sixteen-part visual technical appendix on KV-cache offloading for Llama-70B inference. It walks from transformer structure (80 layers, 8,192 hidden dimensions, 64 query heads, 8 KV heads, 128 head dimensions) through attention and the KV-cache formula, which gives 320 kibibytes per token, so 1.3 gigabytes at 4K tokens, 43 gigabytes or 40.0 gibibytes at 128K, and 344 gigabytes at 1M, against a B200 with 192 gigabytes of HBM3e of which only 47 gigabytes is left for KV after 140 gigabytes of weights and 5 gigabytes of activations. That capacity arithmetic is analytic and stands unchanged: at 8K a context is 2.50 gibibytes, at 128K it is 40.0 gibibytes, and for a single sequence the KV only overtakes the weights at about 427,000 tokens. It then sets out the design: attention concentrates about 80 percent of its mass on the most recent 10 percent of tokens, RoPE makes that locality a geometric property, heads specialize, and a four-tier hierarchy of 10 gigabytes pinned HBM and 37 gigabytes evictable HBM at 100 nanoseconds, 1 terabyte of CXL DRAM and 16 terabytes of endpoint NVMe holds the rest. Tier latency and tier bandwidth are assumptions, not measurements: no CXL hardware was measured anywhere in this package, the 200 nanosecond access is demoted to an assumption inside a 32 to 121 gigabyte per second range, and across that range one 5.00 mebibyte block, being 16 tokens at 320 kibibytes per token, takes 164, 82 or 43 microseconds to move. Placement combines the signals into a priority score P of p equals 0.25 recency plus 0.55 EMA score plus 0.20 anchor zone, with tier boundaries at P equals 0.3 and P equals 0.6. The form of that score is kept, but its five constants are uncalibrated and illustrative: they were never fitted. Much of this appendix has been corrected. The 97 percent HBM hit rate is retracted, because it was never measured; the corrected simulation, Revision 2, gives 8.5 to 91.6 percent depending on HBM budget, policy and workload, and at a 32 gibibyte budget LRU gives 38.34, LFU 16.09, EMA alpha 0.15 gives 44.18 and EMA alpha 0.01 gives 35.91. The 72 to 80 to 87 to 93 to 97 ladder, with its plus 8, plus 7, plus 6 and plus 4 increments and its plus 25 point total, is retracted outright: no ablation was ever run, and the increments were assumed additive and independent. The real margin over LRU is plus 2.5 to plus 5.8 points at the specified alpha and plus 19.1 points at a tuned alpha of about 0.05, which gives 55.96 percent against LRU at 36.85; the alpha of 0.2 previously used here was never validated. A decayed-frequency score of this form is LRFU, published by Lee and colleagues at SIGMETRICS in 1999, and alpha is its documented knob between LRU and LFU behaviour, so the contribution is stated instead as a protocol claim: make KV state and its control metadata a single migratable object with identity-keyed policy state that survives the round trip between tiers. All simulated values are provisional rather than settled, because a single data-structure defect in Revision 1 inverted four of five findings. The effective access latency of 177 nanoseconds, the 11.5 times end-to-end figure and the 65 times per-access figure of 13.0 microseconds of PCIe DMA against 200 nanoseconds of CXL.mem are all retracted. What replaces them is that the tier avoids regeneration rather than lowering latency: moving a block costs 43 to 164 microseconds while regenerating the same 16 tokens costs 9 to 18 milliseconds of forward compute, which is two to three orders of magnitude, with no precise multiple claimed. The 16 times user capacity is retracted with no replacement claim, because it was downstream of the 97 percent and because under dense attention every block of an active sequence is read every step; concurrency is now stated only as KV-only capacity arithmetic, never as a served-user count. The 36 percent CapEx reduction from $160,000 to $103,000 is retracted because it priced a configuration justified by the 16 times, and no replacement cost figure is offered. Finally, real hardware data has been added. On a DGX Spark GB10 measured on 19 August 2026 with Qwen2.5-7B in fp16, achieved streaming bandwidth is 236.5 gigabytes per second, which is 87 percent of the 273 gigabyte per second spec and retires the roughly 50 percent effective-bandwidth haircut earlier drafts applied. Decode time is two-term rather than one-term: t equals 100.3 plus 16.34 times KV in gibibytes for HuggingFace with SDPA at R squared 0.991, and t equals 73.9 plus 17.58 times KV in gibibytes for vLLM with FlashAttention-2 at R squared 0.945, giving inferred fixed-path bandwidths of 151.5 and 205.7 gigabytes per second against inferred KV-path bandwidths of 65.7 and 61.1. Under that fit the KV path is about 3.4 times more costly per byte, a model-derived ratio rather than a direct byte-level hardware measurement, and kernel substitution alone did not remove the KV slope, which stayed within 8 percent across the two frameworks. The 6 times memory expansion, 320 kibibytes per token, the 5.00 mebibyte block and the capacity table all stand: they are arithmetic over stated capacities and never depended on any hit rate.
Technical Appendix
KV-Cache Offloading for LLM Inference — Visual Reference · v6.0, August 2026
Read the labels, not the headlines.Capacity sizing is an analytical model over stated inputs and
stands. Hit rates and policy margins are simulated (provisional) — Revision 2, 2–3 seeds, no hardware
validation, and provisional rather than settled because a single data-structure defect in Revision 1 inverted four of
five findings. Bandwidth and decode-model figures are measured on a DGX Spark (GB10), 19 Aug 2026.
No CXL hardware was measured, so every tier latency and tier bandwidth here is an assumption inside a
stated range. The 97% hit rate, the +25-point ladder, the 16× user capacity, the 65× access latency, the 177 ns
effective latency and the 36% CapEx reduction are retracted — see
RETRACTIONS and CANONICAL-NUMBERS §7.
1. Transformer Architecture
Llama-70B consists of 80 identical layers. Each layer performs attention followed by a feed-forward transformation.
Diagram 1.1 — Layer Structure
Input Embedding
× 80 LAYERS
Self-Attention
Feed-Forward
Output Logits
Architecture Parameters
Layers
80
Hidden dim
8,192
Query heads
64
KV heads
8
Head dim
128
FFN dim
28,672
Parameters
70B
2. Attention Mechanism
Each token computes Query, Key, and Value vectors. Attention scores determine how much each previous token contributes to the output.
Diagram 2.1 — Q, K, V Projections
Input x 8,192 dims
W_Q Query
W_K Key
W_V Value
Q 128d
K 128d
V 128d
What each vector represents:
Q — "What am I looking for?"
K — "What do I contain?"
V — "What do I contribute?"
Diagram 2.2 — Attention Score Computation
Token "France" attending to previous tokens:
Position 0
Qfrance·Kthe=
0.12
Position 1
Qfrance·Kcapital=
0.87
Position 2
Qfrance·Kof=
0.23
Position 3
Qfrance·Kfrance=
0.45
After softmax normalization:
The
6%
capital
52%
of
14%
France
28%
Output = weighted sum of V vectors
3. KV-Cache Structure
The KV-cache stores Key and Value vectors for all processed tokens, eliminating redundant computation during generation.
B200 HBM capacity: 192 GB — of which only 47 GB is left for KV after 140 GB of weights and 5 GB of activations
4. Prefill vs Decode
The two phases of inference have fundamentally different computational characteristics.
Diagram 4.1 — Phase Comparison
Prefill Phase
Processing the prompt
The
capital
of
France
is
✓ All tokens processed in parallel
✓ High arithmetic intensity
✓ Compute-bound
Decode Phase
Generating response
The
capital
...
→
Paris
✗ One token at a time
✗ Must read entire KV-cache
✗ Memory-bandwidth-bound
Diagram 4.2 — Decode Memory Access Pattern
To generate 1 token:
Model Weights
140 GB
KV-Cache
43 GB(at 128K)
Total reads
183 GB
Naive bandwidth requirement — the strawman:
(140 + 43) GB ÷ 50 ms
= 3.66 TB/s
A single-bandwidth roofline over the whole read set is the wrong
model — but not for the reason this box used to give. The 140 GB of weights are HBM-resident and never
cross the tier; only blocks that are not resident have to be moved.
Retracted: the claim that "selective attention reads only
the hot set, not the full 43 GB context", and the 11.4 GB/s
steady-state CXL demand and 4.5% utilisation derived from
it. That reasoning conflated a cache hit rate with attention sparsity — two different claims with different
obligations. Under dense attention every block of an active sequence is read every decode step, so
lossless residency requires all of it; sparsity is a lossy relaxation that carries an
accuracy-evaluation burden. "Capacity-driven, not
bandwidth-driven" is withdrawn too: a memory tier does not eliminate the KV memory wall, it changes
its shape from a capacity wall into a data-movement wall.
Measured — DGX Spark GB10, 19 Aug 2026: decode is
two-term, not one-term —
t = 100.3 + 16.34·KV_GiB (HF + SDPA, R² 0.991) and
t = 73.9 + 17.58·KV_GiB (vLLM + FA2, R² 0.945). Achieved streaming bandwidth is
236.5 GB/s = 87% of the 273 GB/s spec, which retires the
~50% effective-bandwidth haircut. Inferred fixed-path bandwidth is
151.5 / 205.7 GB/s against an inferred KV path of
65.7 / 61.1 GB/s — under that fit a KV byte costs
~3.4× a fixed-path byte, a model-derived ratio rather than
a direct byte-level measurement. Kernel substitution alone did not remove the KV slope: within 8% across two
frameworks. The measurement refutes the single-bandwidth
roofline.
5. The Memory Wall
GPU memory capacity, not compute or bandwidth, becomes the limiting factor with multiple users.
Diagram 5.1 — Single User Memory Layout
B200 HBM — 192 GB4 GB free
Model Weights — 140 GB
KV — 43 GB
Weights — 140 GB
KV @128K — 43 GB
Activations — 5 GB
Free — 4 GB
✓ 140 + 43 + 5 = 188 GB — exactly one user at 128K fits, with 4 GB to spare
Diagram 5.2 — Multi-User Memory Explosion
2 users231 GB needed
Weights
KV ×2
4 users317 GB needed
Weights
KV ×4
8 users489 GB needed
Weights
KV ×8
B200 capacity: 192 GB
Totals are 140 GB weights + n × 43 GB KV + 5 GB activations
8 users need: 489 GB (2.5× over)
6. Attention Locality
The model assumes attention concentrates heavily on recent tokens and on a small anchor zone — an assumption drawn from the published attention-sparsity literature (H2O, SnapKV, Scissorhands, Quest) [External literature], not from measurement of this system. The distributions below are illustrative.
Diagram 6.1 — Attention Distribution (10K Context)
0-1K 5%
1-9K 15%
9-10K 80%
Key insight:
~80%
of attention goes to
~10%
most recent tokens
Diagram 6.2 — Attention Heatmap (Simplified)
Current token attending to context
← Earlier | Recent →
Position 0Position N
Low attention
Medium
High attention
7. RoPE: Why Locality Emerges
Rotary Position Embedding creates locality as a geometric property of how positions are encoded.
Diagram 7.1 — RoPE Rotation Concept
Each dimension pair rotates at different frequency
Fast dims → local patterns
Slow dims → global patterns
Diagram 7.2 — Distance-Dependent Decay
Illustrative decay envelope B(|m−n|) by distance:
Distance 1
0.99
Distance 10
0.95
Distance 100
0.71
Distance 1,000
0.32
Distance 10,000
0.11
⟨qm, kn⟩ = Σ over d/2 frequency pairs
|⟨qm, kn⟩| ≤ B(|m − n|)
Small distance → the bound B is loose → high attention is possibleLarge distance → the bound B tightens toward zero
The RoPE inner product is a sum over d/2 frequency pairs; the distance dependence is an
upper bound, written |⟨qm, kn⟩| ≤ B(|m − n|). It is not a
proportionality to cos((m − n)θ) — individual pairs oscillate and can be large at any distance.
8. Attention Head Types
Different attention heads specialize for different functions, creating varied access patterns. The 40 / 15 / 25 / 20 split below is an assumption of this model, informed by the induction-head and retrieval-head literature — it is not a measured distribution.
Diagram 8.1 — Head Specialization
Recency Heads
~40% of heads
Focus on last 50-200 tokens
Anchor Heads
~15% of heads
Always check position 0-100
Retrieval Heads
~25% of heads
Content-based, position-independent
Syntactic Heads
~20% of heads
Follow grammatical dependencies
Implication: A single caching policy cannot satisfy all heads. Per-head tracking required.
9. CXL Architecture
CXL provides memory expansion at lower cost and bandwidth than HBM.
CXL tradeoff: cheaper per GB, far lower bandwidth. Per-GB media prices are indicative list prices, not a cost
model. The 97% HBM hit rate that used to be called the load-bearing
number here is retracted — it was never measured, and there is no single hit rate: the corrected simulation
gives 8.5–91.6% depending on HBM budget, policy and workload.
What is load-bearing instead is that a tier avoids regeneration: moving one 5.00 MiB block costs
164 / 82 / 43 µs at an assumed 32 / 64 / 121 GB/s, against
9–18 ms to regenerate the same 16 tokens by forward compute —
two to three orders of magnitude, with no precise multiple claimed. Combined capacity is 192 GB + 1,024 GB = 1.2 TB,
a 6.3× expansion over HBM alone; that one stands,
because it is arithmetic over stated capacities and never depended on a hit rate.
Measured — DGX Spark GB10, 19 Aug 2026, Qwen2.5-7B fp16
Achieved streaming bandwidth is 236.5 GB/s = 87% of the 273 GB/s spec, which
retires the ~50% "effective bandwidth" haircut earlier drafts applied to spec figures — the haircut
was wrong, and wrong in the pessimistic direction. Decode time is two-term, not one-term:
t = 100.3 + 16.34·KV_GiB (HF + SDPA, R² 0.991) and
t = 73.9 + 17.58·KV_GiB (vLLM + FA2, R² 0.945), giving an inferred fixed-path bandwidth of
151.5 / 205.7 GB/s against an inferred KV-path bandwidth of 65.7 / 61.1 GB/s.
Under that fit the KV path is ~3.4× more costly per byte — a model-derived ratio, not a direct
byte-level hardware measurement. Kernel substitution alone did not remove the KV slope: it stayed
within 8% across two frameworks with different attention implementations and paged vs unpaged layout, while the
inferred fixed-path bandwidth improved 34% between them.
10. Tiered Memory Hierarchy
The caching system places data in tiers based on access patterns.
Evictable KV working set — sized as capacity, not as a user count
37 GB
100 ns
Tier 2 — CXL DRAM (4 endpoints)
Warm KV — 256 GB per endpoint
1 TB
200 ns (assumed)
Tier 3 — Endpoint NVMe
Cold KV and complete backing store — 4 TB per endpoint
16 TB
25 µs
192 GB HBM = 140 weights + 5 activations + 10 pinned + 37 evictable — arithmetic over stated capacities, which
stands. Tier latencies are assumptions: the 200 ns CXL access is
demoted to an unmeasured assumption inside a 32–121 GB/s range, and no
CXL hardware was measured. The blended-latency model that used to be built on these numbers
(L_eff = h_HBM × 100 ns + h_CXL × 200 ns + h_NVMe × 25 µs → 177 ns) is
retracted, because there is no single hit rate to substitute
into it.
Diagram 10.2 — Memory Layout, as capacity arithmetic
HBM — 192 GB
Model Weights — 140 GB
Hot KV
Weights — 140 GB
Activations — 5 GB
Tier 0 pinned — 10 GB
Tier 1 evictable KV — 37 GB
CXL — 1 TB
KV held in CXL — 687 GB
Headroom — 337 GB
687 GB is 67% of the 1,024 GB CXL tier, and at 43 GB (40.0 GiB) per 128K context that is about
16 contexts' worth of KV.
That is capacity arithmetic, not a served-user count — and the
difference is exactly what was wrong before. The 16× user-capacity
headline is retracted: it was downstream of a 97% HBM hit rate that was never measured, and under dense
attention every block of an active sequence is read every decode step, so there is no small resident subset
to serve many users from. What survives is the arithmetic itself, which never depended on a hit rate:
320 KiB/token, 2.50
GiB at 8K, 40.0 GiB at 128K, and a single-sequence
crossover against the 130.4 GiB of weights at ≈ 427,000 tokens.
Concurrency is stated as KV-only capacity, never as users served.
11. EMA Scoring Algorithm
Exponential Moving Average tracks which tokens actually receive attention over time.
Diagram 11.1 — EMA Update Rule
scoret = α · attentiont + (1 − α) · scoret−1
α ≈ 0.05
Decay factor — simulated optimum
13.5 steps
Half-life, ln0.5 ÷ ln0.95
~1.35 s
At the ≥10 tok/s per-user target
α = 0.2 was never validated — and the score itself is prior art
α = 0.2 is withdrawn. It was a stated implementation default that no experiment ever supported. In
the corrected simulation α is non-monotonic with an interior optimum, and there is no convergence
onto LFU as α → 0. At a 32 GiB HBM budget: α = 0.5 gives 37.20%, 0.3 gives 38.84%, 0.15 gives 44.33%,
0.05 gives 55.96% — the optimum, +19.1 pts over LRU's 36.85%, then 0.01 gives 31.54%, 0.003 gives
25.47% and 0.001 gives 24.44%, against LFU at 15.56%. At the specified α the margin over LRU is only
+2.5 to +5.8 pts, not the +25 pts previously claimed.
And a decayed-frequency score of this form is not new: it is LRFU (Lee et al., SIGMETRICS 1999),
established prior art, and α is its documented LRU↔LFU knob. The contribution therefore has to be
stated one level up, as a protocol claim: make KV state and its control metadata a single migratable object, with
identity-keyed policy state that survives the round trip between tiers. In simulation that persistence is worth more
than the choice of policy — at 32 GiB it is +34.15 pts for LFU and +24.85 pts for
EMA α = 0.01 — and it is testable with no CXL hardware.
Simulated (provisional): Revision 2, 2–3 seeds, no Belady bound, no bandwidth or queueing model, no hardware
validation. Provisional rather than settled because a single data-structure defect in Revision 1 inverted four of
five findings.
Diagram 11.2 — EMA Evolution Example
System Instruction Token
Position 50 — "helpful"
Consistent attention from anchor heads:
Step 0: attn=0.04 → score=0.008
Step 1: attn=0.03 → score=0.012
Step 2: attn=0.05 → score=0.020
...
Step 100: → score=0.040
→ Stays HOT
Generic Middle Token
Position 45,000 — "the"
Rarely attended:
Step 0: attn=0.001 → score=0.0002
Step 1: attn=0.000 → score=0.0002
Step 2: attn=0.002 → score=0.0005
...
Step 100: → score=0.001
→ Evict to CXL
12. Priority Scoring Formula
Final placement decisions combine multiple signals into a single priority score.
Diagram 12.1 — Scoring Components
Recency
25%
EMA Score
55%
Anchor Zone
20%
P(p) = 0.25 · R(p) + 0.55 · E(p) + 0.20 · N(p) [Uncalibrated and illustrative — these weights were never fitted; the prefetch priority used in Appendix J is 1/(1 + distance/100)]
0.25 / 0.55 / 0.20 are uncalibrated and illustrative — they were never fitted
The form of the score is kept; the weights are not a result. These three numbers were not
fitted, measured or derived from anything. They encode a judgement — that smoothed attention mass should dominate,
with recency and anchor membership as corrections — and they are stated as an assumption so a reader can disagree
with the judgement rather than with an implied result. Nothing in this package depends on their particular values.
What they control. P(p) is a tier-placement score: it decides which tier an
entry that already exists should live in, against the thresholds in Diagram 12.2 below. R(p) is recency,
E(p) the EMA attention score, N(p) anchor-zone membership. The weights set how much each signal moves an
entry between Tier 0 pinned, Tier 1 HBM and Tier 2 CXL.
Which way they push. Raising the E weight makes placement track sustained attention
mass more closely and behave more like pure EMA eviction — better for stable workloads, slower to react to
a topic change. Raising the R weight makes placement more reactive: recently touched tokens climb tiers
quickly, which helps a sharp context switch and hurts long-lived structural tokens. Raising the N weight
hardens the anchor zone at the cost of pinned capacity that could hold the working set. (The
+8-point anchor-pinning contribution this paragraph used to cite is
retracted — it was a rung of the 72 → 80 → 87 → 93 → 97 ladder, and no ablation was ever run.) Because the weights
sum to 1, every increase is another signal's decrease.
How they would be calibrated. Fit them, do not choose them. Log per-token
(recency, EMA, anchor-membership, was-attended) tuples from real 128 K attention traces and solve for the
weights that maximise hit rate at the fixed 47 GB HBM budget — a small constrained regression or a coarse
simplex sweep. That work has not been done. The tier thresholds in Diagram 12.2 must be re-fitted at the same time, since they are
thresholds on P and are meaningless if the weights move.
See Appendix K, section K.7 — Uncalibrated parameters.
Not the same function as the prefetch blend.P(p) = 0.25·R + 0.55·E + 0.20·N answers "where should this entry live?".
The 0.6 · rope_factor + 0.4 · ema_factor blend in Appendices D and J answers a
different question — "what should be fetched next?" — over a different signal set, using RoPE distance
rather than recency or anchor membership. The two weight vectors are not alternatives and do not
contradict each other; neither is calibrated.
Diagram 12.2 — Tier Assignment Thresholds
Tier 2 (CXL)
Tier 1 (HBM)
Tier 0 (Pinned)
P = 0P = 0.3P = 0.6P = 1.0
P = 0.3 and P = 0.6 are uncalibrated design parameters
The two tier boundaries are cut points on the priority score above, and like the weights that produce
that score they are stated values rather than fitted ones. They control how the 192 GB HBM budget is
split: the 0.6 boundary sets how much of the 10 GB pinned Tier 0 is claimed, and the 0.3 boundary sets
how much of the 37 GB evictable Tier 1 is held before an entry falls back to CXL DRAM. Raising either
boundary frees HBM sooner and admits more concurrent users at the cost of hit rate; lowering either holds
more in HBM and raises hit rate at the cost of user capacity. They cannot be tuned independently of the
0.25 / 0.55 / 0.20 weights, because they are thresholds on the score those weights define — a change to
either requires re-fitting both. Calibration is the same exercise: sweep against real attention traces at
the canonical 128 K context and pick the split that maximises hit rate within the fixed HBM budget. There is
no 97% hit-rate SLO to target — that figure is retracted, and the corrected simulation gives
8.5–91.6% depending on budget, policy and workload. See Appendix K, section K.7 — Uncalibrated
parameters.
13. Per-Head Tracking
Scores are maintained separately for each KV-head to handle head specialization.
Diagram 13.1 — Per-Head Score Matrix
Position
Head 0 (recency)
Head 1 (anchor)
Head 2 (retrieval)
Head 3-7
Aggregate
Decision
0 (system)
0.001
0.089
0.012
...
0.089
HBM
45,000
0.000
0.002
0.003
...
0.003
CXL
99,950
0.082
0.004
0.031
...
0.082
HBM
Paggregate(p) = max( Ph(p) ) for all heads h
Position stays in HBM if ANY head needs it. Evict only when NO head has recent access.
14. Prefetching Strategy
Predictive prefetch loads anticipated tokens from CXL before they're needed.
Diagram 14.1 — Prefetch Targets
Anchor (0-100)
Recent (m-200 to m)
High-EMA
1. Anchor zone [0, 100]
2. Recent [m−200, m−1]
3. High-EMA positions
Diagram 14.2 — Prefetch Timing Budget
Token Generation
50 ms
−
Compute
20 ms
=
Prefetch Window
30 ms
Prefetch capacity across the assumed 32–121 GB/s tier range:
0.96–3.63 GB ≈ 2,900–11,100 positions
30 ms × 32 GB/s = 0.96 GB and 30 ms × 121 GB/s = 3.63 GB; ÷ 320 KiB per position gives 2,929 and 11,078. Tier bandwidth is an assumption — no CXL hardware was measured, and the 256 GB/s aggregate this panel used to assume is outside the canonical range. The claim that "steady-state demand is only 11.4 GB/s, so this window is never the constraint" is retracted: it was derived from the withdrawn hot-set/sparsity conflation. Whether the window is a constraint is open, and tier-ingress bandwidth is one of the two constraints a tier creates.
15. Hit Rate Depends on Budget, Policy and Workload
There is no single hit rate. The ladder this section used to show is retracted.
Diagram 15.1 — Hit rate by policy at a 32 GiB HBM budget
EMA α = 0.15
44.18%
LRU baseline
38.34%
EMA α = 0.01
35.91%
LFU
16.09%
Margins are percentage points, never percentages. At this budget EMA α = 0.15 leads by
+5.8 pts over LRU; across the budget sweep the margin at the
specified α is +2.5 to +5.8 pts, and at a tuned
α ≈ 0.05 it is
+19.1 pts (55.96% against LRU's 36.85%). Those two figures come
from different experiments with different LRU baselines and must never be mixed. LFU collapses once decode growth is
modelled — classical LFU aging, with fresh count-1 blocks evicted in favour of stale high-count blocks.
Simulated hit rate against HBM budget for four eviction policies, Revision 2, provisional.
HBM budget
LRU
LFU
EMA α = 0.15
EMA α = 0.01
8 GiB
8.52%
8.76%
12.35%
12.12%
16 GiB
17.87%
12.70%
22.58%
18.70%
32 GiB
38.34%
16.09%
44.18%
35.91%
64 GiB
67.12%
23.00%
69.65%
66.83%
128 GiB
88.01%
32.70%
88.14%
91.59%
The full observed span is 8.5–91.6%. Workload moves it as much
as policy does: at 32 GiB the cyclic-sweep workload leaves LRU and both EMA variants at 9.83% while only LFU
survives at 22.06%, and on a one-shot scan flood EMA α = 0.01 leads at 36.26% against LRU's 31.51%.
No policy dominates across all three workloads.
The 72 → 80 → 87 → 93 → 97 ladder is retracted outright
This diagram used to show a five-rung ladder — LRU 72%, +8 pts for anchor pinning, +7 pts for EMA scoring at
α = 0.2, +6 pts for per-head tracking, +4 pts for RoPE-aware prefetch, reaching
97% and a +25-point total. No ablation was ever run. The increments were assumed
additive and independent, and the mechanisms they decompose overlap. The 97% endpoint was never measured, and
per-technique ablation remains unrun. Everything downstream of the 97% falls with it: the 16× user capacity, the
11.5× effective end-to-end latency, the 177 ns effective access latency and the 36% CapEx reduction.
Simulated (provisional): Revision 2 of kv_tiering_sim_v2.py, Llama-3 70B GQA,
16-token blocks, 200 sessions, Zipf(1.1) return frequency, 421 GiB footprint, 2–3 seeds. Provisional rather than
settled because a single data-structure defect in Revision 1 inverted four of five findings.
Diagram 15.2 — What the tier buys: avoiding regeneration
9 / 11 / 18 ms at 50% / 40% / 25% MFU an interior block costs at least this
The claim:
two to three orders of magnitude
no precise multiple is claimed
Moving a block is two to three orders of magnitude cheaper than
regenerating it — and that is the whole of the claim. The two quantities do not measure the same
operation, so the order of magnitude is claimed and never a precise multiple; the often-quoted 218× is one point in
the range (17.9 ms ÷ 82 µs) and must always be quoted with its inputs. Regenerating an arbitrary interior
block is worse still, because interior KV is not independently reproducible: hidden states depend recursively on all
preceding context.
The effective-latency panel is retracted
This diagram used to compute L_eff = h_HBM × 100 ns + h_CXL × 200 ns + h_NVMe × 25 µs at a
97 / 2.7 / 0.3 split to 177 ns, report 11.5× against a 2,035 ns baseline, and set
both beside a 65× single-access figure (13.0 µs PCIe DMA ÷ 200 ns CXL.mem). All three are
withdrawn. The 97% hit rate they rest on was never measured. No CXL hardware was measured, so the
200 ns access is demoted to an assumption inside a 32–121 GB/s range and the 65× ratio — a hypothetical load/store
path divided by a driver-mediated DMA path — is not claimed at all. The path comparison itself is kept in Chapter 4,
with both sides labelled modelled and no ratio asserted.
16. Final Results
Diagram 16.1 — System Comparison
Baseline — 3× B200 + host-DRAM offload
Memory576 GB HBM
KV capacity @ 128K (40.0 GiB each)≈ 13 contexts
CapExwithdrawn
Hardware3× B200 + 2 TB DDR5
Proposed — 1× B200 + CXL tiering
Memory1.2 TB
KV capacity @ 128K (40.0 GiB each)≈ 27 contexts
CapExwithdrawn
Hardware1× B200 + switch + 4 endpoints
1.2 TB = 192 GB HBM + 1,024 GB CXL DRAM, a 6.3× expansion
that stands on arithmetic alone. The capacity rows are KV-only capacity
arithmetic — 576 GB ÷ 43 GB ≈ 13 and 1,216 GB ÷ 43 GB ≈ 27 contexts' worth of KV at 128K — and are
not a served-user count: whether a machine can serve that many concurrent users depends on bandwidth and
scheduling, which this arithmetic says nothing about.
The cost comparison is retracted, and not replaced
This diagram used to claim both configurations serve 16 users at 128K and ≥10 tok/s, and priced
them at $160,000 against $103,000, a 36% CapEx reduction, with a 37% three-year TCO reduction
alongside. All of it is withdrawn. The pricing was built on top of a served-user count that was
itself downstream of a 97% hit rate that was never measured, so it priced a configuration that the evidence does not
justify. No replacement cost figure is offered, and none should be invented until there is a
measured basis for one.
Capacity was in any case not the binding constraint in any configuration actually measured: on the GB10 everything
fit in 128 GiB and throughput still fell from 150 tok/s at batch 16 × 4K to 46 tok/s at batch 16 × 16K,
with memory to spare and nothing evicted. A memory tier does not eliminate the KV memory wall — it changes its shape,
from a capacity wall into a data-movement wall.
Diagram 16.2 — Key Metrics
6×
Memory Expansion
320 KiB
Per token, Llama-3 70B GQA
40.0 GiB
KV at 128K (2.50 GiB at 8K)
8.5–91.6%
HBM hit rate — simulated, provisional
236.5 GB/s
Measured — 87% of the 273 GB/s spec
~3.4×
KV byte vs fixed-path byte, model-derived
≈427,000
Tokens — single-sequence crossover with weights
Slug Architecture Research — v6.0, August 2026 Evidence labels — Measured (DGX Spark GB10, 19 Aug 2026): achieved
streaming bandwidth and the two-term decode fit only.
Simulated (provisional): every hit rate and policy margin — Revision 2, 2–3 seeds, no Belady bound,
no bandwidth or queueing model, no hardware validation, provisional rather than settled because a single
data-structure defect in Revision 1 inverted four of five findings.
Analytical model: capacity sizing, tier-fetch costs and path budgets, all over stated inputs.
External literature: LRFU (Lee et al., SIGMETRICS 1999) and the cited prior art.
Illustrative: the priority weights, tier thresholds and worked examples — uncalibrated, never fitted.
No CXL hardware was measured. The 97% hit rate, the +25-point ladder, the 16× user capacity, the 65×
access latency, the 177 ns effective latency, the 11.5× end-to-end figure and the 36% CapEx reduction are all
retracted — see RETRACTIONS.