Perché la cache L1 è più veloce della cache L2?


14

Sto cercando di capire perché alcune memorie cache della CPU sono più veloci di altre. Quando si confronta la memoria cache con qualcosa come la memoria principale, ci sono differenze nel tipo di memoria (SRAM vs DRAM) e problemi di localizzazione (su chip vs dover attraversare un bus di memoria) che possono influire sulla velocità di accesso. Ma L1 e L2 sono generalmente sullo stesso chip, o almeno sullo stesso die, e penso che siano lo stesso tipo di memoria. Quindi perché L1 è più veloce?


9
Perché è costruito in questo modo.
Ignacio Vazquez-Abrams,

Esistono diversi modi per creare lo stesso tipo di RAM. In alcuni modi si ottiene una RAM più veloce della RAM costruita in altri modi.
Ignacio Vazquez-Abrams,

Lo stesso motivo per cui la tua RAM DDR è più veloce del tuo HDD ...
hassan789

1
correlate: la mia risposta e una domanda SO sulle dimensioni della cache spiega anche alcuni motivi di compromesso di velocità / consumo di energia per avere cache multi-livello. Fondamentalmente, rendere una cache superveloce costa potenza e die-area per fare di più in parallelo ed è incompatibile con le grandi dimensioni / associatività desiderate in una cache di ultimo livello.
Peter Cordes,

Risposte:


24

No, non sono lo stesso tipo di RAM, anche se si trovano sullo stesso chip che utilizza lo stesso processo di fabbricazione.

Di tutte le cache, la cache L1 deve avere il tempo di accesso più veloce possibile (latenza più bassa), rispetto a quanta capacità deve avere per fornire un tasso di "hit" adeguato. Pertanto, è costruito utilizzando transistor più grandi e binari metallici più ampi, scambiando spazio e potenza per la velocità. Le cache di livello superiore devono avere capacità più elevate, ma possono permettersi di essere più lente, quindi utilizzano transistor più piccoli che sono imballati più strettamente.


3
Questo è quello che sto cercando, grazie. Conosci qualche buona fonte in cui posso leggere ulteriormente le differenze?
ConditionRacer

No, non a casaccio. I dettagli di questi compromessi spazio / potenza / tempo, così come le scelte relative alla capacità e all'architettura della cache, sono strettamente legati ai dettagli proprietari dei processi del produttore, quindi viene pubblicato molto poco (se non altro) al riguardo. Posso solo parlare in termini generali.
Dave Tweed

10
L1 è anche più piccolo, il che significa che la propagazione del segnale attraverso di essa richiede meno cicli di clock: spesso la dimensione di L1 è decisa come la più grande memoria accessibile in 1 (o 2) clock.
Brian Drummond,

6
Oltre al punto di Brian Drummond, L1 utilizza in genere anche l'accesso parallelo ai tag di dati. In genere L2 accede prima ai tag (determinando in che modo in caso di hit), quindi ai dati, aumentando la latenza ma risparmiando energia (significativo dato dimensioni maggiori, maggiore associatività e tasso di missioni più elevato). (L'accesso L2 in genere inizia anche dopo la conferma di un mancato L1 che aumenta la sua latenza effettiva.)
Paul A. Clayton

@BrianDrummond - più piccolo sia in termini di carico del filo, sia di profondità del cancello (non credo che sia ovvio dal tuo commento).
Sean Houlihane,

5

L1 viene generalmente utilizzato come memoria per le istruzioni decodificate, mentre L2 è una cache generale per un singolo core. Più bassa è la cache, più piccola è la sua dimensione e più veloce è di solito. Come regola generale per i processori PC:

Cache L1: accesso al ciclo di 2-3 clock

Cache L2: accesso al ciclo di circa 10 clock

Cache L3: ~ 20-30 accesso al ciclo dell'orologio

Il design della cache L1 dovrebbe essere quello di massimizzare la frequenza di hit (la probabilità che l'indirizzo di istruzione desiderato o l'indirizzo di dati si trovino nella cache) mantenendo la latenza della cache il più bassa possibile. Intel utilizza una cache L1 con una latenza di 3 cicli. La cache L2 è condivisa tra una o più cache L1 ed è spesso molto, molto più grande. Mentre la cache L1 è progettata per massimizzare la frequenza di hit, la cache L2 è progettata per ridurre al minimo la penalità di mancato pagamento (il ritardo dovuto al verificarsi di un mancato L1). Per i chip con cache L3, lo scopo è specifico per la progettazione del chip. Per Intel, le cache L3 sono apparse per la prima volta in sistemi multi-processore a 4 vie (processori Pentium 4 Xeon MP) nel 2002. Le cache L3 in questo senso hanno ridotto notevolmente i ritardi negli ambienti multi-thread e hanno eliminato l'FSB. Al tempo,

Citazione fornita qui dalla risposta di "Pinhedd".


1
L1 viene utilizzato anche per i dati in generale, ma è vero che spesso i dati L1 e le istruzioni L1 sono separati mentre L2 è condiviso: programmers.stackexchange.com/questions/44731/… (uno dei motivi per cui può essere condiviso è che ha più modi ).
Guy Sirton,

1
È comune per i processori avere istruzioni separate e cache di dati a livello L1. Certamente vero per i successivi chip x86 e SPARC. E alcune cache di istruzioni L1 non memorizzano istruzioni decodificate. Il Pentium 4 memorizzava le istruzioni decodificate, ma poi Intel è tornata alle normali cache I, quindi recentemente ha aggiunto cache delle istruzioni decodificate nei propri chip.
Craig S. Anderson,

3

Esistono diversi motivi per cui la velocità è inversamente proporzionale alla dimensione. Il primo che viene in mente è il dominio fisico dei conduttori, in cui la propagazione del segnale è limitata a un fattore dalla velocità della luce. Un'operazione può richiedere il tempo necessario a un segnale elettrico per percorrere la distanza più lunga all'interno del riquadro di memoria e viceversa. Un altro motivo correlato è la separazione dei domini di clock. Ogni CPU esegue il proprio generatore di clock, che consente alla CPU di funzionare su clock multi-GHz. La cache di livello 1 viene eseguita e sincronizzata con l'orologio della CPU, che è il più veloce nel sistema. La cache di livello 2 deve invece servire molte CPU ed è in esecuzione in un dominio di clock diverso (più lento). Non solo il clock L2 più lento (riquadro più grande) ma attraversare un confine del dominio di clock aggiunge un altro ritardo. Poi ovviamente ci sono i problemi di fan-out (già menzionati).


1

Oltre alle caratteristiche prestazionali intrinseche, anche la località ha un ruolo (L1 è più vicino alla CPU). Secondo quanto ogni programmatore dovrebbe sapere sulla memoria :

È interessante notare che per la cache L2 on-die una grande parte (probabilmente anche la maggior parte) del tempo di accesso è causata da ritardi nei cavi. Questa è una limitazione fisica che può solo peggiorare con l'aumentare delle dimensioni della cache. Solo la riduzione dei processi (ad esempio, passando da 60nm per Merom a 45nm per Penryn nella gamma Intel) può migliorare quei numeri.


Penso che questo si applichi principalmente dove le cache sono grandi - Questo non si applica a tutti i tipi di processori (anche se il ritardo del filo è significativo).
Sean Houlihane,
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.