HTG Uitgelegd: Hoe Werkt een CPU Eigenlijk in zijn Werk?

0
862

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 uw besturingssysteem, de processor, het lijkt wel magie zelfs veel technische mensen. Hier, zullen wij ons best doen om het af te breken.

Het merendeel van het onderzoek voor dit artikel komt uit “Maar Hoe kan Het Kennen?” door J. Clark Scott. Het is een fantastisch lezen, gaat in veel meer diepgang dan dit artikel, en het is de moeite waard de paar dollar op Amazon.

Een opmerking voordat we beginnen: moderne Cpu ‘ s zijn ordes van grootte complexer dan wat we schetsen hier. Het is bijna onmogelijk voor één persoon om te begrijpen elke nuance van een chip met meer dan een miljard transistors. Echter, de basisprincipes van hoe het allemaal in elkaar zit hetzelfde blijven, en het begrijpen van de basisprincipes geven u een beter begrip van de moderne systemen.

Klein Beginnen

Computers werken in binaire. Ze begrijpen alleen twee standen: aan en uit. Om berekeningen uit te voeren in binaire, zij maken gebruik van wat heet een transistor. De transistor staat alleen de bron van de stroom die door het om de afvoer als er stroom over de poort. In wezen, dit vormt een binaire schakel, die snijdt de draad af, afhankelijk van een tweede ingang signaal.

GERELATEERD: Wat is Binair, en Waarom Doen Computers Gebruiken?

Moderne computers gebruiken miljarden transistors om berekeningen uit te voeren, maar op de laagste niveaus, hoeft u alleen maar een handvol vormen de meest elementaire componenten, bekend als poorten.

Logische Poorten

Stapel een paar transistoren goed, en je hebt wat bekend staat als een logische poort. Logische poorten van twee binaire ingangen, een bewerking uitvoeren op hen, en een output. De OF-poort, bijvoorbeeld, geeft als resultaat true als een van de ingangen is waar. De EN-poort controleert als beide ingangen zijn echte, XOR controleert als slechts één van de ingangen waar zijn, en de N-varianten (NOCH, NAND, en XNOR) zijn omgekeerde versies van hun base-poorten.

De Wiskunde Met Poorten

Met slechts twee poorten die je kunt doen elementaire binaire naast. Dit diagram hierboven laat een half adder, gemaakt met behulp van Logicly, een gratis online speeltuin voor de logische poorten. De XOR-poort hier zal inschakelen als slechts één van de ingangen is op, maar niet beide. De EN-poort wordt ingeschakeld als beide ingangen zijn, maar uit blijven als er geen input. Dus als beide zijn op de XOR blijft uit, en de EN-poort wordt ingeschakeld, komt het juiste antwoord twee:

Dit geeft ons een eenvoudige installatie met drie afzonderlijke uitgangen: nul, één en twee. Maar een beetje kan geen winkel iets hoger dan 1, en deze machine is niet zo handig als het lost slechts één van de meest eenvoudige wiskundige problemen mogelijk. Maar dit is slechts een half adder, en als je twee van hen met een andere ingang, krijg je een full adder:

De full adder heeft drie ingangen—de twee nummers toe te voegen, en een “dragen.” Het dragen wordt gebruikt wanneer de laatste getal groter is dan wat kan worden opgeslagen in een enkele bit. Full adders zal worden gekoppeld in een keten, en het dragen van een adder het volgende. De carry is toegevoegd aan het resultaat van de XOR-poort in de eerste helft adder, en er is een extra OF gate te hanteren beide gevallen wanneer het zo zou moeten zijn.

Wanneer beide ingangen zijn op het dragen draait op, en stuurt het op naar de volgende full adder in de keten:

En dit is ongeveer net zo complex als aanvulling krijgt. Omhoog te bewegen om meer bits in wezen betekent meer full adders in een lange keten.

De meeste andere wiskundige bewerkingen kunnen worden uitgevoerd met de aanvulling; vermenigvuldiging is slechts herhaald optellen, aftrekken kan gedaan worden met een aantal mooie bit inversie, en de verdeling is slechts herhaald aftrekken. En terwijl alle moderne computers hebben op hardware gebaseerde oplossingen om de snelheid van meer gecompliceerde operaties, kunt u technisch doen het allemaal met de full adder.

De Bus, en Geheugen

Nu, onze computer is niets meer dan een slechte calculator. Dit is omdat het niet kan herinneren wat, en doet niets met de uitgangen. Hierboven is een geheugen-cel, die allemaal doen. Onder de motorkap, het maakt veel gebruik van NAND-poorten, en in het echte leven kan heel verschillend zijn, afhankelijk van de opslag-techniek, maar de functie is hetzelfde. U geeft het aantal ingangen, draait u op de ‘schrijf-bits, en het opslaan van de ingangen in de cel. Dit is niet alleen een geheugen cel, zoals we ook behoefte hebben aan een manier om informatie te lezen. Dit wordt gedaan met een enabler, dat is een verzameling van de EN-poorten voor elke bit in het geheugen, alle gebonden aan een andere ingang, de “lezen” – bits. Het schrijven en lezen bits worden vaak genoemd de “set” en “enable”.

Dit hele pakket is verpakt in wat bekend staat als een register. Deze registers zijn aangesloten op de bus, dat is een bundel van draden overal op het hele systeem, aangesloten op elk onderdeel. Zelfs moderne computers hebben een bus, al hebben ze meerdere bussen te verbeteren multitasking-prestaties.

Elk register heeft nog steeds een te schrijven en te lezen, maar in deze opstelling, de input en output zijn hetzelfde. Dit is eigenlijk goed. Bijvoorbeeld. Als je wilde om te kopiëren van de inhoud van R1 naar R2, zet u op de lees-bit-voor-R1, die zou duw de inhoud van de R1 naar de bus. Terwijl de lees-bits is, zou je draai op de ” write bits voor R2, dat zou een kopie van de bus inhoud in R2.

Registers worden gebruikt voor het maken van RAM. RAM-geheugen wordt vaak vastgelegd in een rooster, met draden gaat in twee richtingen:

De decoders neem een binaire ingang en draai de bijbehorende genummerde draad. Bijvoorbeeld, “11” is een 3-in-binary, de hoogste van de 2-bits getal, zodat de decoder zou draaien op de hoogste draad. Op elke kruising van twee lijnen, er is een register. Deze zijn allemaal aangesloten bij de centrale bus, en naar een centrale schrijven en lezen ingang. Zowel het lezen en het schrijven input zal alleen inschakelen als de twee kabels die over het register worden ook op, effectief, zodat u om te kiezen de register uit te schrijven en te lezen. Nogmaals, moderne RAM-geheugen is veel ingewikkelder, maar met deze opstelling werkt nog steeds.

De Klok, de Stepper en de Decoder

De Registers worden overal gebruikt en zijn de basic-hulpprogramma voor het verplaatsen van gegevens en de opslag van informatie in de CPU. Dus wat zegt dat ze dingen verplaatsen?

De klok is het eerste onderdeel in de kern van de CPU-en uitschakelen en het op een ingestelde interval gemeten in hertz, of cycli per seconde. Dit is de snelheid die u ziet geadverteerd naast Cpu ‘ s; een 5 GHz-chip kan uitvoeren 5 miljard cycli per seconde. Klok snelheid is vaak een goede maatstaf voor hoe snel een processor is.

De klok heeft drie verschillende staten: de base clock, het inschakelen van de klok, en de klok instellen. De base clock zal worden voor de helft van een cyclus, en voor de andere helft. Het inschakelen van de klok wordt gebruikt om te schakelen op de registers en zal moeten worden op langer om ervoor te zorgen dat de data is ingeschakeld. Het instellen van de klok moet altijd op hetzelfde tijdstip als het inschakelen van de klok, of anders kunnen onjuiste gegevens worden geschreven.

De klok is aangesloten op de stepper, die tellen van de ene naar de max stap, en reset zichzelf terug naar het ene als het klaar is. De klok is ook verbonden met EN-poorten voor elk register dat de CPU kan schrijven naar:

Deze EN poorten zijn ook verbonden met de uitgang van een andere component, de instructie decoder. De instructie decoder neemt een instructie als “SET R2 R1” en decodeert het in iets dat de CPU kan begrijpen. Het heeft zijn eigen interne registreren, genaamd de “Instructie Register’, dat is waar de huidige bewerking wordt opgeslagen. Hoe het precies komt dit op neer komt is het systeem dat u uitvoert, maar als het eenmaal is gedecodeerd, het zal weer op de juiste instellen en inschakelen bits voor de juiste registers, die brand uit in overeenstemming met de klok.

Programma-instructies worden opgeslagen in het RAM-geheugen (of L1-cache op moderne systemen, dichter bij de CPU). Sinds de programma-informatie is opgeslagen in de registers, net zoals elke andere variabele, kan worden gemanipuleerd op de vlieg te springen rond het programma. Dit is hoe programma ‘ s krijgen hun structuur, met loops en if-instructies. Een jump instructie stelt de huidige locatie in het geheugen die de instructie decoder is het lezen van op een andere locatie.

Hoe Het Komt Allemaal Samen

Nu, onze grove oversimplificatie van hoe een CPU werkt is voltooid. De belangrijkste bus-overspant het hele systeem en kan worden aangesloten op alle van de registers. De full adders, samen met een hoop andere activiteiten, zijn verpakt in de Arithmetic Logic Unit, of het ALU. Deze ALU zal hebben verbindingen met de bus, en zal ook zijn eigen registers voor het opslaan van het tweede nummer van het besturingssysteem op.

Een berekening uit te voeren, programma-gegevens wordt geladen van het systeem-RAM-geheugen in de controle-afdeling. De controle-afdeling leest twee nummers van het RAM is geladen, wordt het eerste in de ALU ‘ s instructie register, en laadt dan de tweede op de bus. Ondertussen stuurt de ALU een instructie code te vertellen wat te doen. De ALU voert alle berekeningen en slaat het resultaat op in een ander register, waarin de CPU kan lezen en vervolgens verder gaan met het proces.

Image Credit: Rost9/Shutterstock