Central processing unit

0 Comments
Se også: Processor design

blokdiagram af en grundlæggende uniprocessor-CPU computer. Sorte linjer angiver datastrøm, mens røde linjer angiver styrestrøm; pile angiver strømningsretninger.hard .ired i en CPU”s kredsløb er et sæt grundlæggende operationer, den kan udføre, kaldet et instruktionssæt. Sådanne operationer kan involvere, for eksempel, tilføje eller trække to tal, sammenligne to tal, eller hoppe til en anden del af et program., Hver grundlæggende operation er repræsenteret ved en bestemt kombination af bits, kendt som maskinens sprog opcode; mens der udføres instruktioner i en maskine sprogprogram, CPU beslutter, hvilken operation til at udføre ved at “afkode” opcode. En komplet maskinsprogundervisning består af en opcode og i mange tilfælde yderligere bits, der angiver argumenter for operationen (for eksempel de numre, der skal opsummeres i tilfælde af en tilføjelsesoperation). Når man går op i kompleksitetsskalaen, er et maskinsprogsprogram en samling maskinsprogsinstruktioner, som CPU ‘ en udfører.,

den faktiske matematiske operation for hver instruktion udføres af et kombinatorisk logisk kredsløb inden for CPU”s-processoren kendt som den aritmetiske logikenhed eller ALU. Generelt udfører en CPU en instruktion ved at hente den fra hukommelsen, bruge sin ALU til at udføre en operation og derefter gemme resultatet til hukommelsen., Ved siden af vejledningen for heltal matematik og logik operationer, forskellige andre maskinen instruktioner findes, såsom dem, til indlæsning af data fra hukommelse og lagring tilbage, forgrening operationer, og matematiske beregninger på flydende-komma-tal, der udføres af CPU ‘en”s floating-point enhed (FPU).

Kontrolenhedredit

Hovedartikel: kontrolenhed

kontrolenheden (CU) er en komponent i CPU ‘ en, der styrer processorens drift., Det fortæller computerens ” s hukommelse, aritmetik og logik enhed og input og output-enheder, hvordan man reagerer på de instruktioner, der er blevet sendt til processoren.

det styrer driften af de andre enheder ved at give timing og styresignaler. De fleste computerressourcer forvaltes af CU. Det styrer strømmen af data mellem CPU ‘ en og de andre enheder. John von Neumann inkluderede kontrolenheden som en del af von Neumann-arkitekturen., I moderne computerdesign er styreenheden typisk en intern del af CPU ‘ en med sin overordnede rolle og drift uændret siden introduktionen.

Aritmetisk logisk unitEdit

uddybende artikel: Aritmetisk logisk enhed

Symbolsk repræsentation af en ALU og dens input og output signaler

aritmetisk logikenhed (ALU) er et digitalt kredsløb inden for den processor, der udfører heltal matematik og bitvise logiske operationer., Indgangene til ALU er de dataord, der skal betjenes (kaldet operander), statusoplysninger fra tidligere operationer og en kode fra styreenheden, der angiver, hvilken operation der skal udføres. Afhængigt af instruktionen, der udføres, kan operanderne komme fra interne CPU-registre eller ekstern hukommelse, eller de kan være konstanter genereret af ALU selv.

Når alle indgangssignaler har slået sig ned og forplantet sig gennem ALU-kredsløbet, vises resultatet af den udførte operation ved ALU”s-udgangene., Resultatet består af både et dataord, der kan gemmes i et register eller hukommelse, og statusoplysninger, der typisk gemmes i et specielt internt CPU-register, der er reserveret til dette formål.

Adresse generation unitEdit

uddybende artikel: Adresse generation enhed

Adresse generation enhed (AGU), undertiden også kaldet adresse beregning enhed (ACU), er en kørselsenhed inde i CPU ‘en, der beregner adresser, der bruges af CPU’ en til at få adgang til hovedhukommelsen., Ved at have adresseberegninger håndteret af separate kredsløb, der fungerer parallelt med resten af CPU ‘ en, kan antallet af CPU-cyklusser, der kræves til udførelse af forskellige maskininstruktioner, reduceres, hvilket medfører ydelsesforbedringer.

under udførelsen af forskellige operationer skal CPU ‘er beregne hukommelsesadresser, der kræves for at hente data fra hukommelsen; for eksempel skal in-memory-positioner for arrayelementer beregnes, før CPU’ en kan hente dataene fra faktiske hukommelsesplaceringer., Disse adressegenerationsberegninger involverer forskellige heltal aritmetiske operationer, såsom addition, subtraktion, modulo-operationer eller bitskift. Ofte involverer beregning af en hukommelsesadresse mere end en generel maskininstruktion, som ikke nødvendigvis afkodes og udføres hurtigt. Ved at inkorporere en AGU i et CPU-design Sammen med introduktion af specialiserede instruktioner, der bruger AGU, kan forskellige adressegenereringsberegninger aflastes fra resten af CPU ‘ en og kan ofte udføres hurtigt i en enkelt CPU-cyklus.,funktioner i en AGU afhænger af en bestemt CPU og dens arkitektur. Således implementerer og udsætter nogle AGUs flere adresseberegningsoperationer, mens nogle også inkluderer mere avancerede specialiserede instruktioner, der kan fungere på flere operander ad gangen. Desuden inkluderer nogle CPU-arkitekturer flere Agu ‘ er, så mere end en adresseberegningsoperation kan udføres samtidigt, hvilket bringer yderligere ydelsesforbedringer ved at udnytte den superskalære karakter af avancerede CPU-design., For eksempel inkorporerer Intel Flere Agu ‘ er i sine Sandy Bridge-og Has .ell-mikroarkitekturer, hvilket øger båndbredden af CPU-hukommelsesundersystemet ved at tillade, at flere hukommelsesadgangsinstruktioner udføres parallelt.

Memory management unit (MMU)Edit

uddybende artikel: Memory management unit

de Fleste high-end mikroprocessorer (desktop, laptop, server-computere) har en memory management unit, oversætte logiske adresser til fysiske RAM-adresser, der giver hukommelse beskyttelse og personsøgning evner, der er nyttig for den virtuelle hukommelse., Enklere processorer, især mikrocontrollere, normalt don ” t omfatte en MMU.

CacheEdit

en CPU-cache er en hard .arecache, der bruges af centralbehandlingsenheden (CPU) på en computer til at reducere de gennemsnitlige omkostninger (tid eller energi) for at få adgang til data fra hovedhukommelsen. En cache er en mindre, hurtigere hukommelse, tættere på en processorkerne, der gemmer kopier af dataene fra ofte anvendte hovedhukommelsessteder. De fleste CPU ‘ er har forskellige uafhængige caches, herunder instruktion og data caches, hvor data cache er normalt organiseret som et hierarki af flere cache niveauer (L1, L2, L3, L4, etc.,).

alle moderne (hurtige) CPU ‘ er (med få specialiserede undtagelser) har flere niveauer af CPU-cacher. De første CPU ‘ er, der brugte en cache, havde kun et niveau af cache; i modsætning til senere niveau 1 caches blev den ikke opdelt i L1d (for data) og L1i (for instruktioner). Næsten alle nuværende CPU ‘ er med caches har en delt L1-cache. De har også L2 caches og, for større processorer, L3 caches så godt. L2-cachen er normalt ikke delt og fungerer som et fælles lager for den allerede splittede L1-cache. Hver kerne i en multi-core processor har en dedikeret L2-cache og deles normalt ikke mellem kernerne., L3-cachen og cacherne på højere niveau deles mellem kernerne og deles ikke. En L4-cache er i øjeblikket usædvanlig og er generelt på dynamisk random access memory (DRAM), snarere end på statisk random access memory (SRAM), på en separat matrice eller chip. Det var også tilfældet Historisk med L1, mens større chips har tilladt integration af det og generelt alle cache niveauer, med den mulige undtagelse af det sidste niveau. Hvert ekstra niveau af cache har tendens til at være større og optimeres forskelligt.,

Andre typer af caches eksisterer (der er ikke medregnet i “cache størrelsen” af de vigtigste caches, der er nævnt ovenfor), såsom oversættelse lookaside buffer (TLB), der er en del af memory management unit (MMU), at de fleste Cpu ‘ er har.

Caches er generelt dimensioneret i beføjelser på to: 4, 8, 16 osv. KiB eller MiB (til større ikke-L1) størrelser, selvom IBM .13 har en 96 KiB L1 instruktion cache.

Clock rateEdit

Hovedartikel: Clock rate

de fleste CPU ‘ er er synkrone kredsløb, hvilket betyder, at de anvender et clock signal til tempo deres sekventielle operationer., Kloksignalet produceres af et eksternt oscillatorkredsløb, der genererer et konsistent antal impulser hvert sekund i form af en periodisk firkantbølge. Frekvensen af urpulser bestemmer den hastighed, hvormed en CPU udfører instruktioner, og følgelig jo hurtigere uret er, jo flere instruktioner vil CPU ‘ en udføre hvert sekund.

for at sikre korrekt drift af CPU ‘en er urperioden længere end den maksimale tid, der er nødvendig for, at alle signaler spredes (bevæger sig) gennem CPU’ en., Ved indstilling af urperioden til en værdi langt over den værst tænkelige udbredelsesforsinkelse er det muligt at designe hele CPU ‘ en og den måde, den bevæger data rundt om “kanterne” af det stigende og faldende ursignal. Dette har fordelen ved at forenkle CPU ‘ en markant, både fra et designperspektiv og et komponenttællingsperspektiv. Det bærer dog også den ulempe, at hele CPU ‘ en skal vente på sine langsomste elementer, selvom nogle dele af den er meget hurtigere. Denne begrænsning er stort set blevet kompenseret ved forskellige metoder til at øge CPU-parallelisme (se nedenfor).,

imidlertid løser arkitektoniske forbedringer alene ikke alle ulemperne ved globalt synkrone CPU ‘ er. For eksempel er et ursignal udsat for forsinkelser af ethvert andet elektrisk signal. Højere urhastigheder i stadig mere komplekse CPU ‘ er gør det vanskeligere at holde ursignalet i fase (synkroniseret) i hele enheden. Dette har ført til, at mange moderne CPU ‘er kræver flere identiske kloksignaler, der skal leveres for at undgå at forsinke et enkelt signal markant nok til at få CPU’ en til at fungere., Et andet stort problem, da urhastighederne stiger dramatisk, er mængden af varme, der spredes af CPU ‘ en. Det konstant skiftende ur får mange komponenter til at skifte, uanset om de bruges på det tidspunkt. Generelt bruger en komponent, der skifter, mere energi end et element i en statisk tilstand. Derfor, når urhastigheden stiger, gør energiforbruget det også, hvilket får CPU ‘ en til at kræve mere varmeafledning i form af CPU-køleopløsninger.,

en metode til at håndtere omskiftning af unødvendige komponenter kaldes ur gating, hvilket indebærer at slukke for ursignalet til unødvendige komponenter (effektivt deaktivere dem). Dette betragtes dog ofte som vanskeligt at implementere og ser derfor ikke almindelig brug uden for design med meget lav effekt. Et bemærkelsesværdigt nyligt CPU-design, der bruger omfattende urgating, er IBM Po .erpc-baseret .enon, der bruges i thebo.360; på den måde reduceres strømkravene til thebo. 360 kraftigt., En anden metode til at løse nogle af problemerne med en global clock signal er fjernelse af clock signal helt. Mens fjernelse af det globale kloksignal gør designprocessen betydeligt mere kompleks på mange måder, har asynkrone (eller urløse) designs markante fordele ved strømforbrug og varmeafledning i sammenligning med lignende synkrone designs. Mens noget ualmindeligt, hele asynkrone CPU ‘ er er blevet bygget uden at bruge en global clock signal. To bemærkelsesværdige eksempler på dette er den ARM-kompatible AMULET og MIPS R3000-kompatible MiniMIPS.,i stedet for helt at fjerne kloksignalet tillader nogle CPU-designs visse dele af enheden at være asynkrone, såsom at bruge asynkron ALUs i forbindelse med superscalar pipelining for at opnå nogle aritmetiske ydelsesgevinster. Selvom det ikke er helt klart, om helt asynkrone designs kan udføre på et sammenligneligt eller bedre niveau end deres synkrone modstykker, er det tydeligt, at de i det mindste udmærker sig i enklere matematiske operationer., Dette kombineret med deres fremragende strømforbrug og varmeafledningsegenskaber gør dem meget velegnede til indlejrede computere.

Spændingsregulatormoduleedit

Hovedartikel: Spændingsregulatormodul

mange moderne CPU ‘ er har et die-integreret strømstyringsmodul, der regulerer on-demand spændingsforsyning til CPU-kredsløbet, så det kan holde balancen mellem ydelse og strømforbrug.

Heltalsområdedit

hver CPU repræsenterer numeriske værdier på en bestemt måde., For eksempel repræsenterede nogle tidlige digitale computere tal som kendte decimaler (base 10) talsystemværdier, og andre har ansat mere usædvanlige repræsentationer som ternære (base Tre). Næsten alle moderne CPU ‘ er repræsenterer tal i binær form, hvor hvert ciffer repræsenteres af en to-værdsat fysisk mængde, såsom en “høj” eller “lav” spænding.

et seks-bit ord indeholdende den binære kodede repræsentation af decimal værdi 40. De fleste moderne CPU ‘ er anvender ordstørrelser, der er en effekt på to, for eksempel 8, 16, 32 eller 64 bit.,

relateret til numerisk repræsentation er størrelsen og præcisionen af heltal, som en CPU kan repræsentere. I tilfælde af en binær CPU måles dette ved antallet af bits (signifikante cifre i et binært kodet heltal), som CPU ‘ en kan behandle i en operation, som almindeligvis kaldes ordstørrelse, bitbredde, datavejsbredde, heltal præcision eller heltal størrelse. En CPU ” s heltalsstørrelse bestemmer rækkevidden af heltalværdier, som den direkte kan fungere på., For eksempel kan en 8-bit CPU direkte manipulere heltal repræsenteret af otte bit, som har et interval på 256 (28) diskrete heltalværdier.

Heltalsområde kan også påvirke antallet af hukommelsesplaceringer, som CPU ‘ en direkte kan adressere (en adresse er en heltalværdi, der repræsenterer en bestemt hukommelsesplacering). For eksempel, hvis en binær CPU bruger 32 bit til at repræsentere en hukommelsesadresse, kan den direkte adressere 232 hukommelsesplaceringer. For at omgå denne begrænsning og af forskellige andre grunde bruger nogle CPU ‘ er mekanismer (såsom bankskift), der gør det muligt at adressere yderligere hukommelse.,CPU ‘ er med større ordstørrelser kræver mere kredsløb og er derfor fysisk større, koster mere og forbruger mere strøm (og genererer derfor mere varme). Som et resultat bruges mindre 4 – eller 8-bit mikrocontrollere ofte i moderne applikationer, selvom CPU ‘ er med meget større ordstørrelser (såsom 16, 32, 64, endda 128-bit) er tilgængelige. Når der kræves højere ydelse, kan fordelene ved en større ordstørrelse (større dataområder og adresserum) dog opveje ulemperne. En CPU kan have interne dataveje kortere end ordstørrelsen for at reducere størrelse og omkostninger., For eksempel, selv om IBM System/360 instruktion sæt blev en 32-bit instruktionssæt, det System/360 Model 30 og Model 40 havde 8-bit datastier i aritmetisk logisk enhed, således at en 32-bit tilføje krævede fire cykler, en for hver 8 bits af operander, og selvom Motorola 68000-serien instruktion sæt blev en 32-bit instruktionssæt, Motorola 68000 og Motorola 68010 havde 16-bit datastier i aritmetisk logisk enhed, så, at en 32-bit tilføje kræves to cykler.,

for at få nogle af de fordele, som både lavere og højere bitlængder giver, har mange instruktionssæt forskellige bitbredder for heltals-og floating-point-data, hvilket gør det muligt for CPU ‘ er, der implementerer dette instruktionssæt, at have forskellige bitbredder for forskellige dele af enheden. For eksempel var IBM System/360 instruktionssættet primært 32 bit, men understøttede 64-bit flydende punktværdier for at lette større nøjagtighed og rækkevidde i flydende punktnumre., Systemet / 360 Model 65 havde en 8-bit adder for decimal og fast punkt binær aritmetik og en 60-bit adder for flydende punkt aritmetik. Mange senere CPU-design bruger lignende blandet bitbredde, især når processoren er beregnet til generel brug, hvor der kræves en rimelig balance mellem heltal og flydende punktkapacitet.,

ParallelismEdit

uddybende artikel: Parallel computing

Model af en subscalar CPU, i, som det tager femten clock cycles for at fuldføre tre instruktioner

en beskrivelse 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, normalt benævnt subscalar, fungerer på og udfører en instruktion på et eller to stykker data ad gangen, det vil sige mindre end en instruktion pr.urcyklus (IPC < 1).,

denne proces giver anledning til en iboende ineffektivitet i subscalar CPU ‘ er. Da kun en instruktion udføres ad gangen, skal hele CPU ‘ en vente på, at instruktionen er afsluttet, før den fortsætter til næste instruktion. Som et resultat bliver subscalar CPU “hængt op” på instruktioner, der tager mere end en urcyklus for at fuldføre udførelsen. Selv tilføjelse af en anden eksekveringsenhed (se nedenfor) forbedrer ikke ydeevnen meget; snarere end at en sti hænges op, nu hænges to veje op, og antallet af ubrugte transistorer øges., Dette design, hvor CPU ” s udførelse ressourcer kan operere på kun instructionn instruktion ad gangen, kan kun muligvis nå skalar ydeevne (instructionn instruktion pr ur cyklus, IPC = 1). Imidlertid er ydeevnen næsten altid subscalar (mindre end en instruktion pr.urcyklus, IPC < 1).

forsøg på at opnå skalar og bedre ydeevne har resulteret i en række designmetoder, der får CPU ‘ en til at opføre sig mindre lineært og mere parallelt., Når der henvises til parallelitet i Cpu ‘ er, to begreber, er generelt bruges til at klassificere disse design-teknikker:

  • instruktion niveau parallelitet (ILP), som har til formål at øge den hastighed, hvormed instruktioner udføres inden for en CPU (det er, at øge brugen af on-die udførelse ressourcer);
  • opgave-niveau parallelitet (TLP), som formål, at øge antallet af tråde eller processer, at en CPU kan udføre samtidigt.,

hver metode adskiller sig både i de måder, hvorpå de gennemføres, samt den relative effektivitet, de har råd til at øge CPU”s ydeevne for en ansøgning.

instruktionsniveau parallelismEdit

Hovedartikel: Instruktionsniveau parallelisme

grundlæggende fem-trins rørledning. I bedste fald kan denne rørledning opretholde en færdiggørelseshastighed på en instruktion pr.,

en af de enkleste metoder, der bruges til at opnå øget parallelisme, er at begynde de første trin i instruktionshentning og afkodning, før den forudgående instruktion er færdig med at udføre. Dette er den enkleste form for en teknik kendt som instruktion pipelining, og bruges i næsten alle moderne generelle formål CPU ‘ er. Pipelining gør det muligt at udføre mere end en instruktion på et givet tidspunkt ved at nedbryde udførelsesvejen i diskrete trin., Denne adskillelse kan sammenlignes med en samlebånd, hvor en instruktion gøres mere komplet på hvert trin, indtil den forlader udførelsesrørledningen og er pensioneret.

Pipelining introducerer dog muligheden for en situation, hvor resultatet af den foregående operation er nødvendigt for at fuldføre den næste operation; en tilstand, der ofte kaldes dataafhængighedskonflikt. For at klare dette skal der udvises ekstra omhu for at kontrollere disse slags forhold og forsinke en del af instruktionsrørledningen, hvis dette sker., Naturligvis kræver udførelse af dette yderligere kredsløb, så pipelined processorer er mere komplekse end subscalar dem (men ikke meget væsentligt så). En pipelined processor kan blive meget næsten skalar, hæmmet kun af rørledningsboder (en instruktion, der bruger mere end en urcyklus i et trin).

en simpel superscalar pipeline. Ved at hente og sende to instruktioner ad gangen kan maksimalt to instruktioner pr.,

yderligere forbedring efter ideen om instruktion pipelining førte til udviklingen af en metode, der reducerer tomgangstiden for CPU-komponenter endnu mere. Design, der siges at være superscalar, inkluderer en lang instruktionsrørledning og flere identiske udførelsesenheder, såsom load-store-enheder, aritmetiske logikenheder, floating-point-enheder og adressegenerationsenheder. I en superscalar pipeline læses og overføres flere instruktioner til en dispatcher, som beslutter, om instruktionerne kan udføres parallelt (samtidigt)., I så fald sendes de til tilgængelige eksekveringsenheder, hvilket resulterer i muligheden for flere instruktioner, der skal udføres samtidigt. Generelt, jo flere instruktioner en superscalar CPU er i stand til at sende samtidigt til ventende eksekveringsenheder, jo flere instruktioner vil blive gennemført i en given cyklus.

det meste af vanskeligheden ved design af en superscalar CPU-arkitektur ligger i at skabe en effektiv dispatcher., Afsenderen skal hurtigt og korrekt kunne afgøre, om instruktioner kan udføres parallelt, samt sende dem på en sådan måde, at så mange eksekveringsenheder er optaget som muligt. Dette kræver, at instruktionsrørledningen udfyldes så ofte som muligt og giver anledning til behovet i superscalar-arkitekturer for betydelige mængder CPU-cache. Det gør også fare-undgå teknikker som filial forudsigelse, spekulativ udførelse, register omdøbning, out-of-order udførelse og transaktionsbeslutning hukommelse afgørende for at opretholde høje niveauer af ydeevne., Ved at forsøge at forudsige, hvilken gren (eller sti) en betinget instruktion vil tage, kan CPU ‘ en minimere antallet af gange, at hele rørledningen skal vente, indtil en betinget instruktion er afsluttet. Spekulativ udførelse giver ofte beskedne præstationsforøgelser ved at udføre dele af kode, der muligvis ikke er nødvendige, når en betinget operation er afsluttet. Udførelse uden for ordre omarrangerer noget i den rækkefølge, hvor instruktioner udføres for at reducere forsinkelser på grund af dataafhængigheder., Også i tilfælde af en enkelt instruktion stream, flere data stream—en sag, når en masse af data fra den samme type har for at blive behandlet—, moderne processorer kan deaktivere dele af rørledningen, således, at når en enkelt instruktion er gennemført mange gange, CPU springer hente og afkode faser og dermed i høj grad øger ydeevnen i visse tilfælde, især i de meget monotone program motorer, såsom video skabelse software og foto forarbejdning.,

i det tilfælde, hvor en del af CPU ‘ en er superscalar og en del ikke er, lider den del, der ikke er, en præstationsstraf på grund af planlægningsboder. Intel P5 Pentium havde to superscalar ALUs, som kunne acceptere en instruktion pr. Således P5 var heltal superscalar men ikke flydende punkt superscalar. Intel ” s efterfølger til P5 arkitektur, P6, tilføjet superscalar evner til sine floating point funktioner, og dermed gav en betydelig stigning i floating point instruktion ydeevne.,

både simple pipelining og superscalar design øge en CPU”s ILP ved at tillade en enkelt processor til at fuldføre udførelse af instruktioner på satser overgår instructionn instruktion pr ur cyklus. De fleste moderne CPU-design er i det mindste noget superscalar, og næsten alle generelle CPU ‘ er designet i det sidste årti er superscalar. I de senere år er noget af vægten ved at designe high-ILP-computere blevet flyttet ud af CPU ‘ ens hard .are og ind i dens soft .areinterface eller instruktionssætarkitektur (ISA)., Strategien for den meget lange instruktion ord (VLI.) forårsager nogle ILP at blive underforstået direkte af Soft .aren, reducere mængden af arbejde CPU skal udføre for at øge ILP og derved reducere design”s kompleksitet.

Opgave-niveau parallelismEdit

uddybende artikler: Multithreading og Multi-core processor

en Anden strategi til at opnå resultater er at udføre flere tråde eller processer parallelt. Dette forskningsområde er kendt som parallel computing. I Flynn ” s taksonomi, denne strategi er kendt som multiple instruktion stream, multiple data stream (MIMD).,

en teknologi, der blev brugt til dette formål, var multiprocessering (MP). Den oprindelige smag af denne teknologi er kendt som symmetric multiprocessing (SMP), hvor et lille antal CPU ‘ er deler et sammenhængende billede af deres hukommelsessystem. I denne ordning har hver CPU ekstra hard .are til at opretholde en konstant opdateret visning af hukommelsen. Ved at undgå uaktuelle visninger af hukommelse kan CPU ‘ erne samarbejde om det samme program, og programmer kan migrere fra en CPU til en anden., For at øge antallet af samarbejdende Cpu ‘ er, ud over en håndfuld, ordninger, såsom ikke-uniform memory access (NUMA) og register-baseret sammenhæng protokoller, der blev indført 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 blev multiprocessering bygget ved hjælp af flere diskrete CPU ‘ er og kort til at implementere sammenkoblingen mellem processorerne., Når processorer og deres sammenkobling alle implementeres på en enkelt chip, er teknologien kendt som chip-level multiprocessing (CMP) og single chip som en multi-core processor.

det blev senere anerkendt, at finere korn parallelisme eksisterede med et enkelt program. Et enkelt program kan have flere tråde (eller funktioner), der kunne udføres separat eller parallelt. Nogle af de tidligste eksempler på denne teknologi implementerede input/output-behandling, såsom direkte hukommelsesadgang som en separat tråd fra beregningstråden., En mere generel tilgang til denne teknologi blev introduceret i 1970 ‘ erne, da systemer blev designet til at køre flere beregningstråde parallelt. Denne teknologi er kendt som multi-threading (MT). Denne tilgang betragtes som mere omkostningseffektiv end multiprocessering, da kun et lille antal komponenter i en CPU replikeres for at understøtte MT i modsætning til hele CPU ‘ en i tilfælde af MP. I MT deles eksekveringsenhederne og hukommelsessystemet inklusive cacherne mellem flere tråde., Ulempen ved MT er, at Hard .arestøtten til multithreading er mere synlig for soft .are end MP, og dermed skal supervisor soft .are som operativsystemer gennemgå større ændringer for at understøtte Mt. En type MT, der blev implementeret, er kendt som temporal multithreading, hvor en tråd udføres, indtil den er stoppet og venter på, at data vender tilbage fra ekstern hukommelse. I dette skema vil CPU ‘ en så hurtigt kontekstskifte til en anden tråd, der er klar til at køre, kontakten udføres ofte i en CPU-urcyklus, såsom UltraSPARC T1., En anden type MT er samtidig multithreading, hvor instruktioner fra flere tråde udføres parallelt inden for en CPU-urcyklus.

i flere årtier fra 1970’erne til begyndelsen af 2000-tallet, har fokus på at designe højtydende general purpose Cpu ‘ er var i høj grad på at opnå en høj ILP ved hjælp af teknologier såsom pipelining, caches, superskalare udførelse, out-of-order execution, osv. Denne tendens kulminerede i store, magt-sultne CPU ‘ er som Intel Pentium 4., I begyndelsen af 2000 ‘ erne blev CPU-designere forhindret i at opnå højere ydelse fra ILP-teknikker på grund af den voksende forskel mellem CPU-driftsfrekvenser og hovedhukommelsesoperationsfrekvenser samt eskalerende CPU-strømafledning på grund af mere esoteriske ILP-teknikker.CPU-designere lånte derefter ideer fra kommercielle computermarkeder såsom transaktionsbehandling, hvor den samlede ydelse af flere programmer, også kendt som gennemløbscomputing, var vigtigere end ydelsen af en enkelt tråd eller proces.,

denne vending af vægt fremgår af udbredelsen af dual og flere core processor design og især Intel”s nyere design Ligner sin mindre superscalar P6 arkitektur. Sent designs i flere processor familier udviser CMP, herunder x86-64 Opteron og Athlon 64 X2, SPARC UltraSPARC T1, IBM POWER4 og POWER5, samt flere spillekonsol Cpu ‘er som Xbox 360″s triple-core PowerPC design, og PlayStation 3″s 7-core Cell processor.,

data parallelismEdit

hovedartikler: Vektorprocessor og SIMD

et mindre almindeligt, men stadig vigtigere paradigme for processorer (og faktisk computing generelt) beskæftiger sig med data parallelisme. Processorerne diskuteret tidligere er alle omtalt som en slags skalar enhed. Som navnet antyder, behandler vektorprocessorer flere stykker data i forbindelse med en instruktion. Dette står i kontrast til skalære processorer, der beskæftiger sig med et stykke data for hver instruktion., Ved hjælp af Flynn ” s taksonomi, er disse to ordninger for håndtering af data generelt benævnt single instruktion stream, multiple data stream (SIMD) og single instruktion stream, single data stream (sisd), henholdsvis. Det store værktøj til at oprette processorer, der beskæftiger sig med vektorer af data, ligger i at optimere opgaver, der har tendens til at kræve den samme operation (for eksempel en sum eller et dot-produkt), der skal udføres på et stort sæt data. Nogle klassiske eksempler på disse typer opgaver omfatter multimedieapplikationer (billeder, video og lyd) samt mange typer videnskabelige og tekniske opgaver., Mens en skalarprocessor skal gennemføre hele processen med at hente, afkode og udføre hver instruktion og værdi i et sæt data, kan en vektorprocessor udføre en enkelt operation på et relativt stort datasæt med en instruktion. Dette er kun muligt, når applikationen har en tendens til at kræve mange trin, der anvender en operation på et stort sæt data.

de fleste tidlige vektorprocessorer, såsom Cray-1, var næsten udelukkende forbundet med videnskabelig forskning og kryptografi applikationer., Da multimedia stort set er skiftet til digitale medier, er behovet for en form for SIMD i generelle processorer blevet markant. Kort efter inkludering af floating-point-enheder begyndte at blive almindelige i generelle processorer, begyndte specifikationer for og implementeringer af SIMD-eksekveringsenheder også at vises for generelle processorer. Nogle af disse tidlige SIMD-specifikationer-som HP “s Multimedia Acceleration e .tensions (MA.) og Intel”s mm. – var kun heltal., Dette viste sig at være en betydelig hindring for nogle soft .areudviklere, da mange af de applikationer, der drager fordel af SIMD, primært beskæftiger sig med floating-point-numre. Udviklere raffinerede og omdannede gradvist disse tidlige designs til nogle af de fælles moderne SIMD-specifikationer, som normalt er forbundet med one instruction set architecture (ISA). Nogle bemærkelsesværdige moderne eksempler inkluderer Intel ” s Streaming SIMD e .tensions (SSE) og den Po .erpc-relaterede AltiVec (også kendt som VM.).


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *