Cos'è la cache della CPU?

Le moderne CPU sono incredibilmente veloci; possono superare in modo significativo la RAM di sistema. Questo squilibrio di velocità tra CPU e memoria fa sì che il tuo processore resti spesso inattivo, in attesa che i dati vengano inviati ad esso in modo che possa continuare a eseguire un processo. Per evitare che ciò accada, consentendo alle CPU di continuare a funzionare sempre più velocemente, viene utilizzata una cache della CPU.

In che modo una cache della CPU accelera una CPU?

La cache della CPU è progettata per essere il più veloce possibile e quindi memorizzare nella cache i dati richiesti dalla CPU. La cache della CPU ha la sua velocità ottimizzata in tre modi: latenza, larghezza di banda e prossimità. La cache della CPU funziona a latenze molto basse, riducendo al minimo il tempo necessario per la restituzione di un risultato. Ad esempio, l'Intel i9-9900k ha una latenza della cache di 0,8, 2,4 e 11,1 nanosecondi rispettivamente per la cache L1, L2 e L3. In confronto, la latenza della moderna RAM ad alta velocità è dell'ordine di 14 nanosecondi.

Suggerimento: i livelli di cache verranno spiegati più dettagliatamente in seguito, ma semplicemente i livelli inferiori di cache sono più veloci ma sono più costosi, quindi hanno capacità inferiori. Un nanosecondo è un miliardesimo di secondo, quindi una latenza di 0,8 secondi significa che ci vuole meno di un miliardesimo di secondo per restituire un risultato.

In termini di larghezza di banda, la cache della CPU offre miglioramenti significativi delle prestazioni rispetto allo storage e alla RAM tradizionali. Le velocità di lettura della cache L1 e L3 possono raggiungere il picco rispettivamente di 2,3 TB/s e 370 GB/s, mentre la larghezza di banda della RAM è in genere di circa 40 GB/s. Questa maggiore larghezza di banda significa che la cache della CPU può trasferire i dati alla CPU molto più velocemente della RAM.

Per ottenere le massime velocità possibili, la cache della CPU è effettivamente incorporata nel silicio del die della CPU stessa. Ciò riduce al minimo la distanza che i segnali elettrici devono percorrere, mantenendo quindi la latenza il più bassa possibile. Ad esempio, quando la cache L3 è stata spostata per la prima volta dalla scheda madre al die della CPU, il processore dell'epoca (Pentium 4 EE) è stato in grado di ottenere un miglioramento delle prestazioni del 10-20%.

Architettura della cache della CPU

Le moderne CPU generalmente utilizzano tre livelli di cache della CPU etichettati L1-3, con le cache di numero inferiore più vicine ai core della CPU, più veloci e più costose. Ogni singolo core della CPU in una CPU multi-core ha la propria cache L1. Di solito è diviso in due parti, L1I e L1D. L1I viene utilizzato per memorizzare nella cache le istruzioni per la CPU mentre L1D viene utilizzato per memorizzare nella cache i dati su cui devono essere eseguite tali istruzioni.

Ogni core della CPU ha in genere anche la propria cache L2 su una CPU moderna. La cache L2 è più grande e più lenta della cache L1 e viene utilizzata principalmente per archiviare dati che altrimenti non rientrerebbero nella cache L2. Avendo una cache L2 dedicata per core, si evita la contesa della cache. La contesa della cache è il punto in cui diversi core combattono per richiedere spazio nella cache per i propri carichi di lavoro, il che può portare alla cancellazione di dati importanti dalla cache.

La cache L3 è generalmente condivisa tra tutti i core della CPU del processore. Anche in questo caso, la cache L3 è più lenta della cache L2, ma è più economica e più grande. Fornendo una cache condivisa è possibile ridurre la quantità di dati che verrebbero duplicati su livelli inferiori di cache per core.

Mancia: Ad esempio, nelle dimensioni della cache, l'i9-9900K di Intel ha una cache L1 da 64 KB e una cache L2 da 256 KB per core (per un totale di 512 KB L1 e 2 MB L2), ha anche una cache L3 condivisa da 16 MB.

Come viene utilizzata la cache della CPU?

Tutti i livelli della cache della CPU vengono utilizzati per accelerare le prestazioni del processore memorizzando nella cache i dati dalla RAM. Quando una CPU richiede dati, in genere cerca prima nei suoi livelli di cache nel tentativo di ottenere i dati il ​​più velocemente possibile. Se i dati vengono trovati in una cache hit, la CPU può continuare l'elaborazione. Se i dati non sono nella cache, in quello che viene chiamato cache miss, la CPU deve controllare la RAM e quindi il disco rigido se i dati non sono presenti. I livelli più veloci vengono sempre controllati per primi per ottenere le massime prestazioni.

Per aiutare la CPU ad avere i dati di cui ha bisogno nella cache quando ne ha bisogno, la cache tenta di anticipare quali dati la CPU potrebbe aver bisogno in seguito. Ad esempio, se la CPU ha richiesto alcuni dati per un'immagine, sta effettuando il rendering, la cache potrebbe tentare di memorizzare preventivamente nella cache più dati dell'immagine in modo che possano essere inviati alla CPU il più velocemente possibile.