centrale verwerkingseenheid

zie ook: computerarchitectuur en digitaal Circuit.

Enteros Rangedit

de manier waarop een CPU getallen vertegenwoordigt is een ontwerpoptie die de meest elementaire manieren beïnvloedt waarop het apparaat werkt. Sommige van de vroege digitale rekenmachines gebruikt, om getallen intern te vertegenwoordigen, een elektrisch model van het gemeenschappelijke decimale aantalsysteem (basis tien). Sommige andere computers hebben meer exotische nummering systemen gebruikt, zoals de ternary (basis drie). Bijna alle moderna CPU ‘ s vertegenwoordigen getallen in binaire vorm, waarbij elk cijfer wordt vertegenwoordigd door een bepaalde fysieke hoeveelheid van twee waarden, zoals een “hoge” of “lage”spanning.

MOS 6502 microprocessor in een dual in-line pakket, een zeer populair 8-bit ontwerp.

numerieke weergave is gerelateerd aan de grootte en nauwkeurigheid van de getallen die een CPU kan vertegenwoordigen. In het geval van een binaire CPU verwijst een bit naar een significante positie in de nummers waarmee een CPU werkt. Het aantal bits (of nummerposities, of cijfers) dat een CPU gebruikt om getallen weer te geven, wordt vaak “woordgrootte”, “bit width”, “data path width” of “integer accuracy” genoemd wanneer het strikt om gehele getallen gaat (in tegenstelling tot floating-point getallen). Dit aantal verschilt tussen architecturen, en vaak binnen verschillende eenheden van dezelfde CPU. Bijvoorbeeld, behandelt een 8-bits CPU een reeks getallen die door acht binaire cijfers kunnen worden vertegenwoordigd, elk cijfer met twee mogelijke waarden, en in combinatie de 8 bits met 28 of 256 discrete getallen. In feite stelt de grootte van het gehele getal een hardwarelimiet in op het bereik van gehele getallen dat de software draait en die de CPU direct kan gebruiken.

het gehele bereik kan ook het aantal geheugenposities beïnvloeden dat de CPU kan adresseren (lokaliseren). Bijvoorbeeld, als een binaire CPU 32 beetjes gebruikt om een geheugenadres voor te stellen, en elk geheugenadres één byte (8 beetjes) vertegenwoordigt, is de maximale hoeveelheid geheugen die de CPU kan adresseren 232 bytes, of 4 GB. Dit is een zeer eenvoudige weergave van de CPU ‘ s adresruimte, en veel moderna ontwerpen maken gebruik van veel complexere adresmethoden zoals paging om meer geheugen te lokaliseren dan het hele bereik zou toestaan met een platte adresruimte.

hogere niveaus van het gehele getalbereik vereisen meer structuren om de extra cijfers te verwerken, en dus meer complexiteit, grootte, energieverbruik en in het algemeen kosten. Daarom is het niet ongewoon om 4-en 8-bit microcontrollers te zien die gebruikt worden in moderna-toepassingen, hoewel CPU ‘ s met een veel hoger bereik (16, 32, 64 en zelfs 128-bit) beschikbaar zijn. Eenvoudigere microcontrollers zijn over het algemeen goedkoper, verbruiken minder energie en verdrijven dus minder warmte. Al deze kunnen belangrijke ontwerp overwegingen voor elektronische apparaten. In high-end toepassingen zijn de voordelen van het extra bereik (vaker de extra adresruimte) echter belangrijker en beïnvloeden ze vaak ontwerpopties. Om een aantal van de voordelen van zowel lagere als hogere bitlengtes te krijgen, zijn veel CPU ‘ s ontworpen met verschillende bitbreedtes voor verschillende apparaataandrijvingen. Bijvoorbeeld, het IBM systeem / 370 gebruikt een CPU die meestal 32-bits was, maar 128-bits precisie binnen zijn floating-point eenheden om een grotere nauwkeurigheid en bereik van floating-point getallen te vergemakkelijken. Veel latere CPU-ontwerpen maken gebruik van een soortgelijke bit width mix, vooral wanneer de processor is ontworpen voor algemeen gebruik waar een redelijke balans tussen integer en floating-point mogelijkheden is vereist.

Klokfrequentiedit

hoofdartikel: Klokfrequentie

de meeste CPU ‘ s, en inderdaad de meeste sequentiële logische apparaten, zijn synchroon van aard. Dat wil zeggen, ze zijn ontworpen en werken op basis van een synchronisatie signaal. Dit signaal, bekend als een kloksignaal, neemt meestal de vorm aan van een periodieke vierkante golf. Door het berekenen van de maximale tijd waarop elektrische signalen kunnen bewegen op de verschillende vorken van de vele circuits van een CPU, kunnen ontwerpers een geschikte periode voor het kloksignaal selecteren.

deze periode moet langer zijn dan de tijd die nodig is om een signaal te verplaatsen of zich in het ergste geval voort te planten. Door de klokperiode in te stellen op een veel hogere waarde dan de ergste propagatievertraging, is het mogelijk om de gehele CPU te ontwerpen en de manier waarop de gegevens rond de “randen” van de opkomst en ondergang van het kloksignaal worden verplaatst. Dit heeft het voordeel dat de CPU aanzienlijk vereenvoudigd wordt, zowel in designperspectief als in component kwantiteitsperspectief. Echter, dit heeft ook het nadeel dat de hele CPU moet wachten op de langzamere elementen, hoewel sommige eenheden van het zijn veel sneller. Deze beperking is grotendeels gecompenseerd door verschillende methoden van toenemende CPU parallellisme (zie hieronder).

architectonische verbeteringen alleen lossen echter niet alle nadelen van globaal synchrone CPU ‘ s op. Een kloksignaal is bijvoorbeeld onderhevig aan de vertragingen van een ander elektrisch signaal. Hogere kloksnelheden op steeds complexere CPU ‘ s maken het moeilijker om het kloksignaal in fase te houden (gesynchroniseerd) over de gehele eenheid. Dit heeft geleid tot veel moderna CPU ‘ s die meerdere identieke kloksignalen moeten worden verstrekt, om te voorkomen dat het vertragen van een enkel signaal genoeg is om de CPU defect te veroorzaken. Een ander groot probleem wanneer de kloksnelheid dramatisch toeneemt, is de hoeveelheid warmte die wordt afgevoerd door de CPU. Het kloksignaal verandert voortdurend, waardoor veel componenten om te schakelen (verandering van status) ongeacht of ze worden gebruikt op het moment. In het algemeen gebruikt een component die van toestand verandert meer energie dan een element in een statische toestand. Daarom neemt de kloksnelheid toe, dus ook de warmteafvoer, waardoor de CPU effectievere koeloplossingen nodig heeft.

een methode om onnodige componenten om te schakelen heet klokgating, waarbij het kloksignaal wordt uitgeschakeld op onnodige componenten, waardoor deze effectief worden uitgeschakeld. Dit wordt echter vaak als moeilijk te implementeren beschouwd en ziet daarom geen gemeenschappelijk gebruik buiten ontwerpen met een zeer laag vermogen. Een opmerkelijk laat CPU-ontwerp dat gebruik maakt van een brede klok poort om de energie-eisen van de video game console te verminderen is die van de Xbox 360 gebaseerd op IBM ‘ s PowerPC. Een andere methode om te gaan met een aantal van de problemen van een globaal kloksignaal is de volledige verwijdering ervan. Terwijl het verwijderen van het totale signaal van de klok op vele manieren maakt het ontwerpproces aanzienlijk complexer, in vergelijking met soortgelijke synchrone ontwerpen, asynchrone (of niet-klok) ontwerpen hebben duidelijke voordelen in energieverbruik en warmteafvoer. Hoewel zeldzaam, zijn volledige CPU ‘ s gebouwd zonder gebruik te maken van een wereldwijd kloksignaal. Twee opmerkelijke voorbeelden hiervan zijn het AMULET, dat de ARM architectuur implementeert, en de MiniMIPS, die de MIPS R3000 ondersteunt. In plaats van het kloksignaal volledig te verwijderen, staan sommige CPU-ontwerpen bepaalde apparaateenheden toe om asynchroon te zijn, zoals het gebruik van ALU in combinatie met superscalar pipelining om wat winst in rekenkundige prestaties te bereiken. Hoewel het niet helemaal duidelijk is of volledig asynchrone ontwerpen kunnen presteren op een vergelijkbaar of beter niveau dan hun synchrone tegenhangers, is het duidelijk dat ze op zijn minst uitblinken in de eenvoudigste wiskundige bewerkingen. Dit, in combinatie met hun uitstekende stroomverbruik en warmteafvoer eigenschappen, maakt ze zeer geschikt voor embedded systemen.

Parallelismedit

hoofdartikel: parallelle berekening
Model van een subscalar CPU. Merk op dat het vijftien cycli duurt om drie instructies te voltooien.

de beschrijving van de basiswerking van een CPU in de vorige paragraaf beschrijft de eenvoudigste vorm die een CPU kan aannemen. Dit type CPU, meestal aangeduid als een subschaal, werkt op en voert een enkele instructie met een of twee stukken gegevens tegelijk.

dit proces leidt tot inherente inefficiëntie in subschaal CPU ‘ s. Aangezien slechts één instructie tegelijk wordt uitgevoerd, moet de gehele CPU wachten tot die instructie is voltooid alvorens door te gaan naar de volgende instructie. Als gevolg daarvan is de SUBSCALAR CPU “verlamd” in instructies die meer dan één klokcyclus duren om de uitvoering te voltooien. Zelfs de toevoeging van een tweede uitvoeringseenheid (zie hieronder) verbetert de prestaties niet sterk. In plaats van één weg te bevriezen, zijn nu twee wegen verlamd en neemt het aantal ongebruikte transistors toe. Dit ontwerp, waarbij CPU-uitvoeringsbronnen met slechts één instructie tegelijk kunnen werken, kan slechts mogelijk scalaire prestaties bereiken (één instructie per klokcyclus). De prestaties zijn echter bijna altijd subschaal (minder dan één instructie per cyclus).

pogingen om scalaire en betere prestaties te bereiken hebben geresulteerd in een verscheidenheid aan ontwerpmethoden waardoor de CPU zich minder lineair en meer parallel gedraagt. Als het gaat om parallellisme in CPU ‘ s, twee termen worden over het algemeen gebruikt om deze ontwerptechnieken te classificeren.

  • Instructieniveau parallellisme (ILP) beoogt de snelheid waarmee instructies worden uitgevoerd binnen een CPU te verhogen, d.w.z. het gebruik van uitvoerbronnen op de tablet te verhogen.
  • thread Level parallellism (TLP), dat tot doel heeft het aantal threads (effectief individuele programma ‘ s) te verhogen dat een CPU gelijktijdig kan draaien.

elke methodologie verschilt zowel in de manier waarop ze worden toegepast, als in de relatieve effectiviteit die ze opleveren voor het verhogen van de CPU-prestaties voor een toepassing.

ILP: Segmentation and Superscalar architecturedit

Main articles: Segmentation (electronics) and Superscalar.
basis vijf-traps pijpleiding. In het beste geval kan deze pijp een voltooiingssnelheid van één instructie per cyclus aanhouden.

een van de eenvoudigste methoden om parallellisme te verhogen is om de eerste stappen van het lezen en decoderen van de instructie te beginnen voordat de vorige instructie is voltooid. Dit is de eenvoudigste vorm van een techniek die bekend staat als instructie pipelining, en wordt gebruikt in bijna alle moderna algemene doel CPU ‘ s. Door het uitvoeringspad in afzonderlijke fasen te verdelen, maakt de pijplijn het mogelijk om meer dan één instructie tegelijkertijd uit te voeren. Deze scheiding kan worden vergeleken met een assemblagelijn, waarin een instructie in elke fase completer wordt gemaakt totdat deze uit de uitvoeringspijp komt en er uit wordt verwijderd.

echter, de pijplijn introduceert de mogelijkheid van een situatie waarin het noodzakelijk is om het resultaat van de vorige operatie te beëindigen om de volgende operatie te voltooien; een aandoening die vaak een data dependency conflict wordt genoemd. Om hiermee om te gaan, moet extra zorg worden genomen om dit soort omstandigheden te controleren, en als dit gebeurt, moet een deel van de instructie pijplijn worden uitgesteld. Natuurlijk vereist dit extra circuits, pijpleidingprocessoren zijn complexer dan subschalen, maar niet veel. Een door buizen geleide processor kan bijna volledig scalair worden, alleen geremd door abrupte pijpstops (een instructie die meer dan één klokcyclus in een stadium duurt).

eenvoudige superscalar segmentatie. Door twee instructies in één keer te lezen en te verzenden, kunnen maximaal twee instructies per cyclus worden ingevuld.

een verdere verbetering ten opzichte van het idee van instructie pipelining leidde tot de ontwikkeling van een methode die de inactieve tijd van CPU-componenten verder vermindert. Ontwerpen naar verluidt superscalars omvatten een lange instructie pijplijn en meerdere identieke uitvoering eenheden. In een superscalar pijp worden meerdere instructies gelezen en doorgegeven aan een dispatcher, die beslist of de instructies al dan niet parallel (gelijktijdig) kunnen worden uitgevoerd. Als dat zo is, worden ze verzonden naar de beschikbare uitvoeringseenheden, wat resulteert in de mogelijkheid om meerdere instructies gelijktijdig uit te voeren. In het algemeen, hoe meer instructies een superscalar CPU in staat is om gelijktijdig te verzenden naar standby uitvoering eenheden, hoe meer instructies zullen worden voltooid in een bepaalde cyclus.

het grootste deel van de moeilijkheid bij het ontwerpen van een SUPERSCALAR CPU-architectuur ligt in het creëren van een effectieve dispatcher. De dispatcher moet snel en correct kunnen bepalen of de instructies parallel kunnen worden uitgevoerd en op een manier kunnen verzenden die zoveel mogelijk uitvoeringseenheden bezet houdt. Dit vereist dat de instructie pijplijn zo vaak mogelijk worden gevuld en verhoogt de behoefte, in superscalar architecturen, voor aanzienlijke hoeveelheden CPU cache. Dit creëert ook technieken om gevaren te voorkomen, zoals vork voorspelling, speculatieve uitvoering, en out-of-order uitvoering, cruciaal voor het handhaven van een hoog niveau van prestaties. Door te proberen te voorspellen welke tak (of pad) een voorwaardelijke instructie zal nemen, kan de CPU het aantal keren dat het hele kanaal moet wachten tot een voorwaardelijke instructie is voltooid, minimaliseren. Vaak, speculatieve uitvoering biedt bescheiden prestaties verhoogt door het uitvoeren van delen van de code die niet nodig zijn na een voorwaardelijke operatie is voltooid. Buiten de uitvoeringsvolgorde verandert het op de een of andere manier de volgorde waarin de instructies worden uitgevoerd om vertragingen als gevolg van gegevensafhankelijkheden te verminderen. Ook in het geval van individuele instructies meerdere gegevens-de moderne processors, in het geval u een grote hoeveelheid gegevens van hetzelfde type hebt verwerkt, kunt u delen van de pijplijn uit te schakelen, zodat wanneer u een enkele zin vele malen, de CPU slaat de capture en decoderen fasen en dus sterk verhoogt de prestaties bij bepaalde gelegenheden, vooral in de motoren van programma ‘ s zeer eentonig als de software voor het maken van video-en foto-verwerking.

in het geval dat een deel van de CPU superscalar is en een deel niet, lijdt het deel dat geen superscalar is aan prestaties als gevolg van tijdstops. De oorspronkelijke Intel Pentium (P5) had twee superscalar Alu ‘ s die elk één instructie per klokcyclus konden accepteren, maar de FPU kon niet één instructie per klokcyclus accepteren. De P5 was dus superscalar in het deel van gehele getallen, maar niet superscalar van drijvende kommagetallen. De opvolger van Intel ‘ s Pentium architectuur, de P6, voegde superscalar mogelijkheden toe aan zijn floating-point functies, en produceerde dus een aanzienlijke toename van de prestaties van dergelijke instructies.

zowel het superscalaire ontwerp als de enkelvoudige behuizing verhogen de ILP van een CPU doordat één enkele processor de uitvoering van de instructie kan voltooien met verhoudingen van meer dan één instructie per cyclus (IPC). De meeste moderna CPU ontwerpen zijn op zijn minst enigszins superscalar, en in het laatste decennium, bijna alle algemene CPU ontwerpen zijn superscalar. In de afgelopen jaren is een deel van de nadruk op hoge ILP-computerontwerp verplaatst van CPU-hardware naar de software-interface, of ISA. De zeer lange instructie woord strategie, of VLIW, zorgt ervoor dat sommige ILP direct wordt geïmpliceerd door de software, waardoor de hoeveelheid werk die de CPU moet uitvoeren om een significante boost te geven aan de ILP en dus de complexiteit van het ontwerp vermindert.

Parallelismedit

een andere strategie om prestaties te bereiken is om meerdere programma ‘ s of threads parallel te draaien. Dit onderzoeksgebied staat bekend als parallel computing. In Flynn ‘ s taxonomie staat deze strategie bekend als multiple multi-data instructions of MIMD.

Eén technologie die hiervoor werd gebruikt was multiprocessing (MP). De kick-off van deze technologie staat bekend als symmetric multiprocessing (SMP), waar een klein aantal CPU ‘ s een coherent beeld van hun geheugensysteem delen. In dit schema, elke CPU heeft extra hardware om een voortdurend bijgewerkte weergave van het geheugen te behouden. Om te voorkomen dat oud geheugen bezoeken, CPU ’s kunnen samenwerken in hetzelfde programma en programma’ s kunnen migreren van de ene CPU naar de andere. Om het aantal samenwerkende CPU ’s te verhogen tot meer dan een paar, werden in 1990 regelingen zoals niet-uniforme geheugentoegang (NUMA) en op directory’ s gebaseerde coherentieprotocollen ingevoerd. SMP systemen zijn beperkt tot een klein aantal CPU ‘ s, terwijl NUMA systemen zijn gebouwd met duizenden processors. In eerste instantie werd multiprocessing gebouwd met behulp van meerdere discrete CPU ‘ s en boards om interconnectie tussen processors te implementeren. Wanneer de processors en hun interconnectie zijn geïmplementeerd op een enkele siliciumchip, staat de technologie bekend als een multicore processor.

later werd erkend dat er een zeer nauw parallellisme was met één enkel programma. Een enkel programma kan meerdere threads (of functies) hebben die afzonderlijk of parallel kunnen worden uitgevoerd. Enkele vroege voorbeelden van deze technologie geïmplementeerd input / output verwerking zoals directe toegang tot het geheugen als een aparte thread van de berekende thread. In de jaren zeventig werd een meer algemene benadering van deze technologie geïntroduceerd, toen systemen werden ontworpen om meerdere computing threads parallel te draaien. Deze technologie staat bekend als multithreading (MT).

deze aanpak wordt als kosteneffectiever beschouwd dan multiprocessing, aangezien slechts een klein aantal componenten binnen een CPU worden gerepliceerd om MT te ondersteunen, in tegenstelling tot de gehele CPU in het geval van MP. In MT worden uitvoereenheden en geheugensystemen, inclusief caches, gedeeld tussen meerdere threads. Het nadeel van MT is dat hardwareondersteuning voor multithreading zichtbaarder is voor software dan die van MP en daarom moeten supervisorsoftware en besturingssystemen de grotere veranderingen ondergaan om MT te ondersteunen. Een type MT dat werd geà mplementeerd staat bekend als een multithreaded block, waar een thread wordt uitgevoerd totdat het is verlamd wachten op de gegevens om terug te keren van het externe geheugen. In dit schema zou de CPU dan snel moeten overschakelen naar een andere thread die klaar is om te draaien, de schakelaar voert vele malen een CPU-klokcyclus uit, zoals UltraSPARC-technologie. Een ander type MT wordt genoemd gelijktijdige multithreading, waar multithreading instructies parallel binnen een CPU klokcyclus worden uitgevoerd.

data Parallelismedit

Main article: Vector processor and SIMD.

een minder gebruikelijk maar steeds belangrijker CPU-paradigma (en inderdaad, computing in het algemeen) gaat over vectoren. De hierboven besproken processors worden allemaal aangeduid als een bepaald type scalair apparaat. Zoals de naam al aangeeft, behandelen vectorprocessoren meerdere stukken gegevens in de context van één instructie, in tegenstelling tot scalaire processoren, die voor elke instructie één stuk gegevens behandelen. Deze twee systemen voor gegevensverwerking worden in het algemeen respectievelijk SISD (single instruction, single data) en SIMD (single instruction, multiple data) genoemd. Het grote nut in het creëren van CPU ‘ s die omgaan met gegevensvectoren ligt in het optimaliseren van taken die de neiging om dezelfde operatie vereisen, bijvoorbeeld, een som, of een scalair product, uit te voeren op een grote set van gegevens. Enkele klassieke voorbeelden van dit soort taken zijn multimediatoepassingen (afbeeldingen, video en geluid), evenals vele soorten wetenschappelijke en technische taken. Terwijl een scalaire CPU het hele proces van het lezen, decoderen en uitvoeren van elke instructie en waarde op een dataset moet voltooien, kan een vector CPU een eenvoudige bewerking uitvoeren op een relatief grote dataset met één enkele instructie. Natuurlijk is dit alleen mogelijk wanneer de toepassing de neiging heeft om veel stappen die een bewerking van toepassing op een grote set van gegevens vereisen.

de meeste vroege Vector-CPU ‘ s, zoals de Cray-1, werden bijna uitsluitend geassocieerd met wetenschappelijk onderzoek en cryptografische toepassingen. Aangezien multimedia echter grotendeels naar digitale media is verschoven, is de behoefte aan een of andere vorm van SIMD in CPU ‘ s voor algemeen gebruik aanzienlijk geworden. Al snel nadat het gebruikelijk werd om floating-point eenheden op te nemen in processors voor algemeen gebruik, begonnen ook specificaties en implementaties van SIMD-uitvoereenheden voor CPU ‘ s voor algemeen gebruik te verschijnen. Sommige van deze vroege SIMD specificaties, zoals Intel ‘ s MMX, waren alleen voor gehele getallen. Dit bleek een belangrijke belemmering te zijn voor sommige softwareontwikkelaars, omdat veel van de toepassingen die profiteerden van de SIMD meestal betrekking hadden op floating-point getallen. Geleidelijk werden deze vroege ontwerpen verfijnd en opnieuw gemaakt tot enkele van de gemeenschappelijke, moderna SIMD specificaties, die over het algemeen geassocieerd worden met een ISA. Opmerkelijke moderna voorbeelden zijn Intel ‘ s SSE en PowerPC-gerelateerde AltiVec (ook bekend als VMX).

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.