Hoe werkt een Processor (CPU) ?

      Reacties uitgeschakeld voor Hoe werkt een Processor (CPU) ?

Hoe werkt een processor ?

Ophaalfase

Een processor dient instructieset|instructies van het te verwerken programma in volgorde uit te voeren. Het programma zelf staat in het RAM-geheugen. De processor heeft daarom een teller, de programmateller, die het geheugenadres van de volgende instructie bijhoudt. In de zogeheten “fetch-fase” (ophaalfase) haalt de processor de instructie op van het geheugenadres dat in de programmateller staat. De code in dit adres is de volgende uit te voeren instructie en deze wordt in het instructieregister geplaatst.

Decodeerfase

Stel dat de code in het instructieregister 0001010100010010 is. Wat betekent dat voor de processor? Een instructie is niets anders dan een reeks bits en in de “decode-fase” (decodeerfase) wordt bepaald 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.

In het voorbeeld gebruikt de processor 8 bits voor het nummer van de instructie. De processor kent dus maximaal 28 = 256 verschillende instructies. De in het voorbeeld uit te voeren instructie heeft nu het nummer aangegeven door de eerste 8 bits, dus nummer 00010101, wat decimaal 21 is en in dit geval optellen betekent. 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 is 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.

De resterende bits van het instructieregister, nl. 00010010 bepalen de plaats waar de processor zijn gegevens zal halen, dit kunnen bepaalde registers zijn, maar in complexere instructies ook een geheugenadres. In dit geval gaat het om de registers en onze processor heeft 16 registers. Om aan te geven welke registers we willen gebruiken, kunnen we gewoon de nummers van beide registers vermelden, waarvoor voor elk vier bits nodig zijn. In het voorbeeld dus de registers 0001 (=1) en 0010 (=2). De instructie houdt dus in dat de inhoud van de registers 1 en 2 bij elkaar worden opgeteld. Impliciet is tevens vastgelegd dat het resultaat in het eerstgenoemde register staat.

De volledige instructie…

0001010100010010

… wordt dus opgesplitst in de onderdelen …

0001010100010010

… om bij het decoderen te beslissen dat het gaat om een optelling:

ADD r1,r2

Concreet betekent dit 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 registers zijn kleine stukjes geheugen in de processor met logica er omheen. Als een register zijn nummer voorbij ziet komen, wordt dit actief en zet het zich klaar om zijn inhoud te zetten op de elektrische leidinkjes naar andere delen van de processor, in dit geval de rekeneenheid.

Uitvoerfase

Vervolgens begint de zogeheten “execute-fase” (uitvoerfase). 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 die een optelling uitvoert. Vervolgens wordt het resultaat in een klein stukje tijdelijk geheugen opgeslagen.

Opslagfase

Vervolgens begint de “store-fase” (opslagfase). Het register waar het resultaat voor bestemd is (r1), gaat in de luisterstand. Als op de elektrische leidingen een getal voorbij komt voor een register, dan vervangt het het getal dat het bewaart met het getal dat het voorbij ziet komen. Het getal dat berekend is, wordt vervolgens op de leidinkjes gezet.

De volgende

Het uitvoeren van de instructie is nu afgerond, de programmateller wordt verhoogd en de processor wordt voorbereid op het uitvoeren van de volgende instructie.

Synchroon of asynchroon

Synchrone processors

De meeste processors werken tegenwoordig met een klok. Dat wil zeggen dat alle transistors tegelijk, per klokpuls, hun instructie uitvoeren. Instructies worden bij complexere 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 worden in stukken opgedeeld, 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, wordt uitgezet. Het is alleen moeilijk om te bepalen wanneer een deel niet gebruikt zal worden (clock gating).
  • De kloksnelheid wordt aangepast 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 heeft de traagheid van elektrische signalen een steeds grotere invloed. Elektrische signalen reizen met een groot deel van de lichtsnelheid, maar zelfs dan kost het enige tijd om van A naar B te geraken. Bij een processor die op 3 GHz loopt, kan het signaal in één enkele klokpuls theoretisch maximaal 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 processors. 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 en Handshake Solutions (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.

Leuk en aardig, maar hoe ziet een CPU er uit ?

Processoren zijn er in allerlei soorten en maten. We kijken voor nu even naar de modernere aangezien het idee hetzelfde is.
Laten we eens de bovenkant van een processor bekijken :
intel_core_i7_right_side
Hier zien we nog niet veel bijzonders, het is een vierkant plaatje met een metalen dekseltje er op. We praten hier over een afmeting van ongeveer 5×5 centimeter.
We gaan de processor eens omdraaien :
intel_core_i7_back
OK…een hele hoop gouden puntjes en in het midden iets wat lijkt op een stadje die je in Sim City aan het bouwen bent.
Die gouden puntjes zijn de contacten waarmee de processor “praat” met het moederbord waar het op geplaatst is.
Het “Sim City stadje” is een stukje ondersteunende elektronika voor de processor zelf.

Waar het om draait is wat er ónder de metalen kap zit !
Dát is de eigenlijke processor.
Het is een stukje silicium van nog geen 1 vierkante centimeter !
We kijken eens onder de kap.
Links zie je in het rode kader de processor zitten en het lijkt op een spiegeltje.
Hier is nog steeds niet duidelijk WAT er nu in de processor zit.
intel-inside

Om te zien wat nu daadwerkelijk in die processor zit, zullen we de processor onder een elektronenmicroscoop moeten houden.
Hieronder zien we wat er echt in de processor zit :
cpu-onder-microscoop

Hierboven zie je in ieder geval dat er wat in zit, netjes geordend piepkleine en wat grotere zaken. Maar wat is het ?
We kijken hier tegen een oppervlakje van dus nog niet eens 1 vierkante centimeter waar zich miljoenen, MILJOENEN dus, transistoren op bevinden.
Transistoren zijn kleine elektronische schakelaartjes, zoals bovenin dit artikel wordt beschreven.

Waarom zit trouwens die metalen kap op de processor ?
Een processor wordt warm tijdens het gebruik ervan. ERG warm !
Hoe meer de processor moet doen, hoe warmer deze wordt.
De warmte die ontwikkeld wordt, moet ergens afgevoerd worden aangezien zonder koeling een processor binnen een paar seconden doorbrandt.
Processoren worden op het moederbord voorzien van een CPU koeler. Een groot koellichaam met een ventilator :
intel-cpu-cooler

De ventilator blaast koele lucht door de vinnen van het koellichaam en houdt daarmee de processor op een werkbare temperatuur.
Om warmtegeleiding te optimaliseren wordt er tussen de processor en het koellichaam koelpasta gebruikt.
De koelpasta is een grijs/zilverkleurige pasta die zeer goed de warmte geleid.
Belangrijk is de hoeveelheid pasta die gebruikt wordt, te weinig is niet goed, maar teveel ook niet !
Een rijstekorreltje is meestal genoeg.

Verschillende Sockets

Bij elke nieuwe generatie worden er ook nieuwe CPU-sockets gemaakt. Een Socket is de voet waar de processor in geplaatst wordt :
cpu-plaatsen-op-socket

Er bestaan verschillende sockets, met allen hun eigen naam en dus ook voor processoren die specifiek voor die sockets gemaakt zijn.
Zo bestaan er LGA-1150, LGA1151, Socket-AM4, Socket-G3, Slot-1, Slot-A, Socket-H2 en nog veel meer.
Voor een compleet overzicht, zie Wikipedia voor alle sockets door de jaren heen.

Zo kun je bijvoorbeeld in je bestaande computer een “CPU Upgrade” uitvoeren.
Je vervangt daarmee je huidige processor voor een nieuwere en snellere processor.
Denk hierbij niet “even” een snellere processor voor je computer te kopen en dat het dan goed is.
Zoals reeds gemeld bestaan er vele Socket typen. Bij het upgraden van je processor is het van belang om uit te zoeken welk type Socket je hebt.
Wanneer je dat weet, kun je gaan kijken wat het aanbod is aan beschikbare processoren voor deze Socket.
Maar dan ben je er nog niet helemaal, het kan namelijk zijn dat je moederbord waar de processor op geplaatst wordt, niet alle processoren aan kan.
Dat heeft met bussnelheden etc. te maken maar ook of het moederbord de instructieset van de processor “begrijpt”.
Veel moederborden kun je met een BIOS update geschikt “maken” voor meer processoren.
Het is dus ten zeerste aan te raden om te (laten) inventariseren wat jouw moederbord maximaal aankan qua processoren.
Ook het flashen van de BIOS is riskant. In 99,9% van de gevallen gaat het goed, maar het kan mis gaan.
En wanneer het mis gaat, kun je je moederbord weggooien. Modernere moederborden hebben een backup BIOS, een tweede BIOS die in zulke gevallen het systeem intact houdt en je nogmaals een poging kunt wagen om de BIOS te flashen.

Je ziet dat er veel types en nog meer modellen CPU’s zijn.

Laat je goed informeren over de mogelijkheden wanneer je een CPU upgrade gaat doen !
Wij kunnen je ook adviseren hierin.

Heb je vragen of wil je advies ? neem contact met ons op !