Hur mikroprocessorer fungerar

  • Jacob Hoover
  • 0
  • 1363
  • 242
Mikroprocessorer är kärnan i alla datorer. Jorg Greuel / Getty Images

-Datorn du använder för att läsa den här sidan använder a mikroprocessor att göra sitt arbete. Mikroprocessorn är hjärtat i alla normala datorer, vare sig det är en stationär maskin, en server eller en bärbar dator. Mikroprocessorn du använder kan vara en Pentium, en K6, en PowerPC, en Sparc eller något av de många andra märkena och typerna av mikroprocessorer, men de gör alla ungefär samma sak på ungefär samma sätt.

En mikroprocessor - även känd som en CPU eller central bearbetningsenhet - är en komplett beräkningsmotor som tillverkas på ett enda chip. Den första mikroprocessorn var Intel 4004, som introducerades 1971. 4004 var inte så kraftfull - allt den kunde göra var att lägga till och subtrahera, och den kunde bara göra det 4 bitar åt gången. Men det var fantastiskt att allt fanns på ett chip. Före 4004 byggde ingenjörer datorer antingen från samlingar av chips eller från diskreta komponenter (transistorer anslutna en i taget). 4004 drev en av de första bärbara elektroniska kalkylatorerna.

- Om du någonsin har undrat vad mikroprocessorn i din dator gör, eller om du någonsin har undrat om skillnaderna mellan typer av mikroprocessorer, läs sedan vidare. I den här artikeln kommer du att lära dig hur ganska enkla digitala logiktekniker tillåter en dator att göra sitt jobb, vare sig det spelar ett spel eller stavningskontroller ett dokument!

Innehåll
  1. Mikroprocessorprogression: Intel
  2. Mikroprocessorlogik
  3. Mikroprocessorminne
  4. Mikroprocessorinstruktioner
  5. Mikroprocessorprestanda och trender
  6. 64-bitars mikroprocessorer
Intel 8080 var den första mikroprocessorn i en hemmadator.

Den första mikroprocessorn som gjorde den till en hemmadator var Intel 8080, en komplett 8-bitars dator på ett chip, introducerad 1974. Den första mikroprocessorn som gjorde en riktig stänk på marknaden var Intel 8088, introducerad 1979 och införlivad till IBM PC (som först visades runt 1982). Om du är bekant med PC-marknaden och dess historia vet du att PC-marknaden flyttade från 8088 till 80286 till 80386 till 80486 till Pentium till Pentium II till Pentium III till Pentium 4. Alla dessa mikroprocessorer är gjorda av Intel och alla är förbättringar av den grundläggande utformningen av 8088. Pentium 4 kan köra vilken kod som helst som körs på den ursprungliga 8088, men den gör det ungefär 5000 gånger snabbare!

Sedan 2004 har Intel introducerat mikroprocessorer med flera kärnor och miljoner fler transistorer. Men även dessa mikroprocessorer följer samma allmänna regler som tidigare chips.

Här är skillnaderna mellan de olika processorer som Intel har introducerat under åren. Sammansatt från Intel Microprocessor Quick Reference Guide och TSCP Benchmark Scores

Ytterligare information om tabellen på denna sida:

  • De datum är året som processorn först introducerades. Många processorer introduceras med högre klockhastighet under många år efter det ursprungliga släppdatumet.
  • transistorer är antalet transistorer på chipet. Du kan se att antalet transistorer på ett enda chip har ökat stadigt under åren.
  • mikron är bredden, i mikron, av den minsta tråden på chipet. Som jämförelse är ett mänskligt hår 100 mikron tjockt. När funktionstorleken på chipet sjunker ökar antalet transistorer.
  • Klockfrekvens är den maximala hastigheten som chipet kan klockas på. Klockhastigheten kommer att vara mer förnuftig i nästa avsnitt.
  • Data bredd är bredden på ALU. En 8-bitars ALU kan lägga till / subtrahera / multiplicera / etc. två 8-bitarsnummer, medan en 32-bitars ALU kan manipulera 32-bitarsnummer. En 8-bitars ALU måste utföra fyra instruktioner för att lägga till två 32-bitarsnummer, medan en 32-bitars ALU kan göra det i en instruktion. I många fall har den externa databussen samma bredd som ALU, men inte alltid. 8088 hade en 16-bitars ALU och en 8-bitars buss, medan de moderna Pentiums hämtar data 64 bitar åt gången för sina 32-bitars ALU: er.
  • MIPS står för "miljoner instruktioner per sekund" och är ett grovt mått på prestanda för en CPU. Moderna CPU: er kan göra så många olika saker att MIPS-betyg förlorar mycket av sin betydelse, men du kan få en allmän känsla av CPU: s relativa kraft från denna kolumn.

Från denna tabell kan du se att det i allmänhet finns en relation mellan klockhastighet och MIPS. Den maximala klockhastigheten är en funktion av tillverkningsprocessen och förseningar i chipet. Det finns också en relation mellan antalet transistorer och MIPS. Till exempel klockade 8088 vid 5 MHz men kördes endast vid 0,33 MIPS (ungefär en instruktion per 15 klockcykler). Moderna processorer kan ofta köras med en hastighet av två instruktioner per klockcykel. Denna förbättring är direkt relaterad till antalet transistorer på chipet och kommer att vara mer vettigt i nästa avsnitt.

Vad är ett chip?

EN chip kallas också en integrerad krets. I allmänhet är det en liten tunn tunn kisel på vilken transistorerna som utgör mikroprocessorn har etsats. Ett chip kan vara så stort som en tum på en sida och kan innehålla tiotals miljoner transistorer. Enklare processorer kan bestå av några tusentals transistorer etsade på ett chip bara några millimeter kvadrat.

Intel Pentium 4-processor Photo med tillstånd av Intel Corporation

För att förstå hur en mikroprocessor fungerar är det bra att titta inifrån och lära sig om logiken som används för att skapa en. I processen kan du också lära dig om assembleringsspråk -- modersmålet för en mikroprocessor - och många av de saker som ingenjörer kan göra för att öka hastigheten på en processor.

En mikroprocessor kör en samling maskininstruktioner som berättar processorn vad han ska göra. Baserat på instruktionerna gör en mikroprocessor tre grundläggande saker:

  • Med hjälp av sin ALU (Aritmetic / Logic Unit) kan en mikroprocessor utföra matematiska operationer som tillägg, subtraktion, multiplikation och delning. Moderna mikroprocessorer innehåller kompletta flytande punktprocessorer som kan utföra extremt sofistikerade operationer på stora flytpunktsnummer.
  • En mikroprocessor kan flytta data från en minnesplats till en annan.
  • En mikroprocessor kan fatta beslut och hoppa till en ny uppsättning instruktioner baserade på dessa beslut.

Det kan finnas mycket sofistikerade saker som en mikroprocessor gör, men det är dess tre grundläggande aktiviteter. Följande diagram visar en extremt enkel mikroprocessor som kan göra dessa tre saker:

Detta är ungefär så enkelt som en mikroprocessor blir. Denna mikroprocessor har:

  • En adressbuss (som kan vara 8, 16 eller 32 bitar bred) som skickar en adress till minnet
  • EN databuss (det kan vara 8, 16 eller 32 bitar brett) som kan skicka data till minnet eller ta emot data från minnet
  • En RD (Läs och WR (skriv) rad för att berätta för minnet om den vill ställa in eller få den adresserade platsen
  • EN klockrad som låter en klockpuls sekvensera processorn
  • EN återställ linje som återställer programräknaren till noll (eller vad som helst) och startar om körningen

Låt oss anta att både adress- och databussarna är 8 bitar breda i det här exemplet.

Här är komponenterna i denna enkla mikroprocessor:

  • Registren A, B och C är helt enkelt spärrar gjorda av vippor. (Se avsnittet om "kantutlöst spärr" i Hur boolsk logik fungerar för mer information.)
  • Adresslåset är precis som register A, B och C.
  • Programräknaren är en spärr med den extra förmågan att öka med 1 när man får höra att göra det, och också att återställa till noll när man får höra att göra det.
  • ALU kan vara så enkelt som en 8-bitars adderare (se avsnittet om adderare i How Boolean Logic Works för detaljer), eller så kan det lägga till, subtrahera, multiplicera och dela upp 8-bitarsvärden. Låt oss anta det senare här.
  • Testregistret är en speciell spärr som kan innehålla värden från jämförelser som utförs i ALU. En ALU kan normalt jämföra två siffror och bestämma om de är lika, om en är större än den andra osv. Testregistret kan också normalt innehålla en bärbit från sista steget i adderaren. Den lagrar dessa värden i flip-flops och sedan kan instruktionsavkodaren använda värdena för att fatta beslut.
  • Det finns sex rutor märkta med "3-tillstånd" i diagrammet. Dessa är tri-state buffertar. En tri-state buffert kan passera en 1, en 0 eller så kan den väsentligen koppla bort sin utgång (föreställ dig en strömbrytare som helt kopplar bort utgångsledningen från ledningen som utgången går mot). En tri-state buffert tillåter flera utgångar att ansluta till en tråd, men bara en av dem för att faktiskt driva en 1 eller en 0 på linjen.
  • Instruktionsregistret och instruktionsavkodaren ansvarar för att styra alla andra komponenter.

Även om de inte visas i detta diagram, skulle det finnas styrlinjer från instruktionsavkodaren som skulle:

  • Be A-registret att låsa värdet för närvarande på databussen
  • Be B-registret att låsa värdet för närvarande på databussen
  • Be C-registret att låsa värdet som för närvarande matas ut av ALU
  • Be programräknaregistret för att låsa värdet för närvarande på databussen
  • Be adressregistret för att låsa värdet för närvarande på databussen
  • Be instruktionsregistret för att låsa värdet för närvarande på databussen
  • Berätta programräknaren för inkrement
  • Berätta programräknaren att återställa till noll
  • Aktivera någon av de sex tri-state buffertarna (sex separata rader)
  • Berätta för ALU vilken operation som ska utföras
  • Be testregistret för att låsa ALU: s testbitar
  • Aktivera RD-linjen
  • Aktivera WR-linjen

Kommer in i instruktionsavkodaren är bitarna från testregistret och klocklinjen samt bitarna från instruktionsregistret.

ROM-chip

Det föregående avsnittet talade om adress- och databussar samt RD- och WR-linjerna. Dessa bussar och linjer ansluter antingen till RAM eller ROM - vanligtvis båda. I vår provmikroprocessor har vi en adressbuss 8 bitar bred och en databuss 8 bitar bred. Det betyder att mikroprocessorn kan adressera (28) 256 byte minne, och det kan läsa eller skriva 8 bitar av minnet åt gången. Låt oss anta att denna enkla mikroprocessor har 128 byte ROM som börjar på adress 0 och 128 byte RAM som börjar på adress 128.

ROM står för skrivskyddat minne. Ett ROM-chip programmeras med en permanent samling av förinställda byte. Adressbussen berättar ROM-chipet vilken byte som ska hämtas och placeras på databussen. När RD-linjen ändrar tillstånd, presenterar ROM-chipet den valda byten på databussen.

RAM står för slumpmässigt åtkomstminne. RAM innehåller byte av information, och mikroprocessorn kan läsa eller skriva till dessa byte beroende på om RD- eller WR-linjen är signal. Ett problem med dagens RAM-chips är att de glömmer allt när strömmen har släckts. Det är därför datorn behöver ROM.

RAM-chip

Förresten, nästan alla datorer innehåller en viss mängd ROM (det är möjligt att skapa en enkel dator som inte innehåller något RAM - många mikrokontroller gör detta genom att placera en handfull RAM-byte på själva processorchipet - men i allmänhet omöjligt att skapa en som inte innehåller någon ROM). På en PC kallas ROM: n BIOS (Basic Input / Output System). När mikroprocessorn startar börjar den utföra instruktioner som den hittar i BIOS. BIOS-instruktionerna gör saker som att testa hårdvaran i maskinen och sedan går den till hårddisken för att hämta den boot sektor (se Hur hårddiskar fungerar för mer information). Den här boot-sektorn är ett annat litet program, och BIOS lagrar den i RAM efter att ha läst den från disken. Mikroprocessorn börjar sedan köra boot-sektorens instruktioner från RAM. Startsektorprogrammet kommer att berätta för mikroprocessorn att hämta något annat från hårddisken till RAM, som mikroprocessorn sedan kör, och så vidare. Detta är hur mikroprocessorn laddar och kör hela operativsystemet.

Även den otroligt enkla mikroprocessorn som visas i föregående exempel kommer att ha en ganska stor uppsättning instruktioner som den kan utföra. Insamlingen av instruktioner implementeras som bitmönster, var och en har en annan betydelse när de laddas i instruktionsregistret. Människor är inte särskilt bra på att komma ihåg bitmönster, så en uppsättning korta ord definieras för att representera de olika bitmönstren. Denna samling av ord kallas assembleringsspråk av processorn. En assemblerare kan översätta orden till deras bitmönster mycket enkelt, och sedan placeras utgången från monteraren i minnet för att mikroprocessorn ska kunna utföra.

Här är uppsättningen instruktioner för monteringsspråk som designern kan skapa för den enkla mikroprocessorn i vårt exempel:

  • LOADA mem - Ladda register A från minnesadressen
  • LOADB mem - Ladda register B från minnesadressen
  • CONB con - Ladda ett konstant värde i register B
  • SAVEB mem - Spara register B på minnesadressen
  • SAVEC mem - Spara register C på minnesadressen
  • LÄGG TILL - Lägg till A och B och lagra resultatet i C
  • SUB - Subtrahera A och B och lagra resultatet i C
  • MUL - Multiplicera A och B och lagra resultatet i C
  • DIV - Dela upp A och B och lagra resultatet i C
  • COM - Jämför A och B och lagra resultatet i testet
  • JUMP addr - Hoppa till en adress
  • JEQ addr - Hoppa, om det är lika, till adress
  • JNEQ addr - Hoppa, om inte lika, till adress
  • JG addr - Hoppa, om större än, till adress
  • JGE addr - Hoppa, om större än eller lika, till adress
  • JL addr - Hoppa, om mindre än, till adress
  • JLE addr - Hoppa, om mindre än eller lika, till adress
  • SLUTA - Sluta körningen

Om du har läst hur C-programmering fungerar, vet du att denna enkla bit av C-koden kommer att beräkna faktoriet för 5 (där faktoriet för 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):


a = 1; f = 1; medan (a <= 5) f = f * a; a = a + 1;

I slutet av programmets körning, variabeln f innehåller faktoriet av 5.

Assembleringsspråk

EN C-kompilator översätter denna C-kod till monteringsspråk. Antagande att RAM startar på adress 128 i denna processor, och ROM (som innehåller monteringsspråkprogrammet) startar på adress 0, då för vår enkla mikroprocessor kan monteringsspråket se ut så här:


// Antag a är på adress 128 // Antag att F är på adress 1290 CONB 1 // a = 1; 1 SAVEB 1282 CONB 1 // f = 1; 3 SAVEB 1294 LOADA 128 // om a> 5 hoppar till 175 CONB 56 COM7 JG 178 LOADA 129 // f = f * a; 9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a = a + 1; 13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // loop tillbaka till if17 STOPP

ROM

Så nu är frågan: "Hur ser alla dessa instruktioner ut i ROM?" Var och en av dessa monteringsspråkinstruktioner måste representeras av ett binärt nummer. För enkelhets skull, låt oss anta att varje monteringsspråkinstruktion ges ett unikt nummer, så här:

  • LOADA - 1
  • LOADB - 2
  • CONB - 3
  • SPARA - 4
  • SAVEC-medlem - 5
  • ADD - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • KOM - 10
  • JUMP addr - 11
  • JEQ addr - 12
  • JNEQ tillägg - 13
  • JG addr - 14
  • JGE addr - 15
  • JL addr - 16
  • JLE addr - 17
  • STOPP - 18

Siffrorna är kända som opkoder. På ROM skulle vårt lilla program se ut så här:


// Antag a är på adress 128 // Antag att F är på adress 129Addr opcode / värde0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP

Du kan se att sju rader med C-kod blev 18 rader med monteringsspråk, och att det blev 32 byte i ROM.

avkodning

Instruktionsavkodaren måste förvandla var och en av opkoderna till en uppsättning signaler som driver de olika komponenterna inuti mikroprocessorn. Låt oss ta ADD-instruktionen som ett exempel och titta på vad den behöver göra:

  1. Under den första klockcykeln måste vi läsa in instruktionen. Därför måste instruktionsavkodaren: aktivera tri-state bufferten för programräknaren aktivera RD-linjen aktivera data-in tri-state bufferten låsa instruktionen i instruktionsregistret
  2. Under den andra klockcykeln avkodas ADD-instruktionen. Det behöver göras väldigt lite: ställa in ALU-funktionen för att dessutom spärra ALU-utgången i C-registret
  3. Under den tredje klockcykeln ökas programräknaren (i teorin kan detta överlappa till den andra klockcykeln).

Varje instruktion kan delas upp som en uppsättning sekvenserade operationer som dessa som manipulerar komponenterna i mikroprocessorn i rätt ordning. Vissa instruktioner, som denna ADD-instruktion, kan ta två eller tre klockcykler. Andra kan ta fem eller sex klockcykler.

Antalet transistorer tillgängligt har en enorm effekt på processorns prestanda. Som vi tidigare sett tog en typisk instruktion i en processor som en 8088 15 klockcykler för att utföra. På grund av multiplikatorns design tog det ungefär 80 cykler bara för att göra en 16-bitars multiplikation på 8088. Med fler transistorer blir mycket kraftfullare multiplikatorer med kapacitet för enkelcykelhastigheter möjliga.

Fler transistorer möjliggör också en teknik som heter pipelining. I en rörledad arkitektur överlappar exekvering av instruktioner. Så även om det kan ta fem klockcykler för att utföra varje instruktion, kan det finnas fem instruktioner i olika utföringssteg samtidigt. På så sätt ser det ut som en instruktion slutför varje klockcykel.

Många moderna processorer har flera instruktionsavkodare, var och en med sin egen pipeline. Detta möjliggör flera instruktionsströmmar, vilket innebär att mer än en instruktion kan slutföra under varje klockcykel. Den här tekniken kan vara ganska komplex att implementera, så det kräver massor av transistorer.

Trends

Trenden i processorkonstruktion har främst varit mot fullständiga 32-bitars ALU: er med snabba inbyggda flytande punktprocessorer och pipelinerad exekvering med flera instruktionsströmmar. Det senaste i processorkonstruktion är 64-bitars ALU: er, och människor förväntas ha dessa processorer i sina hemdatorer under det kommande decenniet. Det har också förekommit en tendens till speciella instruktioner (som MMX-instruktionerna) som gör vissa operationer särskilt effektiva och tillägg av virtuellt minnesstöd för hårdvara och L1-cache på processorchipet. Alla dessa trender ökar transistorantalet, vilket leder till flera miljoner transistorkraftverk som finns tillgängliga idag. Dessa processorer kan utföra cirka en miljard instruktioner per sekund!

Foto med tillstånd AMD

64-bitars processorer har varit med oss ​​sedan 1992 och på 2000-talet har de börjat bli mainstream. Både Intel och AMD har introducerat 64-bitars chips, och Mac G5 har en 64-bitars processor. 64-bitars processorer har 64-bitars ALU: er, 64-bitarsregister, 64-bitarsbussar och så vidare.

En anledning till att världen behöver 64-bitars processorer är på grund av deras förstorade adressutrymmen. Trettiotvå bitar chips begränsas ofta till maximalt 2 GB eller 4 GB RAM-åtkomst. Det låter som mycket, med tanke på att de flesta hemdatorer för närvarande bara använder 256 MB till 512 MB RAM. Emellertid kan en 4 GB begränsning vara ett allvarligt problem för servermaskiner och maskiner som kör stora databaser. Och till och med hemmamaskiner kommer att börja stöta mot gränsen på 2 GB eller 4 GB ganska snart om nuvarande trender fortsätter. Ett 64-bitars chip har ingen av dessa begränsningar eftersom ett 64-bitars RAM-adressutrymme i huvudsak är oändligt under överskådlig framtid - 2 ^ 64 byte RAM är något i storleksordningen en miljard gigabyte RAM.

Med en 64-bitars adressbuss och breda höghastighetsdatabussar på moderkortet erbjuder 64-bitars maskiner också snabbare I / O (input / output) hastigheter till saker som hårddiskar och grafikkort. Dessa funktioner kan öka systemprestanda kraftigt.

Servrar kan definitivt dra nytta av 64 bitar, men hur är det med normala användare? Utöver RAM-lösningen är det inte klart att ett 64-bitars chip erbjuder "normala användare" några verkliga, konkreta fördelar för tillfället. De kan bearbeta data (mycket komplexa data innehåller massor av riktiga nummer) snabbare. Människor som gör videoredigering och personer som gör fotoredigering på mycket stora bilder drar nytta av denna typ av datorkraft. High-end-spel kommer också att gynnas när de kodas om för att dra nytta av 64-bitarsfunktioner. Men den genomsnittliga användaren som läser e-post, surfar på webben och redigerar Word-dokument använder egentligen inte processorn på det sättet.

För mer information om mikroprocessorer och relaterade ämnen, kolla in länkarna på nästa sida.

relaterade artiklar

  • CPU-frågesport
  • Varför finns det gränser för CPU-hastighet?
  • Hur halvledare fungerar
  • Hur datorer fungerar
  • Hur C-programmering fungerar
  • Hur Java fungerar
  • Hur operativsystem fungerar
  • Hur datorminne fungerar
  • Hur kvantdatorer fungerar
  • Hur DNA-datorer kommer att fungera

Fler bra länkar

  • Webopedia: mikroprocessor
  • Klicka på CPU
  • Processoruppgraderingar
  • Sjätte generationens CPU-jämförelser
  • 7: e generationens CPU-jämförelser
  • TSCP Benchmark Poäng



Ingen har kommenterat den här artikeln än.

De mest intressanta artiklarna om hemligheter och upptäckter. Massor av användbar information om allt
Artiklar om vetenskap, rymd, teknik, hälsa, miljö, kultur och historia. Förklara tusentals ämnen så att du vet hur allt fungerar