Wikisage, de vrije encyclopedie van de tweede generatie, is digitaal erfgoed

Wikisage is op 1 na de grootste internet-encyclopedie in het Nederlands. Iedereen kan de hier verzamelde kennis gratis gebruiken, zonder storende advertenties. De Koninklijke Bibliotheek van Nederland heeft Wikisage in 2018 aangemerkt als digitaal erfgoed.

  • Wilt u meehelpen om Wikisage te laten groeien? Maak dan een account aan. U bent van harte welkom. Zie: Portaal:Gebruikers.
  • Bent u blij met Wikisage, of wilt u juist meer? Dan stellen we een bescheiden donatie om de kosten te bestrijden zeer op prijs. Zie: Portaal:Donaties.
rel=nofollow

Processor

Uit Wikisage
(Doorverwezen vanaf CPU)
Naar navigatie springen Naar zoeken springen

Een processor oftewel CPU oftewel central processing unit oftewel centrale verwerkingseenheid oftewel CVE genoemd, is het hart van een computer. De eerste processoren waren uitgevoerd als printplaten vol met losse componenten en IC's, maar sinds de jaren 70 ontstonden de eerste zogenaamde microprocessoren, waarbij het hele systeem op één enkele chip werd vervaardigd. De eerste microprocessor was de i4004 van Intel. De ontwikkeling in de IC-technologie zorgde ervoor dat de microprocessoren van 4 bit (i4004) naar 8 bit, 16-bit, 32 bit en 64 bit konden groeien. Deze getallen duiden de woordbreedte aan. Momenteel zijn er twee belangrijke 'families' in de processoren:

Kenmerken

Microcontrollers

Een processor heeft in hoofdzaak een stel besturingslijnen, adreslijnen en datalijnen, die aangesloten zitten op de besturingsbus, de adresbus en de databus van de computer. Via de adresbus geeft de processor aan op welk adres van het extern geheugen er iets met de data moet gebeuren, via de databus wordt de data getransporteerd, en via de besturingsbus wordt aangegeven wat er met de data moet gebeuren (bijvoorbeeld lezen of schrijven). Hij communiceert met de buitenwereld doordat bepaalde geheugenadressen met interfaces van randapparatuur zijn verbonden, zoals toetsenborden, beeldschermen etc. Microcontrollers danken hun naam aan hun belangrijkste toepassingsgebied: 'control' (besturing). Ze worden gebruikt in de televisie, de afstandsbediening, de videorecorder, radio en zelfs in een scheerapparaat komt men ze tegen.


Microprocessoren

Voor de pc-architectuur is de processorkern uitgebreid met geheugenmanagement en een co-processor voor floating-point-bewerkingen (drijvende komma-bewerkingen). Hierdoor wordt het geschikt voor besturingssystemen als Linux en Windows.

Alle huidige computers werken volgens dit Von Neumann-model. John Von Neumann maakte dit model voordat de eerste computer bestond. Het model omschrijft kortweg de situatie dat een CPU communiceert met enerzijds het Random Access Memory (RAM) en anderzijds de randapparatuur zoals printers, beeldschermen, toetsenborden enzovoort.

Een processor genereert afhankelijk van zijn activiteit meer of minder warmte en wordt daarom meestal gekoeld door middel van een of meerdere koelribben en ventilatoren. Sommige processoren hebben waterkoeling en er zijn zelfs processoren die stikstofkoeling nodig hebben.

Snelheid

De snelheid van een processor hangt af van een aantal factoren. Ten eerste natuurlijk de kloksnelheid. De nieuwste processoren halen kloksnelheden van wel 4,7 GHz (gigahertz), maar zitten gebruikelijk tussen de 1,5 en 3,0 GHz. Verder speelt de cache ook een belangrijke rol (de cache is een klein maar snel "tussengeheugen" tussen het Random Access Memory en de processor). Hoe groter de cache, hoe sneller (meestal) de processor. Tot slot is er een relatief nieuw fenomeen, pipelining, dat de processorsnelheid ook verhoogt. Vroeger werden commando's altijd ná elkaar uitgevoerd. Nú kan commando B beginnen terwijl commando A nog aan de gang is; dit noemt men pipelining. Sommige processoren hebben tegenwoordig ook al meerdere pipelines die tegelijktijdig aan meerdere opdrachten tegelijk kunnen werken. Vaak zijn er ook gespecialiseerde pipelines aanwezig, zodat bijvoorbeeld "gewone" opdrachten en opdrachten met drijvendekommagetallen elk in een aparte pipeline verwerkt worden. Gespecialiseerde processoren zoals GPU's kunnen tientallen pipelines hebben, soms zelfs meer dan honderd.

Nog een stapje verder is het opnemen van meerdere complete processoren ("cores") in één behuizing, bijvoorbeeld een zogeheten Dual-Core. Programma's die hier niet op ingesteld zijn zullen echter niet sneller afgehandeld worden. Echter kunnen wel twee verschillende programma's tegelijk op twee verschillende cores gedraaid worden, wat een aanzienlijk voordeel oplevert bij het draaien van veel programma's tegelijk. Intussen zijn er ook al processoren met 3, 4, 6 of zelfs meer cores.

Interne opbouw

Een (eenvoudige) processor bevat de volgende onderdelen:

  • Een aantal registers met de volgende functies:
    • Een "accumulator" waarin de berekeningen plaatsvinden
    • Een statusregister waarin informatie over de laatst uitgevoerde bewerking bijgehouden wordt (bijvoorbeeld of het resultaat 0 of negatief was)
    • Een programmateller
    • registers die geheugenplaatsen kunnen aanwijzen, zoals stackpointers en indexregisters.
  • Een Arithmetic Logic Unit (ALU) die de berekeningen uitvoert
  • Logica om instructies te decoderen en de onderdelen aan te sturen
  • Logica om interrupts af te handelen.

Bij moderne processoren zijn de registers onderling uitwisselbaar, zodat berekeningen niet in één speciaal register hoeven plaats te vinden. Ook is de decodeerlogica dusdanig uitgekiend dat meerdere instructies tegelijkertijd in behandeling kunnen zijn ("pipeline").

Werking van een processor

Voor veel mensen lijkt het op magie dat een apparaat op commando instructies uitvoert. Toch is dit niet bijster ingewikkeld. We geven hier een voorbeeld van een optelling. Stel op positie 10 in het geheugen staat de volgende machinetaalinstructie:

add r1,r2

...wat betekent dat in de registers r1 en r2 getallen zitten die bij elkaar opgeteld moeten worden. Onze denkbeeldige processor slaat het resultaat op in het register dat we het eerst vermelden, dus na deze instructie bevat register r1 de som van beide getallen.

De instructie hierboven is de vorm hoe wij mensen hem zien. De computer ziet de instructie in de vorm van een reeks nullen en enen. Hoe werkt dit? Iedere instructie heeft een nummer. Stel: onze processor gebruikt 8 bits voor het instructienummer, dan kunnen we 28 = 256 verschillende instructies in onze processor stoppen. Stel: "add" is instructienummer 21. Dat is een decimaal getal. Als we dat omzetten in een binair getal, dan wordt dat 00010101.

Stel: onze processor heeft 16 registers. Om aan te geven welke registers we willen gebruiken, kunnen we gewoon de nummers van beide registers vermelden. Om 16 registers te kunnen nummeren heb je vier bits nodig. Register nummer 1 wordt dan binair 0001, en register 2 wordt dan binair 0010.

Onze totale instructie ziet er dan zo uit:

0001010100010010

Een processor dient instructies in volgorde uit te voeren, dus heeft de processor een teller die de positie van de volgende instructie bijhoudt. Het uitvoeren van een instructie begint met de zogeheten "fetch"-fase, waarbij een instructie op die positie uit het geheugen wordt opgehaald. Onze instructie stond op positie 10, dus de teller van onze processor staat ook op 10. Stel onze processor kan 65536 verschillende posities aan, dan hebben we 16 bits nodig voor onze teller. Het getal 10 ziet er binair dan zo uit:

0000000000001010

Dit getal wordt via de elektrische lijntjes naar het geheugen geleid en onze instructie die op die plaats in het geheugen stond wordt via andere lijntjes terug de processor in geleid.

Vervolgens begint de "decode"-fase. Een instructie is feitelijk een reeks bits en de "decode"-fase heeft tot taak te bepalen wat er moet gebeuren; aan de hand van deze reeks bits worden de componenten in de processor die de instructie uitvoeren in de juiste stand gezet zodat zij de gewenste bewerking uitvoeren.

Over het algemeen zal het instructienummer naar iedere component gestuurd worden, en iedere component heeft een klein stukje geheugen waar het zijn configuratie uitleest. Ons instructienummer was 21, en dus zal de rekeneenheid van de processor op positie 21 in zijn eigen geheugen kijken en daar staat dat hij in optelstand moet gaan staan. Dus stelt de rekeneenheid zich in op optellen.

Welke getallen moesten opgeteld worden? Die in register r1 en r2. De registers, waar de getallen in opgeslagen staan zijn kleine stukjes geheugen in de processor met logica er omheen. Als een register zijn nummer voorbij ziet komen dan wordt dit register actief, hij zet zich klaar om zijn inhoud te zetten op de elektrische leidinkjes naar andere delen van de processor, in ons geval de rekeneenheid.

Vervolgens begint de zogeheten "execute"-fase. De processor staat in de juiste stand en de berekening wordt gestart. De twee getallen in de registers r1 en r2 stromen naar de rekeneenheid van de processor welke een optelling uitvoert. Vervolgens wordt het resultaat in een klein stukje tijdelijk geheugen opgeslagen.

Vervolgens begint de "store"-fase. Het nummer waarin opgeslagen wordt (dat is dus r1), wordt weer naar alle registers gestuurd en het register waar het voor bestemd is gaat in de luisterstand, als op de elektrische leidingen een getal voorbij komt, dan vervangt hij het getal dat hij bewaart met het getal dat hij voorbij ziet komen. Het getal dat berekend is wordt vervolgens op de leidinkjes gezet.

Ten slotte wordt de teller verhoogd (naar positie 11 dus) en wordt de processor voorbereid op het uitvoeren van de volgende instructie. Het uitvoeren van de instructie is nu afgerond..

Synchroon of asynchroon

Synchrone processors

De meeste processors werken tegenwoordig met een klok. Dat wil zeggen dat alle transistoren tegelijk, per klokpuls, hun instructie uitvoeren. Instructies worden bij meer complexe processors in meerdere klokcycli opgedeeld. RISC-processors daarentegen zijn in staat om in een enkele klokpuls een volledige instructie uit te voeren.

Voordelen hiervan zijn een relatief eenvoudig chipontwerp, omdat duidelijk is wanneer informatie van een voorgaande stap (de vorige klokpuls) beschikbaar is. Nadeel van de synchrone processor is dat de klok slechts zo snel kan lopen als de traagste schakel toelaat. Een ander nadeel is dat alle transistoren, ook al vervullen zij op dat moment geen functie, wel geschakeld worden en dus ook stroom gebruiken. Er zijn voor beide nadelen oplossingen verzonnen:

  • Grote trage componenten kunnen in stukken opgedeeld worden, waardoor de kloksnelheid omhoog kan. Er zullen wel meer klokpulsen nodig zijn om dezelfde berekening uit te voeren (pipelining).
  • Het kloksignaal naar delen van de chip die niet gebruikt worden kan uitgezet worden. Het is alleen moeilijk om te bepalen wanneer een deel niet gebruikt zal worden (clock gating).
  • De kloksnelheid kan aangepast worden voor de component die op dat moment aan het werk is. Er zal wel een schakeling nodig zijn om de snelheid te veranderen (dynamic frequency clocking).
  • Delen van het systeem hebben hun eigen klok, die op het maximum van dat gebied loopt. Communicatie tussen de gebieden wordt alleen een probleem (GALS).

Bij de huidige technologie van GigaHertz-processors speelt de traagheid steeds meer een rol. Immers, elektrische signalen reizen met een groot deel van de lichtsnelheid, maar zelfs dat kost enige tijd. Bij een processor die op 3GHz loopt, kan het signaal in een enkele klokpuls theoretisch maximaal slechts 10 cm afleggen.

Een van de ontwerpproblemen van de huidige snelle CPU's is om het kloksignaal overal op de chip tegelijk te krijgen. Het hiertoe benodigde netwerk kan tot wel 30% van het chipoppervlak en tot 60% van het energieverbruik gebruiken. Bij een gemiddelde processor zal dit energieverbruik eerder rond de 10% liggen.

Asynchrone processors

Asynchrone processors werken zonder centrale klokpuls. Zij hebben dus geen last van bovengenoemde problemen.

Een asynchrone processor werkt volgens het principe dat een deelschakeling, naast de 'datalijn' minimaal één extra lijn heeft om aan te geven dat zijn staat stabiel is. Op dat moment kan de volgende schakeling in werking treden. Het voordeel hiervan is dat de processor functioneert op de maximumsnelheid van zijn componenten. Ook gebruiken niet-gebruikte delen van het systeem nagenoeg geen energie wat het energiegebruik drastisch reduceert.

Een nadeel is het complexere chipontwerp. Voor een asynchrone processor met dezelfde functionaliteit als zijn synchrone variant zijn wel drie keer zoveel transistoren nodig. De ontwikkeltijd is ook veel langer.

In de huidige markt zijn asynchrone processors schaars, mede door hun complexiteit. Sommige gehoorapparaten gebruiken al asynchrone processoren. Analisten sluiten niet uit dat asynchrone processors in de toekomst een grotere rol gaan spelen. Waarschijnlijk zullen zij in de toekomst veel gebruikt worden in toepassingen waar energiezuinig gebruik een rol speelt, denk aan apparaten die op batterijen werken, zoals PDA-computers of notebooks.

De eerste licenceerbare en commercieel beschikbare asynchrone microprocessor processor was de ARM996HS, ontwikkeld door ARM Holdings (Engels) en Handshake Solutions (Engels, een dochter van Philips). De processor is gebaseerd op de ARM9-kern en zal voornamelijk gebruikt worden in auto's.

Instructieset

Kenmerkend aan een processor is de instructieset. Ieder type processor kan een beperkte verzameling instructies uitvoeren en deze verschilt vaak tussen verschillende typen processors. Dat betekent dat een programma voor een type processor niet uitgevoerd kan worden door een ander type processor. Aan de andere kant worden processors ook vaak ontwikkeld voor een al bekende instructieset, zodat deze juist wel alle bestaande programma's voor deze processor kan uitvoeren. Een instructieset wordt normaal genoemd naar de processor die deze kan uitvoeren.

Zie ook

Externe links