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

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?

Cum să remediați codul de eroare NVIDIA GeForce Experience 0x0003

Cum să remediați codul de eroare NVIDIA GeForce Experience 0x0003

Aveți experiența NVIDIA GeForce cu codul de eroare 0x0003 pe desktop? Dacă da, citiți blogul pentru a afla cum să remediați această eroare rapid și ușor.

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

Cum să eliminați un GPU de pe un computer Windows în 2023

Cum să eliminați un GPU de pe un computer Windows în 2023

Trebuie să eliminați GPU-ul de pe computer? Alăturați-vă pentru a explica cum să eliminați un GPU de pe computer în acest ghid pas cu pas.

Cum se instalează un SSD NVMe pe un desktop și laptop

Cum se instalează un SSD NVMe pe un desktop și laptop

Ați cumpărat un nou SSD NVMe M.2, dar nu știți cum să îl instalez? Citiți mai departe pentru a afla cum să instalați un SSD NVMe pe laptop sau desktop.

Ce este o bombă logică?

Ce este o bombă logică?

O bombă logică este un incident de securitate în care un atacator stabilește o acțiune întârziată. Continuați să citiți pentru a afla mai multe.

Ce este un SoC?

Ce este un SoC?

Dacă v-ați uitat vreodată în interiorul unui turn de PC, puteți vedea că există o mulțime de componente diferite. Laptopul tău obișnuit conține majoritatea componentelor

Ce este criptarea asimetrică?

Ce este criptarea asimetrică?

Algoritmii de criptare asimetrică utilizează două chei distincte. O cheie este folosită pentru criptare, iar cealaltă pentru decriptare.

Steam Deck: Cum se formatează cardul SD

Steam Deck: Cum se formatează cardul SD

Steam Deck vine în trei opțiuni de stocare: eMMC de 64 GB, SSD NVMe de 256 GB și SSD NVMe de 512 GB. În funcție de biblioteca dvs. de jocuri și de dimensiunea jocurilor