Translation Lookaside buffer - Ricerca per dimensione pagina

3

Ho difficoltà a trovare la documentazione che spieghi con precisione come vengono utilizzate le varie cache TLB nei processori moderni. I processori più moderni dispongono di TLB separati per codice / dati. Questo di per sé è abbastanza ovvio poiché conosciamo il tipo dall'istruzione che avvia la query. Tuttavia, la maggior parte dei processori moderni ha TLB separati per diverse dimensioni di pagina. Come fa la CPU a sapere in che modo cercare un particolare indirizzo virtuale?

Da quanto ho potuto raccogliere, alcuni processori Power offrono un modo per suddividere lo spazio degli indirizzi con regioni dedicate a determinate dimensioni di pagina (sia codificate nel chip o presumibilmente modificabili da un registro dedicato). I processori AMD / Intel x64 più recenti non sembrano menzionare nulla di simile.

La CPU esegue la ricerca in tutti i TLB (4kb / 2mb / 1gb) in parallelo? Come funzionerebbe con i TLB L1 / L2? Il TLB non associa l'indirizzo virtuale di input al risultato finale della traduzione e invece memorizza i risultati dalle voci della Directory della pagina / delle voci della tabella della pagina / etc (che sarebbero già segmentate nella dimensione della pagina)? Alcuni processori Power hanno una cache ERAT per l'indirizzo virtuale di input - > indirizzo fisico tradotto finale + attributi di protezione che sembra suggerire che il TLB memorizza PDE / PTE. Qualcuno potrebbe elaborare un po 'su questo?

    
posta Nicholas Frechette 18.03.2015 - 21:34
fonte

1 risposta

3

Dopo diverse ore di ricerca sono riuscito a trovare le seguenti informazioni:

I nuovi processori intel / amd che hanno TLB separati per dimensione della pagina cercheranno entrambi nello stesso momento nella speranza che uno possa colpirlo. Quando è presente una cache L2 TLB, verrà ricercata in seguito prima di tentare finalmente una passeggiata con la tabella della pagina.

Processori ARM e processori ARM precedenti hanno un singolo TLB con dimensioni di pagina miste. Ciò implica confronti multipli in caso di sovrapposizione.

Alcuni processori hanno una cache sopra il TLB con meno granularità della pagina supportata (ERAT per Power e microTLB per ARM).

Alcuni processori hanno una cache interna della pagina (ARM) per memorizzare nella cache i dati intermedi sulle pagine.

In tutti i processori, il TLB memorizza il tag dell'indirizzo virtuale utilizzato per la ricerca, il numero di frame fisico e le informazioni di accesso (r / w / e) e possibilmente un ID di processo e ID VM o simile per evitare di invalidare il TLB in elaborazione / Cambio contesto VM.

    
risposta data 19.03.2015 - 21:48
fonte

Leggi altre domande sui tag