Hva er en prosessor med fire tråder. Prosesser og tråder i Windows

Mange toppprosessorer har tråder så vel som kjerner. Jeg skal prøve å forklare forskjellen mellom en tråd og en kjerne, og hva fordelen med disse trådene er. Tråder dukket opp for ganske lenge siden, nemlig under Pentium 4s regjeringstid (før dem var det i Xeons som supertråding).

På den tiden var tråder fortsatt av tvilsom nytte noen brukere mente at de bare forverret ytelsen.

Men faktisk falt ikke ytelsen, det er bare at på den tiden var det ingen programmer i det hele tatt som kunne fungere kompetent med to tråder. Derfor var tråder mest sannsynlig en eksperimentell teknologi på den tiden, nesten alle Pentium D hadde det heller ikke, med unntak av toppmodellene D955, D965 (dette er dual-cores med fire tråder).

La oss nå forstå litt om hva det hele er. Trådteknologi kalles Hyper-threading og vises forkortet: HT(vanligvis angitt på siden av boksene). En tråd er tillatt per kjerne. Hvis du noen ganger har lurt på "hvordan øke antall prosessortråder," så vil jeg skuffe deg - det er umulig, og ikke engang tenk på det, det er tull =).

Hyper-threading lar deg lagre tilstanden til to tråder samtidig, så i Windows ser slike tråder ut som kjerner. Det vil si at hvis du har en prosessor med 2 kjerner, så er dette 4 tråder. Følgelig mener jeg en prosessor som støtter hypertrading.

Hvordan fungerer Hyper-threading? Slik at du forstår, utfører prosessoren ikke bare dine oppgaver, men også andre, inkludert tjenester. Så mens du behandler dataene, sender tråden dem, eller venter på nye data fra tilfeldig tilgang minne. I løpet av denne tiden, mens den venter, kan det hjelpe en annen tråd. Det vil si at hypertrading er designet for å øke prosessorytelsen, og redusere inaktiv tid.

Det vil si at vi kan konkludere med at antall tråder alltid er lik antall kjerner multiplisert med to. Ingen annen vei. Denne teknologien ble utviklet av Intel, så AMD-prosessorer har det ikke, men det er en oppfatning at de har en lignende teknologi, og det er derfor mange tror at i åttekjerne AMD-prosessoreråtte er ikke en kjerne, men tråder.

Uansett er denne teknologien nyttig, selv om dette er virtuelle kjerner – bedre med HT enn uten.

Et annet pluss er at ikke bare systemet ser slike tråder som ekte kjerner, men også programmer, og hvis programmet kan parallellisere arbeidet, vil hastigheten være høyere med tråder enn uten.

Nå er du kanskje interessert i hvordan du finner ut antall prosessortråder? Det er veldig enkelt. Du må åpne oppgavebehandlingen (klikk på oppgavelinjen Høyreklikk), og gå til ytelsesfanen. Det vil være et kjernefelt og under det antall tråder, du trenger sistnevnte:


Som du kan se er antall tråder lik antall kjerner, fordi min Pentium G3220 dessverre ikke støtter HT-teknologi.

Moderne Intel-prosessorer Core i3, i7 støtter det, men i5 gjør det ikke (det ser ut til at bare bærbare datamaskiner har i5 med to kjerner og HT, og noen prosessorer for 1156-sokkelen, de har også to kjerner og HT). Jeg tror det er et markedsføringsknep for å sikre en jevn økning i ytelsen til modellene i i-serien.

Hvis du tenker på hvilken prosessor som er bedre - med tråder eller ikke, så selvfølgelig med dem. Noen ganger (jeg vil ikke gå i dybden) er prisen med og uten HT-støtte ikke høy, så det er verdt å betale ekstra og få den som støtter HT. Dette er meg, in generell disposisjon til deg for fremtiden.

I dag vil du ikke overraske noen med flerkjerneprosessorer. Tvert imot, alle prøver å få datamaskinen til å støtte så mange kjerner som mulig, og fungerer derfor raskere, og dette er riktig.
Når det kommer til prosessorer har det lenge bare vært to produsenter på markedet – Intel og AMD. Og hvis sistnevnte snakker om 8- og 10-kjerners prosessorer (som betyr at det er mange av dem, noe som betyr at de er kraftigere), så har de førstnevnte 2 og 4 kjerner, men fokuserer på trådene deres (ingen grunn til å skrive sint kommenterer at det også er flere kjerner siden prosessorer for hjemmebruk er beskrevet nedenfor).

Og hvis du ser på de sammenlignende grafene over prosessorytelse, kan du se at en 4-kjerners prosessor (ikke alle) fra Intel vil utkonkurrere en 8-kjerners prosessor fra AMD. Hvorfor er det slik? Tross alt er 4 mindre enn 8, noe som betyr at det burde være svakere... Men hvis du graver dypere (ikke direkte til cacher, frekvens, buss osv.), kan du se ett interessant ord som ofte brukes for å beskrive Intel prosessorer - Hyper-threading-støtte.

Hyper-threading-teknologi ("hypertrending" på vanlig språk) ble oppfunnet av Intel og brukes kun i deres prosessorer (ikke alle). Jeg vil ikke gå for dypt inn i detaljene, hvis du vil, kan du lese om det på. Denne teknologien lar deg dele hver kjerne i to, og som et resultat, i stedet for en fysisk, har vi to logiske (eller virtuelle) og en operasjonell en Windows-system mener at det er to installert i stedet for en.

Hvordan finne ut hvor mange tråder det er i prosessoren?

Hvis du vil finne ut om en spesifikk prosessor, indikerer de oftest støtte for Hyper-threading i beskrivelsen i butikker, enten ved å sette inn denne setningen eller ganske enkelt forkortelsen HT. Hvis det ikke finnes en slik beskrivelse, kan du alltid bruke den selv. sann informasjonoffisiell side Intel http://ark.intel.com/ru/search/advanced/?s=t&HyperThreading=true
Jeg anbefaler kun å bruke denne informasjonen fordi den er den mest nøyaktige.

Hvis du vil finne ut mens du allerede er i systemet og nøyaktig hvordan de samme trådene brukes i systemet ditt, så er det ikke noe enklere.

Start med evt på en praktisk måte(den enkleste måten er hurtigtastkombinasjonen Ctrl + Shift + Esc) fra hvor som helst (selv mens du leser denne artikkelen), og hvis du har Windows 7, gå til fanen Ytelse.


Følg med på øverste linje med prosessorbelastning og spesifikt antall "firkanter". Det er nøyaktig hvor mange det vil være - det er hvor mange kjerner det vil være, inkludert alle tråder. Mer presist, alle logiske/virtuelle kjerner vises her, og det er det som er tråder.

Hvis du har Windows 8, 8.1 eller 10, vil det ikke være noen slik fane, men det er Ytelse.


Her har jeg fremhevet hvor du må være oppmerksom. Det var forresten ikke forgjeves at jeg høyreklikket på denne grafen, for velger du Logiske prosesser vil grafen endre seg og ligne på den i Windows 7, dvs. Det vil være 8 "firkanter" og belastningsgrafer for hver kjerne.
Hvis du har det motsatte bildet, dvs. ikke én, men flere grafer vises, noe som betyr at det er akkurat det som er valgt denne gjenstanden i egenskapene til selve grafen.

Selvfølgelig er det flere andre måter å gjøre dette på, men i dette tilfellet bekker.

For eksempel kan du kalle systemegenskapen (kombinasjonen Vinn nøkler+ R og skriv inn systeminfo) og se der.

God ettermiddag. I dag vil jeg gjerne se på hvilke tråder som er i en prosessor. Nettopp de hvis funksjoner og evner de fleste ikke aner, men elsker å vise frem for andre.

Hensikten med funksjonen er at 1 kjerne kan behandle flere datastrømmer samtidig. Mens den første tråden er inaktiv og den andre gjør beregninger, kjører applikasjonen kan bruke den ledige logiske makten til egne formål. Som et resultat oppstår avbrudd mye sjeldnere, og du føler ikke forsinkelser eller andre ulemper mens du jobber.

Ulempen med teknologien er som følger:

  • begge trådene får tilgang til samme nivå 2 og 3 cache;
  • tung databehandlingsprosesser kan forårsake en konflikt i systemet.

For å si det veldig grovt, kan alle klossene fra ett sted til et annet flyttes i én hånd (1 strøm), eller i to (2 strømmer), men det er bare én person (1 kjerne) og blir sliten like under alle forhold , selv om produktiviteten hans faktisk er det dobbelte. Med andre ord stoler vi på ytelsen til CPUen, og mer spesifikt dens frekvens.

En prosess er et program i utførelse. En prosess kan også tenkes som en arbeidsenhet for. Til moderne typer Prosessorer har også en mindre arbeidsenhet, en tråd eller tråd. Med andre ord kan en prosess skape en eller flere tråder.

Hva er den grunnleggende forskjellen mellom begrepene prosess og flyt? Prosessen anses av OS som en forespørsel for alle typer ressurser (minne, filer, etc.), bortsett fra én - prosessortid. En tråd er en forespørsel om prosessortid.

I fremtiden vil konseptene prosess og tråd bli brukt som operasjonsenhet for OS. I de tilfellene dette ikke spiller noen vesentlig rolle, vil de kalles en oppgave

Planlegging av prosesser og tråder

Prosess- og trådplanlegging inkluderer:

  • Oppretting og ødeleggelse av prosesser
  • Kommunikasjon mellom prosesser
  • CPU tidsallokering
  • Gi prosesser de nødvendige ressursene (individuelt, i fellesskap)
  • Synkronisering (overvåking av forekomsten av løp og blokkering)
  • Etter at prosessen er fullført - "rengjøring", dvs. fjerne spor etter å være i systemet

Hver prosess er isolert fra andre av dens virtuelle adresserom, som er settet med adresser den kan manipulere programvaremodul prosess. OS tilordner virtuell adresseplass til det som er allokert til en prosess.

For å kommunisere henvender prosessene seg til OS, som gir kommunikasjonsmidler (rørledninger, postkasser, delte minneseksjoner osv.)

Evnen til å parallellisere beregninger innenfor en prosess til tråder øker effektiviteten. Mekanismen for å parallellisere beregninger for en applikasjon kalles multithreading. Prosesstråder har én adresse virtuelt rom. Parallellisering øker hastigheten på prosessutførelsen ved å eliminere OS-bytte fra ett adresseområde til et annet, noe som skjer når prosesser kjøres. Programmer blir mer logiske. En spesiell effekt oppnås i multiprosessorsystemer.

Et eksempel på flertrådsbehandling er å utføre MS SQL Server-spørringer

Skaper prosesser

Å lage en prosess er å lage en prosessbeskrivelse (en informasjonsstruktur som inneholder informasjonen som er nødvendig for å administrere denne prosessen)

Eksempler på beskrivelser for:

  • Windows NT/2000/XP - objektprosess
  • UNIX - prosesshåndtak
  • OS/2 – prosesskontrollblokk (PCB)

Opprett i tillegg en prosess - denne inkluderer også følgende trinn:

  • Finn et program på disken
  • omfordele RAM
  • allokere minne til en ny prosess
  • omskriv programmet til tildelt minne
  • endre noen programparametere

Merk. I noen systemer kan det hende at koder og data ikke umiddelbart passer inn i minnet, men snarere skrives om til et spesielt område på disken - bytteområdet

Opprette tråder

I et flertråds system, når en prosess opprettes, opprettes minst én tråd. For en tråd genererer operativsystemet en trådbeskrivelse (trådidentifikator, informasjon om rettigheter, prioritet, trådtilstand osv. Den opprinnelige tilstanden til tråden er suspendert).

En tråd kan skape en annen tråd - et barn. Når du avslutter en overordnet tråd, brukes forskjellige algoritmer. Asynkron fullføring innebærer fortsettelse av utførelse av underordnede tråder etter fullføring av overordnet tråd. Synkron avslutning av en overordnet tråd fører til at alle dens underordnede tråder avsluttes.

4.1 Prosesser

4.1.1 Prosesskonsept

Prosess(oppgave) - et program i utførelsesmodus.

Hver prosess er knyttet til sin adresseområde, som den kan lese fra og som den kan skrive data til.

Adresseområdet inneholder:

    selve programmet

    data for programmet

    programstabel

Hver prosess har et sett knyttet til seg registrerer , For eksempel:

    programteller (i prosessoren) - et register som inneholder adressen til neste kommando i køen for utførelse. Etter at en instruksjon er hentet fra minnet, justeres programtelleren og pekeren flyttes til neste instruksjon.

    stabelpeker

På mange operativsystemer lagres all informasjon om hver prosess i tillegg til innholdet i dens eget adresseområde prosesstabell operativsystem.

Noen tabellfelt:

Prosessledelse

Minnehåndtering

Filbehandling

Registrerer

Programteller

Stabelpeker

Prosesstilstand

En prioritet

Planleggingsmuligheter

Prosess-ID

Foreldreprosess

Prosessgruppe

Prosess starttid

CPU-tid brukt

Peker til tekstsegment

Peker til datasegment

Peker til et stabelsegment

Rotkatalogen

Arbeidskatalog

Filbeskrivelser

bruker-ID

Gruppe-ID

4.1.2 Prosessmodell

I et multitasking-system bytter den virkelige prosessoren fra prosess til prosess, men for å forenkle modellen vurderer vi et sett med prosesser som kjører parallelt (pseudo-parallell).

Tenk på en krets med fire kjørende programmer.

Bare én prosess er aktiv om gangen

Til høyre er prosesser som kjører parallelt, hver med sin egen programteller. Selvfølgelig er det faktisk bare én fysisk programteller, som den aktuelle prosessens logiske programteller lastes inn. Når tiden som er allokert til den aktuelle prosessen slutter, lagres den fysiske programtelleren i minnet, i prosessens logiske programteller.

4.1.3 Opprette en prosess

Tre hovedhendelser som fører til opprettelsen av prosesser (call gaffel eller Opprett prosess):

    En kjørende prosess sender et systemkall for å opprette en prosess

    Brukerforespørsel om å opprette en prosess

I alle tilfeller sender den aktive gjeldende prosessen et systemkall for å opprette en ny prosess.

I UNIX er hver prosess tildelt en prosessidentifikator (PID - Process IDentifier)

4.1.4 Avslutte prosessen

Fire hendelser som får en prosess til å stoppe (ring exit eller ExitProcess):

    Planlagt ferdigstillelse (slutt på utførelse)

    Planlagt avslutning på en kjent feil (for eksempel manglende fil)

    Avslutt på grunn av fatal feil (programfeil)

    Ødelagt av en annen prosess

Dermed består en suspendert prosess av sitt eget adresseområde, vanligvis kalt måte å minne på(kjernebilde), og komponenter i prosesstabellen (inkludert dens registre).

4.1.5 Prosesshierarki

I UNIX-systemer Det er et strengt hierarki av prosesser. Hver ny prosess opprettet systemanrop gaffel er et barn av den forrige prosessen. Barneprosessen mottar variabler, registre osv. fra forelderen. Etter calling fork, når forelderens data er kopiert, påvirker ikke påfølgende endringer i en av prosessene den andre, men prosessene husker hvem forelderen er.

I dette tilfellet er det i UNIX også stamfaren til alle prosesser - prosessen i det.

Prosesstre for UNIX-systemer

4.1.6 Prosessstatus

Tre prosesstilstander:

    Utførelse (CPU okkupert)

    Klar (en prosess er midlertidig suspendert for å la en annen prosess kjøre)

    Venter (prosessen kan ikke startes av interne årsaker, for eksempel å vente på en I/O-operasjon)

Mulige overganger mellom stater.

1. Prosessen er blokkert og venter på inndata

2. Planleggeren velger en annen prosess

3. Planleggeren velger denne prosessen

4. Inndata har kommet

Overganger 2 og 3 kalles opp av operativsystemets prosessplanlegger, så prosessene selv vet ikke engang om disse overgangene. Fra selve prosessenes synspunkt er det to tilstander av utførelse og venting.

På servere setter de ofte flere prosesser i standby-modus for å få raskere respons på en klientforespørsel, og så snart serveren mottar forespørselen, går prosessen fra "venter" til "utfører". Denne overgangen er mye raskere enn å starte en ny prosess.

4.2 Tråder (tråder, lett prosess)

4.2.1 Begrepet flyt

Hver prosess har et adresseområde og et enkelt strømme kjørbare kommandoer. I flerbrukersystemer må en ny prosess opprettes for å betjene klienten hver gang den samme tjenesten åpnes. Dette er mindre fordelaktig enn å lage en kvasi-parallell tråd i den prosessen med et enkelt adresseområde.

4.2.2 Strømningsmodell

Hver tråd er assosiert med:

    Teller for kommandoutførelse

    Registrerer for aktuelle variabler

    Stat

Tråder deler elementer av prosessen sin seg imellom:

    Adresseplass

    Globale variabler

    Åpne filer

  • Semaforer

    Statistisk informasjon.

Ellers er modellen identisk med prosessmodellen.

POSIX og Windows har støtte på kjernenivå for tråder.

4.2.3 Fordeler med å bruke tråder

    Forenkling av programmet i noen tilfeller ved å bruke et felles adresseområde.

    Hastigheten for å lage en strøm, sammenlignet med prosessen, er omtrent 100 ganger.

    Forbedre ytelsen til selve programmet, fordi Det er mulig å utføre beregninger på prosessoren og en I/O-operasjon samtidig. Eksempel: tekstredigerer med tre tråder kan samhandle med brukeren samtidig, formatere tekst og skrive en sikkerhetskopi til disk.

4.2.4 Implementering av tråder i brukerrom, kjerne og blandet

B- tråder i kjerneplass

Når EN Kjernen vet ingenting om tråder. Hver prosess trenger trådbord, lik prosesstabellen.

Fordeler med saken EN:

    Slik multithreading kan implementeres på en kjerne som ikke støtter multithreading

    Mer raskt bytte, opprettelse og avslutning av tråder

    En prosess kan ha sin egen planleggingsalgoritme.

Ulemper ved saken EN:

    Ingen timeravbrudd i én prosess

    Når du bruker en blokkering (prosessen settes i standby-modus, for eksempel: lesing fra tastaturet, men ingen data mottas) systemforespørsel alle andre tråder er blokkert.

    Kompleksiteten i implementeringen