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?