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

Cosa Fare Se i Powerbeats Pro Non Si Ricaricano nella Custodia

Cosa Fare Se i Powerbeats Pro Non Si Ricaricano nella Custodia

Se i tuoi Powerbeats Pro non si ricaricano, utilizza un

Basi della Stampa 3D: Una Checklist di Manutenzione Indispensabile

Basi della Stampa 3D: Una Checklist di Manutenzione Indispensabile

Mantenere le attrezzature in buone condizioni è fondamentale. Ecco alcuni utili suggerimenti per mantenere la tua stampante 3D in condizioni ottimali.

Canon Pixma MG5220: Scansione senza inchiostro

Canon Pixma MG5220: Scansione senza inchiostro

Come abilitare la scansione sulla Canon Pixma MG5220 quando si esaurisce l

5 Motivi per cui il tuo Laptop si surriscalda

5 Motivi per cui il tuo Laptop si surriscalda

Scopri alcune delle possibili cause per cui il tuo laptop si surriscalda, insieme a suggerimenti e trucchi per evitare questo problema e mantenere il tuo dispositivo fresco.

Come Risolvere l'Errore GeForce Now Codice 0xC272008F

Come Risolvere l'Errore GeForce Now Codice 0xC272008F

Ti stai preparando per una serata di gioco, ed è una grande serata - hai appena acquistato "Star Wars Outlaws" sul servizio di streaming GeForce Now. Scopri l

Fondamenti della Stampa 3D: Consigli di Manutenzione per la Tua Stampante 3D

Fondamenti della Stampa 3D: Consigli di Manutenzione per la Tua Stampante 3D

Mantenere le stampanti 3D è molto importante per ottenere i migliori risultati. Ecco alcuni consigli importanti da tenere a mente.

Come Trovare l'Indirizzo IP di una Stampante

Come Trovare l'Indirizzo IP di una Stampante

Hai difficoltà a scoprire quale indirizzo IP sta utilizzando la tua stampante? Ti mostreremo come trovarlo.

Come utilizzare gli AirPods con i telefoni Samsung

Come utilizzare gli AirPods con i telefoni Samsung

Se non sei sicuro se acquistare gli AirPods per il tuo telefono Samsung, questa guida può sicuramente aiutarti. La domanda più ovvia è se i due siano compatibili.

Come far funzionare Spotify nel nuovo Garmin Venu

Come far funzionare Spotify nel nuovo Garmin Venu

Scopri come configurare Spotify sul tuo Garmin Venu per ascoltare la tua musica preferita mentre ti alleni.

Risoluzione dei problemi dellapp Blink quando la fotocamera è offline

Risoluzione dei problemi dellapp Blink quando la fotocamera è offline

Scopri come risolvere i problemi dell