Vad är en Context Switch?

Under de första dagarna av datoranvändning var processorer rent sekventiella maskiner. Detta hjälpte till att hålla designen enkel. Men det begränsade också prestandan. Många processer kommer att behöva begära data från system-RAM eller hårddisken. Även om system-RAM-minnet är snabbt, är det fortfarande inte lika snabbt som processorn, vilket gör att det sitter inaktivt och väntar på data tills svaret kommer tillbaka från RAM-minnet. Situationen är ännu värre för data som begärs från hårddisken, en lagringsenhet mycket långsammare än RAM. Här kan processorn vara inaktiv under betydande perioder och väntar på ett svar. Tyvärr, med sekventiella processorer, är detta problem helt enkelt oundvikligt.

Tack och lov är moderna processorer inte längre sekventiella. De erbjuder många avancerade funktioner, som exekvering i oordning och flera trådar. Utförande i ordning gör att CPU:n kan analysera kommande instruktioner och ordna om dem för att maximera effektiviteten. Multi-threading gör att CPU kan ha många olika trådar eller processer igång.

Förutom att ha flera kärnor kan CPU:n inte köra mer än en åt gången. Det kan dock få det att se ut som det genom att växla mellan dem regelbundet för att säkerställa att var och en får en avsevärd mängd konstant CPU-tid. Processen att växla mellan trådar kallas en kontextväxling.

Hur fungerar en kontextväxling?

En kontextväxling består av två delar, att byta ut den föregående tråden och byta in den nya. För att ändra den gamla tråden måste CPU:n spara sitt nuvarande tillstånd till ett Process Control Block eller switch frame. Detta inkluderar värdena för eventuella relevanta CPU-register och består alltid av programräknarens värde. När tråden har lagrats kan ett handtag läggas till i en färdig kö så att den kan återställas vid behov.

Att byta i följande tråd är samma process i omvänd riktning. En tråd väljs antingen från färdigkön, beroende på viktning. Alternativt kan det väljas med ett avbrott som indikerar att en händelse som tråden väntade på nu är klar eller klar. Data för tråden kopieras sedan till rätt register och tråden återställs. Vid denna tidpunkt är den nya tråden redo att fortsätta driften där den slutade.

Prestandapåverkan

Processen att läsa och skriva data när du växlar in eller ut en tråd tar lite tid, men inte mycket, eftersom minnet som används vanligtvis är höghastighets. Det finns dock ytterligare prestationskostnader. När du byter tråd kan data i CPU-cachen och buffertarna från den föregående tråden inte vara relevant för den nya tråden. Detta kan leda till en betydande ökning av TLB ( Translation Lookaside Buffer ) och cachemissar.

Denna effekt är inte signifikant om de två trådarna skapades av samma process, eftersom de sannolikt delar betydande minneselement. TLB:n måste spolas helt när man byter mellan trådar från olika metoder. Detta leder till en 100 % TLB-missfrekvens medan träfffrekvensen för CPU-cachen också reduceras avsevärt.

Medan CPU:er erbjuder hårdvarustöd för kontextväxling, använder operativsystem vanligtvis inte detta. Byte av hårdvarukontext saknar medvetenhet om datas relevans. Därför måste den lagra och återställa alla register, vilket ökar den tid det tar och det lagringsutrymme som krävs.

Dessutom lagrar inte hårdvarukontextväxling data från flyttalsregister, funktionalitet som kan vara nödvändig. Programvarukontextväxling används därför i allmänhet. Det gör det möjligt att lagra data från alla register, inklusive flyttalsregister. Programvarukontextväxlar har en förståelse för datas relevans. Detta innebär att den kan välja och välja vilka som ska lagras efter behov.

Slutsats

En kontextväxel är en process genom vilken en modern CPU växlar vilken tråd den körs. Processen innefattar att lagra den aktuella trådens relevanta data och återställa den nya trådens relevanta data. Kontextväxling kommer med en prestandakostnad relaterad till den tid som krävs för att utföra växlingen, och den ökade frekvensen av cache- och TLB-missar eftersom dessa inte lagras. Kontextväxlingar sker antingen för att säkerställa att alla trådar har ett bra utbud av CPU-tid eller på grund av ett avbrott som indikerar att en händelse som linjen väntade på är klar.


Leave a Comment

Hur man ansluter en Windows 11-laptop till projektor/TV

Hur man ansluter en Windows 11-laptop till projektor/TV

Läs denna artikel för att lära dig den enkla steg-för-steg-processen för att ansluta en laptop till en projektor eller en TV på Windows 11 och Windows 10-operativsystem.

Hur man hittar IP-adressen till en skrivare

Hur man hittar IP-adressen till en skrivare

Har du problem med att ta reda på vilken IP-adress din skrivare använder? Vi visar dig hur du hittar den.

Vad du ska göra om Powerbeats Pro inte laddar i fodralet

Vad du ska göra om Powerbeats Pro inte laddar i fodralet

Om dina Powerbeats Pro inte laddar, använd en annan strömkälla och rengör dina hörsnäckor. Lämna fodralet öppet medan du laddar dina hörsnäckor.

Så här installerar du en SSD på stationära datorer och bärbara datorer

Så här installerar du en SSD på stationära datorer och bärbara datorer

Har du precis köpt en SSD och hoppas att uppgradera den interna lagringen på din dator men vet inte hur du installerar SSD? Läs den här artikeln nu!

Hur man installerar en SSD på stationära och bärbara datorer

Hur man installerar en SSD på stationära och bärbara datorer

Köpte du precis en SSD i hopp om att uppgradera den interna lagringen på din PC men vet inte hur man installerar SSD? Läs denna artikel nu!

Hur man stänger av kameraslutarljudet – Galaxy S 21 Plus

Hur man stänger av kameraslutarljudet – Galaxy S 21 Plus

Ta bilder i tystnad och tysta slutarljudet på din Galaxy S21 Plus. Här är allt du behöver veta om kamerainställningar.

Hur man klona en hårddisk

Hur man klona en hårddisk

I den moderna digitala tidsåldern, där data är en värdefull tillgång, kan kloning av en hårddisk på Windows vara en avgörande process för många. Denna omfattande guide

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Står du inför felmeddelandet när du startar din dator som säger att drivrutinen WUDFRd inte kunde laddas på din dator?

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Upplever du NVIDIA GeForce-felkod 0x0003 på ditt skrivbord? Om ja, läs bloggen för att hitta hur du åtgärdar det här felet snabbt och enkelt.

Vad är SMPS?

Vad är SMPS?

Lär dig vad som är SMPS och innebörden av olika effektivitetsklasser innan du väljer en SMPS för din dator.