Cosè il Translation Lookaside Buffer?

Le CPU sono bestie incredibilmente complesse. C'è un numero enorme di parti interconnesse che devono lavorare tutte all'unisono per raggiungere i livelli di prestazioni che vediamo. Le prestazioni della memoria sono un fattore chiave nelle prestazioni delle moderne CPU, in particolare come fattore limitante.

Perché la velocità della memoria è così importante?

Le CPU sono incredibilmente veloci, con le ultime generazioni che funzionano a 5,7 GHz se adeguatamente raffreddate. Ciò consente loro di completare 5,7 miliardi di operazioni al secondo. Molte di queste operazioni eseguono un'azione su alcuni tipi di dati che devono essere archiviati in memoria.

Anche la memoria di sistema principale, nota come RAM, è molto veloce. Sfortunatamente, è molto veloce rispetto a qualsiasi cosa diversa dalla CPU. La latenza assoluta sulla moderna RAM di fascia alta è dell'ordine di 60 nanosecondi. Sfortunatamente, ciò si traduce in circa 342 cicli della CPU. Per velocizzare l'accesso alla memoria, viene utilizzata una cache della CPU che memorizza dinamicamente nella cache i dati. Questa cache si trova sul die della CPU stessa e utilizza celle SRAM anziché celle DRAM, rendendola molto più veloce. Sfortunatamente, anche la cache della CPU è molto più piccola della RAM di sistema, generalmente non raggiunge nemmeno i 100 MB. Tuttavia, nonostante le sue dimensioni ridotte, il sistema di cache della CPU a più livelli aumenta notevolmente le prestazioni del sistema.

Arriva la memoria virtuale a rovinare tutto

I computer moderni utilizzano un sistema chiamato memoria virtuale. Anziché allocare indirizzi di memoria fisica ai processi, vengono utilizzati indirizzi di memoria virtuale. Ogni processo ha il proprio spazio di indirizzi di memoria virtuale. Questo ha due vantaggi. In primo luogo, fornisce una facile separazione tra la memoria che appartiene a un processo e la memoria che appartiene a un altro. Questo aiuta a prevenire gli attacchi in cui il software dannoso legge i dati dalla memoria di altri software, accedendo potenzialmente a informazioni riservate. Nasconde anche la struttura della memoria fisica dal processo. Ciò consente alla CPU di spostare i bit di memoria utilizzati raramente in un file di paging sull'archiviazione, senza necessariamente smontarlo dalla RAM virtuale. Ciò consente al computer di gestire delicatamente gli scenari in cui è richiesta più RAM di quella fisicamente presente. Senza memoria virtuale,

Sfortunatamente, se si utilizzano indirizzi di memoria virtuale, il computer deve effettivamente tradurre quegli indirizzi di memoria virtuale in indirizzi di memoria fisica per leggere i dati. Ciò richiede una tabella per memorizzare tutte le traduzioni degli indirizzi di memoria virtuale in indirizzi di memoria fisica. La dimensione di questo dipende direttamente dalla quantità di RAM in uso. In genere è abbastanza piccolo, almeno se confrontato con la capacità della RAM di sistema. Sfortunatamente, se memorizzi la traduzione tra indirizzi virtuali e indirizzi fisici nella RAM, devi fare due richieste alla RAM per ogni richiesta alla RAM. Uno per trovare l'indirizzo fisico da richiedere e poi un altro per accedere effettivamente a quella posizione.

Immettere il buffer lookaside della traduzione

La soluzione a questo problema è archiviare la tabella di traduzione da qualche parte più velocemente. La cache della CPU si adatterebbe bene al conto, almeno dal punto di vista della velocità. Il problema, tuttavia, è che la cache della CPU è minuscola e già ampiamente utilizzata. Non solo la tabella non si adatta alla cache, ma ciò interromperebbe il suo utilizzo già determinante per le prestazioni.

Certo, se il principio della cache funziona già per l'accesso alla memoria, perché non ripeterlo per la tabella di traduzione? Ed è esattamente quello che è il Translation Lookaside Buffer, o TLB. È una cache ad alta velocità per traduzioni di indirizzi recenti. Non è abbastanza grande per memorizzare l'intero tavolo, ma le sue dimensioni ridotte significano che può rispondere molto rapidamente, all'interno di un singolo ciclo di clock.

Qualsiasi richiesta di memoria passa attraverso il TLB. Se c'è un hit TLB, può fornire l'indirizzo di memoria fisica per la richiesta effettiva, in genere aggiungendo un singolo ciclo di latenza. Se manca un TLB, la ricerca deve essere eseguita dalla memoria principale. C'è una piccola penalità prestazionale per un errore TLB di circa 5 cicli, una perdita più che eclissata dalla latenza di accesso alla memoria. Una volta recuperata la traduzione dell'indirizzo dalla RAM di sistema, viene inserita nel TLB e la richiesta viene quindi ripetuta con un hit immediato del TLB.

Nota: esistono diversi schemi per lo sfratto di TLB. Alcuni possono utilizzare uno schema First In, First Out o FIFO. Altri possono utilizzare uno schema Least Frequently Used o LFU.

Nel raro caso in cui non vi sia alcuna voce nella tabella di conversione degli indirizzi, viene causato un errore di pagina, poiché i dati richiesti non si trovano nella RAM. Il sistema operativo deve quindi gestire l'errore e trasferire i dati dalla memoria alla RAM prima che la richiesta possa continuare.

Conclusione

Il Translation Lookaside Buffer, o TLB, è una cache della CPU ad alta velocità dedicata alla memorizzazione nella cache delle traduzioni di indirizzi recenti dal file di paging nella RAM di sistema. Ciò è necessario poiché i sistemi di memoria virtuale, come implementati in tutti i computer moderni, richiederebbero due richieste alla RAM per ogni richiesta alla RAM. Uno per tradurre l'indirizzo di memoria virtuale in un indirizzo di memoria fisica e un altro per accedere effettivamente all'indirizzo fisico. Mettendo nella cache le traduzioni recenti, la latenza della memoria può essere notevolmente ridotta per gli hit TLB.

È necessario prestare attenzione per garantire che le traduzioni memorizzate nella cache siano pertinenti al processo attualmente attivo. Poiché ogni processo ha uno spazio di indirizzi virtuali diverso, non possono essere riutilizzati. Non limitare rigorosamente questo è stata la causa alla base della vulnerabilità Meltdown.



Leave a Comment

Come clonare un disco rigido

Come clonare un disco rigido

Nell'era digitale moderna, in cui i dati sono una risorsa preziosa, la clonazione di un disco rigido su Windows può essere un processo cruciale per molti. Questa guida completa

Come risolvere il problema con il caricamento del driver WUDFRd su Windows 10?

Come risolvere il problema con il caricamento del driver WUDFRd su Windows 10?

Stai riscontrando il messaggio di errore durante l'avvio del computer che dice che il driver WUDFRd non è stato caricato sul tuo computer?

Come risolvere il codice di errore NVIDIA GeForce Experience 0x0003

Come risolvere il codice di errore NVIDIA GeForce Experience 0x0003

Hai riscontrato l'esperienza NVIDIA GeForce con il codice di errore 0x0003 sul tuo desktop? Se sì, leggi il blog per scoprire come correggere questo errore in modo semplice e veloce.

How to Use Auto Clicker for Chromebook

How to Use Auto Clicker for Chromebook

Today, were going to delve into a tool that can automate repetitive clicking tasks on your Chromebook: the Auto Clicker. This tool can save you time and

Come rimuovere una GPU da un PC Windows nel 2023

Come rimuovere una GPU da un PC Windows nel 2023

Devi rimuovere la GPU dal tuo PC? Unisciti a me mentre ti spiego come rimuovere una GPU dal tuo PC in questa guida dettagliata.

Come installare ununità SSD NVMe su desktop e laptop

Come installare ununità SSD NVMe su desktop e laptop

Hai acquistato un nuovo SSD NVMe M.2 ma non sai come installarlo? Continua a leggere per sapere come installare un'unità SSD NVMe su laptop o desktop.

Cosè una bomba logica?

Cosè una bomba logica?

Una bomba logica è un incidente di sicurezza in cui un utente malintenzionato organizza un'azione ritardata. Continua a leggere per scoprire di più.

Che cosè Stuxnet?

Che cosè Stuxnet?

Stuxnet era un worm autopropagante. È stato il primo utilizzo di un'arma informatica e la prima istanza di malware.

Cosè un hacker etico?

Cosè un hacker etico?

Un hacker etico è un hacker che agisce entro i limiti della legge. Continua a leggere per saperne di più sull'argomento.

Che cosè la crittografia simmetrica?

Che cosè la crittografia simmetrica?

Ci sono molte parti diverse della crittografia. Se vuoi crittografare alcuni dati, ci sono due tipi di algoritmi che puoi usare: symmetric