Hva er en kontekstbryter?

I de tidlige dagene med databehandling var CPU-er rent sekvensielle maskiner. Dette bidro til å holde designene enkle. Det begrenset imidlertid også ytelsen. Mange prosesser vil trenge å be om data fra system-RAM eller harddisken. Selv om system-RAM er rask, er den fortsatt ikke like rask som CPU-en, og lar den sitte inaktiv og vente på data til responsen kommer tilbake fra RAM-en. Situasjonen er enda verre for data som er forespurt fra harddisken, en lagringsenhet som er mye tregere enn RAM. Her kan CPU-en være inaktiv i betydelige perioder og vente på svar. Dessverre, med sekvensielle prosessorer, er dette problemet rett og slett uunngåelig.

Heldigvis er moderne CPUer ikke lenger sekvensielle. De tilbyr mange avanserte funksjoner, for eksempel utførelse og flere tråder. Utefor ordreutførelse lar CPUen analysere kommende instruksjoner og omorganisere dem for å maksimere effektiviteten. Multi-threading lar CPUen ha mange forskjellige tråder eller prosesser i gang.

Utenom å ha flere kjerner, kan ikke CPUen kjøre mer enn én om gangen. Det kan imidlertid få det til å se ut som det ved å bytte mellom dem regelmessig for å sikre at de hver får en betydelig mengde konstant CPU-tid. Prosessen med å bytte mellom tråder kalles en kontekstbryter.

Hvordan fungerer en kontekstbryter?

En kontekstbryter består av to deler, bytter ut den forrige tråden og bytter inn den nye. For å endre den gamle tråden, må CPU-en lagre sin nåværende tilstand til en prosesskontrollblokk eller bytteramme. Dette inkluderer verdiene til eventuelle relevante CPU-registre og består alltid av verdien til programtelleren. Når tråden er lagret, kan et håndtak legges til en klar kø slik at den kan gjenopprettes ved behov.

Bytte i den følgende tråden er den samme prosessen i motsatt rekkefølge. En tråd velges enten fra klarkøen, avhengig av vekting. Alternativt kan det velges med et avbrudd som indikerer at en hendelse tråden ventet på nå er klar eller fullført. Dataene for tråden blir så kopiert inn i de riktige registrene, og tråden gjenopprettes. På dette tidspunktet er den nye tråden klar til å fortsette driften der den stoppet.

Ytelsespåvirkning

Prosessen med å lese og skrive data når du bytter en tråd inn eller ut, tar litt tid, men ikke mye, siden minnet som brukes vanligvis er høyhastighets. Det er imidlertid ytterligere ytelseskostnader. Når du bytter tråder, kan det hende at dataene i CPU-cachene og bufferne fra forrige tråd ikke er relevante for den nye tråden. Dette kan føre til en betydelig økning i TLB ( Translation Lookaside Buffer ), og cache-misser.

Denne effekten er ikke signifikant hvis de to trådene ble skapt av samme prosess, da de sannsynligvis deler betydelige minneelementer. TLB må skylles helt når du bytter mellom tråder fra forskjellige metoder. Dette fører til en 100 % TLB-missrate, mens trefffrekvensen til CPU-cachen også reduseres betydelig.

Mens CPU-er tilbyr maskinvarestøtte for kontekstbytte, bruker operativsystemer vanligvis ikke dette. Bytting av maskinvarekontekst mangler bevissthet om relevansen til data. Derfor må den lagre og gjenopprette alle registre, noe som øker tiden det tar og lagringsplassen som kreves.

I tillegg lagrer ikke maskinvarekontekstbytte dataene fra flyttallregistre, funksjonalitet som kan være nødvendig. Programvarekontekstbytting brukes derfor generelt. Det gjør det mulig å holde data fra alle registre, inkludert flyttallregistre. Programvarekontekstbrytere har en forståelse av relevansen til data. Dette betyr at den kan velge hvilke som skal lagres etter behov.

Konklusjon

En kontekstbryter er en prosess der en moderne CPU bytter hvilken tråd den kjører. Prosessen innebærer å lagre gjeldende tråds relevante data og gjenopprette den nye trådens relevante data. Kontekstsvitsjing kommer med en ytelseskostnad knyttet til tiden som trengs for å utføre vekslingen, og den økte frekvensen av cache og TLB-miss da disse ikke lagres. Kontekstbrytere skjer enten for å sikre at alle tråder har god tilførsel av CPU-tid eller på grunn av et avbrudd som indikerer at en hendelse linjen ventet på er fullført.


Hvordan klone en harddisk

Hvordan klone en harddisk

I den moderne digitale tidsalder, hvor data er en verdifull ressurs, kan kloning av en harddisk på Windows være en avgjørende prosess for mange. Denne omfattende guiden

Hvordan fikse driveren WUDFRd kunne ikke lastes inn på Windows 10?

Hvordan fikse driveren WUDFRd kunne ikke lastes inn på Windows 10?

Står du overfor feilmeldingen mens du starter datamaskinen som sier at driveren WUDFRd ikke kunne lastes inn på datamaskinen?

Slik fikser du NVIDIA GeForce Experience-feilkode 0x0003

Slik fikser du NVIDIA GeForce Experience-feilkode 0x0003

Opplever du NVIDIA GeForce-opplevelsesfeilkode 0x0003 på skrivebordet ditt? Hvis ja, les bloggen for å finne ut hvordan du løser denne feilen raskt og enkelt.

Hva er SMPS?

Hva er SMPS?

Lær hva som er SMPS og betydningen av ulike effektivitetsvurderinger før du velger en SMPS for datamaskinen din.

Hvorfor slås ikke Chromebooken på

Hvorfor slås ikke Chromebooken på

Få svar på spørsmålet Hvorfor slås ikke Chromebooken min på? I denne nyttige veiledningen for Chromebook-brukere.

Slik rapporterer du phishing-svindel til Google

Slik rapporterer du phishing-svindel til Google

Lær hvordan du rapporterer en svindler til Google for å forhindre at de svindler andre med denne veiledningen.

Roomba stopper, stikker og snur – fiks

Roomba stopper, stikker og snur – fiks

Løs et problem der Roomba-robotstøvsugeren stopper, fester seg og fortsetter å snu.

Hvordan endre grafikkinnstillinger på Steam Deck

Hvordan endre grafikkinnstillinger på Steam Deck

Steam Deck tilbyr en robust og allsidig spillopplevelse rett ved fingertuppene. Men for å optimere spillingen din og sikre best mulig

Hva er isolasjonsbasert sikkerhet?

Hva er isolasjonsbasert sikkerhet?

Skulle fordype seg i et emne som blir stadig viktigere i verden av cybersikkerhet: isolasjonsbasert sikkerhet. Denne tilnærmingen til

Slik bruker du Auto Clicker for Chromebook

Slik bruker du Auto Clicker for Chromebook

I dag skulle du fordype deg i et verktøy som kan automatisere repeterende klikkeoppgaver på Chromebooken din: Auto Clicker. Dette verktøyet kan spare deg for tid og