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?
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?
Risposte:
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).
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).
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.