Ti è mai capitato di sentirti frustrato perché la memoria del computer si esauriva, ma non riuscivi ad aggiungerne altra con la stessa facilità con cui si collega una chiavetta USB? La tecnologia CXL è stata ideata proprio per risolvere questo problema. Funziona come un “sistema di espansione esterno” per la memoria, consentendo a server o workstation di aggiungere in modo flessibile grandi quantità di memoria esterna tramite cavi dedicati e schede di espansione, e permettendo persino a più macchine di condividere un pool di memoria comune. Grazie alla tecnologia CXL, 1 TB di memoria di sistema – un tempo raggiungibile solo su costosi mainframe – sta diventando sempre più comune nel calcolo ad alte prestazioni e nell'intelligenza artificiale.
Perché è nata CXL?
Possiamo immaginare la memoria tradizionale di un server come un grande condominio dotato di armadietti individuali: ogni stanza (ogni server) dispone di un proprio spazio di archiviazione, ma le dimensioni di tale spazio sono fisse al momento del trasloco e, anche se l’armadietto del vicino è vuoto, non è possibile prenderlo in prestito. Con la crescita dell'intelligenza artificiale, del cloud computing e dei big data, questo modello ha iniziato a mostrare tre gravi problemi.
Quando gli slot fisici sono esauriti, non è possibile aggiungere altra memoria. Il numero di slot di memoria su ogni scheda madre di un server è limitato, in genere a otto, dodici o sedici. Anche se si riempiono tutti gli slot con i moduli di memoria di maggiore capacità disponibili sul mercato, la capacità totale raggiunge comunque un limite massimo. Quando la vostra applicazione richiede più memoria di quella disponibile, l'unica soluzione è acquistare un server più costoso e di fascia più alta, piuttosto che limitarsi ad aggiungere memoria alla macchina esistente.
Le risorse di memoria non possono essere condivise, il che comporta un enorme spreco. Nei grandi data center, spesso i vari server raggiungono il picco di attività in momenti diversi. Tuttavia, nell'architettura tradizionale, queste risorse di memoria inutilizzate non possono essere “preso in prestito” dai server che ne hanno bisogno. Le statistiche di settore mostrano che l'utilizzo della memoria nei data center è spesso inferiore al cinquanta per cento, il che significa che quasi la metà dell'investimento in hardware rimane inutilizzata.
Per far fronte a un aumento improvviso della domanda, le aziende sono costrette a investire in modo eccessivo. Quando un progetto richiede occasionalmente il doppio della sua normale capacità di memoria, la soluzione tradizionale consiste nell'acquistare hardware in grado di soddisfare il picco di domanda. Si tratta di una spesa destinata a una capacità che rimane inutilizzata per la maggior parte del tempo. Inoltre, una volta installati, questi moduli hardware non possono essere riassegnati in modo flessibile a progetti diversi né facilmente ampliati man mano che l'azienda cresce.
L'obiettivo era risolvere tutti e tre i problemi contemporaneamente – capacità fisica limitata, incapacità di condividere le risorse e scarsa efficienza degli investimenti – la tecnologia CXL è stata ideata da un team di ingegneri. Essa rivoluziona il modo in cui la memoria si collega alle unità di elaborazione, trasformando la memoria in una risorsa che può essere collegata su richiesta e allocata in modo dinamico.
Che cos'è il CXL e come funziona?
CXL è un protocollo di comunicazione aperto basato sull'interfaccia fisica standard PCIe. Il suo nome completo è Compute Express Link, e si può pensare ad esso come a un insieme di “regole linguistiche” che consentono una comunicazione ad alta velocità, coerente e a bassa latenza tra la CPU e i dispositivi di memoria esterni. Ciò che rende unico il CXL è che permette alla CPU di trattare la memoria esterna come se fosse parte integrante del proprio corpo, piuttosto che come una periferica che richiede una deviazione per accedervi.
Coerenza della cache
Immaginate questa situazione: voi e un collega state modificando lo stesso documento online. Se ognuno di voi salva una copia locale e poi apporta delle modifiche, si verificheranno dei conflitti al momento dell’unione: quali modifiche avranno la precedenza? La memoria del computer si trova ad affrontare lo stesso problema. All'interno della CPU c'è un'area di archiviazione molto veloce e piccola chiamata “cache” che contiene copie dei dati utilizzati di recente dalla memoria principale. Quando la CPU accede alla memoria, legge prima dalla cache, che è molto più veloce. Ma se sia la memoria DDR locale che la memoria CXL esterna contengono copie degli stessi dati e una copia viene modificata, l’altra deve essere aggiornata di conseguenza. Altrimenti la CPU potrebbe leggere dati errati. Questo problema è chiamato “coerenza della cache”. CXL include un sottoprotocollo dedicato per gestirlo, “comunicando” costantemente tra la CPU e la memoria esterna per garantire che tutte le copie rimangano coerenti.
Pool di memoria e allocazione flessibile
Secondo l'approccio tradizionale, ogni server può utilizzare solo la memoria presente nei propri slot. CXL introduce il concetto di “pooling”: è possibile collegare diversi dispositivi di memoria CXL a uno switch CXL, formando un unico pool di memoria di grande capacità, e consentire poi a più server di “attingere” memoria da questo pool in base alle necessità. È come se in un edificio per uffici si sostituissero i singoli distributori d'acqua presenti in ogni ufficio con una postazione centrale nel corridoio, da cui tutti possono rifornirsi d'acqua quando ne hanno bisogno. La capacità totale della stazione dell'acqua può essere inferiore alla somma di dieci singoli distributori, ma soddisfa comunque le esigenze di tutti perché i momenti di picco di utilizzo non coincidono. Allo stesso modo, un pool di memoria CXL consente ai gestori dei data center di allocare dinamicamente la memoria in base al carico in tempo reale di ciascun server – assegnandone di più quando è occupato e recuperandola quando è inattivo – supportando così più attività di elaborazione con meno hardware complessivo.
Cosa comprende la tecnologia CXL?
CXL è una soluzione di memoria completa che comprende ogni aspetto, dall'hardware fisico alla configurazione software. Si può pensare a questo sistema come a un'autostrada: la strada stessa (la connessione fisica) è solo la base; servono anche le regole del traffico (il protocollo di comunicazione) per far muovere i veicoli in modo ordinato, e serve un sistema di gestione del traffico (la configurazione software) per indicare ai veicoli dove andare e quale corsia utilizzare. Se manca uno qualsiasi di questi livelli, l'autostrada non può funzionare correttamente.
Livello hardware: i componenti visibili
La componente fisica della tecnologia CXL comprende vari tipi di dispositivi che, insieme, costituiscono l’infrastruttura per l’espansione della memoria. L’hardware più comune è la scheda di espansione di memoria CXL, che ha un aspetto simile a una scheda grafica e può essere inserita direttamente in uno slot PCIe esistente sulla scheda madre di un server. Questa scheda presenta chip di memoria saldati o slot per moduli di memoria. Una volta inserita, il sistema riconosce la capacità di memoria aggiuntiva. Un altro fattore di forma hardware è il modulo di memoria CXL, che è più piccolo – simile a un'unità a stato solido compatta – e può essere installato in alloggiamenti dedicati dell'unità del server, rendendolo adatto per implementazioni ad alta densità.
Quando è necessario collegare più server o più dispositivi di memoria, entra in gioco uno switch CXL. È simile a uno switch di rete, ma invece di commutare i pacchetti di rete, commuta le richieste di accesso alla memoria. Attraverso uno switch CXL, gli amministratori possono collegare tra loro diverse schede di memoria CXL per formare un pool di memoria unificato di grande capacità, consentendo poi a più server di condividere simultaneamente le risorse di quel pool. Per distanze maggiori, i cavi CXL dedicati possono garantire una trasmissione ad alta velocità su distanze di diversi metri o addirittura decine di metri, consentendo di collocare i dispositivi di memoria in rack diversi rispetto ai server.
Livello di protocollo: le regole linguistiche della comunicazione
Se l'hardware è lo scheletro, il protocollo è l'anima che fa funzionare il tutto. Il protocollo CXL comprende tre sottoprotocolli paralleli, ciascuno dei quali è responsabile di un compito diverso. Essi possono funzionare contemporaneamente senza interferire tra loro.
- Il primo sottoprotocollo si chiama CXL.io, e il suo compito è quello di individuare e inizializzare i dispositivi. Quando si inserisce una scheda di memoria CXL in un server, CXL.io ha il compito di consentire alla CPU di riconoscere il dispositivo, leggerne le informazioni di base (come la capacità e le modalità supportate) e assegnargli uno spazio di indirizzamento. Questo processo è molto simile all'installazione di una scheda grafica o di una scheda di rete.
- Il secondo sottoprotocollo si chiama CXL.cache, che rappresenta una delle caratteristiche principali di CXL. CXL.cache garantisce la coerenza dei dati tra la cache della CPU e la memoria esterna. Come descritto in precedenza, quando la CPU modifica un dato, CXL.cache assicura che anche la copia corrispondente nella memoria esterna venga aggiornata, e viceversa.
- Il terzo sottoprotocollo si chiama CXL.mem, che gestisce le operazioni effettive di lettura e scrittura dei dati. Quando la CPU deve leggere un dato dalla memoria CXL, CXL.mem trasmette la richiesta e restituisce i dati; quando la CPU deve scrivere dati nella memoria CXL, CXL.mem esegue il trasferimento in modo analogo.
Livello software: configurazione e gestione per garantire il corretto funzionamento di tutto
La configurazione software consente al sistema operativo e alle applicazioni di utilizzare effettivamente questa nuova memoria. Nel BIOS, l'amministratore deve abilitare la funzionalità CXL e allocare le risorse. A livello di sistema operativo, prendendo Linux come esempio, la memoria CXL viene riconosciuta come un nodo NUMA separato e l'amministratore può utilizzare comandi per specificare se un programma debba preferire la memoria locale o quella CXL. I sistemi operativi moderni supportano anche il tiering della memoria, che mantiene automaticamente i dati più attivi nella DDR locale veloce e migra i dati meno attivi nella memoria CXL. La stragrande maggioranza delle applicazioni non necessita di alcuna modifica del codice per utilizzare la memoria CXL, poiché il sistema operativo la gestisce proprio come la memoria normale.
CXL rispetto alle soluzioni di memoria tradizionali
| Aspetto | Soluzione DDR tradizionale | Soluzione CXL |
|---|---|---|
| Limite massimo di capacità | Limitato dagli slot di memoria della scheda madre e dalla capacità massima dei moduli; non è possibile espandere ulteriormente una volta raggiunto il limite massimo | È possibile continuare ad aggiungere memoria tramite schede di espansione CXL o switch senza sostituire la scheda madre |
| Flessibilità delle risorse | La memoria di ciascun server è fissa; non è possibile riassegnarla tra i server | Supporta il pooling di memoria; più server possono condividere un pool di memoria comune su richiesta |
| Efficienza in termini di costi | Acquistare grandi quantità di memoria per far fronte ai picchi di domanda; l'utilizzo giornaliero è spesso inferiore al 50% | Supporta lo stesso carico di lavoro con una quantità totale di memoria inferiore; l'utilizzo può superare gli 801 TP6T |
| Operazione di espansione | Richiede lo spegnimento del sistema e l'inserimento/rimozione fisica dei moduli di memoria; potrebbe comportare la sostituzione di componenti hardware | Supporta l'hot-plug e l'allocazione dinamica; consente di aggiungere o rimuovere risorse di memoria online |
| Scenari adatti | Implementazioni su piccola scala con requisiti prestazionali elevati e carichi di lavoro stabili | Data center su larga scala, addestramento dell'intelligenza artificiale, cloud computing e altri scenari che richiedono risorse elastiche |
Come mostra la tabella, la soluzione DDR tradizionale presenta ancora dei vantaggi in termini di prestazioni estreme e semplicità di implementazione, ma a costo di spese elevate e di una gestione rigida delle risorse. Al contrario, la soluzione CXL sacrifica una piccola parte della velocità di accesso in cambio di enormi vantaggi: capacità espandibile, risorse condivisibili e una migliore efficienza in termini di costi. Nelle operazioni reali dei data center, questo compromesso è spesso molto vantaggioso, poiché lo spreco di memoria inutilizzata è ben più grave di una piccola differenza di velocità.
Casi d'uso di CXL
CXL non è pensata per sostituire la memoria tradizionale, ma per risolvere scenari specifici in cui la memoria tradizionale incontra delle difficoltà. Le tre aree riportate di seguito sono quelle in cui CXL vanta le implementazioni più consolidate e offre il valore aggiunto più evidente.
Intelligenza artificiale e addestramento di modelli su larga scala
L'addestramento di un modello linguistico di grandi dimensioni con centinaia di miliardi di parametri richiede il caricamento simultaneo in memoria dell'intero modello, dei dati di addestramento e dei risultati di calcolo intermedi. Quando le dimensioni del modello superano la capacità di memoria di un singolo server, CXL consente a un server di collegare direttamente diversi terabyte di memoria CXL, conservando tutti i dati all'interno di un unico nodo, semplificando notevolmente il modello di programmazione e migliorando l'efficienza dell'addestramento. Per i team di medie dimensioni che lavorano su modelli di grandi dimensioni, CXL offre un percorso più economico rispetto all'acquisto di costosi mainframe.
Pooling della memoria nei data center
Nei grandi data center cloud, i picchi di carico dei diversi tenant e delle diverse applicazioni si verificano spesso in momenti diversi. Implementando switch CXL e un pool di memoria CXL, il data center può raccogliere tutta la memoria inattiva in un pool condiviso e allocarla dinamicamente in base alle esigenze in tempo reale di ciascun server. Le stime del settore suggeriscono che questo approccio possa aumentare l'utilizzo della memoria dal tipico quaranta-cinquanta per cento a oltre l'ottanta per cento, il che significa che lo stesso investimento in hardware può supportare quasi il doppio del carico di lavoro di elaborazione.
Cloud computing e densità delle macchine virtuali
I fornitori di servizi cloud desiderano eseguire il maggior numero possibile di macchine virtuali (VM) su un unico server fisico per aumentare i ricavi. Ma a ogni VM deve essere assegnata una quantità fissa di memoria e, anche se quella memoria non viene effettivamente utilizzata molto, non può essere occupata da altre VM. Di conseguenza, i server spesso esauriscono la memoria molto prima che le loro risorse CPU siano esaurite, limitando il numero di VM che possono essere create. Un pool di memoria CXL consente alla piattaforma cloud di trattare la memoria come una risorsa elastica per l'oversubscription o l'adattamento dinamico: quando una VM utilizza meno memoria di quella assegnata, l'eccedenza può essere recuperata e assegnata ad altre VM. Questa tecnologia consente ai fornitori di servizi cloud di ospitare più tenant sugli stessi server fisici, riducendo i costi operativi.
Oltre a questi tre principali casi d'uso, CXL viene impiegato anche nelle simulazioni su larga scala nell'ambito del calcolo ad alte prestazioni, nell'espansione della capacità dei database in-memory (come SAP HANA) e nell'accelerazione dei motori di analisi dei big data in tempo reale (come Apache Spark). Ciò che accomuna queste applicazioni è un'elevatissima richiesta di capacità di memoria unita a una certa tolleranza alla latenza: esattamente l'ambito in cui CXL eccelle.
Situazione attuale e prospettive future per CXL
La tecnologia CXL è passata dalla fase di sperimentazione a quella di implementazione concreta. Dal punto di vista hardware, i processori Intel Xeon Scalable di quarta generazione e AMD EPYC di quarta generazione supportano nativamente CXL 1.1 o 2.0. I principali fornitori di server come Dell, HPE, Inspur e Supermicro offrono opzioni di memoria CXL nelle loro linee di fascia alta. Samsung e Micron producono ora in serie moduli di memoria CXL da 128 GB a 512 GB, alcuni con supporto hot-plug. Dal punto di vista del software, il kernel Linux supporta CXL in modo nativo dalla versione 5.18 e i principali sistemi operativi cloud stanno gradualmente migliorando il pooling della memoria CXL.
Guardando al futuro, CXL si sta evolvendo lungo due linee principali. La prima riguarda gli aggiornamenti del protocollo. CXL 2.0 ha introdotto il memory pooling e il supporto degli switch, già in fase di sperimentazione. CXL 3.0 aumenta la larghezza di banda a 64 GB/s e aggiunge lo switching multilivello, la cui diffusione è prevista dopo il 2026. CXL 4.0, basato su PCIe 7.0, dovrebbe raddoppiare nuovamente la larghezza di banda. Il secondo percorso riguarda l'evoluzione dell'implementazione. Nel breve termine, CXL funge da memoria di “secondo livello” a complemento della DDR locale. Nel medio termine, il memory pooling diventerà standard nei grandi data center, rendendo la memoria allocabile dinamicamente come l'elaborazione e lo storage. A lungo termine, CXL e DDR probabilmente coesisteranno: DDR per i carichi di lavoro core sensibili alla latenza, CXL per la memoria di espansione condivisibile e di grande capacità.
La tecnologia CXL è emersa come risposta a una domanda che da tempo affligge il settore informatico: perché la memoria non può essere espansa e condivisa in modo flessibile come lo storage? Grazie a un elegante design del protocollo, la tecnologia CXL integra funzionalità chiave quali la coerenza della cache e il pooling della memoria sull'infrastruttura PCIe esistente. Dall'hardware al software, dall'espansione di una singola macchina alla condivisione delle risorse a livello di data center, CXL sta gradualmente cambiando il nostro modo di concepire la memoria. Naturalmente, questa tecnologia è ancora agli inizi; la maturità del protocollo, la completezza dell'ecosistema e la riduzione dei costi richiederanno tempo. Ma ciò che è certo è che, con la continua crescita dei modelli di IA e le dimensioni dei dati che continuano a superare i limiti fisici, CXL – che libera la memoria dagli slot fissi – diventerà una parte sempre più essenziale dell’infrastruttura nel mondo del calcolo ad alte prestazioni.





