Nu we weten hoe processors op een hoog niveau werken, is het tijd om erin te duiken om te begrijpen hoe interne componenten zijn ontworpen. Dit artikel is het tweede deel van onze serie processorontwerpen. Als je hoofdstuk één nog niet hebt gelezen, wil je eerst dit onderwerp bespreken, anders zouden sommige concepten hier niet kloppen.

Zoals u waarschijnlijk weet, zijn processors en vele andere digitale technologieën gemaakt van transistors. De eenvoudigste manier om aan een transistor te denken, is met een driepins bestuurbare schakelaar. Elektriciteit mag door de transistor stromen als de deur open is. Als de deur gesloten is, kan er geen stroom vloeien. Net als de lichtschakelaar aan je muur, maar dan veel kleiner, veel sneller en elektrisch bestuurbaar.

Er zijn twee hoofdtypen transistors die in moderne processors worden gebruikt: pMOS en nMOS. Een nMOS-transistor laat stroom vloeien wanneer de poort is opgeladen of hoog is ingesteld, en de pMOS-transistor laat stroom vloeien wanneer de poort wordt ontladen of laag is ingesteld. We kunnen CMOS-logische poorten maken door dit soort transistors op een complementaire manier te combineren. We zullen in dit artikel niet ingaan op gedurfde details over hoe transistors fysiek werken, maar we zullen het in deel 3 van de serie behandelen.

Een logische poort is een eenvoudig apparaat dat ingangen ontvangt, enkele bewerkingen uitvoert en een resultaat produceert. Een EN-poort schakelt bijvoorbeeld zijn uitgang in en alleen als alle ingangen van de ingang open zijn. Een inverter of NIET-poort schakelt zijn uitgang in als de ingang gesloten is. We kunnen deze twee ingangen combineren, maar als geen van de ingangen open is en het is gewoon een NAND die zijn uitgang opent of niet - en poort. Er zijn andere poorten met verschillende logische functies zoals OR, NOR, XOR en XNOR.

Hieronder kunnen we zien hoe twee basispoorten zijn ontworpen vanuit transistors: een inverter en een NAND-poort. De omvormer heeft een pMOS-transistor die aan de bovenkant is aangesloten op de voedingslijn en een nMOS-transistor die aan de onderkant is aangesloten op de aarde. PMOST-transistors worden getekend met een kleine cirkel die is verbonden met hun poorten. Aangezien we zeggen dat PMOS-apparaten werken met ingang uit en nMOS-apparaten met ingang aan, is het gemakkelijk in te zien dat het signaal bij Out altijd het tegenovergestelde zal zijn van het signaal bij In. Als we naar de NAND-poort kijken, zien we dat er vier transistors voor nodig zijn en dat de uitgang aan is zolang ten minste een van de ingangen gesloten is. Het verbinden van transistors om eenvoudige netwerken als deze te creëren, is hetzelfde proces dat wordt gebruikt om andere circuits te ontwerpen binnen meer geavanceerde logische poorten en processors.







Met bouwstenen die zo simpel zijn als logische poorten, kan het moeilijk zijn om te zien hoe ze kunnen worden omgevormd tot een werkende computer. Dit ontwerpproces omvat het combineren van verschillende deuren om een ​​klein apparaat te creëren dat een eenvoudige functie kan vervullen. U kunt vervolgens de meeste van deze apparaten aansluiten om iets te maken dat een iets geavanceerdere functie vervult. Het proces van het combineren van individuele componenten om een ​​werkend ontwerp te maken, is wat tegenwoordig wordt gebruikt om moderne chips te maken. Het enige verschil is dat het een moderne chip is miljarden transistörlerin.

Als een snel voorbeeld kijken we naar een eenvoudige 1-bit volledige opteller. Er zijn drie inputs nodig - A, B en Carry-In, en produceert twee outputs - Sum en Carry-Out. Het basisontwerp maakt gebruik van vijf logische poorten en kan aan elkaar worden gekoppeld om elke grootte-opteller te maken. Moderne ontwerpen verbeteren dit door enkele logische en transportsignalen te optimaliseren, maar de basis is nog steeds hetzelfde.




De totale uitvoer is aan als A of B aan is maar niet beide, of als er een overdrachtssignaal is en A en B beide aan of beide uit zijn. Realisatie is iets gecompliceerder. Actief als A en B beide tegelijkertijd open zijn of als er een transport is en A of B open is. Om meer dan één 1-bit-opteller aan te sluiten om een ​​grotere opteller te maken, koppelt u eenvoudig de uitvoering van de vorige bit aan de carry van de huidige bit. Hoe complexer de circuits, hoe complexer de logica, maar dit is de eenvoudigste manier om twee getallen op te tellen. Moderne processors gebruiken complexere verzamelaars, maar deze ontwerpen zijn te complex voor zo'n overzicht. Behalve optellers bevatten processors ook eenheden voor delen, vermenigvuldigen en drijvende-kommaversies van al deze bewerkingen.




Door een dergelijke reeks deuren te combineren om enkele functies bij de ingangen uit te voeren, Combinationele logica. Dit soort logica is niet het enige dat in computers wordt aangetroffen. Het zou niet erg handig zijn als we geen gegevens zouden kunnen opslaan of de status van iets zouden kunnen bijhouden. Om dit te doen, hebben we sequentiële logica nodig die gegevens kan opslaan.




Sequentiële logica wordt gecreëerd door omvormers en andere logische poorten zorgvuldig aan te sluiten om de uitgangen terug te sturen naar de ingang van de poorten. Deze feedbackloops worden gebruikt om een ​​stukje data en Statische RAM of SRAM. Het wordt statische RAM genoemd in tegenstelling tot de dynamiek in DRAM, omdat de opgeslagen gegevens altijd rechtstreeks zijn verbonden met positieve spanning of aarde.

Een standaardmanier om een ​​enkele SRAM-bit te implementeren is met de 6 transistors die hieronder worden weergegeven. Bovenste sein gemarkeerd met WL Woordlijnis het adres en indien ingeschakeld, de gegevens die zijn opgeslagen in deze 1-bit cel Bit LineGemarkeerd als BL. BLB-uitvoer staat bekend als: Bit Line Bar, het is gewoon de omgekeerde waarde van de bitlijn. Je zou de twee typen transistors moeten kunnen herkennen en M3 en M1 vormen samen met M4 en M2 een omvormer.




SRAM wordt gebruikt om supersnelle caches en registers binnen processors te creëren. Het is zeer stabiel, maar vereist zes tot acht transistors om elk gegevensbit op te slaan. Dit maakt de productie extreem duur in termen van kosten, complexiteit en chipruimte in vergelijking met DRAM. Dynamisch RAM slaat gegevens daarentegen op in een kleine condensator in plaats van logische poorten te gebruiken. Het wordt dynamisch genoemd omdat de spanning van de condensator dynamisch kan veranderen omdat deze niet afhankelijk is van vermogen of aarde. Er wordt slechts één transistor gebruikt om toegang te krijgen tot gegevens die in de condensator zijn opgeslagen.

Omdat DRAM slechts één transistor per bit nodig heeft en het ontwerp zeer schaalbaar is, kan het dicht en goedkoop worden verpakt. Een nadeel van DRAM is dat de lading op de condensator zo klein is dat deze constant moet worden ververst. Dat is de reden waarom wanneer u uw computer uitschakelt, alle condensatoren ontladen en gegevens uit uw RAM verloren gaan.

Bedrijven als Intel, AMD en Nvidia publiceren zeker geen diagrammen van hoe hun processors werken, dus het is onmogelijk om zulke complete diagrammen te tonen voor een moderne processor. Deze eenvoudige opteller zou echter een goed idee moeten geven van hoe zelfs de meest complexe delen van een processor kunnen worden opgesplitst in logische poorten, opslagelementen en vervolgens transistors.

Nu we weten hoe sommige componenten van een processor zijn gebouwd, moeten we erachter komen hoe we alles kunnen verbinden en synchroniseren. Alle belangrijke componenten in de processor een kloksignaal. Dit is tussen hoog en laag, Frequentie. De logica in de processor verandert vaak waarden en maakt berekeningen wanneer de klok van laag naar hoog is. Door alles samen te synchroniseren, kunnen we ervoor zorgen dat de data altijd op het juiste moment aankomt om eventuele storingen in de processor te voorkomen.

Je hebt misschien gehoord dat je de klok kunt verhogen naar een processor die bekend staat als overklokken om de prestaties te verbeteren. Deze prestatieverbetering is het resultaat van het schakelen van transistors en logica in een processor die sneller is dan deze was ontworpen. Omdat er meer cycli per seconde zijn, kan er meer werk worden verzet en zal de processor betere prestaties leveren. Dit is tot op zekere hoogte waar. Moderne processors werken doorgaans tussen 3,0 GHz en 4,5 GHz en lijken het afgelopen decennium ongewijzigd te zijn. Net zoals een metalen ketting zo sterk is als zijn zwakste schakel, kan een processor maar zo snel draaien als het langzaamste deel. Aan het einde van elke klokcyclus moet elke component in een processor zijn uitgevoerd. Als er nog geen onderdelen zijn gemaakt, is de klok erg snel en werkt de processor niet. Ontwerpers zijn hierin het langzaamst Kritiek pad en stelt de maximale frequentie in waarop een processor kan werken. Boven een bepaalde frequentie kunnen transistors niet snel genoeg schakelen en beginnen te falen of valse outputs te produceren.

Door de voedingsspanning naar een processor te verhogen, kunnen we het schakelen van de transistors versnellen, maar dit werkt maar tot een bepaald punt. Als we te veel spanning toepassen, bestaat het risico dat de processor wordt verbrand. Wanneer we de frequentie of het voltage van een processor verhogen, genereert deze altijd meer warmte en verbruikt hij meer stroom. Dit komt doordat het processorkracht recht evenredig is met de frequentie en evenredig met het kwadraat van de spanning. Om het stroomverbruik van een processor te bepalen, beschouwen we elke transistor meestal als een kleine condensator die moet worden opgeladen of ontladen wanneer deze van waarde verandert.

Stroomtoevoer is een essentieel onderdeel van een processor en in sommige gevallen is de helft van de fysieke pinnen op een chip mogelijk alleen voor stroom of aarde. Sommige chips kunnen bij volledige belasting meer dan 150 ampère trekken en al deze stroom moet met de grootste zorg worden beheerd. Om deze hoeveelheid stroom in perspectief te plaatsen, genereert de CPU meer warmte per oppervlakte-eenheid dan een kernreactor.

De klok in moderne processors is goed voor ongeveer 30-40% van zijn totale vermogen, omdat hij erg complex is en heel verschillende apparaten moet gebruiken. Om energie te besparen, schakelen de meeste ontwerpen met een laag stroomverbruik delen van de chip uit wanneer ze niet worden gebruikt. Dit kan worden gedaan door de klok die bekend staat als de klokdeur uit te schakelen of door de stroom uit te schakelen die bekend staat als de stroompoort.

Klokken vormen een andere uitdaging bij het ontwerpen van een processor, want naarmate hun frequentie blijft toenemen, beginnen de wetten van de fysica in de weg te zitten. Hoewel de lichtsnelheid extreem hoog is, is deze niet snel genoeg voor krachtige processors. Als je de klok op het ene uiteinde van de chip zou aansluiten als het signaal het andere uiteinde zou bereiken, zou het niet significant niet synchroon lopen. Om alle delen van de chip op tijd te houden, wordt de klok verdeeld met behulp van de zogenaamde H Tree. Dit is een structuur die ervoor zorgt dat alle eindpunten exact dezelfde afstand van het centrum hebben.

Het ontwerpen van elke transistor, kloksignaal en stroomaansluiting op een chip kan extreem vervelend en complex lijken, en dat zou zeker waar zijn. Hoewel bedrijven als Intel, Qualcomm en AMD duizenden ingenieurs hebben, zou het niet mogelijk zijn om elk aspect van een chip handmatig te ontwerpen. Om de chips op een dergelijke schaal te assembleren, gebruiken ze een verscheidenheid aan geavanceerde tools om er ontwerpen en schema's voor te maken. Deze tools krijgen meestal veel uitleg over wat de component moet doen en bepalen de meest geschikte hardwareconfiguratie om aan deze vereisten te voldoen. Kort geleden, Synthese op hoog niveau Hierdoor kunnen ontwikkelaars de functionaliteit specificeren die ze in de code willen, en vervolgens de computers laten uitzoeken hoe ze het beste uit de hardware kunnen halen.

Net zoals je computerprogramma's met code kunt beschrijven, kunnen ontwerpers hardware door middel van code beschrijven. Talen zoals Verilog en VHDL stellen hardwareontwerpers in staat om de functionaliteit van de circuits die ze maken uit te drukken. Simulatie en verificatie worden gedaan in deze ontwerpen en als alles slaagt, kunnen ze worden gesynthetiseerd in specifieke transistors die het circuit zullen vormen. Hoewel verificatie er misschien niet zo flitsend uitziet als het ontwerpen van een nieuwe cache of kernel, is het veel belangrijker. Voor elke ontwerpingenieur die een bedrijf gebruikt, kunnen er vijf of meer verificatie-ingenieurs zijn.

Het verifiëren van een nieuw ontwerp kost veel meer tijd en geld dan het maken van de eigenlijke chip zelf. Bedrijven besteden veel tijd en geld aan verificatie, want als een chip eenmaal in productie gaat, is er geen manier om deze te repareren. Je kunt maar één patch maken met de software, maar zo werkt de hardware niet. Bijvoorbeeld Intel fout in sectie met drijvende komma Sommige Pentium-chips kosten tegenwoordig $ 2 miljard.

Het kan moeilijk zijn om te bedenken hoe een chip meerdere miljarden transistors kan hebben en wat ze allemaal doen. Wanneer je de chip in zijn interne componenten breekt, wordt het een beetje gemakkelijker. Transistors maken logische poorten, logische poorten worden gecombineerd tot functionele eenheden die een specifieke taak uitvoeren, en deze functionele eenheden zijn met elkaar verbonden om de computerarchitectuur te vormen waarover we het in hoofdstuk 1 hebben gehad.

Het meeste ontwerpwerk is geautomatiseerd, maar dit zou u nieuwe waardering moeten geven voor hoe complex de nieuwe CPU die u koopt, is.

Dit tweede hoofdstuk in onze serie behandelde het ontwerpproces van de CPU. We hadden het over transistors, logische poorten, stroom- en kloklevering, ontwerpsynthese en validatie. In hoofdstuk 3 zullen we zien wat er nodig is om fysiek een chip te maken. Elk bedrijf pronkt graag over hoe geavanceerd hun productieprocessen zijn (Intel 10nm, Apple en AMD 7nm, etc.), maar wat betekenen deze cijfers eigenlijk? Blijf naar ons kijken.

Voorgestelde metingen:

Masthead-tegoed: Printplaat futuristische codeverwerking door Kirill Savenko