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 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

S Pen rispetto a Apple Pencil

S Pen rispetto a Apple Pencil

Scopri le differenze tra S Pen e Apple Pencil, due accessori per disegnare e prendere appunti, analizzando design, prestazioni e costi.

Che cosè WPS e come funziona?

Che cosè WPS e come funziona?

Scopri tutto su cosa è WPS e come funziona, insieme ai suoi vantaggi e svantaggi.

La TV Samsung non salva le impostazioni dellimmagine

La TV Samsung non salva le impostazioni dellimmagine

Scopri come risolvere il problema della tua TV Samsung che non salva le impostazioni dell

Come acquisire uno screenshot su un laptop Chromebook

Come acquisire uno screenshot su un laptop Chromebook

Guida dettagliata su come acquisire screenshot a schermo intero e parziale su Chromebook. Segui questi passaggi per facilitare la tua esperienza.

Correggi Chromebook Errore durante linstallazione di Linux Beta

Correggi Chromebook Errore durante linstallazione di Linux Beta

Se si è verificato un errore durante l

Guida ai materiali di stampa 3D: cosa sapere sul TPU

Guida ai materiali di stampa 3D: cosa sapere sul TPU

Per ottenere i migliori risultati nella stampa 3D, ecco cosa devi sapere sul TPU e i suoi utilizzi.

Che cosa fa Blocco scorrimento?

Che cosa fa Blocco scorrimento?

Il blocco dello scorrimento è un tasto sulla maggior parte delle tastiere, sebbene raramente venga utilizzato. Scopri come funziona e la sua utilità nei moderni software.

È possibile aggiornare la memoria del Chromebook?

È possibile aggiornare la memoria del Chromebook?

Scopri se è possibile aggiornare la memoria del tuo Chromebook e quali sono le migliori opzioni per ottimizzare le prestazioni del dispositivo.