Working Memory

Working Memory, Part 7: CXL Memory Explained

How CXL memory works: the three device types, what each release from 1.0 to 4.0 added, how the OS sees it, and the modules and controllers on sale.

On this page 6 sections

A Compute Express Link (CXL) memory module is DRAM that the processor reaches through a PCIe link instead of a DIMM socket. Its reads and writes use the same load and store instructions as the processor’s own memory, and the operating system sees it as one more memory node with no processor cores of its own. This lets a server add capacity past what its DIMM slots hold, and every access to that memory takes a longer trip.

A processor linked to a CXL memory expanderA processor package on the left is joined by a two-lane link, labeled CXL.io and CXL.mem, to a memory expander on the right: a board carrying a controller chip and four memory packages. The memory sits a link away from the processor instead of in a DIMM slot beside it.GUIDE / WORKING MEMORY, PART 7DRAM one link further outPROCESSOR · LINK · EXPANDERPROCESSORCXL.ioCXL.memMEMORY EXPANDER

Part 6 of this series covered the modules that put DRAM beside the processor, and this part moves that DRAM one link further out. It answers what a spec sheet means by CXL. That comes down to the kind of device, the generation of the standard, what the processor has to support, and how much slower the memory is than a DIMM. Flash Foundations Part 1 explains why a CXL module in an SSD bay is not an SSD, and Networking for SI, Part 5 follows CXL memory onto the storage path of an SI cluster.

Three protocols, three device types

CXL builds on the physical and electrical layers of PCIe and adds its own protocols on top. According to the consortium’s CXL 3.0 white paper, three of them share one link. CXL.io is the one based on PCIe. Devices use CXL.cache to cache the host’s memory. CXL.memory, usually written CXL.mem, lets the host load and store to memory on the device. Lenovo’s CXL 2.0 primer adds that the CXL protocols switch on only when both ends of the link support CXL, and otherwise the link runs as plain PCIe.

Three protocols, three device types

A device's type is the protocols it carries beyond CXL.io

One link, three protocols; Type 3 is the memory expander this guide is about.

A strip across the top shows one link divided into three protocols: CXL.io, based on PCIe, CXL.cache for a device to cache host memory, CXL.mem for the host to load and store to device memory. Below it three equal columns. Type 1, a network interface card, carries CXL.io and CXL.cache, and the host can use none of its memory. Type 2, a GPU, ASIC or FPGA with local memory, carries all three, and the host can use its own DDR or HBM. Type 3, a memory expander, carries CXL.io and CXL.mem, and the host uses it as expansion memory. Carried protocols are filled and the others are dashed.CXL.iobased on PCIeCXL.cachedevice caches hostCXL.memhost loads, stores01 TYPE 1networkinterface cardCXL.ioCXL.cacheCXL.memHost can usenone of its memory02 TYPE 2GPU, ASIC or FPGAwith local memoryCXL.ioCXL.cacheCXL.memHost can useits own DDR or HBM03 TYPE 3memory expanderDRAM behind a portCXL.ioCXL.cacheCXL.memHost can useexpansion memorycarriednot carried
Figure 7.1 · One CXL link carries CXL.io, CXL.cache and CXL.mem, and the three device types differ in which of the last two they add to CXL.io. Source: CXL Consortium CXL 3.0 white paper; SMART Modular CXL memory module white paper; Lenovo Press LP2146.

Devices are sorted by which protocols they carry beyond CXL.io, into Type 1, Type 2 and Type 3.

Device type Protocols Memory the host can use Example
Type 1 CXL.io, CXL.cache None A network interface card
Type 2 CXL.io, CXL.cache, CXL.mem The accelerator’s own DDR or HBM A GPU, ASIC or FPGA with local memory
Type 3 CXL.io, CXL.mem Expansion memory, by load and store A memory expander

Source: SMART Modular, Introduction to CXL Memory Modules white paper, device types, and Lenovo Press LP2146, Type 1 to Type 3 devices.

SMART Modular’s white paper reasons from the protocols. A Type 1 device has no CXL.mem, so SMART infers that it holds no memory the host can use. A Type 2 device such as a GPU works in both directions, and in Lenovo’s description it can make host memory available to the accelerator and its own memory available to the host CPU. Type 3 is the kind this part is about. It carries only CXL.io and CXL.mem, and the same white paper says it targets memory capacity and bandwidth expansion.

Inside, a Type 3 device is a memory controller with a CXL port on one side and DRAM on the other. Such a controller can be built for DDR4 or DDR5, and SMART Modular’s CXA-8F2W-D4 card shows how loosely the two sides are tied. It is a CXL 2.0 Type 3 card on a PCIe Gen5 x16 link that turns CXL.mem requests into DDR4 commands, so reused DDR4 modules show up as extra host memory. The CXL Consortium’s blog says Penguin Solutions will show it at SC26 as a mechanical sample beside its target server, not as a running system.

What each generation added

CXL 1.0 came out in March 2019, and 1.1 followed that September. Both use the PCIe 5.0 physical layer at up to 32GT/s, which Lenovo’s primer puts at up to 64GB/s in each direction over a 16-lane link. A 1.0 or 1.1 memory device is one logical device that one host reaches at a time.

What each generation added

Seven releases from 2019 to 2025, the link rate doubling twice

Releases are evenly spaced, not to a time scale. Block height follows the link rate.

A horizontal timeline of seven CXL releases, evenly spaced: 1.0 March 2019, 1.1 September 2019, 2.0 November 2020, 3.0 August 2022, 3.1 November 2023, 3.2 December 2024, 4.0 November 2025. Under the line, a copper block 32GT/s spans 1.0, 1.1 and 2.0; a block twice as tall, 64GT/s, spans 3.0 and 3.1; a dashed empty outline under 3.2 shows the release states no rate; the tallest block, twice again, 128GT/s, sits under 4.0.Release and date1.0Mar 20191.1Sep 20192.0Nov 20203.0Aug 20223.1Nov 20233.2Dec 20244.0Nov 2025Link rate, GT/s, as stated by the release32GT/s64GT/s128GT/srate notstatedlink rate statedno rate stated
Figure 7.2 · The link rate stayed at 32GT/s through 2.0, doubled to 64GT/s with 3.0 and doubled again to 128GT/s with 4.0; the 3.2 release states no rate. Source: CXL Consortium releases; SNIA SDC 2023 deck; Lenovo Press LP2146.

CXL 2.0 arrived in November 2020 and added switching, so one host can fan out to several devices and a device’s memory can be pooled among hosts. In Lenovo’s primer, a 2.0 device can also be split into several logical devices, and up to 16 hosts can each reach a different part of it at once. Only a 2.0 host can use a switch, while the memory devices behind it can mix 1.0, 1.1 and 2.0 hardware.

CXL 3.0 followed in August 2022 at 64GT/s on the PCIe 6.0 physical layer, and the consortium says the faster rate adds no latency over 2.0. Data crosses the link in 256-byte flits (the fixed-size units the link moves). Fabrics came with that release as well. Rambus explains that 2.0 allowed one level of switching while 3.0 allows switches behind switches, and the consortium’s 3.0 white paper gives port based routing a reach of up to 4,096 nodes. Pooling across such a fabric differs from sharing, where several hosts reach the same memory at once, and the CXL and SDXI guide sets the two apart.

CXL 3.1 (November 2023) worked on those fabrics. It added direct peer-to-peer CXL.mem through port based routing switches, host-to-host communication through what it calls Global Integrated Memory, and the Trusted Execution Environment Security Protocol (TSP). CXL 3.2 (December 2024) turned to the memory devices themselves, with a Hot-Page Monitoring Unit (CHMU) for memory tiering, Post Package Repair enhancements and wider TSP protection. CXL 4.0 (November 18, 2025) doubled the rate again, from 64 to 128GT/s, and keeps full backward compatibility with 3.x, 2.0, 1.1 and 1.0.

Seven releases from 2019 to 2025 sit side by side in the table.

Release Date Link rate What it added
1.0 and 1.1 March and September 2019 32GT/s The three protocols, one host per memory device
2.0 November 2020 32GT/s Switching, pooling, up to 16 hosts per device
3.0 August 2022 64GT/s Multi-level switch fabrics, up to 4,096 nodes
3.1 November 2023 64GT/s Direct peer-to-peer CXL.mem, Global Integrated Memory, TSP
3.2 December 2024 Hot-page monitoring for tiering, repair, wider TSP
4.0 November 2025 128GT/s Twice the rate, backward compatible

Source: CXL Consortium releases for 2.0, 3.0, 3.1, 3.2 and 4.0, the consortium’s SNIA SDC 2023 deck for 1.0 and 1.1, and Lenovo Press LP2146 for the 1.x, 2.0 and 3.1 rates. The 3.2 release states no link rate, so that cell is blank.

A memory node with no cores

The processor reaches CXL memory through its home agent. That part of the CPU handles CXL.mem, and Sun and colleagues describe how it exposes the device’s memory as memory in a remote non-uniform memory access (NUMA) node. Software reaches it with ordinary loads and stores, the way it reaches memory on the other socket of a two-socket server.

A memory node with no cores

CXL memory shows up as a NUMA node that has memory and no cores

The home agent exposes the device's memory as a remote node; the operating system tiers pages across nodes.

Three equal panels. This socket: eight cores, a home agent and local DRAM full of busy pages. CXL node: a dashed empty area where cores would be labeled no cores, a CXL port and memory holding colder pages. Other socket: eight cores and its own local DRAM. A copper link joins this socket's home agent to the CXL port. A banner says the operating system keeps busy pages in local DRAM and leaves colder pages on the CXL node.01 THIS SOCKETcores + local DRAMhome agentlocal DRAM02 CXL NODEmemory, no coresno coresCXL portCXL memory03 OTHER SOCKETcores + local DRAMlocal DRAMThe operating system keeps busy pages in local DRAMand leaves colder pages on the CXL nodebusy pagecolder pagecoreCXL link
Figure 7.3 · The processor reaches CXL memory through its home agent as a remote NUMA node with no cores, and the operating system keeps busy pages in local DRAM. Source: Sun and colleagues; Pond.

Microsoft’s Pond pooling design gives that node memory and no cores. It hands each virtual machine its share of pooled CXL memory as a zero-core virtual NUMA node. Linux already supports CPU-less NUMA nodes of the same shape, and Pond’s authors found that the guest OS steers its allocations away from such a node. Deciding which pages belong on the slower node is memory tiering, and CXL 3.2 added the Hot-Page Monitoring Unit for it.

Software reaches CXL memory with loads and stores rather than block commands. Flash Foundations Part 1 covers what that means in an E3.S bay, where a CXL module and an NVMe SSD can share the same slot.

Bandwidth, latency and energy

A CXL link is a PCIe link, so its bandwidth follows the lane count and the PCIe generation. On PCIe 5.0, an x16 link carries up to 64GB/s each way. On PCIe 6.0, the lane rate doubles to 64GT/s and an x16 link carries about 128GB/s each way. The International Roadmap for Devices and Systems gives up to 256GB/s for CXL 3.0 on x16, which equals both directions added together.

Bandwidth, latency and energy

The link keeps up on bandwidth and pays for it in latency

Bars: x16 link bandwidth in each direction. Cards: latency and energy per bit.

A bar chart of x16 link bandwidth per direction in gigabytes per second: up to 64 on PCIe 5.0 and about 128 on PCIe 6.0. Under it three cards. Latency added: 70 to 90ns over same-node DRAM, a Pond estimate. Latency measured: 35% to 3x longer load latency than DDR5 in a remote NUMA node, from Sun and colleagues. Energy per bit: 6pJ over a PCIe 4.0 link and 22pJ over a DDR4 bus.Bandwidth per direction, GB/s04080120160up to 64PCIe 5.0x16 linkabout 128PCIe 6.0x16 linkPCIe generation, x16 linkLATENCY ADDED70 to 90nsover same-node DRAM,Pond estimateLATENCY MEASURED35% to 3x longerload latency than DDR5in a remote NUMA nodeENERGY PER BIT6pJ and 22pJPCIe 4.0 link andDDR4 busPCIe 5.0PCIe 6.0
Figure 7.4 · An x16 link carries up to 64GB/s each way on PCIe 5.0 and about 128GB/s on PCIe 6.0, while the latency and energy figures come from Pond and from Sun and colleagues. Source: Lenovo Press LP2146; CXL Consortium CXL 3.0 white paper; Pond; Sun and colleagues.

Latency is the larger cost. For CXL.cache and CXL.mem, the consortium’s SNIA deck sets a target of under 200ns load to use. Pond’s authors estimate that CXL adds 70 to 90ns over same-node DRAM for pools of 8 to 16 sockets, and Sun and colleagues measured three real devices with load latency from 35% longer to 3x longer than DDR5 in a remote NUMA node. Those figures sit on the latency chart in the memory and storage hierarchy guide, and Networking for SI, Part 5 sets them against an SSD read.

Energy per bit is a separate comparison. As an example, Sun and colleagues cite about 6pJ to move a bit over PCIe 4.0 against 22pJ for DDR4.

As this guide reads it, the trade is capacity and bandwidth for latency. A workload whose busy data fits in local DRAM gains room from CXL at little cost, while one that reads at random across all of its memory pays the extra latency on most accesses.

What is on sale, as of November 2026

As of November 2026, Type 3 memory expansion is the part of CXL with products behind it. Samsung announced what it called the industry’s first CXL memory module on May 11, 2021, and that DDR5 module was validated on Intel server platforms. Modules, controllers and switches from the sources here are listed below, each with the status its maker or a report gives.

Product Kind CXL Stated status
Samsung CMM-D E3.S 2T module, DDR5, PCIe 5.0 x8 2.0
Micron CZ120 E3.S 2T module, 128GB or 256GB, PCIe Gen5 x8 2.0 Sampling, August 2023
SK hynix CMM-DDR5, second generation 256GB module 3.2 Shown at OCP Global Summit 2026
Astera Labs Leo Memory controller, up to 2TB 2.0 In the Azure M-series preview, November 2025
Marvell Structera X 3406 and 3506 Expander, six DDR4 or DDR5 channels, PCIe Gen 6 3.2 Sampling expected Q1 2027
Astera Labs Leo 2 P-Series Controller for pooling and sharing Sampling with hyperscalers, September 2026
XConn Apollo Switch, 256 lanes 2.0 Early production samples, March 2024

Source: Samsung CMM-D white paper, StorageReview’s report of Micron’s release, the SK hynix newsroom, Astera Labs releases of November 18, 2025 and September 15, 2026, Marvell’s release of October 12, 2026, and XConn’s release of March 26, 2024. A blank cell is not published in the source.

What is on sale, as of November 2026

Seven products: modules and controllers on 2.0 and 3.2, one 2.0 switch

Rows are the CXL version each maker or report states; the Leo 2 P-Series states none.

A grid with three columns, module, controller or expander, and switch, and three rows, CXL 2.0, CXL 3.2 and version not stated. CXL 2.0: modules Samsung CMM-D and Micron CZ120, controller Astera Labs Leo, switch XConn Apollo. CXL 3.2: module SK hynix CMM-DDR5 second generation, expander Marvell Structera X 3406 and 3506. Version not stated: controller Astera Labs Leo 2 P-Series. Memory products are copper and the switch is neutral.MODULECONTROLLERSWITCHCXL 2.0CXL 3.2not statedSamsungCMM-DMicronCZ120Astera LabsLeoXConnApolloSK hynixCMM-DDR5second generationMarvellStructera X3406 and 3506Astera LabsLeo 2 P-Seriesmemory module or controllerswitch
Figure 7.5 · Samsung, Micron and Astera Labs products are on CXL 2.0, SK hynix and Marvell are on 3.2, and the only switch listed is XConn's 2.0 Apollo. Source: Samsung CMM-D white paper; StorageReview; SK hynix newsroom; Astera Labs, Marvell and XConn releases.

The Samsung and Micron modules use E3.S. Data center SSDs use that form factor too, and Flash Foundations Part 1 covers it. Controllers let server and card makers build their own expanders, and Structera X takes up to 9TB of DDR4 or 6TB of DDR5 per controller. Pooling needs a switch or a pooling controller, and in this list that means XConn’s Apollo and the Leo 2 P-Series. Which processors support which version is a separate question, and Flash Foundations Part 10 keeps that table.

What to watch

AMD’s 6th Gen EPYC (Venice) is the next processor to watch. StorageReview reports that it carries CXL 3.1 on its PCIe 6.0 lanes for memory expansion, and that its SP7 platforms arrive in Q4 2026. CXL 3.2 expanders come after it, with Marvell expecting Structera X samples in Q1 2027 and SK hynix already showing its 3.2 module. Until those reach servers, a CXL 3.x feature on a module data sheet describes what the module can do with a host that supports 3.x.

What to watch

The processor sets the CXL version a buyer gets

Two dated markers, then the backward-compatibility cap. Bar lengths show only which version is higher.

Top: a dated line with two markers. Q4 2026, AMD Venice and its SP7 platforms with CXL 3.1. Q1 2027, Marvell Structera X samples with CXL 3.2. Bottom: three horizontal bars. The module bar, CXL 3.2, is the longest, and its end past the processor's level is dashed. The processor bar, CXL 3.1, is shorter. The link bar is the same length as the processor bar, labeled the processor's level, because the processor caps what the module can run at.Next markers, as reportedQ4 2026AMD Venice, SP7 platformsCXL 3.1 hostQ1 2027Marvell Structera X samplesCXL 3.2 expanderCXL version of each part, higher is longerA 3.2 MODULE IN A 3.1 SERVERModuleMarvell, SK hynixCXL 3.2ProcessorAMD VeniceCXL 3.1Link runs atthe processor's levelCXL 3.1moduleprocessorlinkunused
Figure 7.6 · Venice with CXL 3.1 is due in Q4 2026 and Structera X samples in Q1 2027, and a 3.2 module in a 3.1 server should run at the server's level. Source: StorageReview on AMD Venice; Marvell release; SK hynix newsroom; CXL Consortium 3.2 and 4.0 releases.

Both the 3.2 and 4.0 releases state full backward compatibility with earlier versions, so a newer module in an older server should still work, limited to the older version’s features.

That ends this series. Part 1 starts again with the processor’s SRAM, which is the fastest memory.

Sources

Primary is the original paper, standard or datasheet. Secondary is a review, a vendor summary or a news report. Measured is my own test data.

Show all 23 sources, 16 primary