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.
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.
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
È più veloce perché è più vicino e perché è SRAM non DRAM.
SRAM è e può essere considerevolmente più veloce di DRAM, i valori sono mantenuti staticamente (la S in S RAM) in modo che non debbano essere aggiornati per rimuovere 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 mele al frutto, 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.
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, ciò implica una distanza di 4 "per ciclo di clock.Questo è un limite fisico duro alle velocità di accesso alla memoria.Questa è una gran parte del motivo per cui essere vicino alla CPU (come la cache L1 è), consente memoria per essere più veloce.
EDIT * in realtà la distanza in cui la luce può viaggiare nel vuoto, la distanza tra il rame e il silicio è inferiore.
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 del bus e della velocità effettiva); diversa tecnologia di memoria (SRAM vs. DRAM). Tutto questo alla luce del rapporto costi / prestazioni .
Un po 'che è stato tralasciato ed è appena menzionato nel commento di Darkhogg: le cache più grandi hanno tassi di hit migliori ma 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 morto
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.
Ci sono molti buoni punti sollevati nelle altre risposte, ma sembra che manchi 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 colleghi 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 sarà uscito 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 affatto) 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.
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 dal 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.
Il buffer cache è 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