CPU più veloci e che consumano meno, ripensiamo la cache

Un gruppo di ricercatori propone un nuovo schema di organizzazione della cache e nuovi algoritmi per velocizzare i processori e consumare meno energia.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Si parla spesso di processi produttivi come viatico per avere processori sempre più veloci e capaci di consumare meno. È indubbiamente una parte importante, ma non l'unica: l'architettura, cioè il cuore di un chip, è ciò che fa una grande differenza. In un progetto sono molte le parti importanti e tra queste troviamo le cache, che permettono al processore di accedere rapidamente ai dati d'uso più frequente, tagliando drasticamente i tempi di calcolo.

Le cache sono presenti nei processori da decine di anni e in principio costituivano unità fuori dal processore. Adesso però conviviamo con microprocessori dotati molti core, che devono condividere i dati tra loro, per cui lo scambio di informazioni all'interno di un chip assume un aspetto sempre più importante. Il sito Ars Technica riporta che alcuni ricercatori del MIT e dell'Università del Connecticut hanno sviluppato un nuovo insieme di "regole" (algoritmi e non solo) per la gestione della cache all'interno di processori multi-core. In base alle simulazioni che hanno svolto, la nuova struttura sarebbe in grado assicurare un miglioramento prestazionale del 15% e un risparmio energetico del 25%. Grasso che cola in tempi in cui la legge di Moore è messa in seria discussione.

Generalmente le cache sui chip multi-core sono organizzate gerarchicamente. Ogni core ha una propria cache privata, che può essere suddivisa in livelli, sulla base di quanto rapidamente vi si può accedere. C'è anche una cache condivisa, comunemente indicata come cache di ultimo livello (LLC) o L3, a cui tutti i core possono accedere.

La maggior parte dei chip si basa su quello che viene chiamato principio di località spaziotemporale (spaziale e temporale) per gestire la cache. La località spaziale indica che se un core richiede determinati dati, lo stesso core poi richiederà dati nelle vicinanze subito dopo. La località temporale dice invece che se un core richiede un insieme di dati, è probabile che ne abbia nuovamente bisogno nel breve termine. I processori usano questi due modelli per mantenere le cache occupate e velocizzare i calcoli.

Questo principio però nasconde anche dei problemi. Ad esempio quando i dati memorizzati superano la capacità della cache privata del core. In questo caso, il chip spreca molto tempo nel far passare i dati nei vari livelli gerarchici della cache. Così George Kurian, Srini Devadas e Omer Khan hanno deciso di affrontare il tema, cercando strade alternative per mitigare i problemi associati al principio di località spaziotemporale.

Il principio di funzionamento proposto afferma che quando i dati archiviati superano la capacità della cache privata del core, il chip suddivide il dato tra cache privata e LLC. Questo fa sì che il dato sia archiviato laddove può essere "pescato" più velocemente, piuttosto che nella memoria principale. La loro soluzione però ha anche altri benefici, per esempio quando due core lavorano sullo stesso dato e sincronizzano i risultati con la versione che hanno in cache.

La tecnica proposta elimina l'operazione di sincronizzazione, archiviando semplicemente il dato condiviso in una singola posizione nella cache di ultimo livello. Poi i core accedono ai dati a turno, piuttosto che intasare la rete on-chip con le operazioni di sincronizzazione.

Se poi ci sono due core che stanno lavorando sugli stessi dati, ma non li sincronizzano frequentemente, il loro progetto prevede un secondo circuito che tratta questi dati come estensioni della cache privata di ciascun core. Questo permette ad ogni core di avere una propria copia dei dati nella cache di ultimo livello, velocizzando l'accesso alle informazioni.

Lo studio è quindi notevole e sembra offrire buone soluzioni che i colossi dell'industria hi-tech potrebbero prendere in considerazione. D'altronde a volte bastano nuovi design e algoritmi di caching più intelligenti per velocizzare ulteriormente la gestione delle informazioni, ridurre il numero di comandi necessari e consumare, di conseguenza, meno che in passato. Insomma, che i processi produttivi avanzino, ma per il futuro la vera sfida sarà creare architetture sempre più efficienti.