HomeCXL CourseDay 8
DAY 8 · PHASE 2 — SPEC EVOLUTION

CXL 3.0
The Fabric, Multi-Level Switching & Sharing

By EcrioniX · Updated July 2026

CXL 2.0 could pool memory — but each region still had one owner at a time. CXL 3.0 crosses the line that everything before it was building toward: true coherent sharing, where multiple hosts touch the same memory simultaneously. Combined with multi-level switching and a memory type that lives in the fabric itself, this is the version where CXL stops being an interconnect and becomes a genuine memory fabric.

The Headline: Sharing, Not Just Pooling

This is the distinction the whole course has been pointing at. Recall from Day 7 that CXL 2.0 pooling assigns each memory segment to one host at a time — hosts take turns owning regions. CXL 3.0 adds memory sharing: multiple hosts coherently accessing the same memory segment at the same time, with hardware keeping every host's view consistent.

CXL 2.0 POOLING Host 1 Host 2 Region → ONE owner Hosts take turns owning regions CXL 3.0 SHARING Host 1 Host 2 SAME region, BOTH Simultaneous, hardware-coherent

How Sharing Stays Coherent: Back-Invalidate Snoop

Sharing one region across multiple hosts sounds simple until you ask: when Host 1 modifies a cache line, how does Host 2 avoid reading a stale copy? The answer is the mechanism introduced on Day 5 — HDM-DB (Host-managed Device Memory with Back-invalidate) and its Back-Invalidate Snoop (BISnp).

This is exactly the hard case BISnp was built for: a memory device whose contents are cached by multiple agents, where any of them might write first. With BISnp, the memory device itself proactively manages cache states across all connected hosts — when a line changes, the device sends back-invalidates to wherever stale copies live, in any host. Without the device being able to snoop upstream like this, coherent multi-host sharing simply couldn't work; the old host-only snoop model of CXL 1.1 had no way to coordinate across independent hosts. BISnp is the enabling primitive under CXL 3.0's headline feature.

Multi-Level Switching & Non-Tree Fabrics

CXL 2.0's switching was capped at a single level and a directed tree topology (Day 7). CXL 3.0 breaks both limits with multi-level switching, enabling genuinely fabric-like structures:

🕹
Non-Tree TopologiesMesh, ring, and spline/leaf fabrics — not just a single directed tree
🔗
Multiple Devices per Root PortMultiple Type 1 and Type 2 devices can share a single CXL root port
🔄
Any-to-Any ReachRicher topologies let far more hosts and devices interconnect than a tree ever could

The word "fabric" is now literal: CXL 3.0 systems can be wired into the same kinds of mesh and leaf-spine structures that data-center networks use, rather than the rigid single-switch tree of 2.0.

Global Fabric Attached Memory (GFAM) — Memory That Lives in the Fabric

The most forward-looking addition is Global Fabric Attached Memory (GFAM). A Type 3 device in GFAM mode connects to a switch node without requiring a direct host connection — the memory lives in the fabric itself, reachable by any host through the switch, rather than hanging off one host's root port. Such a device is called a GFAM Device (GFD), and the scaling numbers are dramatic:

Device ModelNodes Supported
Multi-Logical Device (MLD)Up to 32 nodes
GFAM Device (GFD)Up to 4096 nodes

Scaling figures per CXL 3.0 specification materials.

A single GFD can serve up to 4096 independent nodes simultaneously, for either pooled or shared memory — a 128× jump over the MLD's 32. This is the architectural foundation for rack-scale (and beyond) disaggregated memory: a pool of memory sitting in the fabric, addressable by thousands of nodes, decoupled entirely from any single host.

Peer-to-Peer — Devices Talking Directly

CXL 3.0's Back-Invalidate flow also unlocks direct peer-to-peer communication. A CXL or PCIe device can access another device's HDM-DB memory through CXL.io UIO (Unordered I/O) — without routing everything through the host. This is a big deal for accelerator-heavy systems: a GPU can reach another GPU's memory, or a shared memory pool, directly across the fabric, rather than bouncing every transfer off the CPU. It's the data path that makes accelerator-to-accelerator and accelerator-to-memory topologies efficient.

The Physical Layer Finally Moves

Unlike the 1.1→2.0 jump (which kept the same PHY), CXL 3.0 does advance the physical layer: it moves to the PCIe 6.0 PHY at 64 GT/s, doubling per-lane signaling. That jump also brings the larger 256-byte flit (up from the 68-byte flit of Days 2), which — as previewed — makes room for the forward error correction PCIe 6.0's PAM4 signaling requires. Day 10 covers that flit-format change in detail.

Why CXL 3.0 is the pivotal version: pooling (2.0) solved the allocation problem — no more stranded memory. Sharing (3.0) solves the collaboration problem — multiple hosts working on the same data in place, no copying. Together with multi-level fabrics and GFAM's 4096-node scaling, this is the version where "CXL memory fabric" stops being a marketing phrase and becomes an architecture you can actually build a disaggregated data center around.

🎯 Day 8 Key Takeaways

Frequently Asked Questions

What is the difference between CXL memory pooling and memory sharing?
Pooling (CXL 2.0) assigns each memory segment to one host at a time — hosts take turns owning regions. Sharing (CXL 3.0) lets multiple hosts coherently access the SAME memory segment simultaneously, with hardware maintaining coherence across all of them via Back-Invalidation. Sharing is what turns CXL from a memory-allocation feature into a true coherent memory fabric.
How does CXL 3.0 keep shared memory coherent across hosts?
CXL 3.0 uses HDM-DB (Host-managed Device Memory with Back-invalidate) and the Back-Invalidate Snoop (BISnp) mechanism. This lets a memory device proactively manage cache states across all connected hosts — invalidating stale copies wherever they are held — which is what makes hardware-coherent sharing of one region across multiple hosts possible.
What is Global Fabric Attached Memory (GFAM)?
GFAM (Global Fabric Attached Memory) lets a Type 3 memory device connect to a switch node without requiring a direct host connection — it lives in the fabric itself. A GFAM Device (GFD) can scale to support up to 4096 independent nodes simultaneously, versus 32 for a traditional Multi-Logical Device, for either pooled or shared memory.
What topologies does CXL 3.0 support?
CXL 3.0 adds multi-level switching, which allows device fabrics with non-tree topologies such as mesh, ring, and spline/leaf — a major step beyond CXL 2.0's single-level directed tree. It also allows multiple Type 1 and Type 2 devices per CXL root port, enabling much richer, larger fabrics.
Does CXL 3.0 support peer-to-peer between devices?
Yes. CXL 3.0's Back-Invalidate flow enables direct peer-to-peer communication, including a CXL or PCIe device accessing another device's HDM-DB memory through CXL.io UIO — without routing everything through the host. This peer-to-peer capability is a key enabler of accelerator-to-accelerator and accelerator-to-memory data paths in a CXL fabric.