Dove si trovano esattamente le cache L1, L2 e L3 nel computer?


32

Dove si trovano esattamente le cache L1, L2 e L3 nel computer?

Lo so, usiamo la cache per aumentare le prestazioni selezionando DATI e ISTRUZIONI dalla cache piuttosto che dalla memoria principale.

Di seguito sono le mie domande

  1. Dove si trova esattamente la cache L1? . è sul chip della CPU?
  2. Dove si trova esattamente la cache L2?

  3. Dove si trova esattamente la cache L3? è sulla scheda madre?

Penso che gli ultimi processori SMP utilizzino cache a 3 livelli, quindi voglio capire la gerarchia a livello di cache e la loro architettura.


1
La gerarchia esatta varia tra processori diversi. Per scoprire la gerarchia della cache sul proprio computer, è possibile utilizzare l'utilità CoreInfo.exe di SysInternal ( technet.microsoft.com/en-us/sysinternals/cc835722.aspx )

2
Inoltre, più grande diventa la cache (L3> L2> 1), più si trova dal nucleo stesso (ad esempio la latenza di accesso a L3 superiore a L1).

Risposte:


48

Iniziamo con questo:

Penso che gli ultimi processori SMP utilizzino cache a 3 livelli, quindi voglio capire la gerarchia a livello di cache e la loro architettura.

Per capire le cache devi sapere alcune cose:

Una CPU ha registri. I valori possono essere utilizzati direttamente. Niente è più veloce.

Tuttavia non è possibile aggiungere registri infiniti a un chip. Queste cose occupano spazio. Se ingrandiamo il chip diventa più costoso. Parte di ciò è perché abbiamo bisogno di un chip più grande (più silicio), ma anche perché aumenta il numero di chip con problemi.

(Immagina un wafer immaginario con 500 cm 2. Ne ho tagliato 10, ogni chip di 50 cm 2 di dimensioni. Uno di questi è rotto. Lo scarto e ne rimango 9 gettoni funzionanti. Ora prendo lo stesso wafer e taglio un centinaio di chip, ciascuno dieci volte più piccolo. Uno di questi se rotto. Scarto il chip rotto e rimango con 99 chip funzionanti. Questa è una frazione della perdita che altrimenti avrei avuto. Per compensare il più grande chip avrei bisogno di chiedere prezzi più alti. Più che il prezzo del silicio extra)

Questo è uno dei motivi per cui vogliamo chip piccoli e convenienti.

Tuttavia, più la cache è vicina alla CPU, più velocemente è possibile accedervi.

Questo è anche facile da spiegare; I segnali elettrici viaggiano vicino alla velocità della luce. È veloce ma comunque una velocità finita. CPU moderna funziona con clock GHz. Anche questo è veloce. Se prendo una CPU da 4 GHz, un segnale elettrico può viaggiare di circa 7,5 cm per tick di clock. Sono 7,5 cm in linea retta. (I chip sono tutt'altro che connessioni diritte). In pratica avrai bisogno di molto meno di quei 7,5 cm poiché ciò non consente in alcun tempo ai chip di presentare i dati richiesti e al ritorno del segnale.

In conclusione, vogliamo che la cache sia fisicamente il più vicino possibile. Ciò significa grandi chip.

Questi due devono essere bilanciati (prestazioni vs. costo).

Dove si trovano esattamente le cache L1, L2 e L3 in un computer?

Supponendo che l'hardware sia solo in stile PC (i mainframe sono piuttosto diversi, incluso il rapporto prestazioni / costi);

IBM XT
Quello originale da 4,77 MHz: nessuna cache. La CPU accede direttamente alla memoria. Una lettura dalla memoria seguirà questo schema:

  • La CPU inserisce l'indirizzo che desidera leggere sul bus di memoria e afferma il flag di lettura
  • La memoria inserisce i dati sul bus dati.
  • La CPU copia i dati dal bus dati nei suoi registri interni.

80286 (1982)
Ancora nessuna cache. L'accesso alla memoria non era un grosso problema per le versioni a bassa velocità (6Mhz), ma il modello più veloce funzionava fino a 20Mhz e spesso doveva ritardare quando si accedeva alla memoria.

Quindi ottieni uno scenario come questo:

  • La CPU inserisce l'indirizzo che desidera leggere sul bus di memoria e afferma il flag di lettura
  • La memoria inizia a mettere i dati sul bus dati. La CPU attende.
  • La memoria ha terminato di ottenere i dati ed è ora stabile sul bus dati.
  • La CPU copia i dati dal bus dati nei suoi registri interni.

Questo è un ulteriore passo speso aspettando la memoria. Su un sistema moderno che può essere facilmente 12 passaggi, motivo per cui abbiamo cache .

80386 : (1985)
Le CPU diventano più veloci. Sia per orologio, sia funzionando a velocità di clock più elevate.
La RAM diventa più veloce, ma non tanto più veloce delle CPU.
Di conseguenza sono necessari più stati di attesa. Alcune schede madri aggirare questo con l'aggiunta di cache (che sarebbe 1 ° cache di livello) sulla scheda madre.

Una lettura dalla memoria ora inizia con un controllo se i dati sono già nella cache. Se lo è, viene letto dalla cache molto più veloce. In caso contrario, la stessa procedura descritta con l'80286

80486 : (1989)
Questa è la prima CPU di questa generazione che ha un po 'di cache sulla CPU.
È una cache unificata da 8 KB, il che significa che viene utilizzata per dati e istruzioni.

In questo periodo si arriva comune per mettere 256KB di memoria statica veloce sulla scheda madre, come 2 ° cache di livello. Così 1 ° cache di livello sulla CPU, 2 ° cache di livello sulla scheda madre.

Scheda madre 486 con posizione della CPU e cache di secondo livello contrassegnata

80586 (1993)
Il 586 o Pentium-1 utilizza una cache di livello diviso 1. 8 KB ciascuno per dati e istruzioni. La cache è stata suddivisa in modo tale che le cache di dati e istruzioni possano essere ottimizzate individualmente per il loro uso specifico. Hai ancora una 1a cache piccola ma molto veloce vicino alla CPU e una 2a cache più grande ma più lenta sulla scheda madre. (A una distanza fisica maggiore).

Nella stessa area Pentium 1 Intel ha prodotto il Pentium Pro ('80686'). A seconda del modello, questo chip aveva una cache a bordo da 256 KB, 512 KB o 1 MB. Era anche molto più costoso, il che è facile da spiegare con la seguente immagine.

Immagine di una CPU pentium Pro, modello cache 256 KB

Si noti che metà dello spazio nel chip viene utilizzato dalla cache. E questo è per il modello da 256 KB. Tecnicamente era possibile più cache e alcuni modelli venivano prodotti con cache da 512 KB e 1 MB. Il prezzo di mercato per questi era alto.

Si noti inoltre che questo chip contiene due matrici. Uno con la CPU reale e 1 ° cache e una seconda matrice con 256KB 2 nd cache.

Pentium 2

Il pentium 2 è un pentium pro core. Per ragioni di economia no 2 ° cache è nella CPU. Invece ciò che viene venduto aa CPU noi una PCB con chip separati per la CPU (e 1 ° cache) e 2 ° cache.

Man mano che la tecnologia avanza e iniziamo a creare chip con componenti più piccoli, diventa finanziariamente possibile rimettere la seconda cache nella matrice effettiva della CPU. Tuttavia c'è ancora una divisione. Molto veloce 1 ° di cache si stringeva alla CPU. Con una 1a cache per core della CPU e una 2a cache più grande ma meno veloce accanto al core.

Immagine di una 'CPU' pentium 2 (sia con che senza coperchio)

Pentium-3
Pentium-4
Questo non cambia per il pentium-3 o il pentium-4.

In questo periodo abbiamo raggiunto un limite pratico sulla velocità con cui possiamo sincronizzare le CPU. Un 8086 o un 80286 non necessitavano di raffreddamento. Un pentium-4 funzionante a 3.0GHz produce così tanto calore e utilizza così tanta potenza che diventa più pratico mettere due CPU separate sulla scheda madre anziché una veloce.

(Due CPU da 2,0 GHz consumerebbero meno energia di una singola CPU da 3,0 GHz identica, ma potrebbero fare più lavoro).

Questo potrebbe essere risolto in tre modi:

  1. Rendi le CPU più efficienti, in modo che facciano più lavoro alla stessa velocità.
  2. Usa più CPU
  3. Utilizzare più CPU nello stesso "chip".

1) È un processo in corso. Non è nuovo e non si fermerà.

2) È stato fatto all'inizio (ad es. Con doppie schede madri Pentium-1 e chipset NX). Fino ad ora quella era l'unica opzione per costruire un PC più veloce.

3) Richiede CPU in cui più "CPU" sono integrati in un singolo chip. (Abbiamo quindi chiamato quella CPU una CPU dual core per aumentare la confusione. Grazie marketing :))

In questi giorni ci limitiamo a fare riferimento alla CPU come 'core' per evitare confusione.

Ora ottieni chip come il pentium-D (duo), che è fondamentalmente due core pentium-4 sullo stesso chip.

Early pentium-D (2 core P4)

Ricordi l'immagine del vecchio pentium-Pro? Con l'enorme dimensione della cache?
Vedi le due grandi aree in questa immagine?

Si scopre che possiamo condividere quella seconda cache tra entrambi i core della CPU. Velocità scenderebbe leggermente, ma un 512KiB condiviso 2 ° cache è spesso più veloce l'aggiunta di due indipendenti 2 ° livello cache di metà delle dimensioni.

Questo è importante per la tua domanda.

Significa che se leggi qualcosa da un core della CPU e successivamente provi a leggerlo da un altro core che condivide la stessa cache che otterrai un hit nella cache. Non sarà necessario accedere alla memoria.

Poiché i programmi migrano tra le CPU, a seconda del carico, del numero di core e dello scheduler, è possibile ottenere prestazioni aggiuntive bloccando i programmi che utilizzano gli stessi dati sulla stessa CPU (hit della cache su L1 e inferiori) o sulle stesse CPU che condividere la cache L2 (e quindi ottenere mancati su L1, ma i risultati sulla cache L2 vengono letti).

Quindi nei modelli successivi vedrai cache di livello 2 condivise.

Immagine di una CPU Core2 aperta

Se stai programmando per CPU moderne, hai due opzioni:

  1. Non si disturbi. Il sistema operativo dovrebbe essere in grado di pianificare le cose. Lo scheduler ha un grande impatto sulle prestazioni del computer e le persone hanno speso molto per ottimizzarlo. A meno che tu non faccia qualcosa di strano o non stia ottimizzando per un modello specifico di PC, stai meglio con lo scheduler predefinito.
  2. Se hai bisogno delle ultime prestazioni e un hardware più veloce non è un'opzione, prova a lasciare i gradini che accedono agli stessi dati sullo stesso core o su un core con accesso a una cache condivisa.


Mi rendo conto di non aver ancora menzionato la cache L3, ma non sono diversi. Una cache L3 funziona allo stesso modo. Più grande di L2, più lento di L2. Ed è spesso condiviso tra i core. Se è presente, è molto più grande della cache L2 (altrimenti non avrebbe senso) ed è spesso condiviso con tutti i core.

modernCPUwithL3.png


Che grande riscrittura!
lukas.pukenis,

"ma una seconda cache condivisa da 512 MB è" Penso che sia 512 KB.
lukas.pukenis,

una risposta così eccellente! grazie per aver condiviso man
samsamara il

14

Che le cache sono interne al processore. Alcuni sono condivisi tra i core, altri sono individuali, dipende dall'implementazione. Ma tutti si trovano su chip. Alcuni dettagli: Processore Intel Intel® Core ™ i7, preso qui :

  • Un'istruzione da 32 KB e cache di primo livello di dati da 32 KB (L1) per ciascun core
  • Una cache di secondo livello (L2) con istruzioni / dati condivisi da 256 KB per ciascun core
  • Cache di ultimo livello (L3) con istruzioni / dati condivisi da 8 MB, condivisa tra tutti i core

Foto del chip del processore (scusate, non conosco il modello esatto). Puoi vedere che la cache occupa un'area significativa sul chip:

testo alternativo


1
Se per chip intendi il dado al silicio, l'ultimo livello di cache può essere fuori dal chip. Ad esempio, IBM zEC12 ( en.wikipedia.org/wiki/IBM_zEC12_(microprocessor) ) utilizza un modulo multichip con sei chip di processore e due chip di cache condivisi con cache L4. Il Crystal Well di Intel fornisce anche una cache off-chip L4 (anche usando eDRAM).
Paul A. Clayton,

5

La cache è quasi sempre su chip per un accesso più rapido. Ecco un bel diagramma che mostra una matrice di CPU Intel quad core con la cache L3 evidenziata. Quando si osservano immagini come questa di una matrice della CPU, aree di grandi dimensioni uniformi sono in genere banchi di memoria su chip utilizzati come cache.

Nehalem Die (http://www.legitreviews.com/article/824/1/)


5

In questi giorni le cache sono tutte morte della CPU. A volte si trovavano sulla scheda madre o sulla scheda figlia della CPU, ma non credo che ci siano processori attuali che utilizzano cache di chip.


1
+1 per la parte in questi giorni . Ai vecchi tempi era diverso. (es. cache L2 nella scheda madre all'ora di Cyrix / Pentium-1)
Hennes

0

Non sono sicuro di L3, ma L1 / L2 si trova sempre nella CPU. Per quanto riguarda la gerarchia, in pratica L1 è in genere la cache delle istruzioni, L2 e L3 sono cache dei dati.


L1 può essere cache condivisa (istruzioni e cache dati). Esistono anche CPU con dati L1 e cache istruzioni L1. E la cache L2 non si trova sempre sulla CPU (anche L1 non ha bisogno di essere sulla CPU, ma ricordo solo un computer dove era il caso).
Hennes,

0

L1 si trova sul chip della CPU, L2 si trova tra il processore e la memoria principale, ma c'è un punto da sapere che in alcuni sistemi L2 si trova sul chip della CPU mentre in alcuni altri sistemi L2 si trova sulla scheda madre stessa, e L3 è costantemente situato sul chip della scheda madre.

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.