Den arven av tidligere design, slik som Babbage er forskjellen motor og stormaskin punch kort systemer av 1970-tallet, har en betydelig innvirkning på dagens datasystemer. I min første artikkel i denne historiske serier, Datamaskinen historie og moderne datamaskiner for sysadmins, jeg diskutert flere forløpere til den moderne datamaskinen og nevnte egenskapene som definerer det vi kaller en datamaskin i dag.,

I denne artikkelen, vil jeg diskutere CPU (central processing unit), herunder dets komponenter og funksjonalitet. Mange av emnene se tilbake til den første artikkelen, så sørg for å lese det, hvis du ikke allerede har gjort det.

CPU (central processing unit)

CPU i moderne datamaskiner er legemliggjørelsen av den «mill» i Babbage er forskjellen motor. Begrepet central processing unit stammer helt tilbake i mists of computer tid når en enkelt massive skap inneholdt elementer som kreves for å tolke maskin nivå programmet instruksjoner og utføre operasjoner på data levert., Central processing unit også gjennomført alle behandling for eventuelle tilkoblede eksterne enheter. Tilleggsutstyr inkludert skrivere, kortlesere, og tidlig lagringsenheter, for eksempel drum og disk stasjoner. Moderne eksterne enheter som har en betydelig mengde av prosessorkraft seg selv og off-load noen behandling av oppgaver fra CPU. Dette frigjør CPU opp fra input/output oppgaver, slik at strømmen til den primære oppgaven.

Tidlige datamaskiner hadde bare én CPU og kan bare utføre én oppgave av gangen.,

Vi beholde begrepet CPU i dag, men nå er det refererer til prosessor pakken på en typisk hovedkort. Figur 1 viser en standard Intel-prosessor pakken.

Bilde

Figur 1: En Intel Core i5-prosessor pakken (Jud McCranie via Wikimedia Commons, CC-BY-SA-4.0).

Det er virkelig ingenting å se her, annet enn prosessor pakken selv. Prosessor pakken er en chip som inneholder prosessor(s) forseglet inne i en metallbeholder, og montert på en liten krets (PC) styret., Pakken er rett og slett falt på plass i CPU-en kontakt på hovedkortet og sikret med en låsespaken arrangement. En CPU kjøler festes til prosessor pakken. Det er flere forskjellige fysiske sockets med bestemte numre til kontakter, så får den riktige pakken for å passe hovedkort socket er viktig, dersom du bygger din egen pc.

Hvordan CPU fungerer

La oss se på CPU-en i mer detalj. Figur 2 er en skjematisk tegning av en hypotetisk CPU, slik at du kan visualisere komponenter lettere., RAM og systemklokken, er skyggelagt fordi de ikke er en del av CPU og er bare synlig for klarhet. Også, noen forbindelser mellom CPU klokke og kontrollenheten til CPU komponenter er trukket inn. Det er nok å si at signaler fra klokke og kontrollenheten er en integrert del av alle andre komponenter.

Bilde

Figur 2: En forenklet skjematisk diagram av et typisk CPU.

Dette design ser ikke spesielt enkel, men virkeligheten er enda mer komplisert., Dette tallet er tilstrekkelig for vårt formål uten å bli altfor komplisert.

Aritmetiske logic unit

Det aritmetiske logic unit (ALU) utfører aritmetiske og logiske funksjoner som er arbeidet av datamaskinen. A og B registrerer hold input data, og akkumulator mottar resultatet av operasjonen. Undervisningen registrere inneholder instruksjoner som ALU er å utføre.

For eksempel, når du legger til to tall, ett tall, er plassert i Et register og andre i B registrere deg. ALU-utfører tillegg og setter resultatet i akkumulatoren., Hvis operasjonen er en logisk ett, data som skal sammenlignes er lagt inn i registrene. Resultatet av sammenligningen, 1 eller 0, er satt i akkumulatoren. Om dette er en logisk eller regnemåte, akkumulatoren innhold er deretter satt inn i cache beliggenhet reservert av programmet for resultatet.

Det er en annen type operasjon utført av ALU. Resultatet er en adresse i minnet, og det er brukt til å beregne en ny plassering i minne til å begynne instruksjoner. Resultatet er plassert i instruksjonspekeren registrere deg.,

Instruksjon registrere og peker

instruksjonspekeren angir plasseringen i minnet som inneholder den neste instruksjonen som skal utføres av CPU-en. Når CPU-en er ferdig gjennomføring av de gjeldende instruksjoner, den neste instruksjonen er lagt inn i undervisningen registrer deg fra minnet beliggenhet peker til instruksjonspekeren.

Etter at undervisningen er lagt inn i undervisningen registrere, instruksjon registrere pekeren er økt med en instruksjon adresse. Økes gjør det for å være klar til å flytte til den neste instruksjonen i undervisningen registrere deg.,

Buffer

CPU aldri direkte tilgang til RAM. Moderne Prosessorer har ett eller flere lag av buffer. CPU-ens evne til å utføre beregninger er mye raskere enn RAM evne til å mate data til CPU. Årsakene til dette er utenfor omfanget av denne artikkelen, men jeg vil utforske det videre i neste artikkel.

Cache-minne som er raskere enn systemets RAM, og det er nærmere CPU fordi det er på prosessor chip. Buffer gir lagringsplass for data og instruksjoner for å hindre CPU venter på at data skal hentes fra RAM., Når prosessoren trenger data—og programmet instruksjoner er også ansett for å være data—cache avgjør hvorvidt dataene er allerede i boligen, og gir det til CPU.

Dersom den forespurte dataene ikke er i cache, det er hentet fra RAM og bruker intelligent algoritmer for å flytte mer data fra RAM til buffer. Cache-kontrolleren analyserer de nødvendige data og forsøker å forutse hvilke nye data som vil være nødvendig fra RAM. Den laster den forventede data i hurtigbufferen., Ved å holde noen data nærmere CPU i en cache som er raskere enn RAM, CPU kan være opptatt og ikke kaste bort sykluser venter på data.

Vår enkle CPU har tre nivåer av buffer. Nivå 2 og 3 er designet for å forutsi hvilke data og program instruksjoner vil være nødvendig neste, flytte data fra RAM, og flytte den nærmere den CPU-for å være klar når det trengs. Disse cache størrelser vanligvis strekker seg fra 1 MB til 32 MB, avhengig av hastighet og tiltenkt bruk av prosessoren.

Nivå 1-cache er nærmest til CPU. I vår CPU, det er to typer L1 cache., L1i er instruksjon cache, og L1d er data cache. Nivå 1 cache størrelser vanligvis varierer fra 64 MB til 512 KB.

Memory management unit

memory management unit (MMU) styrer dataflyten mellom hoved-minne (RAM) og CPU. Det gir også minne nødvendig beskyttelse i multitasking miljøer og konvertering mellom det virtuelle minnet adresser og fysiske adresser.

CPU klokke og kontrollenhet

Alle av CPU-komponenter må være synkronisert til å arbeide sammen jevnt., Kontrollenheten utfører denne funksjonen på en sats som fastsettes av klokkehastigheten og er ansvarlig for å lede virksomheten til andre enheter ved hjelp av timing signaler som strekker seg over hele CPU.

RAM (Random access memory)

Selv om RAM, eller viktigste lagring, er vist i dette diagrammet, og den neste, det er ikke virkelig en del av CPU. Dens funksjon er å lagre programmer og data, slik at de er klar til bruk når prosessoren trenger dem.

Hvordan det fungerer

Cpuer arbeid på en syklus som er administrert av kontrollenheten og synkronisert fra CPU klokke., Denne syklusen kalles CPU instruksjon syklus, og det består av en rekke hente/dekode/utføre komponenter. Undervisningen, som kan inneholde statiske data eller pekere til variabel data er hentet og plassert i undervisningen registrere deg. Undervisningen er dekodet, og alle data er lagt inn i A og B dataregistre. Instruksjonen utføres ved hjelp av A og B registre, med det resultat satt i akkumulatoren. CPU deretter øker instruksjonspekeren verdi av lengden av den forrige, og begynner på nytt.

Den grunnleggende CPU instruksjon syklusen ser ut som dette.,

Bilde

Figur 3: grunnleggende CPU instruksjon syklus.

need for speed

Selv om den grunnleggende CPU fungerer godt, Prosessorer som kjører på denne enkle syklusen kan brukes enda mer effektivt. Det er flere strategier for å øke CPU-ytelsen, og vi vil se på to av dem her.

Supercharging undervisningen syklus

Ett problem tidlig CPU designere støtt var bortkastet tid i de forskjellige CPU-komponenter., En av de første strategiene for å bedre CPU-ytelsen var overlappende deler av CPU-instruksjoner syklus for å utnytte de ulike delene av CPU-en mer fullstendig.

For eksempel, når den nåværende undervisningen har blitt dekodet, den neste er hentet og plassert i undervisningen registrere deg. Så snart som har oppstått, instruksjonspekeren er oppdatert med den neste instruksjonen er minneadresse. Bruk av overlappende undervisning sykluser er illustrert i Figur 4.,

Bilde

Figur 4: CPU-instruksjoner syklus med overlapp.

Dette design ser fin og glatt, men faktorer som venter for i/O kan forstyrre flyten. Ikke har de riktige data eller instruksjoner i hurtigbufferen krever MMU for å finne riktig kjære og flytte dem til CPU-en, og det kan ta litt tid. Visse instruksjoner også ta mer CPU-sykluser for å fullføre enn andre, forstyrrende med glatt overlappende.

Likevel, dette er en kraftig strategi for å forbedre CPU ytelse.,

Hyperthreading

en Annen strategi for å bedre CPU-ytelsen er hyperthreading. Hyperthreading gjør en single core prosessor å fungere som to Cpuer ved å tilby to data og instruksjon bekker. Legge til en ny instruksjonspekeren og instruksjon registrerer deg til vår hypotetiske CPU, som vist i Figur 5, fører det til å fungere som to Cpuer, gjennomføring av to separate instruksjon strømmer under hver instruksjon syklus. Også, når man gjennomføring stream boder mens du venter på data—igjen, instruksjonene er også data—andre kjøring stream fortsetter behandlingen., Hver kjerne som implementerer hyperthreading er tilsvarende to Cpuer i sin evne til å behandle instruksjoner.

Bilde

Figur 5: Et skjematisk diagram av en PROSESSOR med hyperthreading.

Husk at dette er en svært forenklet diagram og forklaring av vår hypotetiske CPU. Virkeligheten er langt mer komplisert.

Mer terminologi

jeg har støtt på en rekke forskjellige CPU-terminologi., Å definere terminologi litt mer eksplisitt, la oss se på CPU-selv ved hjelp av det lscpu – kommandoen.

Intel-prosessor vist ovenfor er en pakke som plugges inn i en enkelt kontakt på hovedkortet. Prosessor pakken inneholder seks kjerner. Hver kjerne er i stand til hyperthreading, slik at hver enkelt kan kjøre to samtidige tråder for en sum av 12 Cpuer.

Min definisjoner:

  • Kjerne – kjerne er den minste fysisk hardware enhet som er i stand til å utføre oppgaven med behandling. Den inneholder en ALU og ett eller to sett av støtte registre., Det andre settet av registre og støtte til kretsene kan hyperthreading. En eller flere kjerner kan være kombinert i en enkelt fysisk pakken.
  • CPU – EN logisk hardware enhet som kan behandle en eneste tråd av utførelsen. Den moderne bruken av begrepet central processing unit) refererer til samlet antall tråder som en prosessor pakken er i stand til å utføre samtidig. En single-core prosessor som ikke støtter hyperthreading er det samme som for en enkelt CPU. I dette tilfellet, CPU og core er synonymt., En hyperthreading-prosessor med en enkelt kjerne er den funksjonelle tilsvarende to Cpuer. En prosessor med hyperthreading åtte kjerner er funksjonell ekvivalent til 16 Prosessorer.
  • Pakke – Den fysiske delen som inneholder en eller flere kjerner, for eksempel som vist i Figur 1 ovenfor.
  • Prosessor – 1) En enhet som behandler program instruksjonene for å manipulere data. 2) brukes Ofte som et synonym for pakken.,
  • Socket – noen Ganger brukt som et annet synonym for pakken, men det mer nøyaktig refererer til den fysiske kontakten på hovedkortet inn som prosessor pakken er satt inn.

vilkår sokkelen, prosessor, og pakken blir ofte brukt om hverandre, noe som kan skape forvirring. Som vi kan se fra lscpu kommando resultatene ovenfor, Intel gir oss med sin egen terminologi, og jeg anser som den autoritative kilden., I virkeligheten, kan vi alle bruke disse begrepene på ulike måter, men så lenge vi forstår hverandre på et gitt tidspunkt, som er det som virkelig betyr noe.

legg Merke til at prosessoren ovenfor har to Nivå 1 cacher på 512 KiB hver, ett for instruksjoner (L1i) og ett for data (L1d). Nivå 1-cache er nærmest til CPU, og det hastigheter opp ting for å ha instruksjoner og data separat på dette punktet. Nivå 2 og nivå 3 cacher er større, men instruksjoner og data co-eksistere i hver.

Hva betyr alt dette?

Godt spørsmål., Tilbake i de tidlige dagene av stormaskin, hver datamaskin hadde bare en enkelt CPU og var ute av stand til å kjøre mer enn ett program samtidig. Stormaskin kan kjøre lønn, så beholdningen regnskap, så kunden fakturering, og så videre, men bare ett program kan kjøre på en gang. Hvert program hadde til slutt før systemet operatøren kunne starte på neste.

Noen spede forsøk på å kjøre flere programmer på en gang tok en enkel tilnærming og var rettet mot bedre utnyttelse av en enkelt CPU., For eksempel, program1 og program2 ble lagt, og program1 kjørte til det ble blokkert venter for i/O til å skje. På dette punktet, program2 kjørte til det ble blokkert. Denne tilnærmingen ble kalt multi-prosessering og hjalp til med å utnytte verdifulle datamaskin tid.

Tidlige forsøk på multitasking alle som er involvert bytte gjennomføring rammen av en enkelt CPU veldig raskt mellom gjennomføring strømmer av flere oppgaver. Denne praksisen er ikke ekte multitasking slik vi forstår det, fordi, i virkeligheten, bare en eneste tråd av gjennomføringen er behandlet på en gang. Det er mer korrekt kalt time-sharing.,

Moderne datamaskiner, fra smart klokker og nettbrett til superdatamaskiner, alle støtte for ekte multitasking med flere Prosessorer. Flere Cpuer aktivere datamaskiner for å kjøre mange oppgaver samtidig. Hver CPU utfører sine egne funksjoner, samtidig som alle de andre Prosessorene. En åtte-core-prosessor med hyperthreading (dvs., 16 Cpuer) kan kjøre 16 oppgaver samtidig.

Siste tanker

Vi har sett på en begrepsfestet og forenklet CPU til å lære litt om strukturer. Jeg knapt skimmed overflaten av prosessor funksjonalitet i denne artikkelen., Du kan lære mer ved å ta den innebygde koblinger til emner vi utforsket.

Husk at diagrammer og beskrivelser i denne artikkelen er rent konseptuelle og ikke representerer noen faktiske CPU.

I den neste delen av denne serien, jeg skal se på RAM og harddisker som ulike typer lagring og hvorfor hver er nødvendig for moderne datamaskiner.