De Compute Express Link, CXL in de volksmond, kan de manier waarop servers en datacenters worden samengesteld voorgoed veranderen. De nieuwste processors van AMD en Intel ondersteunen de splinternieuwe standaard al. Wat maakt CXL precies mogelijk?
De nieuwste Epyc-datacenterprocessors van AMD ondersteunen CXL 1.1, net als de Xeon Sapphire Rapids-chips van Intel wanneer de fabrikant die eindelijk uit de stal gestampt krijgt. Tijdens de lancering van de Epyc Genoa kreeg CXL de nodige aandacht. Zowat alle grote spelers hebben hun gewicht achter de splinternieuwe standaard geschaard. CXL, kort voor Compute Express Link, heeft het potentieel om de standaard voor hyperconverged infrastructuur te worden en zo de samenstelling van moderne datacenters voorgoed te veranderen.
Veel enthousiasme voor CXL
CXL is eerst en vooral een open standaard. De technologie werd aanvankelijk vooral door Intel naar voren geschoven maar de standaard wordt sinds 2019 beheerd door het CXL Consortium. Daarin zetelt zowat iedereen die iets met microchips te maken heeft. Denk aan chipdesigners zoals AMD, Ampere, Intel en Arm, geheugenspecialisten zoals Samsung en Micron, serverbouwers waaronder Dell en HPE en cloudreuzen Microsoft, Google en Alibaba. Andere kleppers zoals IBM, Supermicro en Cisco verdienen eveneens vermelding. CXL wordt met andere woorden door de brede industrie gedragen.
lees ook
AMD lanceert vierde generatie van datacenterchips: Epyc 9004 Genoa
De standaard staat niet helemaal op zichzelf maar is gekoppeld aan PCI Express. CXL Specificatie 1.0 zag in 2019 het levenslicht en is gekoppeld aan PCIe 5.0. CXL 3.0 werd deze zomer onthuld en is vergroeid met PCIe 6.0. Die associatie met PCIe suggereert het doel van de standaard al: CXL moet interconnectiviteit tussen hardwarecomponenten faciliteren op een ongezien verregaande manier.
Gedeeld geheugen
De eerste iteraties van het CXL-protocol richten zich op geheugen. De standaard geeft CPU’s toegang tot gedeeld geheugen, dat bijvoorbeeld ook toegankelijk is voor accelerators. De CXL-standaard garandeert coherentie in het cachegeheugen, zodat er geen problemen ontstaan met instructies in niet gedeeld L1-cache-geheugen.
CXL 1.1, dat vandaag al door Intel en binnenkort door AMD wordt ondersteund, maakt het zo mogelijk om extra geheugen aan een systeem toe te voegen via een PCIe-uitbreidingskaart. Dat PCIe-geheugen moet op het vlak van prestaties en latency natuurlijk een beetje onderdoen aan echt DDR5-geheugen, maar daar tegenover staat dat je servers plots van aanzienlijk meer geheugen kan voorzien op een veel meer flexibele manier.
Flinke besparing
CXL 2.0 biedt nog wat meer mogelijkheden. Die versie van de standaard maakt het mogelijk om een component aan een poule van CPU’s toe te voegen. Geheugen kan zo gedeeld worden door meerdere CPU’s in meerdere systemen. Onderzoek uitgevoerd door Amerikaanse universiteiten en Microsoft suggereert dat ongeveer de helft van alle geprovisioneerde virtuele machines geen gebruik maakt van de helft van het geheugen dat ze toegewezen kregen. Dat geheugen zit nu vast, toegewezen aan een VM die er geen interesse in heeft.
De helft van alle VM’s gebruikt maar de helft van het toegewezen geheugen.
Met CXL is het mogelijk om geheugen in een poule te stoppen en het dynamisch toe te wijzen. Zo komt ongebruikt geheugen vrij voor andere toepassingen. Het onderzoek wijst verder uit dat een poule van geheugen de hoeveelheid benodigd geheugen met tien procent naar omlaag kan halen. Als je dan weet dat DRAM verantwoordelijk is voor tot wel de helft van de totale kostprijs van een server, begint het nut van CXL plots duidelijk te worden.
HCI 2.0
Pas echt interessant wordt het wanneer we naar CXL 3.0 kijken. Op de implementatie van die standaard is het nog enkele jaren wachten, maar de verder doorgedreven specificatie laat de standaard evolueren van een handigheid voor meer geheugenefficiëntie naar de toekomstige norm voor HCI.
De Compute Express Link moet immers evolueren tot een totaalstandaard die CPU’s, geheugen en accelerators zoals GPU’s en FPGA’s met elkaar verbindt in een server of zelfs in een rack. Zo zouden GPU’s met elkaar kunnen praten zonder dat de CPU (of een DPU) daar voor iets tussen zit. Het idee is identiek aan HCI: op rackniveau moet het CXL-protocol bovenop PCIe 6.0 ervoor zorgen dat alle belangrijke componenten van een server binnen een poule beschikbaar zijn en op een snelle en coherente manier met elkaar kunnen praten.
Dat gebeurt op het niveau van het systeem zelf. Om optimaal te profiteren van CXL, is er software nodig. In principe is hier een rol weggelegd voor de hypervisor. Die kan dankzij de CXL-standaard de nodige resources voor een virtuele machine samenstellen uit de beschikbare componenten binnen een rack. Zo wordt al het geheugen optimaal gebruikt door één of meerdere CPU’s, gecombineerd met precies de hoeveelheid accelerators nodig voor de gedraaide workload.
Geduld
Daar zijn we nog niet. Voorlopig is CXL 1.1 de norm. Die standaard zal nog niet voor een aardverschuiving zorgen, maar laat fabrikanten, softwareboeren en cloudproviders al wel toe om de tenen nat te maken. Met CXL 2.0 volgen dan geavanceerdere geheugencentrische applicaties terwijl CXL 3.0 de deur echt wagenwijd opengooit.
De kern van de standaard blijft het gedeelde geheugen. Door dat via een open standaard gedeeld toegankelijk te maken voor CPU’s en accelerators, kunnen componenten samen werken. Dat staat in contrast met de architectuur van vandaag, waarbij CPU’s, GPU’s en FPGA’s typisch beroep doen op hun eigen geheugen en de verwerking van workloads via de CPU wordt aangestuurd.
Types en protocollen
Voor wie wat dieper wil graven, merken we nog op dat de CXL-standaard uit verschillende sub-protocollen, gericht op verschillende zogenaamde types van componenten.
- Type 1-toestellen: dat zijn accelerators en Smart NIC’s die doorgaans geen lokaal geheugen ter beschikking hebben, en via CXL plots wel met het DDR-geheugen van de CPU kunnen praten.
- Type 2-toestellen: dat zijn GPU’s, FPGA’s en ASIC’s met wel eigen DDR- of HBM-geheugen. Hier helpt CXL opnieuw om het CPU-geheugen lokaal toegankelijk te maken voor de accelerators. Andersom kan de CPU ook aan de slag met het geheugen van de componenten. CXL voorziet cache-coherentie.
- Type 3-toestellen: Dit zijn geheugentoestellen die extra capaciteit voorzien los van het geheugen van CPU of accelerators. Denk hierbij aan het eerder vermelde uitbreidbaar geheugen via PCIe, dat de DDR-RAM-poule complementeert.
Compute Express Link zelf ondersteunt de combinatie van de verschillende types van toestellen via drie belangrijke protocollen.
- CXL.io is het CXL-equivalent van de PCIe-standaard waarop CXL is gebouwd. CXL.io is de fundering van CXL.
- CXL.cache is een gerichte toepassing die accelerators toegang geeft tot het geheugen van de host (CPU), inclusief cache en bijhorende cache coherency.
- CXL.memory laat hosts toe om met extra geheugen van type 3-toestellen te praten.
CXL bouwt bovenop PCIe omdat die standaard een goede fundering biedt met een bestaand ecosysteem. PCIe 5 laat toe om alternatieve protocollen op de PCIe-laag te draaien, een beetje naar analogie met hoe de fysieke USB-C-interface ook Thunderbolt of DisplayPort ondersteunt.
CXL is zoals gezegd volop in ontwikkeling. De betrokken partijen hebben er belang bij de standaard tot een succes te laten uitgroeien. Dan kijken we zeker naar hyperscalers, waar besparingen in de grootteorde van tientallen procenten een enorme impact hebben op de efficiëntie van datacenters. Eer CXL doorsijpelt naar de bredere markt, is er software nodig, maar ook die zal ongetwijfeld organisch beschikbaar komen.