Cos'è la cache?

Cos'è la cache e perché è presente su CPU, GPU e altri tipi di processori? Ecco tutto quello che devi sapere.

Link veloci

  • Cache: una piccola quantità di memoria ad alta velocità
  • Livelli di cache e gerarchia della memoria
  • La cache è necessaria ma non migliora le prestazioni da sola

Anche se non si parla tanto di cache quanto di core, RAM (Memoria ad accesso casuale), o VRAM, probabilmente ne hai già sentito parlare, soprattutto di recente. AMD pubblicizza con orgoglio le sue prestazioni di gioco CPU Ryzen con 3D V-Cache come risultato dell'utilizzo della cache e uno dei maggiori miglioramenti di Intel con le sue CPU Raptor Lake di tredicesima generazione è stato l'aggiunta di più cache.

Ma come può la cache migliorare le prestazioni quando viene misurata in termini di megabyte? Al giorno d'oggi anche i kit RAM più economici sono dotati di 16 GB, quindi come può l'aggiunta di pochi megabyte extra di cache fare una così grande differenza in termini di prestazioni? Bene, la cache non è il tuo normale tipo di memoria.

Cache: una piccola quantità di memoria ad alta velocità

Fonte: AMD

La cache è in realtà uno sviluppo piuttosto recente nei processori, risalente agli anni '90, ed è stata inventata grazie alla RAM. La RAM è un componente chiave nei computer che memorizza una quantità significativa di dati di cui si prevede che i processori (come CPU e GPU) avranno bisogno abbastanza spesso. Per molto tempo, i miglioramenti nelle prestazioni della RAM hanno tenuto il passo con i miglioramenti nelle prestazioni della CPU, ma negli anni '90 stava diventando ovvio che la RAM non sarebbe in grado di tenere il passo con le CPU più recenti. La RAM aveva molta capacità, ma anche le velocità di trasferimento lo erano lento.

Ecco dove entra in gioco la cache. Non è grande quanto la RAM né fisicamente né in termini di capacità, ma è all'interno del processore stesso e può trasferire i dati molto rapidamente e con una latenza molto bassa. Finché la cache memorizza i dati effettivamente necessari al processore, può risparmiare tempo perché richiedere alla RAM gli stessi dati è molte volte più lento. È stata un'ottima soluzione al problema della RAM e ha consentito ai progettisti di CPU di continuare a realizzare CPU più veloci e veloci I progettisti di RAM possono continuare a produrre capacità di RAM sempre più grandi senza doversi preoccupare troppo prestazione. Oggi la cache è presente praticamente in ogni tipo di processore.

Forse ti starai chiedendo perché la cache è così piccola. Beh, ha soprattutto a che fare con lo spazio e il denaro. Anche 32 MB di cache possono occupare un bel po' di spazio su un processore, e i chip moderni sono limitati a circa 600 mm2 di area totale, che deve essere utilizzata con saggezza. Ciò significa che dedicare più area alla cache può diventare piuttosto costoso e quella situazione sta effettivamente peggiorando, non migliorando. Gli ultimi processi di produzione stanno portando a miglioramenti sempre più piccoli nella densità della cache e TSMC non è riuscita a ridurre affatto la dimensione della cache nella prima iterazione del suo processo a 3 nm.

Livelli di cache e gerarchia della memoria

Fonte: Carlos Carvalho

L'invenzione della cache ha significato la creazione di un nuovo livello per tutti i dispositivi di archiviazione dei dati in un computer. Questi strati formano quella che viene chiamata gerarchia della memoria, che puoi vedere nell'immagine sopra e i suoi dettagli quale memoria va dove in un tipico sistema all'interno di una CPU (anche se altri tipi di processori sembreranno molto simile). Oggi, la moderna gerarchia della memoria non include solo cache, RAM e dispositivi di archiviazione permanenti, ma anche una gerarchia di memoria all'interno della cache stessa.

La maggior parte dei processori dispone di diversi livelli di cache per vari scopi. Il primo e più piccolo livello di cache è L1, a cui vengono assegnati core individuali per l'elaborazione dei dati necessari immediatamente. La cache L1 viene spesso misurata in kilobyte, con le ultime CPU Ryzen 7000 che hanno 64 KB di cache L1 per core. Inoltre, la moderna cache L1 è spesso ulteriormente suddivisa in L1I (per le istruzioni) e L1D (per i dati).

Il prossimo è L2, che riguarda un gruppo di core anziché singoli. Naturalmente, la cache L2 è più grande della cache L1, spesso di un ordine di grandezza, ma essendo molto più grande e dovendo servire più core significa che è più lenta e ha una latenza più elevata. Alcuni processori, in particolare GPU e CPU più lente, utilizzeranno solo la cache L2.

Il passo successivo è L3, che viene generalmente utilizzato da tutti i core del chip. Le sue dimensioni possono variare da alcune volte più grandi della cache L2 a più di un ordine di grandezza, a seconda del processore. Ciò significa che è ancora più lento della cache L2 ma supera comunque la RAM. Inoltre, la cache L3 spesso funge anche da "cache delle vittime", ovvero il luogo in cui vanno a finire i dati eliminati dalle cache L1 e L2. Potrebbe essere ulteriormente eliminato dalla cache L3 se non necessario. Oggi la cache L3 è particolarmente importante per AMD grazie alla sua tecnologia chiplet. I chip Ryzen 3D V-Cache contengono 64 MB di cache L3 e i die Memory Cache (o MCD) RX 7000 contengono 16 MB di cache L3 ciascuno.

Il livello più alto di cache visto sulla maggior parte dei processori è L4, che spesso è così grande da essere effettivamente RAM. In effetti, le ultime CPU a utilizzare la cache L4 sono i chip Intel Sapphire Rapids Xeon, che utilizzano HBM2 come cache L4 sui modelli di fascia alta. AMD, d'altro canto, non ha mai utilizzato una cache L4 e si accontenta invece di ampliare la sua cache L3 fino a raggiungere capacità elevate aggiungendo più CPU e chiplet V-Cache. Una cache L4 in genere avvantaggia maggiormente le GPU integrate, poiché è una soluzione on-die in grado di condividere i dati tra la CPU e la GPU integrata.

In alcuni chipset, soprattutto quelli mobili, esiste un altro tipo di cache: la cache a livello di sistema (SLC). Questa cache viene quindi utilizzata nell'intero chipset, come GPU, NPU e CPU. Una cache può sostituire la necessità di richieste alla memoria principale, quindi un SLC avvantaggia l'intero SoC.

La cache è necessaria ma non migliora le prestazioni da sola

Nonostante tutto il clamore che circonda le recenti innovazioni nella cache, non è una soluzione miracolosa in termini di prestazioni. Dopo tutto, non c'è capacità di elaborazione nella cache; memorizza solo i dati e basta. Sebbene ogni processore possa trarre assolutamente vantaggio dall'avere più cache, spesso è troppo costoso aggiungerne una quantità superiore a quella esattamente necessaria. L'aggiunta di più cache potrebbe non migliorare nemmeno le prestazioni a seconda del carico di lavoro, il che è un ulteriore incentivo a non caricare troppo un processore.

Detto questo, in determinate situazioni può essere auspicabile poter aggiungere una grande quantità di cache. Le CPU con molta cache tendono ad avere prestazioni migliori nei giochi, ad esempio. Le CPU Ryzen di AMD con 3D V-Cache sono piuttosto veloci per i giochi nonostante abbiano una frequenza inferiore rispetto ai chip senza V-Cache e Le CPU Intel di 13a generazione sono significativamente più veloci dei chip di 12a generazione, con l'unico miglioramento importante rappresentato da una versione più ampia cache.

In definitiva, la cache esiste in modo che i processori possano bypassare la RAM il più spesso possibile e le prestazioni possano essere il più sfrenate possibile. I progettisti di CPU devono bilanciare la capacità della cache con le dimensioni e, per estensione, i costi, il che diventa sempre più difficile con ogni generazione di nuovi processi di produzione. Anche se decenni dopo l'invenzione della cache vengono introdotti nuovi modi per aggiungere cache ai processori, è difficile immaginare che lo scopo di questo componente chiave dei processori cambierà mai.