2012-05-04 13 views
19

Qualcuno potrebbe spiegare la differenza tra una mancata notifica TLB (Translation lookaside buffer) e una mancanza di cache?Mancanze del TLB e mancanze della cache?

Credo di aver scoperto che TLB si riferisce ad una sorta di indirizzo di memoria virtuale ma non ero eccessivamente chiaro di cosa ciò significasse in realtà?

Capisco che i tentativi di cache si verificano quando un blocco di memoria (la dimensione di una linea della cache) viene caricato nella cache (L3?) E se un indirizzo richiesto non viene mantenuto all'interno delle linee della cache corrente, si tratta di una mancanza della cache .

+1

Comprendere il paging http://stackoverflow.com/a/18431262/895245 e consultare la sezione TLB. –

risposta

26

Bene, tutti i moderni sistemi operativi odierni utilizzano qualcosa chiamato memoria virtuale. Ogni indirizzo generato dalla CPU è virtuale. Ci sono tabelle di pagina che mappano tali indirizzi virtuali a indirizzi fisici. E un TLB è solo una cache di voci della tabella di pagina.

D'altra parte L1, L2, L3 memorizza nella cache il contenuto della memoria principale.

Una mancanza TLB si verifica quando la mappatura di virtual memory address => physical memory address per una CPU richiesta indirizzo virtuale non è in TLB. Quindi quella voce deve essere recuperata dalla tabella di pagina nel TLB.

Un errore di cache si verifica quando la CPU richiede qualcosa che non è nella cache. I dati vengono quindi cercati nella memoria principale (RAM). Se non è lì, i dati devono essere recuperati dalla memoria secondaria (disco fisso).

+0

Qual è lo scopo dell'indirizzo di memoria virtuale e a cosa si riferisce effettivamente, ancora la memoria principale (RAM)? – mezamorphic

+5

Bene, le prime CPU a 32 bit utilizzate per generare indirizzi a 32 bit ~ 4 GB di memoria indirizzabile. Ma l'importo della RAM era spesso inferiore a 4 GB. Ora, se si dispone di 1 GB di RAM, non è possibile eseguire un programma che richiede più di 1 GB di memoria indirizzabile. Quindi, perché non ingannare il programma facendogli credere di avere 4 GB di RAM? Dove solo una frazione dei dati del programma risiede nella RAM e il resto nel disco rigido. Questo è ciò che fa la memoria virtuale. Puoi leggere tutto in questo [articolo di Wikipedia] (http://en.wikipedia.org/wiki/Virtual_memory). Le CPU a 64 bit attuali utilizzano anche la memoria virtuale. Solo la lunghezza dell'indirizzo virtuale è ora di 48 bit. – Hindol

2

La seguente sequenza dopo aver caricato il primo indirizzo di istruzioni (ad esempio indirizzo virtuale) in PC rende molto chiaro il concetto di mancanza TLB e cache miss.

La prima istruzione • Accesso alla prima istruzione

  • Prendere il PC a partire
  • accesso iTLBwith la VPN estratto dal PC: iTLBmiss
  • gestore
  • Invoke iTLBmiss indirizzo
  • Calcolare PTE
  • Se PTE è memorizzato nella cache nei dati L1 e nelle cache L2, cercali con l'indirizzo PTE: ti mancherà anche lì
  • accesso tabella di pagina in memoria principale: PTE non è valido: errore di pagina
  • Invoke gestore di errore di pagina non
  • Allocare cornice di pagina, leggere la pagina dal disco, aggiornare PTE, carico PTE in iTLB, riavviare prendere • Ora avete l'indirizzo fisico

  • Accesso iCache: dimentica

  • inviare richiesta di ricarica a livelli più alti: si dimentica ovunque
  • inviare richiesta al controller di memoria (North bridge)
  • accesso memoria principale
  • Leggi linea di cache
  • ricarica tutti i livelli di cache, come la linea di cache torna al processore
  • Estrarre l'istruzione appropriata dalla linea di cache con il blocco compensato • Questa è la più lunga latenza possibile in un accesso di istruzioni/dati

fonte https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

0

Come COME sia dei processi sono menzionati. Sulla nota di prestazioni, una mancanza di cache non necessariamente ferma la CPU. Un piccolo numero di errori di cache può essere tollerato utilizzando tecniche di prelettura algoritmica. Una mancata TLB causa tuttavia il blocco della CPU finché il TLB non viene aggiornato con il nuovo indirizzo. In altre parole, il prefetching può mascherare una mancanza della cache, ma non una mancanza TLB.

+0

Questo non è assolutamente vero. Con l'esecuzione fuori ordine e il table table della pagina hardware (x86, ARM, alcuni MIPS versione 5, ecc.) Una mancata TLB potrebbe non arrestare immediatamente il processore. Inoltre, documenti accademici hanno proposto prefetch hardware per TLB. Sarebbe anche possibile per un processore precedere le voci TLB con un'ordinaria istruzione di precaricamento della memoria. –