Hvad er en Context Switch?

I de tidlige dage af computing var CPU'er rent sekventielle maskiner. Dette hjalp med at holde design enkle. Det begrænsede dog også ydeevnen. Mange processer skal anmode om data fra system-RAM eller harddisken. Selvom system-RAM er hurtig, er den stadig ikke så hurtig som CPU'en, og den lader den sidde inaktiv og venter på data, indtil svaret kommer tilbage fra RAM'en. Situationen er endnu værre for data, der anmodes om fra harddisken, en lagerenhed, der er meget langsommere end RAM. Her kan CPU'en være inaktiv i betydelige perioder og vente på et svar. Desværre er dette problem ganske enkelt uundgåeligt med sekventielle processorer.

Heldigvis er moderne CPU'er ikke længere sekventielle. De tilbyder mange avancerede funktioner, såsom udelukket udførelse og flere tråde. Eksekvering uden for orden giver CPU'en mulighed for at analysere kommende instruktioner og omarrangere dem for at maksimere effektiviteten. Multi-threading gør det muligt for CPU'en at have adskillige forskellige tråde eller processer kørende.

Ud over at have flere kerner, kan CPU'en ikke køre mere end én ad gangen. Det kan dog få det til at ligne det ved at skifte mellem dem regelmæssigt for at sikre, at de hver især får en mærkbar mængde konstant CPU-tid. Processen med at skifte mellem tråde kaldes et kontekstskift.

Hvordan fungerer en kontekstswitch?

En kontekstswitch består af to dele, udskiftning af den forrige tråd og indskiftning af den nye. For at ændre den gamle tråd skal CPU'en gemme sin nuværende tilstand i en proceskontrolblok eller switchramme. Dette inkluderer værdierne af eventuelle relevante CPU-registre og består altid af værdien af ​​programtælleren. Når tråden er blevet gemt, kan et håndtag tilføjes til en klar kø, så den kan gendannes, når det er nødvendigt.

Skift i den følgende tråd er den samme proces omvendt. En tråd vælges enten fra klarkøen, afhængig af vægtning. Alternativt kan det vælges ved et afbrydelse, der angiver, at en begivenhed, som tråden ventede på, nu er klar eller afsluttet. Dataene for tråden kopieres derefter ind i de korrekte registre, og tråden gendannes. På dette tidspunkt er den nye tråd klar til at fortsætte driften fra hvor den stoppede.

Ydeevnepåvirkning

Processen med at læse og skrive data, når du skifter en tråd ind eller ud, tager noget tid, men ikke meget, da den anvendte hukommelse typisk er højhastigheds. Der er dog yderligere præstationsomkostninger. Når du skifter tråde, er dataene i CPU-caches og buffere fra den forrige tråd muligvis ikke relevante for den nye tråd. Dette kan føre til en betydelig stigning i TLB ( Translation Lookaside Buffer ) og cache-misser.

Denne effekt er ikke signifikant, hvis de to tråde blev skabt af den samme proces, da de sandsynligvis deler betydelige hukommelseselementer. TLB'en skal skylles helt, når der skiftes mellem tråde fra forskellige metoder. Dette fører til en 100 % TLB-missrate, mens hitraten for CPU-cachen også reduceres betydeligt.

Mens CPU'er tilbyder hardwaresupport til kontekstskift, bruger operativsystemer typisk ikke dette. Hardwarekontekstskift mangler bevidsthed om relevansen af ​​data. Derfor skal den gemme og gendanne alle registre, hvilket øger den tid, det tager og den nødvendige lagerplads.

Derudover gemmer hardwarekontekstskift ikke data fra flydende kommaregistre, funktionalitet, der kan være nødvendig. Softwarekontekstskifte bruges derfor generelt. Det gør det muligt at opbevare data fra alle registre, inklusive flydende kommaregistre. Softwarekontekstskifter har en forståelse af relevansen af ​​data. Det betyder, at den kan vælge og vrage, hvilke der skal opbevares efter behov.

Konklusion

En kontekstswitch er en proces, hvorved en moderne CPU skifter, hvilken tråd den kører. Processen involverer lagring af den aktuelle tråds relevante data og gendannelse af den nye tråds relevante data. Kontekstskift kommer med en ydelsesomkostning relateret til den tid, der er nødvendig for at udføre skiftet, og den øgede hastighed af cache og TLB-misser, da disse ikke lagres. Kontekstskift sker enten for at sikre, at alle tråde har en god forsyning af CPU-tid eller på grund af et afbrydelse, der indikerer, at en hændelse, som linjen ventede på, er fuldført.


Leave a Comment

Sådan installer du en SSD på stationære og bærbare computere

Sådan installer du en SSD på stationære og bærbare computere

Har du lige købt en SSD i håbet om at opgradere din computers interne lager, men ved ikke, hvordan du installerer SSD? Læs denne artikel nu!

Canon Pixma MG5220: Scan Uden Blæk

Canon Pixma MG5220: Scan Uden Blæk

Sådan aktiveres scanning på Canon Pixma MG5220, når du er løbet tør for blæk.

10 Bedste NAS Lagringsenheder til Hjem og Professionelt Brug

10 Bedste NAS Lagringsenheder til Hjem og Professionelt Brug

Uanset om du leder efter en NAS til dit hjem eller kontor, så tjek denne liste over de bedste NAS lagringsenheder.

Hvad skal man gøre, hvis Powerbeats Pro ikke oplades i etui

Hvad skal man gøre, hvis Powerbeats Pro ikke oplades i etui

Hvis din Powerbeats Pro ikke oplades, skal du bruge en anden strømkilde og rengøre dine earbuds. Lad etuiet være åbent, mens du oplader dine earbuds.

Sådan Fixer du GeForce Now Fejlkode 0xC272008F

Sådan Fixer du GeForce Now Fejlkode 0xC272008F

Du er klar til en aften med gaming, og det bliver en stor aften - du har lige hentet "Star Wars Outlaws" på GeForce Now streamingtjenesten. Opdag den eneste kendte løsning, der viser dig, hvordan du kan fikse GeForce Now Fejlkode 0xC272008F, så du kan begynde at spille Ubisoft-spil igen.

Sådan forbinder du Windows 11 bærbar computer til projector/TV

Sådan forbinder du Windows 11 bærbar computer til projector/TV

Læs denne artikel for at lære om den enkle trin-for-trin proces for at forbinde en bærbar computer til en projector eller TV på Windows 11 og Windows 10 OS.

Sådan Finder Du IP-adressen til en Printer

Sådan Finder Du IP-adressen til en Printer

Har du problemer med at finde ud af, hvilken IP-adresse din printer bruger? Vi viser dig, hvordan du finder den.

3D Printning Grundlæggende: Vedligeholdelsestips til din 3D-printer

3D Printning Grundlæggende: Vedligeholdelsestips til din 3D-printer

At holde dine 3D-printere er meget vigtigt for at få de bedste resultater. Her er nogle vigtige tips at huske på.

3D Printning Grundlæggende: En Nødvendig Vedligeholdelseskontrolliste

3D Printning Grundlæggende: En Nødvendig Vedligeholdelseskontrolliste

At holde dit udstyr i god stand er et must. Her er nogle nyttige tips til at holde din 3D-printer i topstand.

5 Årsager til, at din bærbare computer overophedes

5 Årsager til, at din bærbare computer overophedes

Find ud af nogle af de mulige årsager til, at din bærbare computer overopheder, sammen med tips og tricks til at undgå dette problem og holde din enhed kølig.