Articles

HTG legt uit: hoe werkt een CPU eigenlijk werken?

  • Anthony Heddings

    @anthonyheddings

  • Bijgewerkt 28 februari 2020, 4:58pm EDT
CPU
Rost/

de Meeste dingen die in een computer zijn relatief eenvoudig te begrijpen: de RAM, de opslag, de randapparatuur, de software werken allemaal samen om een computer de functie. Maar het hart van je systeem, de CPU, lijkt zelfs voor veel tech mensen magisch. Hier, we zullen ons best doen om het af te breken.

Het grootste deel van het onderzoek voor dit artikel komt van ” But How Do It Know?”door J. Clark Scott. Het is een fantastische lezen, gaat in veel meer diepte dan dit artikel zal, en is de moeite waard het paar bucks op Amazon.

een noot voordat we beginnen: moderne CPU ‘ s zijn ordes van grootte complexer dan wat we hier schetsen. Het is bijna onmogelijk voor één persoon om elke nuance van een chip met meer dan een miljard transistors te begrijpen. De basisprincipes van hoe het allemaal in elkaar past blijven echter hetzelfde, en het begrijpen van de basisprincipes geeft je een beter begrip van moderne systemen.

startende kleine

Computers werken in binair. Ze begrijpen maar twee staten: aan en uit. Om berekeningen uit te voeren in binair, gebruiken ze een zogenaamde transistor. De transistor laat de bronstroom alleen doorstromen naar de afvoer als er stroom is over de poort. In wezen vormt dit een binaire schakelaar, die de draad afsnijdt afhankelijk van een tweede ingangssignaal.

gerelateerd: Wat is binair, en waarom gebruiken Computers het?

advertentie

moderne computers gebruiken miljarden transistors om berekeningen uit te voeren, maar op de laagste niveaus hebt u slechts een handvol nodig om de meest elementaire componenten te vormen, bekend als gates.

logische poorten

stapel een paar transistors correct, en je hebt wat bekend staat als een logische poort. Logic gates neemt twee binaire ingangen, voert een bewerking op hen uit, en retourneert een uitvoer. De OR gate, bijvoorbeeld, geeft true terug als een van de ingangen true is. De en gate controleert of beide ingangen waar zijn, XOR controleert of slechts één van de ingangen waar is, en de n-varianten (NOR, NAND, en XNOR) zijn omgekeerde versies van hun basispoorten.

wiskunde doen met Gates

met slechts twee gates kunt u basic binaire optelling doen. Dit diagram hierboven toont een halve adder, gemaakt met behulp van Logicly, een gratis online speeltuin voor logic gates. De XOR poort hier zal worden ingeschakeld als slechts een van de ingangen is ingeschakeld, maar niet beide. De poort en de poort gaan aan als beide ingangen aan staan, maar blijven uit als er geen ingang is. Dus als beide aan zijn, blijft de XOR uit, en de poort en de poort gaat aan, en komt tot het juiste antwoord van twee:

advertentie

Dit geeft ons een eenvoudige setup met drie verschillende uitgangen: nul, één en twee. Maar een bit kan niets hoger dan 1 opslaan, en deze machine is niet al te nuttig omdat het alleen een van de eenvoudigste wiskundeproblemen oplost. Maar dit is slechts een halve adder, en als je er twee verbindt met een andere ingang, krijg je een volledige adder:

de volledige adder heeft drie ingangen—de twee nummers toe te voegen, en een ” carry.”De carry wordt gebruikt wanneer het uiteindelijke nummer groter is dan wat in één bit kan worden opgeslagen. Volledige adders zullen worden gekoppeld in een keten, en de carry wordt doorgegeven van de ene adder naar de volgende. De carry wordt toegevoegd aan het resultaat van de XOR poort in de eerste helft adder, en er is een extra of poort om beide gevallen af te handelen wanneer de so die zou moeten worden op.

wanneer beide ingangen zijn ingeschakeld, wordt de carry ingeschakeld en wordt deze naar de volgende volledige adder in de keten verzonden:

en dit is ongeveer zo complex als optellen wordt. Naar meer bits gaan betekent in wezen meer volledige adders in een langere keten.

advertentie

De meeste andere wiskundige bewerkingen kunnen worden gedaan met optellen; vermenigvuldigen is gewoon herhaalde optellen, aftrekken kan worden gedaan met een mooie bit inversie, en delen is gewoon herhaalde Aftrekken. En terwijl alle moderne computers hardware – gebaseerde oplossingen hebben om meer ingewikkelde bewerkingen te versnellen, kunt u technisch alles doen met de volledige adder.

de Bus, en geheugen

Op dit moment is onze computer niets meer dan een slechte rekenmachine. Dit komt omdat het zich niets kan herinneren, en niets doet met zijn uitgangen. Hierboven is een geheugencel getoond, die dat allemaal kan doen. Onder de motorkap maakt gebruik van veel NAND poorten, en in het echte leven kan heel anders zijn, afhankelijk van de opslagtechniek, maar de functie is hetzelfde. Je geeft het wat ingangen, zet de ‘write’ bit aan, en het zal de ingangen in de cel opslaan. Dit is niet alleen een geheugencel, want we hebben ook een manier nodig om informatie uit te lezen. Dit wordt gedaan met een enabler, dat is een verzameling van en poorten voor elk bit in het geheugen, allemaal gebonden aan een andere ingang, het “lezen” bit. De schrijf – en leesbits worden ook vaak “set” en “enable” genoemd.

dit hele pakket is verpakt in wat bekend staat als een register. Deze registers zijn verbonden met de bus, dat is een bundel draden die rond het hele systeem lopen, verbonden met elk onderdeel. Zelfs moderne computers hebben een bus, hoewel ze meerdere bussen kunnen hebben om multitasking prestaties te verbeteren.

elk register heeft nog steeds een schrijf-en leesbit, maar in deze instelling zijn de invoer en uitvoer hetzelfde. Dit is eigenlijk goed. Bijvoorbeeld. Als je de inhoud van R1 naar R2 wilt kopiëren, zet je het leesbit voor R1 aan, wat de inhoud van R1 op de bus zou duwen. Terwijl de leesbit is ingeschakeld, zou je de schrijfbit voor R2 inschakelen, wat de businhoud naar R2 zou kopiëren.

advertentie

Registers worden ook gebruikt om RAM te maken. RAM wordt vaak in een raster gelegd, met draden die in twee richtingen gaan:

de decoders nemen een binaire ingang en zetten de corresponderende genummerde draad aan. Bijvoorbeeld, ” 11 ” is 3 in binair, het hoogste 2-bits getal, dus de decoder zou de hoogste draad aanzetten. Op elk kruispunt staat een register. Deze zijn allemaal verbonden met de centrale bus, en met een centrale schrijf-en leesinvoer. Zowel de Lees-als de schrijfinvoer wordt alleen ingeschakeld als de twee draden die over het register gaan ook aan staan, waardoor u effectief het register kunt selecteren waaruit u wilt schrijven en lezen. Nogmaals, modern RAM is veel ingewikkelder, maar deze setup werkt nog steeds.

de Registers van de klok, de Stepper en de Decoder

worden overal gebruikt en zijn het basishulpmiddel voor het verplaatsen van gegevens en het opslaan van informatie in de CPU. Wat zegt hen om dingen te verplaatsen?

de klok is de eerste component in de kern van de CPU en zal met een bepaald interval, gemeten in hertz, of cycli per seconde, worden uitgeschakeld en ingeschakeld. Dit is de snelheid die u ziet geadverteerd naast CPU ‘ s; een 5 GHz-chip kan 5 miljard cycli per seconde uitvoeren. Kloksnelheid is vaak een zeer goede maatstaf voor hoe snel een CPU is.

advertentie

de klok heeft drie verschillende toestanden: de basisklok, de klok enable en de ingestelde klok. De basisklok staat een halve cyclus aan en de andere helft uit. De klok inschakelen wordt gebruikt om registers in te schakelen en moet langer aan om ervoor te zorgen dat de gegevens is ingeschakeld. De ingestelde klok moet altijd op hetzelfde moment staan als de enable klok, anders kunnen onjuiste gegevens worden geschreven.

de klok is verbonden met de stepper, die zal tellen van één tot de maximale stap, en zichzelf terugzetten naar één als het klaar is. De klok is ook verbonden met en poorten voor elk register waar de CPU naar kan schrijven:

deze en poorten zijn ook verbonden met de uitvoer van een ander component, de instructie decoder. De instructie decoder neemt een instructie als “stel R2 op R1” en decodeert het in iets dat de CPU kan begrijpen. Het heeft zijn eigen interne register, genaamd Het “Instructieregister”, dat is waar de huidige operatie wordt opgeslagen. Hoe het precies doet dit komt neer op het systeem waarop je draait, maar zodra het is gedecodeerd, zal het de juiste set inschakelen en bits inschakelen voor de juiste registers, die zullen afbranden in overeenstemming met de klok.

programma instructies worden opgeslagen in RAM (of L1 cache op moderne systemen, dichter bij de CPU). Aangezien programmagegevens in registers worden opgeslagen, net als elke andere variabele, kan het on the fly worden gemanipuleerd om rond het programma te springen. Dit is hoe programma ‘ s hun structuur krijgen, met loops en if statements. Een jump instructie stelt de huidige locatie in het geheugen dat de instructie decoder leest van een andere locatie.

hoe het allemaal samenkomt

nu is onze Grove oversimplificatie van hoe een CPU werkt voltooid. De hoofdbus overspant het hele systeem en verbindt met alle registers. De volledige adders, samen met een heleboel andere bewerkingen, worden verpakt in de rekenkundige logische eenheid, of de ALU. Deze ALU heeft aansluitingen op de bus en heeft ook eigen registers voor het opslaan van het tweede nummer waarop hij werkt.

advertentie

om een berekening uit te voeren, worden programmagegevens van het systeem RAM in de controle sectie geladen. Het besturingsgedeelte leest twee nummers van RAM, laadt de eerste in het instructieregister van de ALU en laadt vervolgens de tweede op de bus. Ondertussen stuurt het de ALU een instructie code om te vertellen wat te doen. De ALU voert vervolgens alle berekeningen uit en slaat het resultaat op in een ander register, waaruit de CPU kan lezen en vervolgens het proces kan voortzetten.

Image Credit: Rost9/

Anthony Heddings Anthony Heddings is de resident cloud engineer voor LifeSavvy Media, een technisch schrijver, programmeur en een expert op Amazon ‘ s AWS platform. Hij heeft honderden artikelen geschreven voor How-To Geek en CloudSavvy het die miljoenen keren zijn gelezen.Volledige Bio lezen ”