Gerarchia cache a tre livelli

La presentazione dei nuovi processori Intel Core i7 è alle porte. In attesa dei benchmark, iniziamo con il dare un'occhiata all'architettura su cui saranno basati: Nehalem.

Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Gerarchia cache a tre livelli

La gerarchia di memoria di Conroe era veramente semplice e Intel è stata capace di concentrarsi sulle prestazioni della cache L2 condivisa, che era la migliore soluzione per un'architettura indirizzata ai dual-core. Con Nehalem, gli ingegneri hanno iniziato da zero e sono arrivati alle stesse conclusioni dei propri avversari: una cache L2 condivisa non era adatta per un'architettura quad-core nativa. I differenti core possono svuotare i dati di un altro core con troppa frequenza e sicuramente avrebbero coinvolto troppi problemi di bus interni per rifornire tutti e quattro i core con un bandwidth sufficiente, mantenendo la latenza abbastanza bassa. Per risolvere il problema, gli ingegneri hanno donato a ogni core una cache L2. Dato che è dedicata a un singolo core ed è relativamente piccola (256 KB), le prestazioni sono molto elevate; la latenza, in particolare, è migliorata significativamente rispetto al core Penryn - da 15 cicli si è passati a circa 10 cicli.

Inoltre, c'è un'enorme cache L3 (8 MB) che amministra le comunicazioni tra i core. Sebbene inizialmente la gerarchia della cache del core Nehalem ricordi quella del Barcelona, il lavoro della cache L3 è molto differente da quello di AMD - è inclusiva di tutti i livelli più bassi di gerarchia della cache. Ciò significa che se un core prova ad accedere a un dato e questo non è presente nella cache L3, non c'è bisogno di controllare le altre cache private dei core - il dato non si troverà nemmeno lì. Al contrario, se i dati sono presenti, quattro bit associati con ogni linea della memoria cache (un bit per core) mostrano se i dati sono potenzialmente presenti oppure no (potenzialmente, ma non effettivamente presenti) nella cache di livello più basso di un altro core e quale.

Questa tecnica è efficace per assicurare la coerenza delle cache private, perché limita il bisogno di interscambi tra i core. Ha lo svantaggio, tuttavia, di disperdere parte della memoria cache con un dato che è già in altri livelli della cache. Questo problema è alquanto mitigato, tuttavia, dal fatto che le cache L1 e L2 sono relativamente piccole rispetto alla cache L3 - tutti i dati nelle cache L1 e L2 richiedono al massimo 1.25 MB degli 8 MB disponibili.

Come sul Barcelona, la cache L3 non opera alla stessa frequenza del resto del chip. Conseguentemente, la latenza dell'accesso a questo livello è variabile, ma dovrebbe essere vicino ai 40 cicli.

L'unica reale delusione nella nuova gerarchia della cache del Nehalem è la cache L1. Il bandwidth dell'instruction cache non è stato incrementato - è ancora a 16 byte per ciclo rispetto ai 32 del Barcelona. Questo potrebbe creare uno svantaggio nelle architetture server, poiché le istruzioni a 64 bit sono più grandi di quelle a 32 bit, specialmente perché il Nehalem ha un decoder in più del Barcelona, il che mette ancora più sotto pressione la cache. Come per i dati nella cache, la sua latenza è stata incrementata a quattro cicli rispetto ai tre del Conroe, agevolando frequenze di clock superiori. Per finire con una nota positiva, gli ingegneri Intel hanno aumentato il numero di data cache misses della cache L1 che l'architettura può processare in parallelo.