HTG Förklarar: Hur man Gör en CPU som Faktiskt Fungerar?

0
972

De flesta saker i en dator är relativt enkel att förstå: RAM-minne, lagring, kringutrustning och programvara alla arbeta tillsammans för att göra en dator fungerar. Men hjärtat i ditt system, CPU, känns som magi även att många tech människor. Här gör vi vårt bästa för att bryta ner det.

De flesta av forskning till denna artikel kommer från “Men Hur ska Man Veta?” av J. Scott Clark. Det är en fantastisk läsning, går in mycket mer djup än den här artikeln, och är väl värt ett par dollar på Amazon.

En not innan vi börjar: moderna Processorer är flera storleksordningar mer komplexa än vad vi beskriver här. Det är nästan omöjligt för en person att förstå varje nyans av ett chip med över en miljard transistorer. Men, de grundläggande principerna för hur allt hänger ihop fortfarande den samma, och förstå grunderna kommer att ge dig en bättre förståelse av moderna system.

Att Starta Små

Datorer fungerar i binära. De förstår bara två stater: på och av. För att utföra beräkningar med binära, de använder vad som kallas en transistor. Transistorn bara tillåter källa ström att flyta genom den i avloppet om det finns en aktuell över grinden. I huvudsak utgör en binär switch, som klipper tråd av beroende på en andra ingång signal.

RELATERAT: Vad är Binära, och Varför Datorer Använder Det?

Moderna datorer använder miljarder transistorer för att utföra beräkningar, men vid de lägsta nivåer som, du behöver bara en handfull för att bilda den mest grundläggande komponenter, som kallas grindar.

Logiska Grindar

Stack några transistorer på rätt sätt, och du har vad som kallas en logisk grind. Logiska grindar ta två binära ingångar, utför en åtgärd på dem och returnerar en utgång. ELLER gate, till exempel returnerar sant om någon av ingångarna är sant. OCH gate kontrollerar om båda ingångarna är sant, XOR kontrollerar om endast en av ingångarna är sant, och N-varianter (ELLER, NAND, och XNOR) är inverterade versioner av deras bas gates.

Gör Matte Med Portar

Med bara två grindar kan du göra grundläggande binära tillägg. Diagrammet ovan visar en halv adder, skapade med hjälp av Logicly, en gratis online lekplats för logiska grindar. Den XOR-grind här kommer att slå på om bara en av ingångarna är på, men inte både och. OCH gate kommer att slås på om båda ingångarna är på, men att stanna av om det finns ingen ingång. Så om båda är på, XOR stannar av, och porten slås på, kommer till rätt svar två:

Detta ger oss en enkel installation med tre olika utgångar: noll, ett och två. Men en bit kan inte lagra något högre än 1, och denna maskin är inte så användbart som det bara löser en av de enklaste matematiska problem som möjligt. Men detta är bara en halv adder, och om du ansluter två av dem med en annan ingång, och du får en full adder:

Full adder har tre ingångar—två nummer för att lägga till, och en “bära.” De bär som används när den slutliga antalet överstiger vad som kan lagras i en enda bit. Full huggormar kommer att länkas samman i en kedja, och bära överförs från en huggorm till nästa. De bär läggs till resultatet av XOR-gate i den första halvan adder, och det finns en extra ELLER grind för att hantera både de fall då så att det skulle behöva vara på.

När båda ingångarna på, bära vänder om, och skickar det till nästa full adder i kedjan:

Och detta är ungefär lika komplex som dessutom blir. Att flytta upp till fler bitar i princip bara innebär mer full tilläggsfunktioner i en längre kedja.

De flesta andra matematiska operationer kan göras med tillägg, multiplikation är bara upprepad addition, subtraktion kan göras med några fancy lite inversion, och division är bara upprepad subtraktion. Och samtidigt alla moderna datorer har hårdvarubaserade lösningar för att snabba upp mer komplicerade operationer, som du kan tekniskt göra det med full adder.

Bussen, och Minne

Just nu är vår dator är ingenting mer än en dålig miniräknare. Detta beror på att det inte kommer ihåg någonting, och gör ingenting med dess utgångar. Som visas ovan är ett minne cell, som kan göra allt det där. Under huven, den använder en hel del av NAND-grindar, och i verkliga livet kan vara ganska olika beroende på lagring teknik, men dess funktion är den samma. Du ger det lite ingångar, slå på “skriva” lite, och det kommer att lagra ingångar inne i cellen. Detta är inte bara ett minne cell, som vi behöver också ett sätt att läsa av information från den. Detta är gjort med en möjliggörare, som är en samling av OCH grindar för varje bit i minnet, alla knutna till en annan ingång, “läsa” lite. Skriva och läsa bitar kallas ofta för “set” och “aktivera”.

Hela paketet är inslaget i vad som är känt som ett register. Dessa register är anslutna till bussen, som är en bunt av kablar runt hela systemet, som är ansluten till varje komponent. Även moderna datorer har en buss, även om de kan ha flera bussar för att förbättra multitasking-prestanda.

Varje register har fortfarande skriva och läsa lite, men i denna installations -, in-och utdata är samma sak. Detta är faktiskt bra. Till exempel. Om du vill kopiera innehållet i R1 till R2, du skulle vända på läsa lite för R1, som skulle driva innehållet i R1 på bussen. Samtidigt läsa lite på, skulle du slå på skriva lite för R2, som skulle kopiera buss innehållet i R2.

Register används för att göra RAM-minne. RAM är ofta läggs ut i ett rutnät, med sladdar som går i två riktningar:

Dekodrar ta en binär ingång och slå på motsvarande numrerade tråd. Till exempel, “11” är 3 i binärt format, högst 2-bitars nummer, så dekodern skulle vända på den högsta ledningen. Vid varje korsning, det är ett register. Alla dessa är anslutna till den centrala buss, och till en central skriva och läsa in. Både read och write in kommer bara att slå på om de två ledningar som passerar över registret är också på, effektivt låter dig välja registrera dig som vill skriva och läsa. Igen, moderna RAM är långt mer komplicerat, men denna inställning fungerar fortfarande.

Klockan, Stepper och Dekodern

Register används överallt och är det grundläggande verktyget för att flytta data runt och lagring av information på CPU. Så vad säger åt dem att flytta runt saker?

Klockan är den första delen i kärnan på PROCESSORN och kommer att stänga av och på vid ett angivet tidsintervall, mätt i hertz eller cykler per sekund. Detta är den hastighet du se annonseras vid sidan av Processorer, en 5 GHz-chip kan prestera 5 miljarder svängningar per sekund. Klockfrekvens är ofta ett mycket bra mått för hur snabb en PROCESSOR är.

Klockan har tre olika lägen: bas klocka, aktivera klockan och ställ in klocka. Basen kommer klockan att vara på för en halv cykel, och mindre för den andra hälften. Aktivera klockan används för att slå på register och kommer att behöva vara på längre för att se till att data är aktiverat. Set clock alltid måste vara på samma tid som möjligt klocka, eller annan felaktig data kan skrivas.

Klockan är ansluten till stepper, som kommer att räkna från ett till max steg, och återställa sig tillbaka till en när det är gjort. Klockan är också ansluten till OCH grindar för varje register, som CPU kan skriva till:

Dessa OCH gates är också ansluten till utgången på en annan komponent, instruktion dekoder. Instruktionen dekoder tar en instruktion som “SET R2 R1” och tolkar det till något som PROCESSORN kan förstå. Det har sin egen interna register, som kallas “Instruction Register,” för det är där som den aktuella åtgärden är lagrade. Exakt hur den gör detta kommer ner till systemet som du kör på, men när det är avkodas, det kommer att vända på rätt uppsättning och aktivera bitar till rätt register, som kommer att skjuta av i enlighet klockan.

Programmet instruktioner som är lagrade i RAM-minnet (eller L1-cache på moderna system, närmare CPU). Eftersom programmet data lagras i register, precis som alla andra variabeln, det kan manipuleras på farten för att hoppa runt programmet. Detta är hur program får sin struktur, med loopar och if-satser. En hopp-instruktion som anger den aktuella platsen i minnet att undervisningen dekoder läser från en annan plats.

Hur Det Kommer Alla Tillsammans

Nu, vår grov förenkling av hur en PROCESSOR fungerar är komplett. Buss sträcker sig över hela systemet och ansluter till alla register. Full huggormar, tillsammans med ett gäng andra verksamheter, är förpackade i Aritmetisk Logisk Enhet, eller ALU. Denna ALU kommer att ha anslutningar till buss, och kommer också att ha sina egna register för att lagra den andra siffran den fungerar på.

För att utföra en beräkning, program data laddas från RAM-minne i kontrollen avsnitt. Kontroll avsnittet läser två nummer från RAM-minne, laddar den första i ALU s instruction register, och sedan läsa in den andra på bussen. Samtidigt skickar ALU en instruktion kod som talar om vad som ska göras. ALU sedan utför alla beräkningar och lagrar resultatet i ett annat register, som CPU kan läsa från och sedan fortsätta processen.

Image Credit: Rost9/Shutterstock