Che cosè un cambio di contesto?

Agli albori dell'informatica, le CPU erano macchine puramente sequenziali. Ciò ha contribuito a mantenere i progetti semplici. Tuttavia, ha anche limitato le prestazioni. Molti processi dovranno richiedere dati dalla RAM di sistema o dal disco rigido. Sebbene la RAM di sistema sia veloce, non è ancora veloce come la CPU, lasciandola inattiva, in attesa di dati fino a quando la risposta non ritorna dalla RAM. La situazione è ancora peggiore per i dati richiesti dal disco rigido, un dispositivo di archiviazione molto più lento della RAM. Qui la CPU può rimanere inattiva per periodi significativi, in attesa di una risposta. Sfortunatamente, con i processori sequenziali, questo problema è semplicemente inevitabile.

Per fortuna, le CPU moderne non sono più sequenziali. Offrono molte funzionalità avanzate, come l'esecuzione fuori ordine e più thread. L'esecuzione fuori ordine consente alla CPU di analizzare le istruzioni imminenti e riordinarle per massimizzare l'efficienza. Il multi-threading consente alla CPU di avere numerosi thread o processi diversi in esecuzione.

Oltre ad avere più core, la CPU non può eseguirne più di uno alla volta. Può, tuttavia, farlo sembrare passando da uno all'altro regolarmente per garantire che ciascuno ottenga una quantità apprezzabile di tempo di CPU costante. Il processo di passaggio da un thread all'altro è chiamato cambio di contesto.

Come funziona un cambio di contesto?

Un cambio di contesto è costituito da due parti, che escludono il thread precedente e attivano quello nuovo. Per modificare il vecchio thread, la CPU deve salvare il suo stato attuale in un Process Control Block o switch frame. Questo include i valori di tutti i registri della CPU rilevanti e consiste sempre nel valore del program counter. Una volta che il thread è stato archiviato, è possibile aggiungere un handle a una coda pronta per consentirne il ripristino quando necessario.

Passare al thread seguente è lo stesso processo al contrario. Un thread viene selezionato dalla coda dei pronti, a seconda della ponderazione. In alternativa, può essere scelto da un interrupt che indica che un evento su cui il thread era in attesa è ora pronto o completo. I dati per il thread vengono quindi copiati nei registri corretti e il thread viene ripristinato. A questo punto, il nuovo thread è pronto per continuare l'operazione da dove si era interrotto.

Impatto sulle prestazioni

Il processo di lettura e scrittura dei dati durante l'attivazione o la disattivazione di un thread richiede un po' di tempo, anche se non molto, poiché la memoria utilizzata è tipicamente ad alta velocità. Ci sono, tuttavia, ulteriori costi di prestazione. Quando si cambia thread, i dati nelle cache e nei buffer della CPU dal thread precedente potrebbero non essere rilevanti per il nuovo thread. Ciò può portare a un aumento significativo del TLB ( Translation Lookaside Buffer ) e dei cache miss.

Questo effetto non è significativo se i due thread sono stati generati dallo stesso processo, poiché è probabile che condividano considerevoli elementi di memoria. Il TLB deve essere svuotato completamente quando si passa da un thread all'altro da metodi diversi. Ciò porta a una percentuale di errori TLB del 100%, mentre anche la percentuale di riscontri della cache della CPU è significativamente ridotta.

Sebbene le CPU offrano il supporto hardware per il cambio di contesto, i sistemi operativi in ​​genere non lo utilizzano. Il cambio di contesto hardware non è consapevole della rilevanza dei dati. Pertanto necessita di archiviare e ripristinare tutti i registri, aumentando il tempo impiegato e lo spazio di archiviazione richiesto.

Inoltre, il cambio di contesto hardware non memorizza i dati dai registri in virgola mobile, funzionalità che potrebbe essere necessaria. Il cambio di contesto software è, quindi, generalmente utilizzato. Consente di conservare i dati di tutti i registri, inclusi i registri a virgola mobile. I cambi di contesto software hanno una comprensione della pertinenza dei dati. Ciò significa che può scegliere quali archiviare secondo necessità.

Conclusione

Un cambio di contesto è un processo mediante il quale una CPU moderna cambia il thread in esecuzione. Il processo prevede la memorizzazione dei dati rilevanti del thread corrente e il ripristino dei dati pertinenti del nuovo thread. Il cambio di contesto comporta un costo in termini di prestazioni correlato al tempo necessario per eseguire il passaggio e l'aumento del tasso di cache e TLB mancati poiché questi non vengono archiviati. I cambi di contesto si verificano per garantire che tutti i thread dispongano di una buona riserva di tempo della CPU o a causa di un interrupt che indica che un evento su cui la linea era in attesa è completo.



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