- La memoria cache della CPU (L1, L2, L3 e persino L4) riduce drasticamente la latenza rispetto alla RAM ed è fondamentale per le prestazioni reali.
- La gerarchia della cache bilancia capacità e velocità: L1 e L2 per core, L3 condivisa e, in alcuni casi, L4 come supporto GPU.
- Latenza, larghezza di banda e frequenza di hit della cache determinano le prestazioni nei giochi e nei carichi di lavoro intensivi, insieme alla velocità della RAM.
- Tecnologie come la 3D V-Cache di AMD espandono la cache L3 tramite stacking 3D, migliorando significativamente le prestazioni di gioco.
Quando si parla di processori, l'attenzione si concentra quasi sempre su core, frequenza e processo produttivo, ma la memoria cache e la sua latenza rimangono in gran parte trascurate, nonostante siano fondamentali per le prestazioni effettive del sistema. Comprendere cosa accade tra CPU, cache e RAM ci permette di capire perché due processori con la stessa frequenza possono avere prestazioni molto diverse.
Negli ultimi anni, concetti come latenza della cache, larghezza di banda L1/L2/L3 e tecnologie come la 3D V-Cache di AMD sono diventati elementi chiave nei benchmark, nei giochi e nei test di performance C++, dove misurare anche pochi nanosecondi di differenza può cambiare completamente il risultato. Analizziamo nel dettaglio la latenza della cache della CPU, perché è così importante e come viene misurata nella pratica.
Dal divario CPU-RAM alla nascita della memoria cache
Negli anni '80, la velocità dei processori è cresciuta molto più rapidamente di quella della memoria . Le CPU hanno iniziato a eseguire le istruzioni a una velocità vertiginosa, mentre i tempi di accesso alla RAM sono rimasti relativamente lunghi. Il risultato è stato un costante collo di bottiglia: il processore trascorreva una quantità significativa di tempo in attesa dell'arrivo dei dati.
Per colmare questo divario prestazionale, gli ingegneri hanno introdotto la memoria cache come livello intermedio tra la CPU e la RAM. L'idea è semplice ma efficace: memorizzare, molto vicino al processore e in una memoria estremamente veloce, i dati e le istruzioni di cui la CPU ha maggiori probabilità di aver bisogno nel breve termine. Ciò riduce la latenza effettiva e maschera la relativa lentezza della RAM.
In un PC moderno possiamo distinguere chiaramente tre livelli di archiviazione: la memoria di massa (HDD, SSD), enorme ma lenta; la RAM , molto più veloce ma comunque con una latenza significativa; e la memoria cache integrata nella CPU , di capacità ridotta, ma di gran lunga la più veloce.
La cache non è una prerogativa esclusiva del processore: anche dischi rigidi, SSD, GPU, stampanti e altri dispositivi dispongono di cache interne per velocizzare l'accesso ai dati. Tuttavia, la cache della CPU ha l'impatto più diretto sull'esperienza utente quotidiana.
Cos'è la memoria cache della CPU e come funziona?
La cache della CPU è una memoria SRAM integrata nel chip del processore , in grado di operare a velocità incredibilmente elevate e con latenze di frazioni di nanosecondo. A differenza della RAM (DRAM), non richiede un aggiornamento costante, è più costosa da produrre e ha una capacità molto inferiore; pertanto, è riservata solo a dati critici a brevissimo termine.
La sua funzione principale è quella di fungere da buffer ultraveloce tra i core della CPU e la RAM . Quando un programma viene avviato, il suo codice e i suoi dati vengono prima caricati dalla memoria di archiviazione nello spazio degli indirizzi della RAM. Da lì, il controller di memoria integrato nella CPU sposta nella cache i blocchi che hanno maggiori probabilità di essere utilizzati, seguendo schemi di accesso e algoritmi di predizione.
Il processo tipico è il seguente: la CPU richiede un indirizzo di memoria, controllando prima la cache L1 , poi la L2 e infine la L3. Se i dati vengono trovati in uno qualsiasi di questi livelli, si verifica un "hit" nella cache, la richiesta viene soddisfatta rapidamente e si risparmiano molti cicli di clock. Se non vengono trovati in nessuno di questi livelli, si verifica un "miss" nella cache e i dati devono essere recuperati dalla RAM, che ha una latenza maggiore e una larghezza di banda effettiva inferiore per operazioni di piccole dimensioni.
La progettazione di questa gerarchia di memoria mira a un equilibrio: cache piccole ed estremamente veloci vicino al core e livelli progressivamente più grandi ma più lenti man mano che ci si allontana dalle unità di esecuzione. Tutta la magia prestazionale di una CPU moderna si basa sulla massimizzazione del numero di hit e sulla minimizzazione del costo dei miss.
Livelli di cache: L1, L2, L3 e persino L4
I processori moderni in genere integrano tre livelli di cache nel chip stesso: L1, L2 e L3 . Alcuni modelli specifici includono anche un livello L4, solitamente implementato come un chip separato simile alla eDRAM per compiti molto specifici, come fornire risorse aggiuntive alla GPU integrata.
Ogni livello di cache è caratterizzato da un triangolo di fattori: distanza fisica dal core, latenza e capacità. Più è vicino alle unità di esecuzione, minore è la latenza, ma anche minore è la sua capacità, poiché il costo in transistor aumenta significativamente.
Cache L1: la prima linea di fuoco
La cache L1 è la più vicina al kernel ed è la più veloce di tutte le cache . Solitamente è divisa in due blocchi distinti: la cache dati L1 (L1D) e la cache istruzioni L1 (L1I). La prima memorizza gli operandi da elaborare, mentre la seconda memorizza le istruzioni decodificate che il kernel eseguirà.
Ogni core possiede una propria cache L1, non condivisa con gli altri, il che significa che non esiste coerenza L1 diretta tra core diversi. In genere, nelle architetture moderne si parla di 32 KB di L1D e 32 KB di L1I per core , sebbene alcuni progetti aumentino questi valori. Quantità leggermente superiori si possono trovare in alcuni processori o server di fascia alta.
In termini di prestazioni, la cache L1 offre latenze inferiori al nanosecondo e velocità di lettura di picco di migliaia di GB/s in strumenti di benchmark come AIDA64. Ad esempio, un moderno processore Ryzen può raggiungere una latenza L1 di circa 0,7 ns con larghezze di banda superiori a 2.700 GB/s, a costo di una dimensione ridotta, come ad esempio 512 KB di cache L1 totale su tutti i core.
Cache L2: l'equilibrio tra dimensione e velocità
La cache L2 si trova subito dopo la L1 come secondo livello di backup . La sua latenza è leggermente superiore, ma comunque molto bassa rispetto alla RAM. La sua funzione è quella di memorizzare i dati che non trovano spazio nella L1 ma che vengono comunque utilizzati con una certa frequenza.
Nella maggior parte delle architetture consumer, ogni core possiede una propria cache Layer 2 privata , non suddivisa in dati e istruzioni, con dimensioni che in genere variano da 256 KB a 1 MB per core, sebbene nell'ultima generazione di server siano comuni dimensioni pari o superiori a 1 MB per core. In termini di prestazioni, si registrano larghezze di banda superiori a 1.300 GB/s con latenze di circa 2,7 ns.
Essendo più ampio, il livello L2 contribuisce a ridurre gli errori che altrimenti raggiungerebbero il livello L3 o la RAM se esistesse solo il livello L1, mantenendo un buon equilibrio tra capacità e latenza . In alcune topologie, più core sono raggruppati in cluster che condividono un livello L2 comune, introducendo ulteriori funzionalità di coerenza e bus interni.
L3 o LLC (cache di ultimo livello)
La cache L3 è spesso chiamata anche LLC (Last Level Cache) perché, nella maggior parte dei processori desktop, rappresenta l'ultimo livello di cache prima della RAM. È la cache più grande e anche la più lenta all'interno del chip principale della CPU.
A differenza delle cache L1 e L2, la cache L3 è in genere condivisa tra tutti i core o grandi gruppi di core (ad esempio, blocchi di otto in alcune architetture AMD). Ciò consente a qualsiasi core di riutilizzare i dati caricati da un altro, aumentando il tasso di successo complessivo, sebbene complichi notevolmente la logica di coerenza.
Nei processori desktop di fascia media, non è raro trovare cache L3 che vanno dai 4 MB ai 32 MB, mentre le CPU per server, come alcune serie AMD EPYC, raggiungono facilmente centinaia di MB . Il prezzo da pagare è una latenza maggiore, che può aggirarsi intorno ai 10 ns, e una larghezza di banda inferiore rispetto alle cache L1 e L2, sebbene comunque significativa: circa 900 GB/s nei sistemi più potenti.
Cache L4: casi speciali
La cache L4 è un caso particolare che non si trova nella maggior parte delle CPU per il mercato consumer . In genere è implementata come eDRAM esterna al package principale della CPU, ma fisicamente molto vicina sulla scheda madre, e viene utilizzata nei processori con GPU integrata per fornire un ulteriore incremento alla larghezza di banda grafica.
Un esempio classico è l'Intel Core i5-5775C, che combinava 6 MB di cache L3 con 128 MB di eDRAM utilizzati come cache L4 per la sua GPU integrata Iris Pro 6200. Questa memoria fungeva da buffer per i dati grafici, riducendo il carico sulla RAM di sistema e migliorando le prestazioni di gioco rispetto ad altre GPU integrate prive di questo supporto.
Latenza della cache e il suo impatto sulle prestazioni
La parola chiave quando si parla di cache della CPU è latenza: il tempo impiegato dalla CPU per accedere ai dati memorizzati in uno specifico livello di memoria. Questa latenza si misura in nanosecondi (ns) e, sebbene questi tempi possano sembrare incredibilmente brevi, sommati a milioni di accessi al secondo, fanno una differenza significativa.
In una tipica gerarchia di cache, la latenza L1 è la più bassa (inferiore a 1 ns), la latenza L2 è moltiplicata per diversi fattori (ad esempio, 2,7 ns) e la latenza L3 aumenta ulteriormente (può raggiungere i 10 ns o più, soprattutto se si trova su un chip separato). Quando non viene trovato alcun riscontro in nessuna delle cache, il processore deve accedere alla RAM, dove le latenze possono schizzare a diverse decine di nanosecondi, anche con memorie DDR5 veloci.
Un esempio concreto: con un Ryzen 7 7700X e memoria DDR5 a 6.000 MT/s e CL30, possiamo osservare latenze medie della RAM di circa 70 ns, rispetto a 0,7 ns in L1, 2,7 ns in L2 e circa 10 ns in L3. Questa differenza spiega perché è così importante per la CPU trovare i dati nella cache: ogni cache miss comporta un'attesa significativamente più lunga.
La latenza dipende non solo dalla tecnologia di memoria utilizzata, ma anche dalla distanza fisica e dalla topologia . Nei progetti più vecchi, in cui le cache L2 e L3 erano montate sulla scheda madre, molto più distanti dalla CPU, la latenza era molto più elevata e le prestazioni ne risentivano. L'integrazione di tutte le cache nel package della CPU ha ridotto drasticamente questi ritardi.
Oltre alla latenza, la larghezza di banda effettiva della cache (misurata in GB/s) indica la quantità di dati che possono essere trasferiti per unità di tempo. Anche in questo caso, la cache L1 si conferma la migliore, con velocità di lettura superiori a 2.000 GB/s nei benchmark sintetici, seguita da L2 e L3 con valori più modesti, ma comunque ben al di sopra della RAM.
Hit, cache miss e coerenza tra core
Quando la CPU cerca i dati e li trova in uno dei livelli della cache, si parla di " cache hit" . Se non li trova, si verifica un "cache miss" e la CPU deve ricorrere al livello successivo o, nel peggiore dei casi, alla memoria principale. Maggiore è il numero di "cache hit" ottenuti nei livelli superiori, migliori saranno le prestazioni complessive del sistema.
I cache miss non solo aumentano la latenza, ma possono anche costringere la CPU a ripetere cicli di lavoro o a riordinare le istruzioni perché i dati non sono ancora disponibili, il che "interrompe" la pipeline interna del processore e riduce l'utilizzo delle sue unità funzionali.
Nei processori multi-core, entra in gioco anche la coerenza della cache , ovvero il mantenimento di una visione coerente dei dati condivisi tra i core che dispongono di cache L1 e L2 proprie. Complessi protocolli di coerenza gestiscono l'invalidazione e l'aggiornamento delle linee di cache quando un altro core modifica i dati, il che aggiunge traffico interno e può influire sulla latenza effettiva.
Anche l'architettura interna gioca un ruolo importante. Nei design monolitici, come molti processori Intel Core, tutti i core accedono a una singola cache L3 con latenze pressoché uniformi. Nelle architetture a chiplet o MCM, come le prime generazioni di AMD Ryzen, la cache L3 è organizzata in blocchi (CCX, CCD) e alcuni core possono accedere direttamente solo a una porzione della cache L3, introducendo latenze aggiuntive durante il passaggio da un blocco all'altro.
Latenza della cache rispetto alla RAM: frequenza, tempi e bus
Quando le informazioni non sono presenti nella cache, entra in gioco la RAM . In questo caso, due concetti vengono spesso confusi: latenza e frequenza. La frequenza (tipicamente espressa in MT/s o MHz) indica la quantità di dati che possono essere trasferiti al secondo, mentre la latenza (in nanosecondi o tramite intervalli di tempo come CL16, CL30, ecc.) indica il tempo necessario affinché il primo dato venga consegnato.
Le memorie RAM con frequenze elevate ma latenze molto alte possono offrire una buona larghezza di banda ma tempi di risposta peggiori, il che penalizza i processi sensibili alla latenza come i giochi o alcuni carichi di lavoro con accesso non sequenziale. Al contrario, i moduli con timing inferiori migliorano la velocità di primo accesso, anche se la loro larghezza di banda grezza non è altrettanto elevata.
Anche la larghezza del bus tra CPU e RAM è importante. Nella maggior parte delle piattaforme desktop, ogni canale di memoria ha un bus a 64 bit e, con una configurazione dual-channel, questo valore aumenta a 128 bit effettivi, raddoppiando la quantità di dati che possono viaggiare simultaneamente tra processore e RAM.
Quanto più efficiente è la combinazione di frequenza, latenza e larghezza del bus , tanto meno problematico sarà un errore di cache. Ciononostante, nessuna RAM attuale può avvicinarsi ai valori di latenza e larghezza di banda delle cache L1, L2 o L3, quindi la priorità rimane massimizzare gli hit della cache.
RAM Scratchpad vs Cache automatica
All'interno del processore troviamo non solo cache automatiche gestite dall'hardware. Alcuni progetti includono anche la Scratchpad RAM , un tipo di memoria interna molto veloce che, a differenza della cache, non è autogestita.
La differenza è chiara: la memoria cache replica in modo trasparente le righe di dati vicine agli indirizzi utilizzati, seguendo algoritmi interni, e il programmatore non ha alcun controllo diretto su di essa. Al contrario, una RAM Scratchpad funziona come una piccola RAM locale, dove è il software stesso a decidere quali dati memorizzare, come organizzarli e quando cancellarli.
Questo approccio è più comune nei processori embedded, nei DSP e in alcune GPU, dove sono necessari modelli di accesso altamente prevedibili e si vuole evitare l'incertezza del caching automatico. Su PC desktop e server, l'utente finale raramente interagisce esplicitamente con una RAM Scratchpad.
Latenza della cache, test delle prestazioni ed effetti curiosi
Nel mondo dei benchmark, è comune misurare le latenze della cache in nanosecondi e le larghezze di banda in GB/s per ogni livello (L1, L2, L3) utilizzando strumenti come AIDA64, oppure sviluppando test personalizzati in C++ che eseguono scansioni specifiche di array di grandi dimensioni.
Questi test possono rivelare comportamenti curiosi. Ad esempio, misurando la larghezza di banda di lettura L2 e L3 su un sistema apparentemente inattivo, è possibile osservare che i valori di L2 a volte scendono da circa 80 GB/s a circa 60 GB/s , e i valori di L3 possono diminuire da circa 45 GB/s a poco più di 35 GB/s senza alcuna ragione apparente.
Una spiegazione comune è il throttling, ovvero le variazioni dinamiche della frequenza interna e dello stato di alimentazione della CPU. Tuttavia, ci sono casi in cui, aprendo uno strumento di monitoraggio come HWINFO, i punteggi tornano magicamente a valori "buoni". Quando si chiude lo strumento, i punteggi ricominciano a fluttuare verso il basso.
In genere, programmi come HWINFO mantengono la CPU in stati di prestazioni più elevate , forzando frequenze più stabili e impedendo a parti dell'anello interno o della cache di entrare in modalità di risparmio energetico profondo. Se il benchmark viene eseguito senza altri processi attivi, il processore tende a risparmiare energia, il che può ridurre in modo intermittente la larghezza di banda effettiva misurata, anche se le latenze medie non cambiano in modo significativo.
In questi casi, sono state proposte soluzioni come il mantenimento di un thread "keep-alive" che esegue operazioni leggere per impedire alla CPU di entrare in modalità di sospensione, ma non è sempre facile riprodurre l'effetto di uno strumento di monitoraggio, perché ogni microarchitettura ha il proprio set di stati di sospensione e politiche interne.
Memoria cache e prestazioni di gioco
Nei videogiochi, la cache L3 gioca un ruolo cruciale. Molti carichi di lavoro di gioco traggono grande vantaggio dalla possibilità di memorizzare più dati e istruzioni più vicino alla CPU , dalle strutture delle scene ai dati fisici e alla logica di gioco. Minore è il numero di accessi alla RAM, più stabile sarà il frame rate e minori saranno le fluttuazioni.
Un processore dotato di una cache L3 generosa e ben sfruttata può offrire miglioramenti significativi nella stabilità del frame rate, soprattutto nei giochi moderni che gestiscono un gran numero di oggetti ed eseguono molte query ripetitive alle strutture dati. Invece di accedere costantemente alla RAM (che è molto più lenta e presenta una latenza maggiore), la CPU può soddisfare la maggior parte delle richieste direttamente dalla sua cache L3.
Tuttavia, la cache non fa miracoli. Una CPU con pochi core, basso IPC e frequenze modeste sarà comunque limitata, anche con enormi quantità di cache L3. La combinazione vincente per il gaming è solitamente un IPC elevato, una buona frequenza, una cache abbondante e una RAM veloce con bassa latenza , in modo che l'intero sistema minimizzi i colli di bottiglia.
Quando si avvia un gioco impegnativo, se si effettuano misurazioni in parallelo con un benchmark come AIDA64, si può notare un picco negli accessi alla cache . Molti dei micro-scatti riscontrabili in alcuni titoli sono dovuti a cache miss che costringono il sistema ad accedere alla RAM, oppure a cambi di thread che interrompono la località dei dati stabilita.
3D V-Cache di AMD e la corsa per più L3
Per superare il limite fisico di ciò che può essere integrato in una cache L3 su un singolo chip di silicio piatto, AMD ha introdotto la sua tecnologia 3D V-Cache , che prevede l'impilamento verticale di un chip di cache L3 aggiuntivo sopra un CCD (chiplet) del processore. Ciò espande notevolmente la capacità della cache L3 senza aumentare le dimensioni della base del die.
I processori Ryzen con il suffisso X3D, come il Ryzen 7 7800X3D o il 7950X3D, portano questo concetto all'estremo. Il 7800X3D, ad esempio, combina 32 MB di cache L3 nel CCD di base con altri 64 MB impilati, per un totale di 96 MB di cache L3 accessibili da quel gruppo di core. Il 7950X3D si spinge ancora oltre con 128 MB di cache L3, oltre a 1 MB di cache L1 e 16 MB di cache L2 distribuiti tra tutti i suoi core.
L'impatto sul gaming è enorme perché il tasso di successo della cache aumenta vertiginosamente , riducendo la necessità di accedere alla RAM per molte strutture che in precedenza non potevano essere contenute interamente nella cache L3. Questo spiega perché questi modelli X3D sono diventati il punto di riferimento per le pure prestazioni di gioco, anche rispetto a CPU con più core o frequenze di clock leggermente superiori.
Per ora, il suo principale concorrente, Intel, non ha replicato una soluzione identica. L'azienda ha indicato che, per il momento, preferisce concentrarsi su prestazioni complessive bilanciate piuttosto che su un approccio orientato al gaming, come grandi blocchi di cache L3 impilata. Ciò non le impedisce di aumentare gradualmente le dimensioni delle proprie cache nelle generazioni future, ma non sembra probabile che adotti esattamente lo stesso schema V-Cache nel breve termine.
Come vedere quanta cache ha il tuo processore
Se vuoi sapere quali sono le dimensioni delle cache L1, L2 e L3 della tua CPU senza impazzire a cercare documentazione tecnica, uno dei modi più rapidi è utilizzare strumenti come CPU-Z in Windows. Questo programma gratuito visualizza, in schede dedicate, le dimensioni di ciascun livello di cache, nonché il numero di core, thread e altri dati rilevanti.
Un'altra opzione è visitare il sito web ufficiale del produttore (Intel ARK, schede prodotto AMD, ecc.), anche se spesso solo la cache L3 è descritta in dettaglio e bisogna consultare la documentazione tecnica per trovare le cache L1 e L2. Anche le recensioni e le analisi di testate specializzate solitamente forniscono queste informazioni, insieme a benchmark di latenza e larghezza di banda.
Scegliere e utilizzare al meglio la RAM e la memoria cache
La cache può mascherare molti dei limiti della RAM, ma non tutti. Quando si assembla un computer, è importante scegliere una RAM con la frequenza, la latenza e la capacità adatte all'uso previsto. Un computer per lavoro d'ufficio o navigazione web leggera può funzionare bene con 8-16 GB e moduli di fascia media, mentre per il gaming e il montaggio video si consigliano solitamente 16 GB o 32 GB.
È sempre consigliabile verificare la compatibilità della RAM con la scheda madre e la CPU (tipo DDR3, DDR4, DDR5, velocità massime supportate, profili XMP/EXPO, ecc.). È inoltre opportuno trovare un equilibrio tra frequenza elevata e timing ragionevoli, piuttosto che concentrarsi esclusivamente su un numero di MHz appariscente.
Per sfruttare al meglio la memoria e la cache, è molto utile mantenere il sistema libero da programmi in background non necessari , aggiornare il BIOS e i driver e, sui computer molto utilizzati, eliminare i file temporanei e la cache del browser che non servono più. Tutto ciò che riduce il carico su RAM e CPU contribuisce a liberare queste risorse veloci per ciò che conta davvero.
A livello del BIOS, l'attivazione dei profili di memoria automatici (XMP, DOCP, EXPO) è solitamente un modo semplice per garantire che la RAM funzioni alla velocità promessa dal produttore, evitando di essere bloccati su valori conservativi che limitano la larghezza di banda.
Comprendere come funziona la latenza della cache, la sua gerarchia L1/L2/L3, la sua relazione con la RAM e tecnologie come la V-Cache 3D permette di interpretare le specifiche della CPU e i risultati dei benchmark sotto una nuova luce: al di là dei GHz e del numero di core, gran parte della fluidità del sistema si decide in quei pochi nanosecondi che il processore impiega per trovare, o non trovare, i dati nella memoria più vicina.