Nå som vi vet hvordan prosessorer fungerer på et høyt nivå, er det på tide å dykke inn for å forstå hvordan interne komponenter er designet. Denne artikkelen er den andre delen av prosessordesignserien vår. Hvis du ikke har lest kapittel enda, vil du først gå gjennom dette emnet, ellers vil ikke noen av konseptene her være fornuftige.

Som du sikkert vet, er prosessorer og mange andre digitale teknologier laget av transistorer. Den enkleste måten å tenke på en transistor er med en tre-pinners kontrollerbar bryter. Elektrisitet får strømme gjennom transistoren når døren er åpen. Når døren er lukket, kan ikke strøm strømme. Akkurat som lysbryteren på veggen din, men mye mindre, mye raskere og elektrisk kontrollerbar.

Det er to hovedtyper av transistorer som brukes i moderne prosessorer: pMOS og nMOS. En nMOS-transistor tillater strøm å strømme når porten er ladet eller satt høyt, og pMOS-transistoren lar strømmen strømme når porten er utladet eller satt lavt. Vi kan lage CMOS-logiske porter ved å kombinere disse typer transistorer på en komplementær måte. Vi vil ikke gå i dristige detaljer om hvordan transistorer fungerer fysisk i denne artikkelen, men vi vil dekke det i del 3 av serien.

En logisk gate er en enkel enhet som mottar innganger, utfører noen operasjoner og gir et resultat. For eksempel slår en AND-port utgangen på og bare hvis alle inngangene til inngangen er åpne. En omformer eller IKKE gate slår på utgangen hvis inngangen er lukket. Vi kan kombinere disse to inngangene, men hvis ingen av inngangene er åpne, og det bare er en NAND som åpner utgangen eller ikke -og porten. Det er andre porter med forskjellige logiske funksjoner som OR, NOR, XOR og XNOR.

Nedenfor kan vi se hvordan to grunnleggende porter ble designet fra transistorer: en inverter og en NAND-port. Omformeren har en pMOS-transistor koblet til kraftledningen øverst og en nMOS-transistor koblet til bakken i bunnen. PMOST-transistorer er tegnet med en liten sirkel som kobles til portene. Siden vi sier at PMOS-enheter fungerer med inngang av og nMOS-enheter med inngang på, er det lett å se at signalet på Out alltid vil være det motsatte av signalet ved In. Ser vi på NAND-porten, ser vi at det krever fire transistorer, og utgangen vil være på så lenge minst en av inngangene er lukket. Å koble transistorer for å lage enkle nettverk som dette er den samme prosessen som brukes til å designe andre kretser innenfor mer avanserte logiske porter og prosessorer.







Med så enkle byggesteiner som logiske porter kan det være vanskelig å se hvordan de kan forvandles til en fungerende datamaskin. Denne designprosessen innebærer å kombinere flere dører for å lage en liten enhet som kan utføre en enkel funksjon. Du kan da koble til de fleste av disse enhetene for å lage noe som utfører en litt mer avansert funksjon. Prosessen med å kombinere individuelle komponenter for å skape et fungerende design er det som brukes til å lage moderne sjetonger i dag. Den eneste forskjellen er at en moderne brikke milliarder av transistörlerin.

Som et raskt eksempel ser vi på en grunnleggende 1-biters fulladder. Det tar tre innganger - A, B og Carry-In, og produserer to utganger - Sum og Carry-Out. Den grunnleggende utformingen bruker fem logiske porter og kan kobles sammen for å lage en hvilken som helst størrelse adder. Moderne design forbedrer dette ved å optimalisere noen logikk og transportsignaler, men det grunnleggende er fortsatt det samme.




Den totale utgangen er på hvis A eller B er på, men ikke begge, eller hvis det er et bæresignal og A og B er begge på eller begge er av. Realisering er litt mer komplisert. Aktiv når A og B begge er åpne samtidig eller når det er transport og enten A eller B er åpen. For å koble til mer enn en 1-biters adder for å opprette en større adder, kobler du bare kjøringen av den forrige biten til den aktuelle biten. Jo mer komplekse kretsene er, desto mer kompliserte logikken, men dette er den enkleste måten å legge til to tall. Moderne prosessorer bruker mer komplekse samlere, men disse designene er for kompliserte til en slik oversikt. I tillegg til tilleggsmoduler, inneholder prosessorer også enheter for divisjon, multiplikasjon og flytende versjoner av alle disse operasjonene.




Å kombinere en slik serie dører for å utføre noen funksjoner ved inngangene, Kombinasjonslogikk. Denne typen logikk er ikke det eneste som finnes på datamaskiner. Det ville ikke være veldig nyttig hvis vi ikke kunne lagre data eller holde rede på statusen til noe. For å gjøre dette trenger vi sekvensiell logikk som er i stand til å lagre data.




Sekvensiell logikk opprettes ved å koble omformere og andre logiske porter nøye for å mate utgangene tilbake til inngangen til portene. Disse tilbakemeldingsløkkene brukes til å lagre litt data og Statisk RAM eller SRAM. Det kalles statisk RAM i motsetning til dynamikken i DRAM, da de lagrede dataene alltid er direkte koblet til positiv spenning eller jord.

En standard måte å implementere en enkelt SRAM-bit på er med de 6 transistorene vist nedenfor. Øvre signal merket med WL Word Lineer adressen, og når den er aktivert, lagres dataene i denne 1-biters cellen Bit LineMerket som BL. BLB-utgang er kjent som: Bit Line Bar, det er ganske enkelt den omvendte verdien av Bit Line. Du skal kunne gjenkjenne de to typene transistorer og M3 og M1 sammen med M4 og M2 danner en inverter.




SRAM brukes til å lage superraske cacher og registre innen prosessorer. Det er veldig stabilt, men krever seks til åtte transistorer for å lagre hver bit data. Dette gjør produksjonen ekstremt dyr når det gjelder kostnader, kompleksitet og chipplass sammenlignet med DRAM. Dynamisk RAM, derimot, lagrer data i en liten kondensator i stedet for å bruke logiske porter. Det kalles dynamisk fordi kondensatorens spenning kan endres dynamisk, da den ikke er avhengig av kraft eller jord. Det er bare en transistor som brukes for å få tilgang til data som er lagret i kondensatoren.

Siden DRAM bare krever en enkelt transistor per bit og designet er veldig skalerbart, kan den pakkes tett og billig. En ulempe med DRAM er at ladningen på kondensatoren er så liten at den må oppdateres kontinuerlig. Det er grunnen til at når du slår av datamaskinen, tømmes kondensatoren og data fra RAM-en går tapt.

Bedrifter som Intel, AMD og Nvidia publiserer absolutt ikke diagrammer over hvordan prosessorene deres fungerer, så det er umulig å vise slike komplette diagrammer for en moderne prosessor. Denne enkle adderen skal imidlertid gi en god ide om hvordan selv de mest komplekse delene av en prosessor kan brytes ned i logiske porter, lagringselementer og deretter transistorer.

Nå som vi vet hvordan noen komponenter i en prosessor er bygget, må vi finne ut hvordan vi kan koble til og synkronisere alt. Alle viktige komponenter i prosessoren et klokkesignal. Dette er mellom høyt og lavt, Frekvens. Logikken i prosessoren endrer ofte verdier og gjør beregninger når klokken er lav til høy. Ved å synkronisere alt sammen, kan vi sikre at dataene alltid kommer til rett tid for å unngå funksjonsfeil i prosessoren.

Du har kanskje hørt at du kan øke klokken til en prosessor kjent som overklokking for å forbedre ytelsen. Denne ytelsesgevinsten skyldes å bytte transistorer og logikk i en prosessor raskere enn den ble designet. Siden det er flere sykluser per sekund, kan mer arbeid gjøres og prosessoren vil ha høyere ytelse. Dette gjelder opp til et punkt. Moderne prosessorer kjører vanligvis mellom 3,0 GHz og 4,5 GHz og ser uendret ut det siste tiåret. Akkurat som en metallkjede er like sterk som den svakeste lenken, kan en prosessor bare kjøre så fort som den tregeste delen. På slutten av hver klokkesyklus burde hver komponent i en prosessor ha kjørt ferdig. Hvis ingen deler er laget ennå, er klokken veldig rask og prosessoren vil ikke fungere. Designere er den tregeste delen av dette Kritisk bane og angir den maksimale frekvensen som en prosessor kan operere på. Over en viss frekvens kan ikke transistorer bytte raskt nok og begynne å svikte eller produsere falske utganger.

Ved å øke forsyningsspenningen til en prosessor, kan vi øke hastigheten på å bytte transistorer, men dette fungerer bare opp til et visst punkt. Hvis vi bruker for mye spenning, er det en risiko for at prosessoren brennes. Når vi øker frekvensen eller spenningen til en prosessor, genererer den alltid mer varme og bruker mer strøm. Dette er fordi prosessoreffekten er direkte proporsjonal med frekvensen og proporsjonal med spenningens kvadrat. For å bestemme strømforbruket til en prosessor, tenker vi vanligvis på hver transistor som en liten kondensator som må lades eller lades ut når den endrer verdi.

Strømforsyning er en viktig del av en prosessor, og i noen tilfeller kan halvparten av de fysiske pinnene på en brikke kun være til strøm eller jord. Noen brikker kan trekke mer enn 150 ampere ved full belastning, og all denne strømmen må håndteres med største forsiktighet. For å sette denne mengden kraft i perspektiv, genererer CPU mer varme per arealeenhet enn en atomreaktor.

Klokken i moderne prosessorer utgjør omtrent 30-40% av den totale effekten fordi den er veldig kompleks og må bruke veldig forskjellige enheter. For å spare energi vil de fleste laveffektsdesign slå av deler av brikken når den ikke er i bruk. Dette kan gjøres ved å slå av klokken kjent som Clock Door eller ved å slå av strømmen kjent som Power Gate.

Klokker utgjør en annen utfordring for å designe en prosessor fordi når frekvensen fortsetter å øke, begynner fysikkens lover å komme i veien. Selv om lysets hastighet er ekstremt rask, er den ikke rask nok for høytytende prosessorer. Hvis du skulle koble klokken til den ene enden av brikken, når signalet nådde den andre enden, ville det ikke være vesentlig ute av synkronisering. For å holde alle deler av brikken i tide distribueres klokken ved hjelp av det som kalles H-treet. Dette er en struktur som sørger for at alle endepunkter er nøyaktig like avstand fra sentrum.

Å designe hver eneste transistor, klokkesignal og strømforbindelse på en brikke kan virke ekstremt kjedelig og kompleks, og det vil absolutt være sant. Selv om selskaper som Intel, Qualcomm og AMD har tusenvis av ingeniører, ville det ikke være mulig å manuelt designe alle aspekter av en chip. For å montere sjetongene i en slik skala bruker de en rekke avanserte verktøy for å lage design og ordninger for dem. Disse verktøyene får vanligvis et høyt nivå av forklaring på hva komponenten skal gjøre, og bestemmer den mest passende maskinvarekonfigurasjonen for å oppfylle disse kravene. Nylig, Syntese på høyt nivå Dette gjør at utviklere kan spesifisere funksjonaliteten de ønsker i koden, og deretter la datamaskinene finne ut hvordan de får mest mulig ut av maskinvaren.

Akkurat som du kan beskrive dataprogrammer med kode, kan designere beskrive maskinvare gjennom kode. Språk som Verilog og VHDL tillater maskinvaredesignere å uttrykke funksjonaliteten til kretsene de lager. Simulering og verifisering gjøres i disse designene, og hvis alt går, kan de syntetiseres til spesifikke transistorer som vil danne kretsen. Mens bekreftelse kanskje ikke ser like prangende ut som å designe en ny cache eller kjerne, er det mye viktigere. For hver designingeniør et firma bruker, kan det være fem eller flere verifikasjonsingeniører.

Verifisering av et nytt design tar mye mer tid og penger enn å lage selve brikken. Bedrifter bruker mye tid og penger på bekreftelse, for når en chip går i produksjon er det ingen måte å fikse den. Du kan bare lage en oppdatering med programvare, men maskinvaren fungerer ikke på den måten. For eksempel Intel feil i flytende punkt Noen Pentium-sjetonger koster i dag 2 milliarder dollar.

Det kan være vanskelig å omtale hvordan en brikke kan ha flere milliarder transistorer og hva de alle gjør. Når du bryter brikken i de interne komponentene, blir det litt lettere. Transistorer lager logiske porter, logiske porter kombineres til funksjonelle enheter som utfører en bestemt oppgave, og disse funksjonelle enhetene er koblet sammen for å danne dataarkitekturen vi snakket om i kapittel 1.

Det meste av designarbeidet er automatisert, men dette skal gi deg ny forståelse for hvor kompleks den nye CPUen du kjøper er.

Dette andre kapittelet i vår serie dekket prosessprosessen for CPU. Vi snakket om transistorer, logiske porter, strøm og klokke levering, designsyntese og validering. I kapittel 3 vil vi se hva som kreves for å fysisk lage en chip. Alle selskaper liker å skryte av hvor avanserte produksjonsprosessene deres er (Intel 10nm, Apple og AMD 7nm, etc.), men hva betyr disse tallene egentlig? Fortsett å se på oss.

Foreslåtte målinger:

Masthead-kreditt: Kretskort futuristisk kodebehandling av Kirill Savenko