Wat is CXL?

Afkorting van Compute Express Link. Standaard die op de fysieke laag van PCI Express gebaseerd is en tussen CPU en accelerators of geheugenapparaten gedeeld geheugen met behoud van cachecoherentie mogelijk maakt.

Japanse benaming: CXL

“CXL” komt voor in 4 oefenvragen uit 2 onderwerpen, bijv. Interfaces en busstandaarden, Opkomende geheugentechnologieën.

Vakgebied: Interfaces en busstandaarden

Waarom CXL is ontwikkeld

PCI Express (PCIe) verplaatst data efficiënt, maar houdt het geheugen van apparaten niet coherent met de CPU-caches, dus software moet buffers kopiëren en caches flushen of invalideren om data met een accelerator te delen. Compute Express Link (CXL) hergebruikt de fysieke laag, connectoren en elektrische signalering van PCIe en voegt protocollen toe die caches coherent houden en de CPU met gewone loads en stores toegang geven tot het geheugen van een apparaat. CXL 1.x en 2.0 draaien op de PCIe 5.0-snelheid van 32 GT/s per lane, en CXL 3.x gaat naar de PCIe 6.0-snelheid van 64 GT/s.

De drie CXL-protocollen

CXL.io is in wezen PCIe en verzorgt apparaatdetectie, configuratie, interrupts en DMA. Met CXL.cache kan een apparaat CPU-geheugen in zijn eigen cache bewaren, terwijl de hardware het coherent houdt. Met CXL.mem kan de CPU geheugen dat aan het apparaat hangt lezen en schrijven alsof het deel is van het systeemgeheugen. Apparaten worden gewoonlijk in drie typen ingedeeld: Type 1-apparaten zoals smart-netwerkkaarten gebruiken CXL.io en CXL.cache; Type 2-accelerators met eigen geheugen gebruiken alle drie; Type 3-geheugenuitbreidingen gebruiken CXL.io en CXL.mem.

Geheugenuitbreiding en pooling

Hoeveel DRAM een CPU rechtstreeks kan aansluiten, wordt beperkt door het aantal geheugenkanalen en DIMM-slots. Een CXL-geheugenuitbreiding voegt capaciteit, en bandbreedte, toe via links in PCIe-stijl, en met CXL-switches kan een pool geheugen door meerdere servers worden gedeeld en worden toegewezen waar het nodig is. De toegangslatentie is hoger dan bij rechtstreeks aangesloten DRAM, vaak vergeleken met geheugen op een andere CPU-socket, dus besturingssystemen presenteren CXL-geheugen meestal als afzonderlijke NUMA-node en gebruiken het als aparte laag (tier), waarbij vaak benaderde data in lokaal DRAM blijft.

CXL in de geheugenhiërarchie

DRAM en NAND-flash verschillen ongeveer een factor 1000 in toegangstijd, tientallen nanoseconden tegenover tientallen microseconden, en storage-class memory werd voorgesteld om dat gat te vullen. Nadat Intel in 2022 aankondigde te stoppen met zijn op phase-change gebaseerde Optane-producten, is een groot deel van die ruimte ingenomen door SLC-NAND met lage latentie aan de opslagkant en via CXL aangesloten DRAM aan de geheugenkant. CXL maakt het ook mogelijk dat geheugencontrollers op het apparaat andere geheugentypen gebruiken dan de CPU native ondersteunt.

Nu oefenen: vragen over CXL

Welke omschrijving van CXL (Compute Express Link) is juist?

  1. AEen standaard om chiplets binnen een package te verbinden
  2. BEen standaard die de fysieke laag van PCI Express gebruikt en geheugendeling met behoud van cachecoherentie mogelijk maakt tussen CPU en accelerators of geheugenapparaten
  3. CEen nieuwe standaard voor draadloos LAN
Antwoord en toelichting tonen

Antwoord: B. Een standaard die de fysieke laag van PCI Express gebruikt en geheugendeling met behoud van cachecoherentie mogelijk maakt tussen CPU en accelerators of geheugenapparaten

Bij PCI Express wordt de coherentie tussen het geheugen van een apparaat en de cache van de CPU niet door hardware gewaarborgd en moest software daarvoor zorgen. CXL is een standaard die op dezelfde fysieke laag als PCI Express communicatie voor het behoud van cachecoherentie toevoegt, en communicatie waarmee de CPU het geheugen van een apparaat leest en schrijft als gewoon geheugen. Het wordt gebruikt voor datadeling met accelerators en geheugenuitbreiding.

Welk voordeel van geheugenuitbreiding met CXL (CXL-geheugen) is juist?

  1. ADe vertraging is altijd kleiner dan die van DRAM dat direct aan de CPU is gekoppeld
  2. BData gaan ook bij uitschakeling van de stroom nooit verloren
  3. CDe capaciteit kan worden vergroot zonder gebonden te zijn aan het aantal geheugenkanalen van de CPU, en meerdere servers kunnen geheugen delen
Antwoord en toelichting tonen

Antwoord: C. De capaciteit kan worden vergroot zonder gebonden te zijn aan het aantal geheugenkanalen van de CPU, en meerdere servers kunnen geheugen delen

De hoeveelheid geheugen die rechtstreeks aan de CPU kan worden gekoppeld, wordt begrensd door het aantal geheugenkanalen en sleuven. Bij CXL-geheugen kan geheugen worden uitgebreid door geheugenapparaten aan bijvoorbeeld PCI Express-sleuven te koppelen, en met switches kan een gedeelde capaciteit tussen meerdere servers worden verdeeld. De vertraging is echter groter dan die van direct gekoppeld DRAM, dus wordt het als hiërarchie gebruikt, bijvoorbeeld door vaak gebruikte data in het direct gekoppelde geheugen te plaatsen.

Veelgestelde vragen

Waar staat CXL voor?

CXL staat voor Compute Express Link, een open interconnectstandaard gebouwd op de fysieke laag van PCI Express die cachecoherente geheugentoegang toevoegt tussen CPU's, accelerators en geheugenapparaten.

Wat is het verschil tussen CXL en PCIe?

Ze delen dezelfde fysieke laag en slots, maar gewone PCIe-transfers zijn niet cachecoherent. CXL voegt de protocollen CXL.cache en CXL.mem toe, zodat apparaten en CPU's geheugen coherent kunnen delen met load/store-semantiek.

Wat is een CXL Type 3-apparaat?

Een Type 3-apparaat is een geheugenuitbreiding die CXL.io en CXL.mem gebruikt om de host extra geheugencapaciteit te geven, zonder zelf hostgeheugen te cachen.

“CXL” in de toelichting

Vragen met “CXL” (4)

  1. Welke omschrijving van CXL (Compute Express Link) is juist?
  2. Welk voordeel van geheugenuitbreiding met CXL (CXL-geheugen) is juist?
  3. Welke combinatie van de drie protocollen waaruit CXL bestaat, is juist?
  4. Welke uitspraak over de positie van 'storage class memory' is juist?

Verwante termen

PCI Express Cachecoherentie Storage class memory Niet-vluchtig geheugen SLC (single-level cell) Via 128b/130b-codering 8b/10b-codering AXI Bitfoutenpercentage (BER)

Naar de woordenlijst