Wat is een contextschakelaar?

In de begintijd van computers waren CPU's puur sequentiële machines. Dit hielp om ontwerpen eenvoudig te houden. Het beperkte echter ook de prestaties. Veel processen zullen gegevens uit het systeem-RAM of de harde schijf moeten opvragen. Hoewel het systeem-RAM snel is, is het nog steeds niet zo snel als de CPU, waardoor het inactief blijft, wachtend op gegevens totdat het antwoord terugkomt van het RAM. De situatie is nog erger voor gegevens die van de harde schijf worden opgevraagd, een opslagapparaat dat veel langzamer is dan RAM. Hier kan de CPU geruime tijd inactief zijn, wachtend op een reactie. Helaas is dit probleem bij sequentiële processors gewoonweg onvermijdelijk.

Gelukkig zijn moderne CPU's niet langer sequentieel. Ze bieden veel geavanceerde functies, zoals out-of-order-uitvoering en meerdere threads. Out-of-order uitvoering stelt de CPU in staat om komende instructies te analyseren en ze opnieuw te ordenen om de efficiëntie te maximaliseren. Multi-threading stelt de CPU in staat om talloze verschillende threads of processen te laten draaien.

Behalve dat er meerdere kernen zijn, kan de CPU er niet meer dan één tegelijk uitvoeren. Het kan het echter zo laten lijken door regelmatig tussen beide te schakelen om ervoor te zorgen dat ze elk een aanzienlijke hoeveelheid constante CPU-tijd krijgen. Het proces van schakelen tussen threads wordt een contextwisseling genoemd.

Hoe werkt een contextschakelaar?

Een contextwisseling bestaat uit twee delen, waarbij de vorige thread wordt uitgeschakeld en de nieuwe wordt ingeschakeld. Om de oude thread te wijzigen, moet de CPU de huidige status opslaan in een Process Control Block of schakelframe. Dit omvat de waarden van alle relevante CPU-registers en bestaat altijd uit de waarde van de programmateller. Zodra de thread is opgeslagen, kan een ingang worden toegevoegd aan een rij die gereed is, zodat deze indien nodig kan worden hersteld.

Schakelen in de volgende thread is hetzelfde proces in omgekeerde volgorde. Afhankelijk van de weging wordt er een thread uit de gereedstaande wachtrij geselecteerd. Als alternatief kan het worden gekozen door een onderbreking die aangeeft dat een gebeurtenis waarop de thread wachtte, nu klaar of voltooid is. De gegevens voor de thread worden vervolgens naar de juiste registers gekopieerd en de thread wordt hersteld. Op dit punt is de nieuwe thread klaar om door te gaan met werken vanaf het punt waar het stopte.

Prestatie-impact

Het proces van het lezen en schrijven van gegevens bij het in- of uitschakelen van een thread kost enige tijd, maar niet veel, omdat het gebruikte geheugen meestal snel is. Er zijn echter nog meer prestatiekosten. Bij het wisselen van threads zijn de gegevens in de CPU-caches en -buffers van de vorige thread mogelijk niet relevant voor de nieuwe thread. Dit kan leiden tot een aanzienlijke toename van TLB ( Translation Lookaside Buffer ) en cache-missers.

Dit effect is niet significant als de twee threads door hetzelfde proces zijn voortgebracht, aangezien ze waarschijnlijk aanzienlijke geheugenelementen zullen delen. De TLB moet volledig worden leeggemaakt bij het schakelen tussen threads van verschillende methoden. Dit leidt tot een 100% TLB miss rate, terwijl de hit rate van de CPU-cache ook aanzienlijk wordt verlaagd.

Hoewel CPU's hardware-ondersteuning bieden voor contextwisseling, gebruiken besturingssystemen dit meestal niet. Bij het wisselen van hardwarecontext is men zich niet bewust van de relevantie van gegevens. Daarom moet het alle registers opslaan en herstellen, waardoor de benodigde tijd en opslagruimte toenemen.

Bovendien slaat hardwarecontextomschakeling de gegevens van drijvende-kommaregisters niet op, functionaliteit die nodig kan zijn. Softwarecontextomschakeling wordt daarom over het algemeen gebruikt. Hiermee kunnen de gegevens uit alle registers worden bewaard, inclusief registers met drijvende komma. Softwarecontextschakelaars hebben wel degelijk inzicht in de relevantie van gegevens. Dit betekent dat het kan kiezen welke het opslaat als dat nodig is.

Conclusie

Een contextomschakeling is een proces waarbij een moderne CPU omschakelt welke thread wordt uitgevoerd. Het proces omvat het opslaan van de relevante gegevens van de huidige thread en het herstellen van de relevante gegevens van de nieuwe thread. Contextomschakeling brengt prestatiekosten met zich mee die verband houden met de tijd die nodig is om de omschakeling uit te voeren, en de verhoogde snelheid van cache- en TLB-missers omdat deze niet worden opgeslagen. Contextwisselingen gebeuren ofwel om ervoor te zorgen dat alle threads voldoende CPU-tijd hebben of vanwege een onderbreking die aangeeft dat een gebeurtenis waarop de lijn wachtte, voltooid is.



Leave a Comment

Hoe een harde schijf te klonen

Hoe een harde schijf te klonen

In het moderne digitale tijdperk, waarin gegevens een waardevol bezit zijn, kan het klonen van een harde schijf op Windows voor velen een cruciaal proces zijn. Deze uitgebreide gids

Hoe repareer ik het stuurprogramma WUDFRd kan niet worden geladen op Windows 10?

Hoe repareer ik het stuurprogramma WUDFRd kan niet worden geladen op Windows 10?

Krijgt u tijdens het opstarten van uw computer de foutmelding dat het stuurprogramma WUDFRd niet op uw computer kan worden geladen?

Hoe u NVIDIA GeForce Experience-foutcode 0x0003 kunt oplossen

Hoe u NVIDIA GeForce Experience-foutcode 0x0003 kunt oplossen

Ervaar je NVIDIA GeForce-ervaring met foutcode 0x0003 op je desktop? Zo ja, lees dan de blog om te zien hoe u deze fout snel en eenvoudig kunt oplossen.

3D-printen: problemen oplossen met het buigen van de onderkant van de print (olifantenpoot)

3D-printen: problemen oplossen met het buigen van de onderkant van de print (olifantenpoot)

Het kan vervelend zijn om te maken te krijgen met buigingen aan de onderkant van een afdruk. Hier ziet u hoe u de olifantenpoot kunt repareren in 3D-printen.

Basisprincipes van 3D-printen: hechting van het printerbed

Basisprincipes van 3D-printen: hechting van het printerbed

Leren over 3D-printen? Dit is wat u moet weten over ahesie van het printerbed.

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

Fix Roku speelt geen audio of video af

Fix Roku speelt geen audio of video af

Als Roku geen audio of video afspeelt, biedt deze gids voor probleemoplossing u een reeks handige oplossingen om het probleem op te lossen.

Fix Roku-kanaal kon inhoud niet laden

Fix Roku-kanaal kon inhoud niet laden

Als Roku een foutmelding geeft dat de inhoud op de kanalen niet kan worden geladen, kunt u uw apparaat opnieuw opstarten of een nieuw account maken.

Oplossing: Chromebook laadt geen afdrukvoorbeeld

Oplossing: Chromebook laadt geen afdrukvoorbeeld

Als uw Chromebook het afdrukvoorbeeld niet kan laden, start u uw laptop, printer en router opnieuw op. Verwijder bovendien de printer en installeer deze opnieuw.

Een GPU verwijderen van een Windows-pc in 2023

Een GPU verwijderen van een Windows-pc in 2023

Moet u de GPU van uw pc verwijderen? Ga met me mee terwijl ik uitleg hoe je een GPU van je pc verwijdert in deze stapsgewijze handleiding.