Centralenhed

En central processing unit er den hardware inden for en computer, der udfører de instrukser af et edb-program ved at udføre den grundlæggende aritmetiske, logisk, kontrol og input / output-operationer af systemet. Udtrykket har været i brug i computer industrien i hvert fald siden begyndelsen af ​​1960'erne. Formularen, design og implementering af CPU'er har ændret sig i løbet af deres historie, men deres grundlæggende funktion forbliver stort set det samme.

En computer kan have mere end én CPU; dette kaldes multiprocessing. Alle moderne CPU'er er mikroprocessorer, hvilket betyder, indeholdt på en enkelt chip. Nogle integrerede kredsløb kan indeholde flere CPU'er på en enkelt chip; disse IC'er kaldes multi-core processorer. En IC, der indeholder en CPU kan også indeholde hukommelse, perifere enheder, og andre komponenter i et edb-system; dette kaldes et system på en chip.

To typiske komponenter i en CPU er den aritmetiske logiske enhed, som udfører aritmetiske og logiske operationer, og styreenheden, der udvinder instruktioner fra hukommelsen og afkoder og udfører dem, opfordre ALU når det er nødvendigt.

Ikke alle beregningsmæssige systemer er baseret på en central behandlingsenhed. Et array processor eller vektor processor har flere parallelle computing elementer, uden en enhed betragtes som "center". I distribueret databehandling model, er problemer løses ved et distribueret sammenhængende sæt af processorer.

Historie

Computere som ENIAC måtte være fysisk rewired at udføre forskellige opgaver, der forårsagede disse maskiner til at blive kaldt "fast-program computere". Da udtrykket "CPU" generelt er defineret som en anordning til software-udførelse, de tidligste enheder, der kunne med rette kaldes CPU'er kom med fremkomsten af ​​det lagrede-programmet computer.

Ideen om en gemt-program computer var allerede til stede i udformningen af ​​John Presper Eckert og John William Mauchly s ENIAC, men blev oprindeligt udeladt, så det kunne være færdig hurtigere. Den 30. juni 1945 før ENIAC blev foretaget, matematiker John von Neumann fordelte titlen første udkast til en rapport om EDVAC. Det var omridset af et lagret-program computer, der i sidste ende ville blive afsluttet i august 1949. EDVAC var designet til at udføre en bestemt antal instruktioner af forskellige typer. Betydeligt, de programmer skrevet til EDVAC skulle have været opbevaret i højhastighedstog computerens hukommelse i stedet angivet af fysiske ledninger af computeren. Dette overvandt en alvorlig begrænsning af ENIAC, som var den megen tid og indsats, der kræves for at omkonfigurere computeren til at udføre en ny opgave. Med von Neumanns design, program eller software, der kunne EDVAC løb ændres blot ved at ændre indholdet i hukommelsen. EDVAC var dog ikke første lagrede-program computer; Manchester Small-Scale Experimental Machine, en lille prototype lagret-program computer, kørte sit første program den 21. juni 1948 og Manchester Mark 1 kørte sit første program i løbet af natten 16-17 juni 1949.

Tidlige CPU'er blev specialdesignet som en del af en større, nogle gange one-of-a-kind, computer. Imidlertid har denne metode til at designe brugerdefinerede CPU'er til en særlig anvendelse i vid udstrækning afløst af udviklingen af ​​masseproducerede processorer, der er lavet til mange formål. Denne standardisering begyndte i en tid med diskrete transistor mainframes og minicomputere, og har hurtigt accelereret med popularisering af det integrerede kredsløb. IC har tilladt stadig mere komplekse CPU'er til at være konstrueret og fremstillet til at tolerancer på rækkefølgen af ​​nanometer. Både miniaturisering og standardisering af CPU'er har øget tilstedeværelsen af ​​digitale enheder i det moderne liv langt ud over den begrænsede anvendelse af dedikerede computing maskiner. Moderne mikroprocessorer vises i alt fra biler til mobiltelefoner og børns legetøj.

Mens von Neumann er oftest krediteret med udformningen af ​​den lagrede-programmet computer på grund af hans design af EDVAC, andre før ham, såsom Konrad Zuse, havde foreslået og gennemført lignende ideer. Den såkaldte Harvard arkitektur af Harvard Mark I, som blev afsluttet før EDVAC, også brugt et lagret-program design ved hjælp af perforeret papir tape i stedet for elektronisk hukommelse. Den vigtigste forskel mellem de von Neumann og Harvard arkitekturer er, at sidstnævnte adskiller opbevaring og behandling af CPU instruktioner og data, mens den tidligere bruger den samme hukommelse plads til både. De fleste moderne CPU'er er primært von Neumann i design, men CPU'er med Harvard arkitektur ses så godt, især i indlejrede applikationer; for eksempel de Atmel AVR microcontrollere er Harvard arkitektur processorer.

Relæer og vakuumrør blev almindeligt anvendt som skifte elementer; en nyttig computer kræver tusinder eller titusinder af skifte udstyr. Den samlede hastighed af et system er afhængig af hastigheden af ​​kontakterne. Tube computere som EDVAC tendens til at gennemsnit otte timer mellem fejl, mens relæ computere som Harvard Mark I mislykkedes meget sjældent. I sidste ende, rør-baserede CPU'er blev dominerende, fordi de betydelige fordele hastighed generelt gav opvejes pålidelighed problemer. De fleste af disse tidlige synkrone CPU'er løb ved lave clock satser i forhold til moderne mikroelektroniske design. Ur signalfrekvenser spænder fra 100 kHz til 4 MHz var meget almindeligt på denne tid, stort set begrænset af hastigheden af ​​kontaktanordningerne de blev bygget med.

Transistor og integrerede kredsløb CPU'er

Udformningen kompleksitet CPU'er steg som forskellige teknologier lettet bygge mindre og mere pålidelige elektroniske enheder. Den første af disse forbedringer kom med fremkomsten af ​​transistoren. Transistoriserede CPU'er i løbet af 1950'erne og 1960'erne ikke længere skulle bygges ud af voluminøse, upålidelige, og skrøbelige switching elementer som vakuumrør og elektriske relæer. Med denne forbedring mere komplekse og pålidelige CPU'er blev bygget på én eller flere trykte kredsløb indeholdende diskrete komponenter.

I denne periode blev en fremgangsmåde til fremstilling af mange indbyrdes forbundne transistorer i et kompakt rum udviklet. Det integrerede kredsløb have en lang række transistorer, der skal fremstilles på en enkelt halvleder-baserede matrice eller "chip". I første omgang kun meget grundlæggende ikke-specialiserede digitale kredsløb såsom NOR gates blev miniaturiseret i ICS. CPU'er baseret på disse "bygning blok" IC'er er generelt betegnes som "mindre integration" enheder. SSI IC'er, såsom dem, der anvendes i Apollo vejledning computer, som regel indeholdt op til et par score transistorer. At opbygge en hel CPU ud af SSI ICs krævede tusinder af individuelle chips, men stadig forbruges meget mindre plads og strøm end tidligere diskrete transistor design. Som mikroelektronik avancerede, blev et stigende antal transistorer placeret på IC'er, dermed mængden af ​​individuelle IC'er er nødvendige for en komplet CPU faldende. MSI og LSI ICs øgede transistor tæller til hundredvis, og så tusinder.

I 1964 IBM introducerede sin System / 360 computer arkitektur, som blev brugt i en række computere, der kunne køre de samme programmer med forskellig hastighed og ydeevne. Dette var signifikant på et tidspunkt hvor de fleste elektroniske computere var uforenelige med hinanden, selv dem, der foretages af den samme producent. For at lette denne forbedring, IBM udnyttede begrebet mikroprogram, som stadig ser udbredt brug i moderne CPU'er. System / 360 arkitektur var så populært, at det dominerede mainframe computer markedet i årtier, og efterlod en arv, der stadig fortsættes ved lignende moderne computere ligesom IBM zSeries. I samme år, Digital Equipment Corporation introducerede en anden indflydelsesrig computer rettet mod de videnskabelige og forskningsmæssige markeder, PDP-8. December vil senere indføre den ekstremt populære PDP-11 linje, der oprindeligt blev bygget med SSI ICs men til sidst blev gennemført med LSI komponenter, når disse blev praktisk. I skarp kontrast med sine SSI og MSI forgængere, den første LSI gennemførelsen af ​​PDP-11 indeholdt en CPU sammensat af kun fire LSI integrerede kredsløb.

Transistor-baserede computere havde flere særskilte fordele i forhold til deres forgængere. Bortset fra at lette øget pålidelighed og lavere strømforbrug, transistorer også tilladt CPU'er til at fungere ved meget højere hastigheder på grund af den korte skiftetid af en transistor i sammenligning med et rør eller relæ. Takket være både den øgede pålidelighed samt den dramatisk øgede hastighed omskifterelementerne blev CPU clock satser i snesevis af megahertz opnået i denne periode. Derudover mens diskret transistor og IC CPU'er var i tunge forbrug, nye højtydende designs som SIMD vektor processorer begyndte at dukke op. Disse tidlige eksperimentelle designs senere gav anledning til den æra af specialiserede supercomputere som dem, der foretages af Cray Inc.

Mikroprocessorer

I 1970'erne de grundlæggende opfindelser af Federico Faggin ændret design og implementering af CPU'er evigt. Siden indførelsen af ​​den første kommercielt tilgængelige mikroprocessor i 1970, og den første udbredte mikroprocessor i 1974, har denne klasse af CPU'er næsten fuldstændigt overhalet alle anden centralenhed gennemførelsesmetoder. Mainframe og minicomputer producenter af den tid, der blev lanceret proprietære IC udviklingsprogrammer til at opgradere deres ældre computer arkitekturer, og til sidst producerede instruktionssæt kompatible mikroprocessorer, der var bagudkompatibel med deres ældre hardware og software. Kombineret med fremkomsten og et vellykket resultat af allestedsnærværende personlige computer, er udtrykket CPU nu anvendes næsten udelukkende til mikroprocessorer. Flere CPU'er kan kombineres i en enkelt behandling chip.

 Tidligere generationer af CPU'er blev gennemført som diskrete komponenter og mange små integrerede kredsløb på en eller flere printkort. Mikroprocessorer, på den anden side, er CPU'er fremstillet på et meget lille antal IC'er; normalt kun én. Den samlede mindre CPU-størrelse, som følge af, at blive gennemført på en enkelt dør, betyder hurtigere skift tid på grund af fysiske faktorer som faldt gate parasitisk kapacitans. Det har givet synkrone mikroprocessorer til at have ur satser spænder fra snesevis af megahertz til flere gigahertz. Derudover, som evnen til at konstruere yderst små transistorer på en IC er steget, er kompleksiteten og antallet af transistorer i en enkelt CPU forøget mange gange. Dette almindeligt observerede tendens er beskrevet af Moores lov, som har vist sig at være en temmelig præcis indikator for væksten i CPU kompleksitet.

Mens kompleksitet, størrelse, konstruktion og generelle form af CPU'er har ændret sig enormt siden 1950, er det bemærkelsesværdigt, at det grundlæggende design og funktion ikke har ændret sig meget på alle. Næsten alle almindelige CPU'er i dag kan meget præcist kan beskrives som von Neumann lagret-program maskiner. Som den førnævnte Moores lov fortsætter med at holde sandt, har bekymringer opstået om grænserne for integrerede kredsløb transistor teknologi. Ekstrem miniaturisering af elektroniske porte forårsager effekten af ​​fænomener som elektromigrering og subthreshold lækage til at blive meget mere markant. Disse nyere bekymringer er blandt de mange faktorer, der forårsager forskere til at undersøge nye metoder til databehandling såsom quantum computer, samt at udvide brugen af ​​parallelitet og andre metoder, som udvider anvendeligheden af ​​den klassiske von Neumann model.

Betjening

Den grundlæggende betjening af de fleste CPU'er, uanset den fysiske form, de antager, er at udføre en sekvens af instruktioner lagret kaldes et program. Instruktionerne holdes i en slags computerhukommelse. Der er tre trin, at næsten alle CPU'er bruger i deres drift: hente, afkode, og udføre.

Efter udførelse af en instruktion, hele processen gentager, med den næste instruktion cyklus normalt hente den næste-in-sekvens instruktion på grund af den forøget værdi i programmet tæller. Hvis et hop instruktion blev henrettet, vil programmet tæller modificeres til at indeholde adressen på den instruktion, der blev sprunget til og gennemførelse af programmet fortsætter normalt. I mere komplekse CPU'er, kan flere instruktioner hentes, afkodes, og henrettet på samme tid. Dette afsnit beskriver, hvad der normalt omtales som den "klassiske RISC pipeline", som er helt almindelig blandt de simple CPU'er bruges i mange elektroniske apparater. Den ignorerer stort set den vigtige rolle, CPU-cache, og dermed adgang etape af rørledningen.

Nogle instruktioner manipulere programtælleren stedet for at producere resultatdata direkte; sådanne instrukser er generelt kaldes "springer" og fremme programmet adfærd som loops, program udførelse betinget, og eksistensen af ​​funktioner. I nogle processorer, nogle andre instruktioner ændre tilstanden af ​​bit i et "flag" register. Disse flag kan bruges til at påvirke, hvordan et program opfører sig, da de ofte indikerer resultatet af forskellige operationer. For eksempel i sådanne processorer et "sammenligne" instruktion evaluerer to værdier og sæt eller rydder bits i flagene registrere for at angive, hvilken en der er større, eller om de er ens; en af ​​disse flag kan herefter anvendes af en senere hop instruktion om at bestemme program flow.

Hent

Det første skridt, hente, indebærer at hente en instruktion fra program hukommelse. Instruktionen beliggenhed i programhukommelsen bestemmes af et program tæller, som lagrer et nummer, der identificerer adressen på den næste instruktion, der skal hentes. Efter en instruktion hentes, er PC øges med længden af ​​instruktionen således at den vil indeholde adressen på den næste instruktion i sekvensen. Ofte skal hentes, instruktionen til at være hentet fra relativt langsomme hukommelse, hvilket får CPU'en til at gå i stå, mens man venter for instruktion, der skal returneres. Dette problem er i høj grad behandlet i moderne processorer med caches og pipeline arkitekturer.

Decode

Instruktionen at CPU'en henter fra hukommelsen bestemmer, hvad CPU'en har at gøre. I afkode trin instruktionen brudt op i dele, der har betydning for andre dele af CPU. Den måde, hvorpå den numeriske instruktion værdi fortolkes defineres af CPU'ens instruktionssættet arkitektur. Ofte en gruppe af numre i instruktionen, kaldet opcode, indikerer hvilken operation at udføre. De resterende dele af nummeret giver normalt oplysninger, der kræves for den instruktion, som operander til en tilføjelse operation. Sådanne operander kan gives som en konstant værdi, eller som et sted at finde en værdi: et register eller et memory-adresse, som bestemt af nogle adressering mode.

I nogle CPU design instruktionen dekoderen er implementeret som en hardwired, uforanderlig kredsløb. I andre er et mikroprogram bruges til at oversætte instruktioner i sæt af CPU-konfiguration signaler, der anvendes sekventielt over flere klokpulser. I nogle tilfælde hukommelsen, som lagrer mikroprogrammet er genskrivbare, hvilket gør det muligt at ændre den måde, hvorpå CPU dekoder instruktioner.

Udfør

Efter hente og afkode trin er at udføre trin udføres. Afhængig af CPU-arkitekturen, kan dette bestå af en enkelt handling eller en sekvens af handlinger. Under hver aktion, forskellige dele af CPU'en er elektrisk forbundet, så de kan udføre alle eller en del af den ønskede funktion og derefter handlingen er fuldført, typisk som reaktion på en taktimpuls. Meget ofte resultaterne skrives til en intern CPU register for hurtig adgang af efterfølgende instruktioner. I andre tilfælde kan skrives resultater langsommere, men billigere og højere kapacitet hovedhukommelsen.

For eksempel, hvis en tilføjelse instruktion er udføres, er aritmetisk logikenhed indgange forbundet til et par operandbegrænsninger kilder, er ALU konfigureret til at udføre en tilføjelse drift, således at summen af ​​dets operandbegrænsninger input vises på sin udgang, og ALU udgang er forbundet med oplagring, der vil modtage summen. Når klokimpulsens sker, vil summen blive overført til oplagring og, hvis den fremkomne sum er for stor, vil en aritmetisk overløb flag indstilles.

Design og implementering

Det grundlæggende koncept for en CPU er som følger:

Hardwired ind i en CPU design er en liste over grundlæggende operationer, den kan udføre, kaldes en instruktion sæt. Sådanne operationer kan omfatte at tilføje eller trække to tal, hvis man sammenligner tal, eller hoppe til en anden del af et program. Hver af disse grundlæggende operationer er repræsenteret ved en bestemt sekvens af bits; denne sekvens kaldes opcode for den pågældende operation. Afsendelse af en bestemt opcode til en CPU vil få det til at udføre operationen repræsenteret ved denne opcode. For at udføre en instruktion i et edb-program, CPU'en bruger opcode for at undervisning samt sine argumenter. Et edb-program er derfor en sekvens af instruktioner, med hver instruktion, herunder en opcode, og at drift argumenter.

Selve matematisk operation for hver instruktion udføres af en underenhed af CPU kendt som den aritmetiske logikenhed eller ALU. Ud over at bruge sin ALU at udføre operationer, en CPU er også ansvarlig for at læse den næste instruktion fra hukommelsen, læse data er angivet i argumenterne fra hukommelsen, og skrive resultater til hukommelsen.

I mange CPU design, vil en instruktion sæt klart skelnes mellem operationer, load af data fra hukommelsen, og dem, der udfører matematik. I dette tilfælde indlæst fra hukommelsen data gemmes i registre, og en matematisk operation tager ingen argumenter, men blot udfører matematik på dataene i registrene og skriver det til et nyt register, hvis værdi en separat operation kan derefter skrive til hukommelsen.

Styreenhed

Kontrolenheden af ​​CPU indeholder kredsløb, der bruger elektriske signaler til at dirigere hele computersystemet til at udføre lagrede program instruktioner. Styreenheden ikke udføre programinstruktioner; Snarere er det dirigerer andre dele af systemet til at gøre det. Styringen skal kommunikere med både det aritmetiske / logiske enhed og hukommelse.

Integer rækkevidde

Den måde en CPU repræsenterer tal er et design valg, der påvirker de mest basale måder, hvorpå enhedens funktioner. Nogle tidlige digitale computere brugte en elektrisk model af det fælles decimal talsystem til at repræsentere tal internt. Et par andre computere har brugt mere eksotiske numeral systemer som ternære. Næsten alle moderne CPU'er repræsentere tal i binær form, med hvert ciffer bliver repræsenteret af nogle to-værdsat fysisk størrelse som en "høj" eller "lav" spænding.

Relateret til nummer repræsentation er størrelsen og præcision af tal, som en CPU kan repræsentere. I tilfælde af et binært CPU, en smule henviser til en betydelig plads i tallene en CPU beskæftiger sig med. Antallet af bit en CPU bruger til at repræsentere tal kaldes ofte "ordlængde", "bit bredde", "datavejen bredde" eller "heltal præcision" når det drejer sig strengt heltal. Dette nummer er forskellig arkitekturer, og ofte inden for forskellige dele af den samme CPU. For eksempel, en 8-bit CPU omhandler en nummerserie, som kan repræsenteres af otte binære cifre, dvs. 2 eller 256 diskrete numre. I realiteten heltal størrelse sætter en hardware grænse for interval af heltal softwaren drives af CPU kan udnytte.

Heltal rækkevidde kan også påvirke antallet af placeringer i hukommelsen CPU'en kan løse. For eksempel, hvis en binær CPU bruger 32 bits til at repræsentere en hukommelse adresse, og hver hukommelse adresse repræsenterer en oktet, den maksimale mængde hukommelse, CPU kan løse er 2 oktetter, eller 4 GB. Dette er en meget enkel visning af CPU adresseområde, og mange designs anvende mere komplekse rettet metoder som personsøgning at finde mere hukommelse end deres heltal område ville tillade med en flad adresserum.

Højere niveauer af heltal range kræve flere strukturer til at håndtere de ekstra cifre, og dermed mere kompleksitet, størrelse, strømforbrug, og generel regning. Det er slet ikke ualmindeligt derfor at se 4- eller 8-bit microcontrollere anvendes i moderne anvendelser, selvom CPU'er med meget højere område er til rådighed. De enklere microcontrollere er normalt billigere, bruger mindre strøm, og derfor genererer mindre varme, som alle kan være store design overvejelser for elektroniske enheder. Men i højere-end-applikationer, er mere markant de fordele, som den ekstra rækkevidde og ofte påvirker designvalg. For at få nogle af de fordele, som både lavere og højere bitlængder, er mange CPU'er designet med forskellige bredder bit for forskellige dele af indretningen. For eksempel IBM System / 370 brugt en CPU, der primært var 32 bit, men det bruges 128-bit præcision inde sine floating point enheder til at lette større nøjagtighed og varierer i flydende komma tal. Mange senere CPU design bruger lignende blandet bit bredde, især når processoren er beregnet til generelle formål brug, hvor en rimelig balance af heltal og flydende komma kapacitet er påkrævet.

Klokfrekvensen

Klokfrekvensen er den hastighed, hvormed en mikroprocessor udfører instruktioner. Hver computer indeholder et internt ur, der regulerer den hastighed, hvormed instruktioner udføres og synkroniserer alle de forskellige edb-komponenter. Jo hurtigere uret, jo flere instruktioner CPU'en kan udføre per sekund.

De fleste CPU'er, og faktisk mest sekventielle logiske anordninger, er synkrone i naturen. Det vil sige, at de er designet med, og arbejder under, antagelser om en synkronisering signal. Dette signal, kendt som et kloksignal, tager normalt form af en periodisk firkantbølge. Ved at beregne den maksimale tid, at elektriske signaler kan bevæge sig i forskellige grene af en CPU mange kredse, kan designerne vælge en passende periode for uret signal.

Denne periode skal være længere end den tid, det tager for et signal at flytte, eller udbrede, i værste fald. Ved indstilling af uret periode til en værdi langt over det værst tænkelige udbredelsesforsinkelsen, er det muligt at designe hele CPU og den måde, den bevæger sig data omkring "kanter" af stigende og faldende clock-signal. Dette har den fordel at forenkle CPU betydeligt, både ud fra et design perspektiv og en komponent-count perspektiv. Men det også bærer den ulempe, at hele CPU må vente på sine langsomste elementer, selv om nogle dele af det er meget hurtigere. Denne begrænsning er stort set blevet opvejet af forskellige metoder til at øge CPU-parallelisme.

Men arkitektoniske forbedringer alene ikke løse alle ulemperne ved globalt synkrone CPU'er. For eksempel et ur signal er underlagt forsinkelser af nogen anden elektrisk signal. Højere clock satser i stadig mere komplekse CPU'er gøre det mere vanskeligt at holde kloksignalet i fase hele enheden. Dette har ført mange moderne CPU'er til at kræve flere identisk clock signaler, der skal gives for at undgå at forsinke et enkelt signal markant nok til at forårsage CPU funktionsfejl. Et andet stort problem, som klokfrekvenser stige drastisk, er den mængde varme, der spredes af CPU'en. Den konstant skiftende ur forårsager mange komponenter til at skifte, uanset om de bliver brugt på det tidspunkt. Generelt er en komponent, der skifter bruger mere energi end et element i en statisk tilstand. Derfor, som clock stiger, så gør energiforbruget, forårsager CPU'en til at kræve mere varmeafledning i form af CPU køleløsninger.

En metode til at håndtere skift af overflødige komponenter kaldes clock gating, som indebærer at slukke uret signal til unødvendige komponenter. Dette er dog ofte betragtes som vanskelige at gennemføre, og derfor ikke ser almindelig brug uden for meget energibesparende design. En bemærkelsesværdig sent CPU design, der bruger omfattende clock gating at reducere kravene til strømforsyning af den Videospilkonsol er, at IBM PowerPC-baserede Xbox 360. En anden metode til at løse nogle af de problemer med en global clock-signal er fjernelse af uret signal helt. Samtidig fjerne den globale clock-signal gør designprocessen betydeligt mere kompliceret på mange måder, bære asynkrone design markeret fordele i strømforbrug og varmeafgivelse sammenlignet med lignende synkrone design. Mens noget usædvanligt, har hele asynkrone CPU'er blevet bygget uden anvendelse af en global kloksignal. To bemærkelsesværdige eksempler på dette er ARM kompatible AMULET og MIPS R3000 kompatible MiniMIPS.

Snarere end helt at fjerne uret signal, nogle CPU design tillade visse dele af enheden for at være asynkron, såsom at bruge asynkrone Alus i forbindelse med superskalare pipelining at opnå nogle aritmetiske performance gevinster. Selv om det ikke er helt klart, om fuldstændig asynkrone design kan udføre på et sammenligneligt eller bedre niveau end deres synkrone kolleger, er det indlysende, at de i det mindste ikke udmærke sig i enklere matematiske operationer. Dette, kombineret med deres fremragende strømforbrug og varmeafgivelse egenskaber, der gør dem meget velegnet til indlejrede computere.

Parallelitet

Beskrivelsen af ​​den grundlæggende betjening af en CPU, der tilbydes i det foregående afsnit beskriver den simpleste form, at en CPU kan tage. Denne type CPU, der normalt betegnes som subscalar, fungerer på og udfører en instruktion på ét eller to stykker data ad gangen.

Denne proces giver anledning til en iboende ineffektivitet i subscalar CPU'er. Da kun én instruktion udføres på et tidspunkt, skal hele CPU vente at instruktion om at fuldføre, før du fortsætter til næste instruktion. Som et resultat, bliver det subscalar CPU "hængt op" på instruktioner, der tager mere end én taktcyklus at fuldføre henrettelse. Selv tilføjer en anden henrettelse enhed ikke forbedre ydeevnen meget; snarere end en reaktionsvej bliver hængt op, nu to veje er hængt op, og antallet af ubrugte transistorer øges. Dette design, hvor CPU'ens udførelsesressourcer kan operere på kun én instruktion ad gangen, kan kun muligvis nå skalar ydeevne. , Udførelsen er dog næsten altid subscalar.

Forsøg på at opnå skalar og bedre ydeevne har resulteret i en række konstruktionsmetoder, der forårsager CPU'en til at opføre sig mindre lineært og mere parallelt. Når der henvises til parallelitet i CPU'er, er to udtryk generelt bruges til at klassificere disse design teknikker. Instruktion niveau parallelisme søger at øge den hastighed, hvormed instruktioner udføres inden for en CPU, og tråd niveau parallelitetstole- formål at øge antallet af tråde, en CPU kan udføre på samme tid. Hver metode adskiller sig både i den måde, hvorpå de gennemføres, samt den relative effektivitet, de har råd til at øge CPU præstation for et program.

Instruktion niveau parallelisme

En af de enkleste metoder, der anvendes til at opnå øget parallelitet er at begynde de første trin i instruktion hentning og afkodning før forudgående instruktion færdig udførelse. Dette er den simpleste form af en teknik kendt som instruktion pipelining, og anvendes i næsten alle moderne generelle formål CPU'er. Pipelining tillader mere end én instruktion, der skal udføres på et givet tidspunkt ved at nedbryde udførelsen vej ind adskilte faser. Denne adskillelse kan sammenlignes med et samlebånd, hvor en instruktion gøres mere komplet på hvert trin, indtil det kommer ud af udførelse pipeline og er pensioneret.

Pipelining giver dog indføre mulighed for en situation, hvor resultatet af den tidligere operation er nødvendig for at fuldføre den næste operation; en tilstand ofte betegnes afhængighed datakonflikt. For at klare dette, skal der træffes yderligere sørge for at kontrollere, om disse former for betingelser og forsinke en del af undervisningen rørledningen hvis dette sker. Naturligvis opnå dette kræver yderligere kredsløb, så pipeline processorer er mere komplekse end subscalar dem. En processor med pipeline kan blive meget næsten skalar, hæmmet kun af rørledningen boder.

Yderligere forbedring på idéen om instruktion pipelining førte til udvikling af en metode, som nedsætter den ledige tid af CPU komponenter yderligere. Design, der siges at være superskalare omfatter en lang instruktion pipeline og flere identiske udførelse enheder. I en superskalare rørledning er flere instruktioner læses og overføres til en afsender, der afgør, om de instruktioner kan udføres parallelt. Hvis så de sendes til rådighed stående enheder, hvilket resulterer i evnen flere instruktioner, der skal udføres på samme tid. Generelt er flere instruktioner en superskalare CPU er i stand til at sende samtidigt til ventende udførelse enheder, jo flere anvisninger være afsluttet i en given cyklus.

Størstedelen af ​​de vanskeligheder i udformningen af ​​en superskalare CPU-arkitektur ligger i at skabe en effektiv afsender. Afsenderen skal være i stand til hurtigt og korrekt bestemme, om vejledningen kan udføres parallelt, samt sende dem på en sådan måde, at holde så mange udførelse enhederoptaget som muligt. Dette kræver, at instruktionen pipeline er fyldt så ofte som muligt og giver anledning til behovet i superskalare arkitekturer for betydelige mængder af CPU-cache. Det gør også fare-undgå teknikker som filial forudsigelse, spekulative udførelse og ud-af-ordreafvikling afgørende for at opretholde et højt niveau af ydeevne. Ved at forsøge at forudsige, hvilken gren en betinget instruktion vil tage, kan CPU'en minimere antallet af gange, hele rørledningen skal vente, indtil en betinget instruktion er afsluttet. Spekulative udførelse ofte giver beskedne ydeevne stiger med at udføre dele af kode, som måske ikke være nødvendig efter en betinget operation fuldfører. Out-of-ordreafvikling noget omarrangerer den rækkefølge, som instruktioner udføres for at reducere forsinkelser på grund af data afhængigheder. Også i tilfælde af Single Instruktioner Flere data en sag, når en masse data fra den samme type har der skal bearbejdes, kan moderne processorer deaktivere dele af rørledningen, så når en enkelt instruktion udføres mange gange, CPU'en springer hente og afkode faser og dermed øger ydeevne på visse lejligheder, især i stærkt monotone program motorer såsom video oprettelsen software og foto forarbejdning.

I det tilfælde, hvor en del af CPU'en er superskalare og en del ikke er den del, der ikke lider et præstationstab grund planlægning båse. Intel P5 Pentium havde to superskalare Alus, der kunne acceptere én instruktion pr ur hver, men dens FPU kunne ikke acceptere én instruktion pr ur. Således P5 var heltal superskalare men ikke floating point superskalare. Intels efterfølger til P5 arkitektur, P6, tilføjede superskalare kapaciteter til sine floating point funktioner, og derfor gav en signifikant stigning i floating point instruktion ydeevne.

Både enkle pipelining og superskalare design øger en CPU ILP ved at lade en enkelt processor at fuldføre udførelse af instruktioner til rater overgår én instruktion pr cyklus. De fleste moderne CPU designs er i det mindste noget superskalare, og næsten alle generelle formål CPU'er designet i det sidste årti er superskalare. I de senere år nogle af vægten i at designe high-ILP computere er blevet flyttet ud af CPU hardware og i sin software interface, eller ISA. Strategien med den meget lange instruktion ord forårsager nogle ILP at blive stiltiende direkte af softwaren, hvilket reducerer mængden af ​​arbejde CPU skal udføre for at sætte skub i ILP og derved reducere design kompleksitet.

Tråd-niveau parallelisme

En anden strategi til at opnå resultater er at udføre flere programmer eller tråde parallelt. Dette forskningsområde er kendt som parallel computing. I Flynns taksonomi, er denne strategi kaldet Multiple Instruktioner-Flere data eller MIMD.

Én teknologi, der anvendes til dette formål var multiprocessing. Den oprindelige smag af denne teknologi er kendt som symmetrisk multiprocessing, hvor et lille antal CPU'er deler en sammenhængende grund af deres hukommelsessystem. I dette skema, hver CPU har yderligere hardware for at opretholde en konstant up-to-date vis hukommelse. Ved at undgå uaktuelle synspunkter hukommelse, kan de CPU'er samarbejde om det samme program og programmer kan migrere fra én CPU til en anden. For at øge antallet af samarbejdende CPU'er ud over en håndfuld, blev ordninger som uensartet hukommelse adgang og bibliotek-baserede sammenhæng protokoller introduceret i 1990'erne. SMP-systemer er begrænset til et lille antal CPU'er, mens NUMA-systemer er blevet bygget med tusindvis af processorer. Oprindeligt var multiprocessing bygget ved hjælp af flere diskrete CPU'er og bestyrelser til at gennemføre interconnect mellem processorer. Når forarbejdningsvirksomhederne og deres interconnect er alle implementeret på en enkelt silicium-chip, er den teknologi kendt som en multi-core processor.

Det blev senere erkendt, at finere korn parallelitet eksisterede med et enkelt program. Et enkelt program kan have flere tråde, der kunne udføres separat eller parallelt. Nogle af de tidligste eksempler på denne teknologi gennemføres input / output forarbejdning såsom Direct Memory Access som en separat tråd fra beregningen tråd. En mere generel tilgang til denne teknologi blev introduceret i 1970'erne, hvor systemerne er designet til at køre flere beregnings tråde parallelt. Denne teknologi er kendt som multi-threading. Denne fremgangsmåde anses for mere omkostningseffektiv end multiprocessing, da kun et lille antal komponenter i en CPU replikeres til støtte MT i modsætning til hele CPU i tilfælde af MP. I MT, er udførelse enheder og memory-systemet, herunder caches deles blandt flere tråde. Ulempen ved MT er, at hardware-understøttelse for multithreading er mere synlig for software end MP og dermed vejleder software som operativsystemer skal gennemgå større ændringer for at understøtte MT. En type MT, der blev gennemført, er kendt som blok multithreading, hvor den ene tråd er udført indtil den er gået i stå Venter på data til at vende tilbage fra ekstern hukommelse. I dette skema, ville CPU derefter hurtigt skifte til en anden tråd, der er klar til at køre, kontakten ofte i én CPU taktcyklus, såsom UltraSPARC Technology. En anden type af MT er kendt som samtidig multithreading, hvor instrukser flere tråde udføres parallelt inden for en CPU taktcyklus.

I flere årtier fra 1970'erne til begyndelsen af ​​2000'erne, var fokus i at designe højtydende generelle formål CPU'er i høj grad på at opnå høj ILP gennem teknologier som pipelining, caches, superskalare udførelse, ud-af-ordreafvikling osv Denne tendens kulminerede i store , magtbegærlige CPU'er som Intel Pentium 4. begyndelsen af ​​2000'erne, CPU designere blev forpurret i at opnå højere ydelse fra ILP teknikker på grund af den voksende ulighed mellem CPU driftsfrekvenser og de vigtigste hukommelse driftsfrekvenser samt eskalerende CPU effekttab på grund til mere esoteriske ILP teknikker.

CPU designere derefter lånt ideer fra kommercielle computing markeder som transaktionsbehandling, hvor den samlede præstation af flere programmer, også kendt som gennemløb computing, var vigtigere end udførelsen af ​​en enkelt tråd eller et program.

Denne tilbageførsel af vægt fremgår af udbredelsen af ​​dual og flere kerne CMP design og især, Intels nyere design ligner dens mindre superskalare P6 arkitektur. Sene designs i flere processor familier udviser CMP, herunder x86-64 Opteron og Athlon 64 X2, SPARC UltraSPARC T1, IBM POWER4 og POWER5, samt flere videospil konsol CPU'er som Xbox 360 s triple-core PowerPC-design, og PS3 7-core Cell mikroprocessor.

Data parallelitet

En mindre almindelig, men stadig vigtigere paradigme CPU'er omhandler data parallelitet. Processorerne diskuteret tidligere er alle benævnt en form for skalar enhed. Som navnet antyder, vektor processorer beskæftige sig med flere stykker af data i forbindelse med en instruktion. Dette står i kontrast med skalar processorer, der beskæftiger sig med et stykke af data for hvert instruktion. Brug Flynns taksonomi, er disse to ordninger til håndtering af data generelt betegnes som SIMD og SISD hhv. Den store nytte i at skabe CPU'er, der beskæftiger sig med vektorer data ligger i at optimere opgaver, der har tendens til at kræve den samme operation, der skal udføres på et stort datasæt. Nogle klassiske eksempler på disse typer af opgaver er multimedieapplikationer, samt mange typer af videnskabelige og tekniske opgaver. Hvorimod en skalar CPU skal udfylde hele processen med at hente, afkode, og udføre hver instruktion og værdi i et sæt af data, kan en vektor CPU udføre en enkelt operation på en forholdsvis stor datasæt med én instruktion. Selvfølgelig er dette kun muligt, når programmet er tilbøjelig til at kræve mange trin, der gælder én operation til et stort datasæt.

De fleste tidlige vektor CPU'er, såsom Cray-1, blev næsten udelukkende forbundet med videnskabelig forskning og kryptografi applikationer. Men som multimedier i høj grad er skiftet til digitale medier, er behovet for en form for SIMD i generelle formål CPU'er bliver betydelig. Kort efter inddragelse af flydende komma udførelse enheder begyndt at blive hverdagskost i generelle formål processorer, specifikationer for og implementeringer af SIMD udførelse enheder begyndte også at blive vist for generelle formål CPU'er. Nogle af disse tidlige SIMD specifikationer som HPs Multimedia Acceleration udvidelser og Intels MMX var heltal kun. Dette viste sig at være en væsentlig hindring for nogle softwareudviklere, da mange af de applikationer, der nyder godt af SIMD primært beskæftige sig med flydende komma tal. Gradvist blev disse tidlige designs raffineret og genskabt i nogle af de almindelige, moderne SIMD specifikationer, der normalt er forbundet med en ISA. Nogle bemærkelsesværdige moderne eksempler er Intels SSE og PowerPC-relaterede AltiVec.

Præstation

Ydeevne eller hastigheden af ​​en processor, afhænger af, blandt mange andre faktorer, uret sats og de instruktioner pr ur, der tilsammen er de faktorer for vejledningen i sekundet, at CPU'en kan udføre. Mange rapporterede IPS værdier er repræsenteret "peak" execution satser på kunstige ordresekvenser med få grene, mens realistiske arbejdsmængder består af en blanding af instruktioner og applikationer, hvoraf nogle tager længere tid at udføre end andre. Udførelsen af ​​hukommelsen hierarki også i høj grad påvirker processor ydeevne, et problem næppe betragtes i MIPS beregninger. På grund af disse problemer, forskellige standardiserede tests, ofte kaldet "benchmark" til dette formål, såsom SPECint - er blevet udviklet for at forsøge at måle den reale effektive resultater i almindeligt anvendte programmer.

Behandling ydeevne computere øges ved hjælp af multi-core processorer, som i det væsentlige er plukker to eller flere individuelle processorer i én integreret kredsløb. Ideelt set ville en dual core processor være næsten dobbelt så kraftig som en enkelt kerne processor. I praksis udførelsen gevinst er langt mindre, kun omkring 50%, som følge af ufuldkommen software algoritmer og gennemførelse. Forøgelse af antallet af kerner i en processor øger arbejdsbyrden, der kan håndteres. Det betyder, at processoren nu kan håndtere en lang række asynkrone hændelser, interrupts, etc., som kan tage en vejafgift på CPU når overvældet. Disse kerner kan opfattes som forskellige etager i et forarbejdningsanlæg, med hver etage håndtering af en anden opgave. Nogle gange vil disse kerner håndtere de samme opgaver som kerner der støder op til dem, hvis en enkelt kerne er ikke nok til at håndtere information.

  0   0
Forrige artikel Dwight McLean
Næste artikel Aris Alexanian

Kommentarer - 0

Ingen kommentar

Tilføj en kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tegn tilbage: 3000
captcha