Ce este o comutare de context?

În primele zile ale calculului, procesoarele erau mașini pur secvenţiale. Acest lucru a ajutat la menținerea designului simplu. Cu toate acestea, a limitat și performanța. Multe procese vor trebui să solicite date de la RAM de sistem sau de pe hard disk. În timp ce memoria RAM de sistem este rapidă, încă nu este la fel de rapidă ca procesorul, lăsând-o inactiv, așteptând date până când răspunsul revine din RAM. Situația este și mai gravă pentru datele solicitate de pe hard disk, un dispozitiv de stocare mult mai lent decât RAM. Aici CPU poate fi inactiv pentru perioade semnificative, așteptând un răspuns. Din păcate, cu procesoarele secvenţiale, această problemă este pur şi simplu inevitabilă.

Din fericire, procesoarele moderne nu mai sunt secvențiale. Ele oferă multe caracteristici avansate, cum ar fi execuția necorespunzătoare și fire multiple. Execuția necorespunzătoare permite procesorului să analizeze instrucțiunile viitoare și să le reordoneze pentru a maximiza eficiența. Multi-threading-ul permite procesorului să ruleze numeroase fire sau procese diferite.

În afară de a avea mai multe nuclee, procesorul nu poate rula mai mult de unul odată. Cu toate acestea, poate face să arate așa, comutând între ele în mod regulat, pentru a se asigura că fiecare primește o cantitate apreciabilă de timp constant al procesorului. Procesul de comutare între fire se numește comutare de context.

Cum funcționează o comutare de context?

O comutare de context constă din două părți, întrerupând firul anterior și comutând în cel nou. Pentru a schimba firul vechi, CPU trebuie să-și salveze starea curentă într-un bloc de control al procesului sau într-un cadru de comutare. Aceasta include valorile oricăror registre relevante ale CPU și constă întotdeauna din valoarea contorului programului. Odată ce firul de execuție a fost stocat, un mâner poate fi adăugat la o coadă pregătită pentru a permite restabilirea acestuia atunci când este necesar.

Comutarea în firul următor este același proces invers. Un fir este selectat fie din coada gata, în funcție de ponderare. Alternativ, poate fi ales printr-o întrerupere care indică faptul că un eveniment la care așteaptă firul este acum gata sau finalizat. Datele pentru fir sunt apoi copiate în registrele corecte, iar firul este restaurat. În acest moment, noul fir de execuție este gata să continue funcționarea de unde s-a oprit.

Impactul asupra performanței

Procesul de citire și scriere a datelor atunci când treceți sau scoateți un fir durează ceva timp, deși nu mult, deoarece memoria utilizată este de obicei de mare viteză. Există, totuși, costuri suplimentare de performanță. La schimbarea firelor de execuție, este posibil ca datele din memoria cache și bufferele CPU din firul anterior să nu fie relevante pentru noul fir. Acest lucru poate duce la o creștere semnificativă a TLB ( Translation Lookaside Buffer ) și rateuri de cache.

Acest efect nu este semnificativ dacă cele două fire de execuție au fost generate de același proces, deoarece este probabil să împartă elemente considerabile de memorie. TLB trebuie spălat complet atunci când comutați între fire de execuție din diferite metode. Acest lucru duce la o rată de ratare TLB de 100%, în timp ce rata de accesare a memoriei cache a CPU este, de asemenea, redusă semnificativ.

În timp ce procesoarele oferă suport hardware pentru comutarea contextului, sistemele de operare de obicei nu folosesc acest lucru. Schimbarea contextului hardware nu este conștientă de relevanța datelor. Prin urmare, trebuie să stocheze și să restabilească toate registrele, crescând timpul necesar și spațiul de stocare necesar.

În plus, schimbarea contextului hardware nu stochează datele din registrele cu virgulă mobilă, funcționalitate care poate fi necesară. Comutarea contextului software este, prin urmare, utilizată în general. Permite păstrarea datelor din toate registrele, inclusiv cele cu virgulă mobilă. Comutatoarele de context software au o înțelegere a relevanței datelor. Aceasta înseamnă că poate alege și alege pe care să le depoziteze după cum este necesar.

Concluzie

O comutare de context este un proces prin care un procesor modern schimbă firul pe care îl rulează. Procesul implică stocarea datelor relevante ale firului curent și restaurarea datelor relevante ale noului fir. Schimbarea contextului vine cu un cost de performanță legat de timpul necesar pentru a efectua comutarea și rata crescută de cache și rata TLB, deoarece acestea nu sunt stocate. Schimbările de context au loc fie pentru a se asigura că toate firele de execuție au o cantitate bună de timp CPU, fie din cauza unei întreruperi care indică faptul că un eveniment la care aștepta linia este finalizat.



Leave a Comment

Ce să faci dacă Powerbeats Pro nu se încarcă în carcasă

Ce să faci dacă Powerbeats Pro nu se încarcă în carcasă

Dacă Powerbeats Pro nu se încarcă, folosește o altă sursă de alimentare și curăță-ți căștile. Lasă carcasa deschisă în timp ce încarci căștile.

Canon Pixma MG5220: Scanare Fără Cerneală

Canon Pixma MG5220: Scanare Fără Cerneală

Cum să activezi scanarea pe Canon Pixma MG5220 când ai rămas fără cerneală.

5 Motive pentru care laptopul tău se supraîncălzește

5 Motive pentru care laptopul tău se supraîncălzește

Află care sunt unele dintre posibilele motive pentru care laptopul tău se supraîncălzește, împreună cu sfaturi și trucuri pentru a evita această problemă și a menține dispozitivul răcoros.

Cum să rezolvi codul de eroare GeForce Now 0xC272008F

Cum să rezolvi codul de eroare GeForce Now 0xC272008F

Te pregătești pentru o seară de gaming și va fi una mare – tocmai ai achiziționat „Star Wars Outlaws” pe serviciul de streaming GeForce Now. Descoperă singura soluție cunoscută care îți arată cum să repari codul de eroare GeForce Now 0xC272008F pentru a putea începe din nou să joci jocurile Ubisoft.

Elementele de bază ale imprimării 3D: Sfaturi de întreținere pentru imprimanta ta 3D

Elementele de bază ale imprimării 3D: Sfaturi de întreținere pentru imprimanta ta 3D

Întreținerea imprimantelor 3D este foarte importantă pentru a obține cele mai bune rezultate. Iată câteva sfaturi importante de reținut.

Cum să găsești adresa IP a unei imprimante

Cum să găsești adresa IP a unei imprimante

Ai probleme în a descoperi ce adresă IP folosește imprimanta ta? Te vom învăța cum să o găsești.

Principiile Imprimării 3D: O listă de verificare esențială pentru întreținere

Principiile Imprimării 3D: O listă de verificare esențială pentru întreținere

Menținerea echipamentului tău într-o stare bună este esențială. Iată câteva sfaturi utile pentru a-ți menține imprimanta 3D în condiții de vârf.

Cum să folosești AirPods cu telefoanele Samsung

Cum să folosești AirPods cu telefoanele Samsung

Dacă ești nesigur dacă să cumperi AirPods pentru telefonul tău Samsung, acest ghid te poate ajuta cu siguranță. Întrebarea cea mai evidentă este dacă cele două sunt

Cum se clonează un hard disk

Cum se clonează un hard disk

În era digitală modernă, în care datele sunt un bun valoros, clonarea unui hard disk pe Windows poate fi un proces crucial pentru mulți. Acest ghid cuprinzător

Cum să remediați driverul WUDFRd care nu s-a încărcat pe Windows 10?

Cum să remediați driverul WUDFRd care nu s-a încărcat pe Windows 10?

În timpul pornirii computerului, vă confruntați cu mesajul de eroare care spune că driverul WUDFRd nu s-a încărcat pe computer?