Cosa rende la memoria cache della CPU molto più veloce della memoria principale? Vedo alcuni vantaggi in un sistema cache a più livelli. Ha senso che una cache più piccola sia più veloce da cercare. Ma deve esserci di più.
Cosa rende la memoria cache della CPU molto più veloce della memoria principale? Vedo alcuni vantaggi in un sistema cache a più livelli. Ha senso che una cache più piccola sia più veloce da cercare. Ma deve esserci di più.
Risposte:
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 al 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 trovarsi in qualsiasi parte del mondo).
Quindi si tratta principalmente di località . La cache elimina la fase di trasferimento dei dati .
La località è un modo stravagante di dire dati "vicini", nel tempo o nello spazio. La memorizzazione nella cache con 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.
Ulteriore lettura della
cache (informatica) su Wikipedia
È più veloce perché sia più vicino sia perché SRAM non DRAM.
SRAM è e può essere considerevolmente più veloce di DRAM i valori vengono mantenuti staticamente (la S in S RAM) in modo che non debbano essere aggiornati per eliminare i cicli. La DRAM è dinamica, come piccole batterie ricaricabili, devi ricaricare regolarmente quelle in modo che non si scarichino e diventino zeri. Ciò ruba il tempo di ciclo oltre a come è necessario accedere ai bit, ecc.
Essere sullo stesso die o vicino al processore riduce il round trip, sia L1 che L2 sono più veloci della DRAM dal punto di vista dell'accesso.
L'accesso alla SRAM è più rapido rispetto alle DRAM che hanno portato le mele alle mele e le cache sono di solito su chip o più vicine o su autobus più veloci rispetto alla 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 la distanza che un segnale elettrico può percorrere in un nanosecondo *. Se una CPU funziona a 3GHz, ciò implica una distanza di 4 "per ciclo di clock. Questo è un limite fisico duro alla velocità di accesso alla memoria. Questa è una grande parte del perché essere vicini alla CPU (come è la cache L1), consente memoria per essere più veloce.
EDIT * in realtà fino a che punto la luce può viaggiare nel vuoto, la distanza tra rame / silicio è inferiore.
Altre risposte coprivano già tutti i bit rilevanti: località (e il costo di trasferimento dati associato, larghezza bus e clock, e così via); velocità della luce (di nuovo, associata ai costi di trasferimento, larghezza e capacità del bus); diversa tecnologia di memoria (SRAM vs.DRAM). Tutto ciò visto alla luce del rapporto costi / prestazioni .
Un po 'che è stato lasciato fuori ed è appena menzionato nel commento di Darkhogg: cache più grandi hanno tassi di hit migliori ma latenza più lunga. Più livelli di cache sono stati introdotti anche per risolvere questo compromesso.
C'è un'eccellente domanda e risposta su questo punto sull'elettronica SE
Dalle risposte, mi sembra che un punto da evidenziare sia: la logica che esegue tutte le operazioni richieste per una lettura della cache non è così semplice (specialmente se la cache è set-associativa, come la maggior parte delle cache oggi). Richiede porte e logica. Quindi, anche se escludiamo i costi e moriamo nello spazio
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.
Ci sono molti punti positivi sollevati nelle altre risposte, ma sembra mancare un fattore: indirizzare la latenza di decodifica.
Quella che segue è una grande semplificazione eccessiva del funzionamento della decodifica degli indirizzi di memoria, ma dà una buona idea del perché i chip DRAM di grandi dimensioni 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 si chiama Selezione indirizzo colonna (per ora ignoreremo gli indirizzi di riga). Il chip di memoria ora deve attivare la colonna richiesta, cosa che fa inviando l'indirizzo in una cascata di porte logiche per fare una sola scrittura che si collega a tutte le celle nella colonna. A seconda di come viene implementato, ci sarà un certo ritardo per ogni bit di indirizzo fino a quando il risultato non verrà fuori dall'altra parte. Questa è chiamata 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). Inoltre, richiede molto più tempo di un ciclo del bus (che di solito è un po 'più lento di un ciclo del processore). È probabile che un comando CAS su un tipico chip di memoria assuma l'ordine di 5 ns (IIRC - è passato un po 'di tempo da quando ho guardato i tempi), che è più di un ordine di grandezza più lento di un ciclo di processore.
Fortunatamente, suddividiamo gli indirizzi in tre parti (colonna, riga e banco) che consentono a ciascuna parte di essere più piccola ed elaborare quelle parti contemporaneamente, altrimenti la latenza sarebbe ancora più lunga.
La cache del processore, tuttavia, non presenta questo problema. Non solo è molto più piccolo, quindi la traduzione dell'indirizzo è un lavoro più semplice, in realtà non ha bisogno di tradurre più di un piccolo frammento dell'indirizzo (in alcune varianti, nessuno di essi) perché è associativo. Ciò significa che lungo ogni riga di memoria memorizzata nella cache, ci sono celle di memoria extra che memorizzano parte (o tutto) dell'indirizzo. Ovviamente questo rende la cache ancora più costosa, ma significa che è possibile interrogare tutte le celle per vedere se hanno la particolare linea di memoria che vogliamo contemporaneamente, e quindi l'unica (si spera) che abbia 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 il movimento di ottenere il massimo della velocità effettiva nel minimo dell'hardware quando parliamo di qualsiasi memoria basata su cache, che si tratti di cache CPU, cache buffer o cache di memoria a tale scopo. Il motivo di base si ottiene quando vi è il minimo o nessun movimento dell'hardware per il recupero / lettura / scrittura dei dati e l'operazione viene completata più rapidamente.
I dati vengono trasferiti dal disco -> memoria principale (RAM) (memoria temporanea) -> cache della CPU (memoria temporanea più piccola vicino alla CPU per dati a cui si accede frequentemente) -> 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 archivia copie dei dati dalle posizioni del disco utilizzate più di recente.
La cache del browser è una directory o uno spazio simile in cui vengono archiviate copie dei dati dai siti Web visitati più di recente dagli utenti.
Riferimento: come funziona la memoria del computer