Perché la memoria cache della CPU è così veloce?

55

Che cosa rende la memoria cache della CPU molto più veloce della memoria principale? Posso vedere alcuni vantaggi in un sistema di cache a più livelli. Ha senso che una cache più piccola sia più veloce da cercare. Ma ci deve essere dell'altro.

    
posta ConditionRacer 31.03.2014 - 02:00
fonte

6 risposte

108

Nel caso di una cache della CPU, è più veloce perché si trova sullo stesso die del processore. In altre parole, i dati richiesti non devono essere trasferiti sul processore; è già lì.

Nel caso della cache su un disco rigido, è più veloce perché è nella memoria a stato solido, e non è ancora sui piatti rotanti.

Nel caso della cache su un sito web, è più veloce perché i dati sono già stati recuperati dal database (che, in alcuni casi, potrebbe essere localizzato in qualsiasi parte del mondo).

Quindi, si tratta principalmente di località . La cache elimina il passaggio trasferimento dati .

La località è un modo elegante per dire che i dati sono "vicini", nel tempo o nello spazio. La memorizzazione nella cache di una memoria più piccola, più veloce (ma generalmente più costosa) funziona perché in genere una quantità relativamente piccola dei dati complessivi sono i dati a cui si accede più spesso.

Ulteriori letture
Cache (Computing) su Wikipedia

    
risposta data 31.03.2014 - 02:11
fonte
32

È più veloce perché è più vicino e perché è SRAM non DRAM.

SRAM è e può essere considerevolmente più veloce della DRAM, i valori sono mantenuti staticamente (la S in S RAM) in modo che non debbano essere aggiornati, il che porta via i cicli. La DRAM è dinamica, come piccole batterie ricaricabili, devi ricaricare regolarmente quelle in modo che non si scarichino e diventino zeri. Questo ruba il tempo di ciclo oltre a come devi accedere ai bit, ecc.

Essendo sullo stesso dado o più vicino il processore riduce il round trip, sia L1 che L2 sono più veloci della DRAM da una prospettiva di accesso.

La SRAM è più veloce da accedere rispetto alla DRAM che porta le mele alle mele, e le cache sono solitamente su chip o più vicine o su bus più veloci della DRAM, rendendo anche il tempo di accesso più veloce.

    
risposta data 31.03.2014 - 03:27
fonte
20

Una cosa che dovrebbe essere menzionata esplicitamente è l'impatto della velocità della luce. In questo video Grace Hopper mostra un pezzo di filo lungo circa un piede, ovvero quanto può viaggiare un segnale elettrico in un nanosecondo *. Se una CPU funziona a 3GHz, allora ciò implica una distanza di 4 "per ciclo di clock.Questo è un limite fisico duro alle velocità di accesso alla memoria.Questa è una grande parte del motivo per cui essere vicino alla CPU (come la cache L1 è), consente memoria per essere più veloce.

EDIT * in realtà quanto lontano la luce può viaggiare nel vuoto, la distanza tra rame / silicio è inferiore.

    
risposta data 31.03.2014 - 06:54
fonte
4

Altre risposte coprivano già tutti i bit rilevanti: località (e il costo di trasferimento dati associato, larghezza e clock del bus e così via); velocità della luce (di nuovo, associata al trasferimento dei costi e della larghezza e della velocità del bus); diversa tecnologia di memoria (SRAM vsDRAM). Tutto questo alla luce del equilibrio costi / prestazioni .

Un bit che è stato tralasciato ed è appena menzionato nel commento di Darkhogg: i cache più grandi hanno una percentuale di risultati migliore ma una latenza più lunga. Più livelli di cache dove sono stati introdotti anche per affrontare questo compromesso.

C'è un'eccellente domanda e risposta su questo punto su elettronica SE

Dalle risposte, mi sembra che un punto da evidenziare sia: la logica che esegue tutte le operazioni necessarie per una lettura cache non è così semplice (specialmente se la cache è impostata-associativa, come la maggior parte delle cache oggi). Richiede porte e logica. Quindi, anche se escludiamo costi e spazio per lo spazio

If someone would try to implement a ridiculously large L1 cache, the logic which performs all the required operations for a cache read would also become large. At some point, the propagation delay through all this logic would be too long and the operations which had taken just a single clock cycle beforehand would have to be split into several clock cycles. This will rise the latency.

    
risposta data 04.04.2014 - 15:57
fonte
4

Ci sono molti buoni punti sollevati nelle altre risposte, ma sembra mancare un fattore: la decodifica dell'indirizzo.

Quanto segue è una semplificazione eccessiva di come funziona la decodifica dell'indirizzo di memoria, ma dà una buona idea del perché i grandi chip DRAM sono generalmente piuttosto lenti.

Quando il processore deve accedere alla memoria, invia un comando al chip di memoria per selezionare la parola specifica che desidera utilizzare. Questo comando è chiamato Selezione indirizzo colonna (per ora ignoreremo gli indirizzi di riga). Il chip di memoria ora deve attivare la colonna richiesta, che esegue inviando l'indirizzo in una cascata di porte logiche per creare una singola scrittura che si connetta a tutte le celle della colonna. A seconda di come è implementato, ci sarà una certa quantità di ritardo per ogni bit di indirizzo fino a quando il risultato non risulterà dall'altra parte. Questo è chiamato la latenza CAS della memoria. Poiché questi bit devono essere esaminati in sequenza, questo processo richiede molto più tempo di un ciclo del processore (che di solito ha solo pochi transistor in sequenza da attendere). Richiede anche molto più tempo di un ciclo di bus (che di solito è un paio di volte più lento di un ciclo del processore). È probabile che un comando CAS su un tipico chip di memoria assuma l'ordine di 5ns (IIRC - è passato un po 'di tempo dall'osservazione dei tempi), che è più di un ordine di grandezza più lento di un ciclo del processore.

Fortunatamente, suddividiamo gli indirizzi in tre parti (colonna, riga e banco) che consentono a ciascuna parte di essere più piccola e di elaborare contemporaneamente quelle parti, altrimenti la latenza sarebbe ancora più lunga.

La cache del processore, tuttavia, non ha questo problema. Non solo è molto più piccolo, quindi la traduzione degli indirizzi è un lavoro più semplice, in realtà non ha bisogno di tradurre più di un piccolo frammento dell'indirizzo (in alcune varianti, niente di tutto questo) perché è associativo. Ciò significa che accanto a ciascuna riga di memoria cache, ci sono celle di memoria aggiuntive che memorizzano la parte (o tutto) dell'indirizzo. Ovviamente questo rende la cache ancora più costosa, ma significa che tutte le celle possono essere interrogate per vedere se hanno la particolare linea di memoria che vogliamo simultaneamente, e quindi l'unica (si spera) che ha i dati giusti la scaricherà su un bus che collega l'intera memoria al core del processore principale. Questo accade in meno di un ciclo, perché è molto più semplice.

    
risposta data 11.02.2016 - 00:01
fonte
-2

Una delle filosofie che ho studiato è stata quella di ottenere-massima-throughput-in-minimum-hardware quando parliamo di qualsiasi memoria basata sulla cache, sia essa cache della CPU, cache di buffer o cache di memoria a tale scopo. Il motivo di base si ottiene quando c'è il minimo o nessun movimento hardware per recuperare / leggere / scrivere dati e l'operazione è completata più velocemente.

I trasferimenti di dati da disco - > memoria principale (RAM) (memoria temporanea) - > Cache della CPU (piccola memoria temporanea vicino alla CPU per i dati utilizzati di frequente) - > CPU (elaborazione).

La cache della CPU è uno spazio di memoria più piccolo e più veloce che memorizza copie dei dati dalle posizioni di memoria principale utilizzate più di recente.

La cache del buffer è un'area di memoria principale che memorizza copie dei dati dalle posizioni del disco utilizzate più di recente.

La cache del browser è una directory o spazio simile che memorizza le copie dei dati dai siti Web visitati più di recente dagli utenti.

Riferimento: Funzionamento della memoria del computer

    
risposta data 31.03.2014 - 12:09
fonte

Leggi altre domande sui tag