Fiber Memory Explorer
HotNets '26 · Atmer, Yao, Voigt, Kaxiras · Uppsala University

Fiber Memory Explorer

An interactive version of the analytical model in Who Needs DRAM? We Have Fiber. Set the model size M and the slack s; the ring length, loop time, pipeline timing, optical budget and power are recomputed against an HBM3e cluster with the same accelerators. The defaults reproduce the Llama-3-70B case study.

1 · Topology

From the weights server to the systolic array

The weights server writes the model once through the 3R regenerator. The bundle of MCF cables circulates as a ring of spools joined by MC-PDFAs; pods tap it with 96:4 splitters, boost it, and pass it down a passive bus to the chassis.

Ring

8 × 16-core MCF bundle MC-PDFA, one per cable at each joint Pod taps on that segment 3R regenerator

Pod

Chassis

2 · Data layout

What travels on each cable

Each cable is a core group that feeds one accelerator position in every chassis. Cable k carries only the layers of pipeline stage k. All groups are offset by whole loops, so they circulate in phase.

Bundle cross-section

One loop of a cable

Wq, Wk, WvAttention slack Wo + FFNInter-layer slack

Streamed weight packet

PreamblePulse pattern for clock and data recovery lock.
Frame headerLayer ID, scaling factors, recovery info. Strong Reed-Solomon FEC.
PayloadUnrolled weight matrix Wi in systolic-array order. Fed directly to array registers.
CRCFrame validation and lock check.

The weights server unrolls each matrix into the array's consumption order before injection, so the accelerator needs no address translation or layout change.

Lanes of one cable

3 · Timing

Loop time sets everything

The ring must hold C = M / (1 − s) at the bundle rate B, so the loop time is τ = C / B and the ring length is τ·v. Each pipeline stage takes one full loop.

Timing parameters

Pipeline occupancy

One sequence's token, T0Other micro-batches in flight

4 · Optical budget

How many pods and chassis fit

Each 20 dB amplifier first pays for its spool. What is left funds the 0.18 dB through-loss of each pod tap. On the pod bus, the 4 % branch must stay above receiver sensitivity at the last chassis.

Ring segment

Pod bus, received power per λ

5 · Power & memory

Against an HBM3e cluster of the same size

Weight-delivery power

Energy per token

Memory provisioned

Savings as slack grows

Power savingEnergy-per-token savingCurrent setting

6 · Using the model elsewhere

The same model, as code

Every number on this page comes from one pure function, compute(params). It ships as fiber_memory_model.js (browser and Node, with a CLI) and fiber_memory_model.py, which return identical results.

Current settings


        
// Node
const FM = require('./fiber_memory_model.js');
const r = FM.compute({ preset: 'llama3-405b', slackPct: 30 });
console.log(r.ring.tau_ms, r.ring.length_km, r.power.savingPct);

# Python
from fiber_memory_model import compute, sweep
r = compute(paramsB=405, slackPct=30)
curve = sweep({}, "slackPct", range(0, 81, 5), lambda r: r["power"]["energySavingPct"])

# Command line
node fiber_memory_model.js preset=llama3-405b slackPct=30
python fiber_memory_model.py accelerators=20000 json=true

Results are grouped as model, optics, ring, taps, cluster, pipeline, memory, power and warnings. KV-cache sizing, energy per token, HBM stack counts and attention-slack context coverage extend the paper's model; their assumptions are listed in the source header.