Articles

HTG forklarer:hvordan fungerer en CPU faktisk?

  • Anthony Heddings

    @anthonyheddings

  • opdateret 28.februar 2020, 4:58PM EDT
CPU
rost/

de fleste ting i en computer er relativt enkle at forstå: RAM, opbevaring, perifere enheder og programmet arbejder alle sammen for at lave en computerfunktion. Men Hjertet i dit system, CPU ‘ en, virker som magi selv for mange tekniske mennesker. Her vil vi gøre vores bedste for at nedbryde det.

det meste af forskningen til denne artikel kommer fra “men hvordan ved det?”af J. Clark Scott. Det er en fantastisk læsning, går i meget mere dybde end denne artikel vil, og er værd at parret bukke på.

en note, før vi begynder: moderne CPU ‘ er er størrelsesordener mere komplekse end hvad vi skitserer her. Det er næsten umuligt for en person at forstå enhver nuance af en chip med over en milliard transistorer. De grundlæggende principper for, hvordan det hele passer sammen, forbliver imidlertid de samme, og forståelse af det grundlæggende giver dig en bedre forståelse af moderne systemer.

start lille

computere opererer i binær. De forstår kun to stater: til og fra. For at udføre beregninger i binær bruger de det, der kaldes en transistor. Transistoren tillader kun kildestrømmen at strømme gennem den til afløbet, hvis der er strøm over porten. I det væsentlige danner dette en binær kontakt, som afbryder ledningen afhængigt af et andet indgangssignal.

RELATERET: Hvad er binært, og hvorfor bruger computere det?

annonce

moderne computere bruger milliarder af transistorer til at udføre beregninger, men på de laveste niveauer behøver du kun en håndfuld til at danne de mest basale komponenter, kendt som gates.

Logic Gates

stak et par transistorer korrekt, og du har det, der er kendt som en logic gate. Logiske porte tager to binære indgange, udfører en operation på dem og returnerer en output. Eller-porten returnerer for eksempel sand, hvis en af indgangene er sand. Den og gate kontrollerer, om begge indgange er sande, hvis kun en af indgangene er sande, og N-varianterne (NOR, NAND og NNOR) er inverterede versioner af deres basisporte.

gør matematik med Porte

Med kun to porte kan du gøre grundlæggende binær tilføjelse. Dette diagram ovenfor viser en halv adder, oprettet ved hjælp af Logicly, en gratis online legeplads til logiske porte. Porten her tændes, hvis kun en af indgangene er tændt, men ikke begge dele. Og-porten tændes, hvis begge indgange er tændt, men hold dig væk, hvis der ikke er nogen input. Så hvis begge er tændt, forbliver den slukket, og porten tændes og kommer til det rigtige svar på to:

annonce

dette giver os en simpel opsætning med tre forskellige output: nul, en og to. Men en bit kan ikke gemme noget højere end 1, og denne maskine er ikke for nyttig, da den kun løser et af de enkleste matematiske problemer. Men det er kun en halv adder, og hvis du forbinder to af dem med en anden indgang, får du en fuld adder:

den fulde adder har tre indgange—de to tal, der skal tilføjes, og en “bære.”Bæret bruges, når det endelige tal overstiger det, der kan gemmes i en enkelt bit. Fuld adders vil blive forbundet i en kæde, og bæreren overføres fra en adder til den næste. Der er en ekstra eller port til at håndtere begge tilfælde, når det er nødvendigt at være på.

når begge indgange er tændt, tændes bæreren og sender den til den næste fulde adder i kæden:

og dette er omtrent lige så komplekst som tilføjelse bliver. At flytte op til flere bits betyder i det væsentlige bare flere fulde adders i en længere kæde.

annonce

de fleste andre matematiske operationer kan udføres med tilføjelse; multiplikation er bare gentagen tilføjelse, subtraktion kan udføres med en vis fancy bitinversion, og division er bare gentagen subtraktion. Og mens alle moderne computere har maskinbaserede løsninger til at fremskynde mere komplicerede operationer, kan du teknisk gøre det hele med den fulde adder.

bussen og hukommelsen

lige nu er vores computer intet andet end en dårlig lommeregner. Dette skyldes, at det ikke kan huske noget og ikke gør noget med sine output. Vist ovenfor er en hukommelsescelle, som kan gøre alt dette. Under hætten bruger den mange NAND-porte, og i det virkelige liv kan det være helt anderledes afhængigt af opbevaringsteknikken, men dens funktion er den samme. Du giver det nogle input, tænder ‘skrive’ bit, og det vil gemme input inde i cellen. Dette er ikke kun en hukommelsescelle, da vi også har brug for en måde at læse information fra den. Dette gøres med en enabler, som er en samling af og porte for hver bit i hukommelsen, alle bundet til en anden indgang, “læse” bit. De skrive og læse bits kaldes ofte “set” og “enable” så godt.

hele denne pakke er pakket ind i det, der er kendt som et register. Disse registre er forbundet til bussen, som er et bundt af ledninger, der løber rundt i hele systemet, forbundet til hver komponent. Selv moderne computere har en bus, selvom de kan have flere busser til at forbedre multitasking ydeevne.

hvert register har stadig en skrive-og læsebit, men i denne opsætning er input og output det samme. Det er faktisk godt. Eksempel. Hvis du ville kopiere indholdet af R1 til R2, ville du tænde læsebitten for R1, hvilket ville skubbe indholdet af R1 på bussen. Mens læsebitten er tændt, tænder du skrivebitten for R2, som ville kopiere busindholdet til R2.

annonce

registre bruges også til at lave RAM. RAM er ofte lagt ud i et gitter, hvor ledninger går i to retninger:

dekoderne tager en binær indgang og tænder den tilsvarende nummererede ledning. For eksempel er ” 11 ” 3 i binær, det højeste 2-bit tal, så dekoderen tænder den højeste ledning. Ved hvert kryds er der et register. Alle disse er forbundet til den centrale bus, og til en central skrive og læse input. Både læse-og skriveindgangen tændes kun, hvis de to ledninger, der krydser over registret, også er tændt, effektivt giver dig mulighed for at vælge det register, hvorfra du skal skrive og læse. Igen er moderne RAM langt mere kompliceret, men denne opsætning fungerer stadig.

uret, Stepper og dekoder

registre bruges overalt og er det grundlæggende værktøj til at flytte data rundt og gemme information i CPU ‘ en. Så hvad fortæller dem at flytte tingene rundt?

uret er den første komponent i kernen i CPU ‘ en og vil slukke og tænde med et bestemt interval, målt i Herts eller cyklusser pr. Dette er den hastighed, du ser annonceret sammen med CPU ‘ er; en 5-chip kan udføre 5 milliarder cyklusser pr. Clock hastighed er ofte en meget god måling for, hvor hurtigt en CPU er.

annonce

uret har tre forskellige tilstande: basisuret, aktiver uret og det indstillede ur. Basisuret vil være tændt i en halv cyklus og slukket for den anden halvdel. Aktiveringsuret bruges til at tænde registre og skal være tændt i længere tid for at sikre, at dataene er aktiveret. Det indstillede ur skal altid være tændt på samme tid som aktiveringsuret, ellers kan der skrives forkerte data.

uret er forbundet til stepper, som tæller fra et til det maksimale trin, og nulstiller sig tilbage til et, når det er færdigt. Uret er også forbundet til og porte for hvert register, som CPU ‘ en kan skrive til:

disse og porte er også forbundet til udgangen af en anden komponent, instruktionsdekoderen. Instruktionsdekoderen tager en instruktion som” sæt R2 til R1 “og afkoder den til noget, som CPU’ en kan forstå. Det har sit eget interne register, kaldet” Instruktionsregister”, hvor den aktuelle operation er gemt. Hvor præcis det gør dette kommer ned til det system, du kører på, men når det er afkodet, vil det tænde det korrekte sæt og aktivere bits til de korrekte registre, som vil slukke i overensstemmelse med uret.

programinstruktioner gemmes i RAM (eller L1 cache på moderne systemer, tættere på CPU ‘ en). Da programdata er gemt i registre, ligesom alle andre variable, kan det manipuleres på flue til at hoppe rundt i programmet. Sådan får programmer deres struktur, med sløjfer og If-udsagn. En hoppeinstruktion indstiller den aktuelle placering i hukommelsen, som instruktionsdekoderen læser fra til en anden placering.

hvordan det hele kommer sammen

nu er vores brutto forenkling af, hvordan en CPU fungerer, færdig. Hovedbussen spænder over hele systemet og forbinder til alle registre. De fulde adders sammen med en masse andre operationer er pakket ind i den aritmetiske logiske enhed eller ALU. Denne ALU vil have forbindelser til bussen, og vil også have sine egne registre til opbevaring af det andet nummer, den opererer på.

annonce

for at udføre en beregning indlæses programdata fra system RAM i kontrolafsnittet. Kontrolafsnittet læser to tal fra RAM, indlæser den første i alu ‘ s instruktionsregister og indlæser derefter den anden på bussen. I mellemtiden sender den ALU en instruktionskode, der fortæller den, hvad den skal gøre. ALU udfører derefter alle beregninger og gemmer resultatet i et andet register, som CPU ‘ en kan læse fra og derefter fortsætte processen.

Billedkredit: Rost9 /

Anthony Heddings
Anthony Heddings er bosiddende skyingeniør for LifeSavvy Media, en teknisk forfatter, programmør og ekspert på platform. Han har skrevet hundredvis af artikler til vejledning og CloudSavvy det, der er blevet læst millioner af gange.Læs hele Bio ”