Hvordan mikroprosessorer fungerer

  • Rudolf Cole
  • 0
  • 5210
  • 686
Mikroprosessorer er kjernen i alle datamaskiner. Jorg Greuel / Getty Images

-Datamaskinen du bruker for å lese denne siden bruker a Mikroprosessoren å gjøre sitt arbeid. Mikroprosessoren er hjertet til enhver vanlig datamaskin, enten det er en stasjonær maskin, en server eller en bærbar datamaskin. Mikroprosessoren du bruker kan være et Pentium, en K6, en PowerPC, en Sparc eller et av de mange andre merker og typer mikroprosessorer, men de gjør alle omtrent det samme på omtrent samme måte.

En mikroprosessor - også kjent som en prosessor eller sentral prosesseringsenhet - er en komplett beregningsmotor som er produsert på en enkelt brikke. Den første mikroprosessoren var Intel 4004, introdusert i 1971. 4004 var ikke veldig kraftig - alt den kunne gjøre var å legge til og trekke fra, og den kunne bare gjøre det 4 biter om gangen. Men det var utrolig at alt var på én brikke. Før 4004 bygde ingeniører datamaskiner enten fra samling av brikker eller fra diskrete komponenter (transistorer kablet en om gangen). 4004 drev en av de første bærbare elektroniske kalkulatorene.

- Hvis du noen gang har lurt på hva mikroprosessoren på datamaskinen din gjør, eller hvis du noen gang har lurt på forskjellene mellom typer mikroprosessorer, kan du lese videre. I denne artikkelen vil du lære hvordan ganske enkle digitale logiske teknikker lar en datamaskin gjøre jobben sin, enten det er å spille et spill eller stavekontroll et dokument!

innhold
  1. Mikroprosessorprogresjon: Intel
  2. Mikroprosessorlogikk
  3. Mikroprosessorminne
  4. Mikroprosessorinstruksjoner
  5. Mikroprosessorytelse og trender
  6. 64-bit mikroprosessorer
Intel 8080 var den første mikroprosessoren i en hjemme-datamaskin.

Den første mikroprosessoren som gjorde det til en hjemme-datamaskin var Intel 8080, en komplett 8-bits datamaskin på en brikke, introdusert i 1974. Den første mikroprosessoren som gjorde en skikkelig sprut i markedet var Intel 8088, introdusert i 1979 og innarbeidet inn i IBM PC (som først dukket opp rundt 1982). Hvis du er kjent med PC-markedet og dets historie, vet du at PC-markedet flyttet fra 8088 til 80286 til 80386 til 80486 til Pentium til Pentium II til Pentium III til Pentium 4. Alle disse mikroprosessorer er laget av Intel, og alle er forbedringer av den grunnleggende designen til 8088. Pentium 4 kan utføre alle kodestykker som kjørte på den opprinnelige 8088, men den gjør det omtrent 5000 ganger raskere!

Siden 2004 har Intel introdusert mikroprosessorer med flere kjerner og millioner flere transistorer. Men selv disse mikroprosessorene følger de samme generelle reglene som tidligere brikker.

Her er forskjellene mellom de forskjellige prosessorene som Intel har introdusert gjennom årene. Samlet fra Intel Microprocessor Quick Reference Guide og TSCP Benchmark Scores

Mer informasjon om tabellen på denne siden:

  • De Dato er året prosessoren ble introdusert. Mange prosessorer blir introdusert på nytt med høyere klokkehastighet i mange år etter den opprinnelige utgivelsesdatoen.
  • transistorer er antall transistorer på brikken. Du kan se at antall transistorer på en enkelt brikke har steget jevnt over årene.
  • mikron er bredden, i mikron, av den minste ledningen på brikken. Til sammenligning er et menneskehår 100 mikron tykt. Når funksjonsstørrelsen på brikken går ned, øker antallet transistorer.
  • Klokkefart er den maksimale hastigheten som brikken kan klokkeres til. Klokkehastighet vil være mer fornuftig i neste avsnitt.
  • Data Bredde er bredden på ALU. En 8-bit ALU kan legge til / trekke fra / multiplisere / osv. to 8-bit tall, mens en 32-bit ALU kan manipulere 32-bit tall. En 8-bits ALU må utføre fire instruksjoner for å legge til to 32-bits tall, mens en 32-bit ALU kan gjøre det i en instruksjon. I mange tilfeller har den eksterne databussen samme bredde som ALU, men ikke alltid. 8088 hadde en 16-bit ALU og en 8-biters buss, mens de moderne Pentiums henter data 64 bit om gangen for sine 32-biters ALUer.
  • MIPS står for "millioner av instruksjoner per sekund" og er et grovt mål på ytelsen til en CPU. Moderne CPU-er kan gjøre så mange forskjellige ting at MIPS-rangeringer mister mye av betydningen sin, men du kan få en generell følelse av CPU-enhetens relative kraft fra denne kolonnen.

Fra denne tabellen kan du se at det generelt er et forhold mellom klokkehastighet og MIPS. Maksimal klokkehastighet er en funksjon av produksjonsprosessen og forsinkelser i brikken. Det er også et forhold mellom antall transistorer og MIPS. For eksempel klokket 8088 på 5 MHz, men ble bare kjørt til 0,33 MIPS (omtrent en instruksjon per 15 klokkesykluser). Moderne prosessorer kan ofte utføre med en hastighet på to instruksjoner per klokkesyklus. Den forbedringen er direkte relatert til antall transistorer på brikken og vil være mer fornuftig i neste avsnitt.

Hva er en chip??

EN chip kalles også en integrert krets. Generelt er det et lite, tynt stykke silisium som transistorene som utgjør mikroprosessoren er etset på. En brikke kan være så stor som en tomme på en side og kan inneholde titalls millioner transistorer. Enklere prosessorer kan bestå av noen få tusen transistorer som er etset på en chip bare noen få millimeter kvadrat.

Intel Pentium 4-prosessor Photo med tillatelse fra Intel Corporation

For å forstå hvordan en mikroprosessor fungerer, er det nyttig å se på innsiden og lære om logikken som brukes til å lage en. I prosessen kan du også lære om forsamlingsspråk -- morsmålet til en mikroprosessor - og mange av tingene som ingeniører kan gjøre for å øke hastigheten på en prosessor.

En mikroprosessor utfører en samling maskininstruksjoner som forteller prosessoren hva de skal gjøre. Basert på instruksjonene, gjør en mikroprosessor tre grunnleggende ting:

  • Ved hjelp av sin ALU (Arithmetic / Logic Unit) kan en mikroprosessor utføre matematiske operasjoner som addisjon, subtraksjon, multiplikasjon og deling. Moderne mikroprosessorer inneholder komplette flytende punktprosessorer som kan utføre ekstremt sofistikerte operasjoner på store flytpunkter.
  • En mikroprosessor kan flytte data fra et minneplass til et annet.
  • En mikroprosessor kan ta beslutninger og hoppe til et nytt sett med instruksjoner basert på disse beslutningene.

Det kan være veldig sofistikerte ting som en mikroprosessor gjør, men det er de tre grunnleggende aktivitetene. Følgende diagram viser en ekstremt enkel mikroprosessor som er i stand til å gjøre disse tre tingene:

Dette er omtrent så enkelt som en mikroprosessor blir. Denne mikroprosessoren har:

  • en adressebuss (som kan være 8, 16 eller 32 bit bredt) som sender en adresse til minnet
  • EN data buss (som kan være 8, 16 eller 32 bit bredt) som kan sende data til minne eller motta data fra minne
  • en RD (Les og WR (skriv) linje for å fortelle minnet om den vil stille inn eller få adressert sted
  • EN klokke linje som lar en klokkepuls sekvensere prosessoren
  • EN tilbakestill linjen som tilbakestiller programtelleren til null (eller hva som helst) og starter utførelsen på nytt

La oss anta at både adresse- og databussene er 8 bits brede i dette eksemplet.

Her er komponentene i denne enkle mikroprosessoren:

  • Registrene A, B og C er ganske enkelt sperrer laget av flip-flops. (Se avsnittet om "kantutløste sperrer" i Slik fungerer boolsk logikk for detaljer.)
  • Adresselåsen er akkurat som register A, B og C.
  • Programtelleren er en sperre med den ekstra muligheten til å øke med 1 når du blir bedt om å gjøre det, og også å tilbakestille til null når det blir bedt om å gjøre det.
  • ALU kan være så enkel som en 8-biters adder (se avsnittet om tilleggere i How Boolean Logic Works for details), eller det kan være mulig å legge til, trekke fra, multiplisere og dele 8-bit verdier. La oss anta det siste her.
  • Testregisteret er en spesiell sperre som kan inneholde verdier fra sammenligninger utført i ALU. En ALU kan normalt sammenligne to tall og bestemme om de er like, om det ene er større enn det andre osv. Testregisteret kan også normalt inneholde en bærebit fra det siste trinnet i addereren. Den lagrer disse verdiene i flip-flops, og deretter kan instruksjonsdekoderen bruke verdiene til å ta beslutninger.
  • Det er seks bokser merket "3-tilstand" i diagrammet. Disse er tri-state buffere. En tri-tilstandsbuffer kan passere en 1, en 0 eller den kan i hovedsak koble fra utgangen (tenk deg en bryter som kobler utgangslinjen helt fra ledningen som utgangen er på vei mot). En tri-tilstandsbuffer lar flere utganger koble seg til en ledning, men bare en av dem kan faktisk kjøre en 1 eller en 0 på linjen.
  • Instruksjonsregisteret og instruksjonsdekoderen er ansvarlig for å kontrollere alle de andre komponentene.

Selv om de ikke er vist i dette diagrammet, vil det være kontrolllinjer fra instruksjonsdekoderen som ville:

  • Be A-registeret om å låse verdien som for øyeblikket er på databussen
  • Be B-registeret om å låse verdien som er på databussen
  • Be C-registeret om å låse verdien som er utgitt av ALU
  • Be programtellerregisteret for å låse verdien som er på databussen
  • Be adresseregisteret for å låse verdien som er på databussen
  • Be instruksjonsregisteret for å låse verdien som er på databussen
  • Fortell programtelleren til trinn
  • Be programtelleren om å tilbakestille til null
  • Aktiver hvilken som helst av de seks tri-state bufferne (seks separate linjer)
  • Fortell ALU hvilken operasjon du skal utføre
  • Be testregisteret låse ALUs testbiter
  • Aktiver RD-linjen
  • Aktiver WR-linjen

Kommer inn i instruksjonsdekoderen kommer bitene fra testregisteret og klokkelinjen, så vel som bitene fra instruksjonsregisteret.

ROM-brikke

Den forrige delen snakket om adresse- og databusser, samt RD- og WR-linjene. Disse bussene og linjene kobles til RAM eller ROM - vanligvis begge deler. I vår mikroprosessor har vi en adressebuss 8 bits bred og en databuss 8 bits bred. Det betyr at mikroprosessoren kan adressere (28) 256 byte minne, og den kan lese eller skrive 8 biter av minnet om gangen. La oss anta at denne enkle mikroprosessoren har 128 byte ROM som starter på adresse 0 og 128 byte RAM som starter på adresse 128.

ROM står for skrivebeskyttet minne. En ROM-brikke er programmert med en permanent samling av forhåndsinnstilte byte. Adressebussen forteller ROM-brikken hvilken byte du skal hente og plassere på databussen. Når RD-linjen endrer tilstand, presenterer ROM-brikken den valgte byten på databussen.

RAM står for tilfeldig tilgang minne. RAM inneholder byte med informasjon, og mikroprosessoren kan lese eller skrive til disse bytene, avhengig av om RD- eller WR-linjen signaliseres. Et problem med dagens RAM-brikker er at de glemmer alt når strømmen går. Det er derfor datamaskinen trenger ROM.

RAM-brikke

Forresten, nesten alle datamaskiner inneholder en viss mengde ROM (det er mulig å lage en enkel datamaskin som ikke inneholder RAM - mange mikrokontrollere gjør dette ved å plassere en håndfull RAM-byte på selve prosessorbrikken - men generelt umulig å lage en som ikke inneholder noen ROM). På en PC kalles ROM-en BIOS (Basic Input / Output System). Når mikroprosessoren starter, begynner den å utføre instruksjoner den finner i BIOS. BIOS-instruksjonene gjør ting som å teste maskinvaren i maskinen, og deretter går den til harddisken for å hente den boot sektor (se Hvordan harddisker fungerer for detaljer). Denne oppstartssektoren er et annet lite program, og BIOS lagrer den i RAM etter å ha lest den av disken. Mikroprosessoren begynner deretter å utføre oppstartssektorens instruksjoner fra RAM. Oppstartssektorprogrammet vil fortelle mikroprosessoren å hente noe annet fra harddisken i RAM, som mikroprosessoren deretter kjører, og så videre. Slik laster og utfører mikroprosessoren hele operativsystemet.

Til og med den utrolig enkle mikroprosessoren vist i forrige eksempel vil ha et ganske stort sett med instruksjoner som den kan utføre. Innsamlingen av instruksjoner implementeres som bitmønstre, som hver har en annen betydning når de lastes inn i instruksjonsregisteret. Mennesker er ikke spesielt flinke til å huske bitmønstre, så et sett med korte ord er definert for å representere de forskjellige bitmønstrene. Denne samlingen av ord kalles forsamlingsspråk av prosessoren. en assembler kan oversette ordene til bitmønstrene deres veldig enkelt, og deretter plasseres utdataene fra assembleren i minnet for at mikroprosessoren skal utføre.

Her er settet med monteringsspråkinstruksjoner som designeren kan lage for den enkle mikroprosessoren i eksemplet:

  • LOADA mem - Last register A fra minneadressen
  • LOADB mem - Last register B fra minneadressen
  • CONB con - Legg en konstant verdi i register B
  • SAVEB mem - Lagre register B på minneadressen
  • SAVEC mem - Lagre register C på minneadressen
  • LEGG TIL - Legg til A og B og lagre resultatet i C
  • UNDER - Trekk A og B og lagre resultatet i C
  • MUL - Multipliser A og B og lagre resultatet i C
  • DIV - Del A og B og lagre resultatet i C
  • COM - Sammenlign A og B og lagre resultatet i test
  • JUMP addr - Gå til en adresse
  • JEQ addr - Hopp, hvis det er like, til adresse
  • JNEQ addr - Hopp, hvis ikke like, til adresse
  • JG addr - Hopp, hvis større enn, til adresse
  • JGE addr - Hopp, hvis større enn eller lik, til adresse
  • JL addr - Hopp, hvis mindre enn, til adresse
  • JLE addr - Hopp, hvis mindre enn eller lik, til adresse
  • STOPPE - Stopp henrettelse

Hvis du har lest How C Programming Works, så vet du at dette enkle stykke C-koden vil beregne fakultetet til 5 (hvor faktorialen til 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):


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

På slutten av programmets utførelse, variabelen f inneholder fabrikken av 5.

Samlingsspråk

EN C-kompilator oversetter denne C-koden til samlingsspråk. Forutsatt at RAM starter på adresse 128 i denne prosessoren, og ROM (som inneholder monteringsspråkprogrammet) starter på adresse 0, kan monteringsspråket for vår enkle mikroprosessor se slik ut:


// Anta at a er på adresse 128 // Anta at F er på adresse 1290 CONB 1 // a = 1; 1 SAVEB 1282 CONB 1 // f = 1; 3 SAVEB 1294 LOADA 128 // hvis a> 5 hopper til 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 tilbake til if17 STOPP

rom

Så nå er spørsmålet: "Hvordan ser alle disse instruksjonene ut på ROM?" Hver av disse monteringsspråkinstruksjonene må være representert med et binært tall. For enkelhets skyld, la oss anta at hver samlingsspråkinstruksjon får et unikt nummer, som dette:

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

Tallene er kjent som opcodes. I ROM ville det lille programmet vårt se slik ut:


// Anta at a er på adresse 128 // Anta at F er på adresse 129Addr opcode / verdi0 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 // STOPP

Du kan se at syv linjer med C-kode ble 18 linjer med samlingsspråk, og det ble 32 byte i ROM.

dekoding

Instruksjonsdekoderen må gjøre hver av opkodene om til et sett med signaler som driver de forskjellige komponentene inne i mikroprosessoren. La oss ta ADD-instruksjonen som et eksempel og se på hva den trenger å gjøre:

  1. I løpet av den første klokkesyklusen må vi faktisk laste instruksjonen. Derfor må instruksjonsdekoderen: aktivere tri-state buffer for programtelleren aktivere RD-linjen aktivere data-in tri-state bufferen låse instruksjonen i instruksjonsregisteret
  2. I løpet av den andre klokkesyklusen dekodes ADD-instruksjonen. Det trenger å gjøre veldig lite: sett inn driften av ALU for å legge til sperre utgangen til ALU i C-registeret
  3. I løpet av den tredje klokkesyklusen økes programtelleren (i teorien kan dette overlappes til den andre klokkesyklusen).

Hver instruksjon kan deles ned som et sett med sekvenserte operasjoner som disse som manipulerer komponentene til mikroprosessoren i riktig rekkefølge. Noen instruksjoner, som denne ADD-instruksjonen, kan ta to eller tre klokkesykluser. Andre kan ta fem eller seks klokkesykluser.

Antall transistorer tilgjengelig har en enorm effekt på ytelsen til en prosessor. Som sett tidligere, tok en typisk instruksjon i en prosessor som en 8088 15 klokkesykluser for å utføre. På grunn av multiplikatorens utforming tok det omtrent 80 sykluser bare for å gjøre en 16-biters multiplikasjon på 8088. Med flere transistorer blir det mye kraftigere multiplikatorer som er i stand til enkeltsyklushastigheter..

Flere transistorer gir også mulighet for en teknologi som heter pipelining. I en pipelined arkitektur overlapper utførelse av instruksjoner. Så selv om det kan ta fem klokkesykluser for å utføre hver instruksjon, kan det være fem instruksjoner i forskjellige utførelsesstadier samtidig. På den måten ser det ut som en instruksjon fullfører hver klokkesyklus.

Mange moderne prosessorer har flere instruksjonsdekodere, hver med sin egen rørledning. Dette muliggjør flere instruksjonsstrømmer, noe som betyr at mer enn en instruksjon kan fullføre i løpet av hver klokkesyklus. Denne teknikken kan være ganske kompleks å implementere, så det tar mange transistorer.

trender

Trenden i prosessordesign har først og fremst gått mot full 32-bit ALU-er med raske flytende punktprosessorer innebygd og rørledningskjøring med flere instruksjonsstrømmer. Den nyeste tingen i prosessordesign er 64-bit ALU-er, og det forventes at folk har disse prosessorene på sine hjemme-PC-er det neste tiåret. Det har også vært en tendens til spesielle instruksjoner (som MMX-instruksjonene) som gjør visse operasjoner spesielt effektive, og tillegg av virtuell minnestøtte for maskinvare og L1-hurtigbufring på prosessorbrikken. Alle disse trendene øker transistortellingen, noe som fører til flere millioner transistorkraftverk som er tilgjengelige i dag. Disse prosessorene kan utføre omtrent en milliard instruksjoner per sekund!

Foto høflighet AMD

Sekstifire-bits prosessorer har vært med oss ​​siden 1992, og på det 21. århundre har de begynt å bli mainstream. Både Intel og AMD har introdusert 64-biters chips, og Mac G5 har en 64-biters prosessor. Sekstifire-bit-prosessorer har 64-bit ALU-er, 64-biters registre, 64-biters busser og så videre.

En grunn til at verden trenger 64-bits prosessorer er på grunn av deres forstørrede adresserom. Trettito-bits chips er ofte begrenset til maksimalt 2 GB eller 4 GB RAM-tilgang. Det høres ut som mye, gitt at de fleste hjemme-datamaskiner i dag bare bruker 256 MB til 512 MB RAM. Imidlertid kan en grense på 4 GB være et alvorlig problem for servermaskiner og maskiner som kjører store databaser. Og selv hjemmemaskiner vil begynne å støte opp mot grensen på 2 GB eller 4 GB ganske snart hvis dagens trender fortsetter. En 64-bits chip har ingen av disse begrensningene fordi en 64-bit RAM-adresse er i det vesentlige uendelig i overskuelig fremtid - 2 ^ 64 byte RAM er noe i størrelsesorden en milliard gigabyte RAM.

Med en 64-biters adressebuss og brede, hurtiggående databusser på hovedkortet, tilbyr 64-biters maskiner også raskere I / O (input / output) hastigheter til ting som harddisker og skjermkort. Disse funksjonene kan øke systemytelsen betydelig.

Servere kan definitivt dra nytte av 64 biter, men hva med normale brukere? Utover RAM-løsningen er det ikke klart at en 64-biters brikke tilbyr "normale brukere" noen reelle, konkrete fordeler for øyeblikket. De kan behandle data (veldig komplekse data har mange reelle tall) raskere. Folk som gjør videoredigering og folk som gjør fotografisk redigering på veldig store bilder, har godt av denne typen datamaskiner. High-end-spill vil også ha fordel, når de først er kodet på nytt for å dra nytte av 64-bits funksjoner. Men den gjennomsnittlige brukeren som leser e-post, surfer på nettet og redigerer Word-dokumenter, bruker ikke prosessoren på den måten.

For mer informasjon om mikroprosessorer og relaterte emner, sjekk ut lenkene på neste side.

relaterte artikler

  • CPU Quiz
  • Hvorfor er det grenser for CPU-hastighet?
  • Hvordan halvledere fungerer
  • Slik fungerer PC-er
  • Hvordan C-programmering fungerer
  • Slik fungerer Java
  • Hvordan operativsystemer fungerer
  • Slik fungerer dataminne
  • Hvordan kvantecomputere vil fungere
  • Hvordan DNA-datamaskiner vil fungere

Flere gode lenker

  • Webopedia: mikroprosessor
  • Klikk på CPU
  • Prosessoroppgraderinger
  • 6. generasjons CPU-sammenligning
  • 7. generasjons CPU-sammenligning
  • TSCP Benchmark Scores



Ingen har kommentert denne artikkelen ennå.

De mest interessante artiklene om hemmeligheter og oppdagelser. Mye nyttig informasjon om alt
Artikler om vitenskap, rom, teknologi, helse, miljø, kultur og historie. Forklare tusenvis av emner slik at du vet hvordan alt fungerer