Central processing unit

Se Også: Datamaskinarkitektur og Digital Krets.

Enteros Rangeedit

MÅTEN EN CPU representerer tall på, er et designalternativ som påvirker de mest grunnleggende måtene enheten fungerer på. Noen av de tidlige digitale kalkulatorene som ble brukt, for å representere tall internt, en elektrisk modell av det vanlige desimalnummersystemet (base ten). Noen andre datamaskiner har brukt mer eksotiske nummereringssystemer som ternær (base tre). Nesten alle moderna Cpuer representerer tall i binær form, hvor hvert siffer er representert av en viss fysisk mengde av to verdier, for eksempel en «høy» eller «lav»spenning.

MOS 6502 mikroprosessor i en dobbel in-line pakke, en ekstremt populær 8-bits design.

Numerisk representasjon er relatert til størrelsen og nøyaktigheten av tallene SOM EN CPU kan representere. I tilfelle av en binær CPU, refererer litt til en betydelig posisjon i tallene EN CPU arbeider med. Antallet biter (eller tallposisjoner eller sifre) SOM EN CPU bruker til å representere tall, kalles ofte «ordstørrelse», «bitbredde», «databane bredde» eller «heltallsnøyaktighet» når man arbeider strengt med heltall (i motsetning til flyttallstall). Dette tallet varierer mellom arkitekturer, og ofte innenfor forskjellige enheter av samme CPU. For eksempel håndterer en 8-bits CPU en rekke tall som kan representeres av åtte binære sifre, hvert siffer har to mulige verdier, og i kombinasjon har de 8 bitene 28 eller 256 diskrete tall. I virkeligheten setter størrelsen på heltallet en maskinvaregrense på rekkevidden av heltall som programvaren kjører, og AT CPUEN kan bruke direkte.

heltallsområdet kan også påvirke antall minneposisjoner SOM CPUEN kan adressere (finne). Hvis for eksempel en binær CPU bruker 32 biter til å representere en minneadresse, og hver minneadresse representerer en byte (8 biter), er DEN maksimale mengden minne CPU kan adressere 232 byte eller 4 GB. Dette er en veldig enkel visning AV CPU adresserom, og mange moderna-design bruker mye mer komplekse adressemetoder som personsøking for å finne mer minne enn hele spekteret ville tillate med et flatt adresserom.

Høyere nivåer av hele tallområdet krever flere strukturer for å håndtere de ekstra sifrene, og derfor mer kompleksitet, størrelse, energiforbruk og generelt kostnad. Derfor er det ikke uvanlig å se 4-og 8-biters mikrokontrollere som brukes i moderna-applikasjoner, selv om Cpuer med mye høyere rekkevidde (16, 32, 64 og til og med 128-bit) er tilgjengelige. Enklere mikrokontrollere er generelt billigere, bruker mindre energi, og dermed sprer mindre varme. Alle disse kan være viktige designhensyn for elektroniske enheter. Men i avanserte applikasjoner er fordelene som produseres av tilleggsområdet, (oftere det ekstra adresseområdet), mer signifikante og påvirker ofte designalternativer. For å få noen av fordelene som tilbys av både lavere og høyere bitlengder, er mange Cpuer designet med forskjellige bitbredder for forskjellige enheter. FOR EKSEMPEL BRUKTE IBM System / 370 EN CPU som for det meste var 32-bit, men brukte 128-bit presisjon innenfor sine flyttallsenheter for å lette større nøyaktighet og rekkevidde av flyttall. Mange SENERE CPU-design bruker en lignende bitbreddeblanding, spesielt når prosessoren er designet for generell bruk der en rimelig balanse mellom heltall og flyttallskapasitet er nødvendig.

Klokkefrekvensrediger

Hovedartikkel: Klokkefrekvens

De Fleste Cpuer, og faktisk de fleste sekvensielle logiske enheter, er synkrone i naturen. Det vil si at de er designet og opererer basert på et synkroniseringssignal. Dette signalet, kjent som et klokkesignal, tar vanligvis form av en periodisk firkantbølge. Ved å beregne den maksimale tiden som elektriske signaler kan bevege seg på de ulike gafler AV EN CPU mange kretser, kan designere velge en passende periode for klokken signal.

denne perioden bør være lengre enn tiden det tar for et signal å bevege seg, eller forplante seg i verste fall. Ved å sette klokkeperioden til en mye høyere verdi over worst case forplantningsforsinkelse, er det mulig å designe hele CPU og måten den beveger dataene rundt «kantene» av stigning og fall av klokkesignalet. Dette har fordelen av å forenkle CPUEN betydelig, både i et designperspektiv og i et komponentmengdeperspektiv. Dette har imidlertid også ulempen at hele CPUEN må vente på sine langsommere elementer, selv om noen enheter av det er mye raskere. Denne begrensningen har i stor grad blitt kompensert av flere metoder for å øke CPU-parallelliteten (se nedenfor).

arkitektoniske forbedringer alene løser imidlertid ikke alle ulempene ved globalt synkrone Cpuer. For eksempel er et klokkesignal utsatt for forsinkelser av noe annet elektrisk signal. Høyere klokkehastigheter på stadig mer komplekse Cpuer gjør det vanskeligere å holde klokkesignalet i fase (synkronisert) over hele enheten. Dette har ført til at mange moderna Cpuer krever flere identiske klokkesignaler som skal leveres, for å unngå å senke et enkelt signal nok til å forårsake AT CPUEN virker feil. Et annet stort problem nar klokkehastigheten oker dramatisk, er mengden varme som blir spredt av CPU. Klokkesignalet endres hele tiden, noe som forårsaker at mange komponenter bytter (endring av status) uansett om de blir brukt på det tidspunktet. Generelt bruker en komponent som endrer tilstand mer energi enn et element i en statisk tilstand. Derfor, som klokkehastigheten øker, så gjør varmespredning, forårsaker CPU til å kreve mer effektive kjøleløsninger.

En metode for å håndtere bytte av unødvendige komponenter kalles klokkegating, som innebærer å slå av klokkesignalet til unødvendige komponenter, og effektivt deaktivere dem. Dette anses imidlertid ofte som vanskelig å implementere og ser derfor ingen vanlig bruk utenfor svært lav effektdesign. En bemerkelsesverdig SEN CPU-design som bruker en bred klokkeport for å redusere strømkravene til videospillkonsollen, er Xbox 360 basert på IBMS PowerPC. En annen metode for å håndtere noen av problemene med et globalt klokkesignal er fullstendig fjerning av det. Mens du fjerner det totale signalet fra klokken på mange måter, gjør designprosessen betydelig mer kompleks, sammenlignet med lignende synkrone design, har asynkrone (eller ikke-klokke) design markerte fordeler i strømforbruk og varmeavledning. Selv om sjeldne, har full Cpuer blitt bygget uten å bruke et globalt klokkesignal. TO bemerkelsesverdige eksempler på DETTE ER AMULETTEN, som implementerer ARM-arkitekturen, Og MiniMIPS, som støtter MIPS R3000. I stedet for å fjerne klokkesignalet helt, tillater NOEN CPU-design at enkelte enheter er asynkrone, for eksempel Å bruke ALU i forbindelse med superscalar pipelining for å oppnå noen gevinster i aritmetisk ytelse. Selv om det ikke er helt klart om fullt asynkron design kan utføre på et sammenlignbart eller bedre nivå enn deres synkrone kolleger, er det tydelig at de i det minste utmerker seg i de enkleste matematiske operasjonene. Dette, kombinert med deres gode strømforbruk og varmeavledningsegenskaper, gjør dem godt egnet for innebygde systemer.

Parallellismerediger

Utdypende artikkel: Parallell beregning
Modell av en subkalar CPU. Merk at det tar femten sykluser å fullføre tre instruksjoner.

beskrivelsen av den grunnleggende driften AV EN CPU som tilbys i forrige avsnitt beskriver den enkleste formen EN CPU kan ta. DENNE TYPEN CPU, vanligvis referert til som en subscale, opererer på og utfører en enkelt instruksjon med en eller to stykker data om gangen.

denne prosessen resulterer i iboende ineffektivitet i subscale Cpuer. Siden bare en instruksjon utføres om gangen, må hele CPUEN vente på at instruksjonen skal fullføres før du går videre til neste instruksjon. Som et resultat er subscalar CPU «lammet» i instruksjoner som tar mer enn en klokke syklus for å fullføre utførelsen. Selv tillegg av en andre utførelsesenhet (se nedenfor) forbedrer ikke ytelsen sterkt. I stedet for at en vei blir frosset, er nå to veier lammet og antall ubrukte transistorer øker. Denne utformingen, hvor CPU-utførelsesressurser kan operere med bare en instruksjon om gangen, kan bare muligens oppnå skalar ytelse (en instruksjon per klokke syklus). Ytelsen er imidlertid nesten alltid subscale (mindre enn en instruksjon per syklus).

Forsøk på å oppnå skalar og bedre ytelse har resultert i en rekke designmetoder som gjør AT CPUEN oppfører seg mindre lineært og mer parallelt. Når det gjelder parallellisme I Cpuer, brukes to termer vanligvis til å klassifisere disse designteknikkene.

  • Instruksjonsnivå parallellisme (ILP) søker å øke hastigheten som instruksjoner utføres i EN CPU, dvs. øke utnyttelsen av utførelsesressurser på nettbrettet.
  • Trådnivå parallellisme (TLP), som tar sikte på å øke antall tråder (effektivt individuelle programmer) som EN CPU kan kjøre samtidig.

hver metodikk varierer både i måtene de implementeres på, og i den relative effektiviteten de produserer for å øke CPU-ytelsen for et program.

ILP: Segmentering og Superscalar architecturerediger

Hovedartikler: segmentering (elektronikk) og Superscalar.
Grunnleggende fem-trinns rørledning. I beste fall kan dette røret opprettholde en fullføringshastighet på en instruksjon per syklus.

En av de enkleste metodene for å øke parallelliteten er å begynne de første trinnene for å lese og dekode instruksjonen før den forrige instruksjonen er ferdig. Dette er den enkleste formen for en teknikk kjent som instruksjonsrørledning, og brukes i nesten alle moderna generelle Cpuer. Ved å dele utførelsesbanen i diskrete stadier, tillater rørledningen mer enn en instruksjon å bli utført til enhver tid. Denne separasjonen kan sammenlignes med en samlebånd, hvor en instruksjon blir gjort mer komplett i hvert trinn til den går ut av utførelsesrøret og fjernes fra den.

rørledningen introduserer imidlertid muligheten for en situasjon der det er nødvendig å avslutte resultatet av den forrige operasjonen for å fullføre neste operasjon; en tilstand som ofte kalles en dataavhengighetskonflikt. For å takle dette må det tas ekstra hensyn til å kontrollere slike forhold, og hvis dette skjer, må en del av instruksjonsrørledningen forsinkes. Naturligvis, å oppnå dette krever ekstra kretser, rørprosessorer er mer komplekse enn abonnementer, men ikke mye. En rørprosessor kan bli nesten helt skalar, bare hemmet av brå rørstopp (en instruksjon som varer mer enn en klokke syklus på et stadium).

enkel superscalar segmentering. Ved å lese og sende to instruksjoner samtidig, kan maksimalt to instruksjoner per syklus fullføres.

En ytterligere forbedring over ideen om instruksjonsrørledning førte til utviklingen av en metode som ytterligere reduserer tomgangstiden TIL CPU-komponenter. Design sies å være superscalars inkluderer en lang instruksjon rørledning og flere identiske utførelse enheter. I et superscalar-rør leses flere instruksjoner og sendes til en sender, som bestemmer om instruksjonene kan utføres parallelt (samtidig). I så fall sendes de til de tilgjengelige utførelsesenhetene, noe som resulterer i muligheten for flere instruksjoner som skal utføres samtidig. Generelt, jo flere instruksjoner en superscalar CPU er i stand til samtidig å sende til standby-utførelsesenheter, desto flere instruksjoner vil bli fullført i en gitt syklus.

det meste av vanskeligheten med å designe en superscalar CPU-arkitektur ligger i å skape en effektiv dispatcher. Dispatcheren må raskt og korrekt avgjøre om instruksjoner kan utføres parallelt, samt sende dem på en måte som holder så mange utførelsesenheter opptatt som mulig. Dette krever at instruksjonsrørledningen fylles så ofte som mulig og oker behovet, i superscalar-arkitekturer, for betydelige mengder CPU-cache. Dette skaper også teknikker for å unngå farer som gaffel prediksjon, spekulativ utførelse, og out-of-order utførelse, avgjørende for å opprettholde høye nivåer av ytelse. VED å prøve å forutsi hvilken gren (eller bane) en betinget instruksjon vil ta, KAN CPUEN minimere antall ganger hele kanalen må vente til en betinget instruksjon er fullført. Ofte gir spekulativ utførelse beskjedne ytelsesøkninger ved å utføre deler av kode som kanskje ikke er nødvendige etter at en betinget operasjon er fullført. Utenfor utførelsesordren endrer det på en eller annen måte rekkefølgen der instruksjonene utføres for å redusere forsinkelser på grunn av dataavhengigheter. Også når det gjelder individuelle instruksjoner flere data-de moderne prosessorene, hvis du har behandlet en stor mengde data av samme type, kan du deaktivere deler av rørledningen, slik at NÅR DU kjører en enkelt setning mange ganger, HOPPER CPUEN på fange-og dekodingsfasene og øker dermed ytelsen ved visse anledninger, spesielt i motorer av programmer som er svært monotont som programvaren for å lage video-og bildebehandling.

i tilfelle hvor en del AV CPUEN er superscalar og en del ikke er, lider delen som ikke er superscalar i ytelse på grunn av tiden stopper. Den opprinnelige Intel Pentium (P5) hadde to superscalar Alu som kunne akseptere, hver, en instruksjon per klokke syklus, men DENS FPU kunne ikke akseptere en instruksjon per klokke syklus. Dermed Var P5 superscalar i delen av heltall, men var ikke superscalar av flyttall. Etterfølgeren Til Intels Pentium-arkitektur, P6, la superscalar-evner til sine flytende punktfunksjoner, og produserte dermed en betydelig økning i ytelsen til slike instruksjoner.

både superscalar design og single casing øker ILP av EN CPU ved at en enkelt prosessor kan fullføre instruksjonsutførelse ved forhold som overstiger en instruksjon per syklus (IPC). De fleste moderna CPU-design er i det minste noe superscalar, og i det siste tiåret er nesten alle GENERELLE CPU-design superscalar. I de senere årene har noe av vekten på HØY ILP-datamaskindesign flyttet fra CPU-maskinvare til programvaregrensesnittet, ELLER ISA. Den svært lange instruksjonsordstrategien, eller VLIW, fører til at NOE ILP blir underforstått direkte av programvaren, og reduserer mengden arbeid SOM CPUEN må utføre for å gi ET betydelig løft TIL ILP og dermed redusere kompleksiteten til designet.

Trådnivå Parallelismedit

En annen strategi for å oppnå ytelse er å kjøre flere programmer eller tråder parallelt. Dette forskningsområdet er kjent som parallell databehandling. I Flynns taksonomi er denne strategien kjent som multiple multi – data instructions eller MIMD.

en teknologi som ble brukt til dette formålet var multiprosessering (MP). Kick-off av denne teknologien er kjent som symmetrisk multiprosessering (SMP), hvor et lite antall Cpuer deler en sammenhengende visning av deres minnesystem. I denne ordningen har HVER CPU ekstra maskinvare for å opprettholde en kontinuerlig oppdatert visning av minne. For å unngå foreldede minnebesøk kan Cpuer samarbeide i samme program og programmer kan migrere fra EN CPU til en annen. For å øke antall samarbeidende Cpuer utover noen få, ble ordninger som ikke-uniform memory Access (NUMA) og katalogbaserte koherensprotokoller introdusert i 1990. SMP-systemer er begrenset til et lite antall Cpuer mens NUMA-systemer er bygget med tusenvis av prosessorer. I utgangspunktet ble multiprosessering bygget ved hjelp av flere diskrete Cpuer og brett for å implementere samtrafikk mellom prosessorer. Når prosessorene og deres sammenkobling er implementert på en enkelt silisiumbrikke, er teknologien kjent som en multicore-prosessor.

det ble senere anerkjent at det var en veldig nær parallellitet med et enkelt program. Et enkelt program kan ha flere tråder (eller funksjoner) som kan kjøres separat eller parallelt. Noen tidlige eksempler på denne teknologien implementert input / output behandling som direkte minnetilgang som en egen tråd fra den beregnede tråden. På 1970-tallet ble en mer generell tilnærming til denne teknologien introdusert, da systemer ble designet for å kjøre flere datatråder parallelt. Denne teknologien er kjent som multithreading (MT).

denne tilnærmingen betraktes som mer kostnadseffektiv enn multiprosessering, da bare et lite antall komponenter i EN CPU er replikert for å støtte MT i motsetning til hele CPU i TILFELLE AV MP. I MT deles utførelsesenheter og minnesystem, inkludert cacher, mellom flere tråder. Ulempen MED MT er at maskinvarestøtte for multithreading er mer synlig for programvare enn MP og derfor veileder programvare og operativsystemer må gjennomgå større endringer for å støtte MT. EN TYPE MT som ble implementert er kjent som en multithreaded blokk, hvor en tråd kjøres til den er lammet og venter på at dataene kommer tilbake fra det eksterne minnet. I denne ordningen MÅ CPUEN raskt bytte til en annen tråd som er klar til å kjøre, bryteren utfører mange GANGER EN CPU – klokke syklus, som UltraSPARC-teknologi. EN ANNEN TYPE MT kalles samtidig multithreading, hvor multithreading instruksjoner utføres parallelt i EN CPU klokke syklus.

Data Parallellismerediger

Utdypende artikler: Vektorprosessor OG SIMD.

et mindre vanlig, men stadig viktigere CPU-paradigme (og faktisk databehandling generelt) omhandler vektorer. Prosessorene diskutert ovenfor er alle referert til som en bestemt type skalar enhet. Som navnet tilsier, vektorprosessorer håndtere flere biter av data i sammenheng med en instruksjon, i motsetning til skalarprosessorer, som omhandler ett stykke data for hver instruksjon. DISSE to data-håndtering ordninger er generelt referert til henholdsvis SOM SISD (single instruction, single data) OG SIMD (single instruction, multiple data). Det store verktøyet i å lage Cpuer som omhandler datavektorer ligger i å optimalisere oppgaver som har en tendens til å kreve samme operasjon, for eksempel en sum eller et skalarprodukt, som skal utføres på et stort sett med data. Noen klassiske eksempler på denne typen oppgaver er multimedieapplikasjoner (bilder, video og lyd), samt mange typer vitenskapelige og tekniske oppgaver. Mens en skalar CPU må fullføre hele prosessen med å lese, dekode og utføre hver instruksjon og verdi på et datasett, kan en vektor CPU utføre en enkel operasjon på et relativt stort datasett med en enkelt instruksjon. Selvfølgelig er dette bare mulig når programmet har en tendens til å kreve mange trinn som gjelder en operasjon til et stort sett med data.

de fleste tidlige vektorprosessorer, som Cray-1, var nesten utelukkende knyttet til vitenskapelig forskning og kryptografiapplikasjoner. Men da multimedia skiftet i stor grad til digitale medier, har behovet for EN form FOR SIMD i generelle Cpuer blitt betydelig. Kort tid etter at det ble vanlig å inkludere flyttallsenheter i generelle prosessorer, begynte spesifikasjoner og implementeringer AV SIMD-utførelsesenheter for Generelle Cpuer også å vises. Noen av disse tidlige SIMD-spesifikasjonene, som Intels MMX, var bare for heltall. Dette viste seg å være en betydelig hindring for noen programvareutviklere, da mange av programmene som hadde NYTTE AV SIMD, hovedsakelig handlet om flyttall. Progressivt, disse tidlige design ble raffinert og gjenskapt i noen av de vanlige, moderna SIMD spesifikasjoner, som vanligvis er forbundet med EN ISA. Kjente moderna eksempler inkluderer Intels SSE og PowerPC-relaterte AltiVec (også kjent som VMX).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.