Come funzionano un TLB e una cache di dati?


15

Sto cercando di studiare per un esame e mi sono reso conto di essere confuso su come funzionano il TLB e la cache di dati.

Comprendo che il TLB è essenzialmente una cache degli indirizzi fisici utilizzati più di recente. Tuttavia, stavo guardando un diagramma nel mio libro di testo (mostrato sotto) e non capisco cosa sta succedendo in esso. Improvvisamente divide l'indirizzo fisico e lo usa per indicizzare la cache, immagino. Ma perché mostra la cache e i dati separatamente? e perché l'offset di byte è stato lasciato flottante? Sono abbastanza sicuro che anche la cache dovrebbe memorizzare i dati. Non penso che il suo unico scopo sia quello di determinare se ci sia un colpo o meno al suo interno.

Mi scuso in anticipo per la mia ignoranza, ma il libro tratta a malapena di TLB (è un po 'più di una pagina) e non fa un ottimo lavoro nello spiegare la relazione tra un TLB e la cache.

figura


Questa domanda è troppo lunga. Puoi estrarre una domanda ristretta e specifica da questo, e quindi modificare la tua domanda per ridurla a una sola domanda specifica? Parte del porre una buona domanda implica riflettere attentamente su ciò che è l'essenza minima di ciò che devi sapere e includere solo ciò che è rilevante ed essenziale per quella domanda. Ad esempio, se hai una domanda specifica su come funzionano i TLB, invece di scaricare tutto questo, che ne dici di provare a inquadrare una singola domanda ristretta su un TLB?
DW

D'accordo, la mia intenzione era quella di mostrare quello che ho già capito sull'argomento, dal momento che alla maggior parte delle persone in borsa non piace rispondere alle domande senza che l'interlocutore mostri qualche sforzo (comprensibilmente). Immagino di non poter rendere tutti felici. Forse lo modificherò semplicemente con la mia domanda in grassetto o qualcosa del genere.
audiFanatic

@DW è meglio?
audiFanatic

audiFanatic, potresti aver frainteso o frainteso i miei commenti e la mentalità "mostra qualche sforzo". Il mio suggerimento è di identificare una domanda ristretta - qualcosa del tipo "come funziona un TLB? Non capisco del tutto" - e quindi concentrarsi nuovamente solo su quella domanda. Sì, devi fare uno sforzo serio per rispondere a quella domanda e dovresti mostrare lo sforzo che hai fatto per rispondere a quella domanda specifica , ma lo sforzo su un argomento non correlato non è pertinente (ad esempio, il fatto che hai cercato di fare progressi su una domanda a casa che ti ha fatto pensare a questa domanda).
DW

Lascia che ti aiuti a capire lo sfondo dietro questo. Vogliamo creare un archivio di alta qualità di domande e risposte che saranno utili agli altri (non solo a te). La cosa migliore che puoi fare per aiutare è estrarre una domanda specifica, ristretta e ben posta e focalizzare la tua domanda solo su quella domanda. Una domanda tentacolare, a risposta aperta, che non è molto focalizzata, è meno probabile che sia utile per gli altri che potrebbero inciampare su di essa (ed è anche più difficile per i lettori arrivare al punto e capire qual è il nucleo della tua domanda, quindi hai meno probabilità di ottenere una buona risposta).
DW

Risposte:


23

Penso di vedere la tua confusione. Il TLB e la cache dei dati sono due meccanismi separati. Sono entrambi cache di un tipo, ma memorizzano nella cache cose diverse:

  • Pertanto, TLB funge da cache dedicata per questa ricerca. Il TLB ha alcune voci TLB, in cui ogni voce TLB contiene sia un indirizzo virtuale che il suo indirizzo fisico corrispondente.

    Il TLB consente al processore di convertire rapidamente indirizzi virtuali in indirizzi fisici. Se un'istruzione chiede al processore di eseguire alcune operazioni di memoria su un indirizzo (virtuale), il processore controlla innanzitutto se il TLB contiene una voce per quell'indirizzo virtuale. In tal caso, viene chiamato "hit della cache" per la ricerca TLB e poiché la voce TLB contiene anche l'indirizzo fisico tradotto, il processore conosce immediatamente quale indirizzo fisico utilizzare. In caso contrario, si tratta di un errore nella cache per la ricerca TLB e il processore deve eseguire laboriosamente la conversione da virtuale a fisico camminando sulla tabella delle pagine. (Al termine della conversione, aggiunge una voce al TLB in modo che le conversioni future di quell'indirizzo virtuale avvengano molto più rapidamente.)

  • La cache di dati è una cache per il contenuto della memoria. La memoria principale consente di specificare un indirizzo fisico e leggere il valore a quell'indirizzo fisico. Tuttavia, la memoria principale è lenta. Se dovessimo andare nella memoria principale ogni volta che volessimo eseguire qualsiasi operazione di memoria, il nostro processore sarebbe molto lento.

    Pertanto, la cache di dati funge da cache dedicata per le letture di memoria. La cache di dati ha alcune voci della cache, in cui ogni voce della cache contiene un indirizzo fisico e il valore della memoria a quell'indirizzo.

    La cache di dati consente al processore di leggere molto rapidamente dalla memoria. Quando il processore vuole leggere la memoria su un indirizzo (fisico), controlla prima la cache dei dati per vedere se contiene una voce cache per quell'indirizzo. In tal caso, questo è noto come "hit della cache" (nella cache dei dati) e il processore può utilizzare immediatamente il valore dei dati archiviato in quella voce della cache, senza dover contattare la memoria principale. In caso contrario, si tratta di un "cache miss" (per la cache di dati) e il processore deve andare nella memoria principale. (Dopo che il processore riceve il valore a quell'indirizzo dalla memoria principale, aggiunge una voce di cache alla cache di dati in modo che i tentativi di leggere lo stesso indirizzo vengano eseguiti nella cache di dati.)

Sono entrambe cache, ma hanno uno scopo diverso. Il processore utilizza entrambi per ciascuna operazione di memoria: utilizza prima il TLB per convertire da indirizzo virtuale a indirizzo fisico, quindi controlla la cache dei dati per accelerare il processo di lettura del valore memorizzato nella memoria a quell'indirizzo.

Per maggiori dettagli, puoi leggere l'articolo di Wikipedia sui TLB . Se si esegue una ricerca, sono disponibili molte altre informazioni su TLB e cache di dati. Suggerisco di cercare "TLB" e "L1 cache" o "L2 cache" (questi ultimi 2 sono tipi di cache di dati).

(Per riferimento futuro: ci aspettiamo che tu faccia qualche ricerca sulla tua domanda prima di fare una domanda qui e controlli le fonti Internet standard. Se la risposta può essere trovata in Wikipedia, non hai fatto abbastanza ricerche da solo. Potresti aver avuto buona fortuna se hai controllato le fonti di Internet per informazioni su come i TLB prima di chiedere qui. Vedi anche Quanta attività di ricerca è prevista per gli utenti di Stack Overflow? Quindi, cogli l'opportunità di usarlo come lezione per come migliorare il tuo capacità di ricerca - qualcosa che sarà prezioso per te durante la tua carriera.)


1
Grazie! Ciò ha chiarito soprattutto tutto. Ho trascorso molto tempo a fare ricerche su questo (diversi giorni), non riuscivo a trovare un'informazione chiara e concisa che lo legasse tutti insieme (inoltre la mia confusione probabilmente non ha aiutato la mia ricerca). Per analogia, mi sentivo come se fossi in una farmacia in cerca di una cura per un disturbo non diagnosticato; usando solo i sintomi come guida.
audiFanatic

Detto questo, ho un'altra domanda. Se sono cache, perché il libro separa i dati e le porzioni di tag della cache (diavolo, la porzione di dati è persino più alta del tag e della porzione di bit valida)? Sembra che la cache non serva altro che controllare i tag (come se non memorizzasse i dati). Quel blocco di dati nell'angolo in basso a destra dell'immagine è parte della cache o quella parte della memoria principale o cosa?
audiFanatic

1
VPV+1P+1V+2P+2V+4095P+4095

ioioio

Ok fantastico. Grazie. Immagino sia stata la separazione a confondermi di più.
audiFanatic
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.