Esiste una corrispondenza tra dimensione della cache e latenza di accesso?


9

Esiste una corrispondenza tra dimensioni della cache e latenza di accesso? A parità di altre condizioni, una cache più grande funziona più lentamente? Se è così, perché? Quanto più lento?


1
Se sei interessato ad esplorare alcuni compromessi nella progettazione della cache, HP ha sviluppato lo strumento CACTI che fornisce stime per latenza e consumo di energia in base alle caratteristiche di progettazione. È inoltre disponibile un'interfaccia Web per la versione 5.3 .
Paul A. Clayton,

Risposte:


5

Gli oggetti nelle tue mani hanno un accesso più rapido degli oggetti nelle tue tasche, che sono più veloci nell'accesso rispetto agli oggetti nell'armadio, che sono più veloci nell'accesso rispetto agli oggetti di Digikey. Ogni tipo successivo di archiviazione che ho elencato è più grande ma più lento del precedente.

Quindi, prendiamo il meglio di entrambi i mondi, rendiamo le tue mani grandi come un magazzino Digikey! No, non funziona, perché ora non sono più le mani. Sono una palla di cannone che ti appesantisce.

Il motivo per cui una memoria più grande è più lenta è l'accesso a distanza . Lo spazio di archiviazione più grande è in media più lontano da te. Questo è vero per gli oggetti fisici e per la RAM.

La memoria del computer occupa spazio fisico. Per tale motivo, i ricordi più grandi sono fisicamente più grandi e alcune posizioni in quel ricordo saranno fisicamente più lontane. Le cose che sono lontane richiedono più tempo per l'accesso, a causa di qualsiasi limite di velocità ci siano. Nel caso delle tue tasche, e Digikey, i limiti di velocità sono la velocità delle tue braccia e i limiti di velocità dell'autostrada.

Nel caso della RAM, i limiti di velocità sono la velocità di propagazione dei segnali elettrici, il ritardo di propagazione di gate e driver e l'uso comune di clock sincroni. Anche se il denaro non fosse un oggetto e tu potessi acquistare tutto ciò che desideri della tecnologia RAM più veloce disponibile oggi, non potresti trarne vantaggio. Disporre un foglio di cache L1 in formato A4, se lo si desidera, e posizionare la CPU al centro. Quando la CPU vuole accedere ad un po 'di memoria proprio nell'angolo della memoria, ci vorrà letteralmente un nanosecondo per arrivare alla richiesta, e un nanosecondo per tornare. E questo non include tutti i ritardi di propagazione attraverso gate e driver. Questo rallenterà seriamente la tua CPU 3GHz.

Poiché la logica sincrona è molto più semplice da progettare rispetto alla logica asincrona, un "blocco" di RAM verrà sincronizzato con lo stesso clock. Se vuoi trasformare l'intera memoria in una cache L1, allora dovresti eseguire il clock dell'intero lotto con un clock lento per far fronte al momento peggiore della posizione più distante in memoria. Ciò significa che le posizioni di memoria distanti ora trattengono quelle locali, che avrebbero potuto essere sincronizzate più velocemente. Quindi, la cosa migliore da fare sarebbe mettere in zona la memoria. La sezione più vicina e più piccola della cache utilizzerà l'orologio più veloce. La prossima sezione più vicina e più piccola userebbe un orologio leggermente più lento, ecc.

E ora hai cache L1 e L2 e RAM.

Il che ci porta al prossimo motivo, il consumo di energia.

La cache consuma effettivamente una notevole quantità di energia. Non solo la memoria stessa, ma tutta la logica che la circonda che gestisce la mappatura tra le righe della cache e la memoria principale. L'aumento delle prestazioni di questa logica aggiuntiva può comportare un aumento del consumo energetico. Ora, per alcune applicazioni (mobile, incorporato) hai ancora più incentivi per mantenere piccola la cache.

Vedi i compromessi del design della cache per l'ottimizzazione di potenza e prestazioni: un caso di studio (Ching-Long Su e Alvin M. Despain, 1995).


1
+1 Mi piace la tua risposta. Colpisce tutti i punti rilevanti e ne esegue il backup. Facile da leggere
Gustavo Litovsky,

è giusto? la risposta si basa sul ritardo nella velocità della luce di un pollice rispetto a diversi pollici?
Andyz Smith,

1
Questa risposta è buona come panoramica generale, ma sospetto che non risponda alla domanda iniziale. Non si dovrebbe essere un esperto di arArch per rendersi conto che la cache in formato A4 non è pratica. Credo che OP abbia chiesto un ragionevole aumento delle dimensioni della cache e in che modo questo aumento influirà sulla latenza dell'accesso alla cache.
Vasiliy,

1
@AndyzSmith - È una grossa esagerazione e eccessiva semplificazione, ma penso che ottenga il punto generale, che ad un certo punto, che la cache L1 non può essere ingrandita indefinitamente. Ad un certo punto, le leggi della fisica entrano e la rallentano.
Rocketmagnet,

Il ritardo di un segnale su chip non è la velocità della luce, è un valore più complicato calcolato considerando la rete / filo più la capacità di gate pilotata come una rete RLC. Non è abbastanza lungo per essere una linea di trasmissione. Più lunga è la rete, più grande deve essere il cancello di guida o è necessario inserire buffer come ripetitori. Tutto ciò consuma anche più energia.
pjc50,

4

Tralasciando tutti i fattori economici / prestazionali / di consumo energetico, la risposta alla tua domanda è: dipende da molti fattori microarchitettura.

Ad esempio, vedere questo riferimento : la latenza di accesso L1 misurata per tutti i processori in prova è di 4 cicli di clock. Le frequenze dei processori sono quasi le stesse, ma le dimensioni della cache L1 differiscono fino a un fattore 3.

Il motivo della latenza costante a L1 tra diversi processori diversi nel test sopra è radicato nella microarchitettura della cache: l'accesso alla cache stesso (recupero dei dati dalla memoria) richiede solo un singolo ciclo di clock. Altri tre cicli vengono spesi per decodificare l'accesso, verificare la presenza di dati e altro ancora ... Il numero di fasi aggiuntive è lo stesso tra i processori in prova, quindi le latenze di accesso sono le stesse.

Nonostante l'esempio sopra, non si dovrebbe concludere che la latenza della cache è indipendente dalle dimensioni della cache. Se qualcuno tentasse di implementare una cache L1 ridicolmente grande, anche la logica che esegue tutte le operazioni richieste per una lettura della cache diventerebbe grande. Ad un certo punto, il ritardo di propagazione attraverso tutta questa logica sarebbe troppo lungo e le operazioni che avevano precedentemente effettuato un solo ciclo di clock avrebbero dovuto essere suddivise in diversi cicli di clock. Ciò aumenterà la latenza.

Supponendo che la cache in questione sia implementata in SRAM, i moduli maggiormente interessati dalle dimensioni della cache sono: decodificatori di riga e mux. Tuttavia, anche gli amplificatori di rilevamento saranno interessati da cache molto grandi: un'oscillazione di tensione minore su una linea di bit a causa della maggiore capacità richiederà un amplificatore di rilevamento "più forte". Detto questo, l'effetto più grave sulla velocità logica verrà aggiunto dalla capacità delle interconnessioni a filo: questa capacità ha più di una dipendenza lineare dalla dimensione della SRAM. I dettagli esatti sono specifici dell'implementazione.

Ora, le cache L1 sono piuttosto stabili nelle loro latenze perché le loro prestazioni sono le più cruciali. Se si tenta di analizzare le cache L2 e L3, l'immagine complica molto.

L'immagine complica molto di più quando si considerano i processori multi-core: hanno una logica aggiuntiva per garantire la coerenza della cache . Ciò porta a un ulteriore fattore che influenza la latenza dell'accesso alla cache: la cronologia degli accessi alla memoria di tutti i core.

Sommario

Come vedi la tua domanda è lungi dall'essere banale e non è possibile rispondere completamente. Tuttavia, se consideri cache preferibilmente economiche e prestazionali, direi che le loro dimensioni non influiranno sulla latenza in alcun modo apprezzabile.

Per i lettori interessati:

Questo riferimento è un'analisi molto approfondita dei fattori di prestazione delle moderne CPU. C'è molto materiale relativo alla cache lì dentro. Richiede una profonda conoscenza dell'architettura dei computer e dei principi della microarchitettura (in alternativa, un buon riassunto degli argomenti che è necessario conoscere per diventare un professionista in questo campo).


Grazie per la risposta! Le tue risposte e @ Rocketmagnet sono praticamente complementari. Spero di poter scegliere entrambi. Ho già ricevuto la mia copia della referenza citata e ultimamente sono stato molto interessato all'argomento, quindi alla domanda.
Ivanmp,

perché la logica per eseguire un'operazione di lettura dipende dalla dimensione della cache. Perché "diventa troppo lungo" a quale numero specifico di indirizzi c'è un salto discreto. o se nessun salto discreto, qual è la formula per il tempo di accesso rispetto alle dimensioni?
Andyz Smith,

puoi essere specifico su quale componente: "La ricorrenza critica, quindi, è un sommatore, un decodificatore, la linea di parole SRAM, le linee di bit SRAM, gli amplificatori di rilevamento, i mux di indirizzamento dei byte e il bypass mUX ". fa sì che la logica diventi grande? it.wikipedia.org/wiki/Sum_addressed_decoder
Andyz Smith

@AndyzSmith, la formula del tempo di accesso rispetto alle dimensioni può essere data solo da qualcuno che progetta e simula la cache. Nel riferimento che ho pubblicato puoi vedere che ci vogliono 4 cicli di clock per ottenere dati da L1, ma nessuno tenta di stimare i giochi associati a queste letture. Chiedere una formula non è in pratica una domanda pratica senza molte informazioni specifiche sull'implementazione.
Vasiliy,

1
@AndyzSmith, supponendo che la cache in questione sia implementata in SRAM, i moduli maggiormente interessati dalla dimensione della cache sono: decodificatori di riga e mux. Tuttavia, anche gli amplificatori di rilevamento saranno interessati da cache molto grandi: oscillazione di tensione più piccola su una linea di bit a causa della maggiore capacità -> amplificatore di rilevamento "più forte". Detto questo, l'effetto più grave sulla velocità logica verrà aggiunto dalla capacità delle interconnessioni a filo: questa capacità ha più di una dipendenza lineare dalla dimensione della SRAM. Ancora una volta, i dettagli sono specifici dell'implementazione.
Vasiliy,

3

Ingegnere del test della cache della CPU qui - Dave Tweed nei commenti ha le spiegazioni corrette. La cache è dimensionata per massimizzare le prestazioni al prezzo atteso dalla CPU. La cache è generalmente il più grande consumatore di spazio die e quindi le sue dimensioni fanno una grande differenza economica (e di prestazioni).

Dai un'occhiata alla pagina della famiglia di CPU Intel Ivy Bridge: http://ark.intel.com/products/codename/29902/Ivy-Bridge

L'estremità superiore di Xeon viene fornita con 30 MB di cache, ha 12 core e costa circa $ 2700. L'i3 di fascia bassa con 3 MB di cache (i3-3217) costa solo $ 500 per un intero laptop (non riesco a trovarlo singolarmente).

Xeon offre le massime prestazioni ma costa anche di più per la produzione e il collaudo. L'i3 è molto più economico ma il compromesso è una dimensione dello stampo più piccola di cui la cache è la parte più grande.


2
Risposta molto interessante Ma come ho affermato nella domanda, non sto cercando la risposta economica, ovvia. Quello che sto cercando di capire riguarda le prestazioni relative all'accesso a una cache molto grande (> 512 MB). Le dimensioni degraderebbero le prestazioni della cache?
Ivanmp,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.