Computersystemen/Processor

Uit Wikibooks
Naar navigatie springen Jump to search

Doelstellingen[bewerken]

Onderstaande doelstellingen komen in meer of mindere mate aan bod. Ze komen uit het leerplan Toegepaste Informatica van de richting informaticabeheer[1]. De cijfers verwijzen naar dit leerplan. De cursieve doelstellingen zijn praktijkoefeningen die aansluiten bij de theorie, maar die in dit Wikibook niet behandeld worden.

  • 1.2.3 De belangrijkste componenten van een processor toelichten en hun samenhang schematisch weergeven, onder meer stuurorgaan, rekenorgaan, enkele registers, klok, cachegeheugen.
  • 1.2.4 De belangrijkste stappen onder meer halen, interpreteren en uitvoeren, van de verwerking van eenvoudige instructies beschrijven en de functie van de klok daarbij toelichten.
  • 1.4.1 Van een computer de systeemspecificaties vaststellen, onder meer type processor, capaciteit van opslagmedia en intern geheugen, aangesloten componenten en uitbreidingsmogelijkheden.
  • 1.4.2 Verschillende actuele processoren en combinaties toelichten en deze vergelijken op basis van de performantie en het toepassingsgebied.
  • 1.5.1 De vereiste voorzorgsmaatregelen bij de manipulatie van computercomponenten toelichten en toepassen.
  • 1.5.2 Bij de installatie van nieuwe componenten, rekening houden met compatibiliteit, standaardisering en bedrijfszekerheid.
  • 1.5.3 Verschillende componenten fysisch aansluiten op of in een computer, configureren binnen het besturingssysteem, de werking controleren en zo nodig bijsturen, bijvoorbeeld intern geheugen, opslagmedia, uitbreidingskaart.

Definitie[bewerken]

De processor, ook bekend als CPU (Engels: central processing unit), is de hardware in een computer die de instructies van een computerprogramma uitvoert door middel van rekenkundige, logische en/of invoer-/uitvoeroperaties. De processor bepaalt voor een groot deel de snelheid van het volledige systeem. Natuurlijk zal bij een snelle processor met een traag opslagmedium, deze laatste de snelheid voor het volledige systeem negatief beïnvloeden.

De processor kan via een socket op het moederbord gemonteerd worden. Het kan ook onderdeel zijn van een grotere chip. Dit is vaak het geval bij embedded toepassingen, zoals tablets of smartphones. Dan spreekt men over SoC (System on a chip): dan heb je bv. CPU, GPU en geheugen op één enkele chip. Bij het gebruik van de term microcontroller heeft men het vaak over een minder krachtige SoC, bv. de microcontroller ATmega328P op het board van Arduino UNO. Dit is voor embedded toepassingen die bv. minder geheugen of geen GPU nodig hebben.

Plaatsing[bewerken]

Een AM3-socket, met daarop liggend een omgekeerde AMD Phenom II X3-processor

Bij een moederbord is er niet één universele processoraansluiting (zoals bv. bij USB het geval is). Zo werken bv. Intel en AMD al met verschillende sockets, maar ook binnen Intel en AMD zijn er verschillende sockets in gebruik. Op één socket passen wel meerdere families van processoren.[2] Zo past op de AM3-socket een AMD Phenom II, AMD Athlon II en een AMD Sempron processor. En bij een LGA 1155=Socket H2 past zowel Intel Sandy Bridge, als Intel Ivy Bridge. Tenslotte heb je binnen de CPU familie nog meerdere processoren. Bij de AMD Sempron familie heb je bv. Regor en Sargas. Bij de Sandy Bridge familie heb je bv. Core i5 2550K en Core i7 3930K.

Bij de keuze van een processor voor een moederbord lees je best ook altijd de handleiding en bekijk je de specificaties van je moederbord. Zo kan je weten of de processor wel optimaal kan samenwerken met je moederbord.

Voor het verbinden van de processor met het moederbord, wordt bijna altijd een CPU socket gebruikt, waarbij ZIF (zero insertion force) wordt gebruikt, waardoor je heel weinig kracht moet uitoefenen om de processor te plaatsen:

  1. Zet de hendel omhoog.
  2. Hoe je de processor moet plaatsen, wordt vaak aangegeven door een pijltje, dat moet overeenstemmen met het pijltje op de socket. Bekijk dit héél goed, zodat je de processor niet beschadigt.
  3. Plaats de processor gelijkmatig in de socket en dus niet eerst de ene kant en dan pas de andere kant. Je hoeft hiervoor amper kracht uit te oefenen.
  4. Als je merkt dat hij goed vlak zit, kan je de hendel naar beneden halen om deze te plaatsen.
  5. Vergeet vanzelfsprekend heatsink en ventilator niet aan te sluiten!

Onderdelen[bewerken]

Samenhang van enkele onderdelen. Zwarte lijnen is data, rode is controle. De pijlen duiden op de richting.

Als de grootte van de processor vergeleken wordt met wat hij allemaal kan, dan is dit een knap staaltje techniek! Bovendien is de eigenlijke microchip (Engels: die) nog een pak kleiner.[3] Er is een omhulling nodig om de microchip hanteerbaar te maken. In de processor vind je onderstaande onderdelen terug.[4]

ALU (rekenorgaan)[bewerken]

Arithmetic Logic Unit schematisch symbool. A en B is de invoer, R is het Resultaat, F is de functie selector (optellen, aftrekken,...) en D is de uitvoer status (bijvoorbeeld Carry en Zero bits en fout-condities zoals delen door 0)

De Arithmetic logic unit is het centrale onderdeel van de processor van een computer dat de rekenkundige (arithmetic: +, -, *, /,...) en logische (logic: AND, NOT, OR, XOR) bewerkingen uitvoert. Met deze basisbewerkingen kunnen andere complexe bewerkingen worden uitgevoerd. Ook wordt hier gekeken op welke geheugenplaats de volgende opdracht van het programma staat.

Controle unit (stuurorgaan)[bewerken]

De CU of controle unit is het controlecentrum van de CPU. Zo vertelt de CU hoe het RAM-geheugen en andere onderdelen moeten reageren op instructies van een programma.

Registers[bewerken]

De processor is niet bekend voor het opslaan van gegevens: daarvoor gebruiken we bv. RAM-geheugen, harde schijven of SSDs. Het probleem is echter dat zelfs het RAM-geheugen veel te traag is voor de processor. Dus heeft men besloten om heel snel geheugen rechtstreeks op de processor te plaatsen: het snelste geheugen is registergeheugen. Omwille van de kostprijs en de beperkte oppervlakte is dit geheugen echter ook klein.

Er zijn verschillende soorten registers:

  • Werkregisters: dit zijn registers met een algemeen doel, bv. voor het bewaren van (tussen)resultaten.
  • Instructieregister: niet alleen data, maar ook instructies zijn belangrijk, anders kan de processor niets doen. De huidige uit te voeren instructie wordt hierin bewaard.
  • Adresregister (program counter): bevat het adres van de eerst volgende uit te voeren instructie. Deze instructie moet dan nl. worden opgehaald, zodat deze in het instructieregister terecht kan komen. Dit adresregister houdt dus bij hoe ver het programma al gevorderd is.
  • Vlagregister: in dit register kunnen verschillende zaken worden bijgehouden, bv.:
    • De zero-vlag geeft aan of het resultaat van een aftrekking 0 was of dat twee elementen gelijk waren.
    • De sign-vlag wordt gezet bij een negatief getal.

Caches[bewerken]

De CPU-caches hebben eenzelfde idee als bij de browsercache: gegevens worden bewaard in de hoop dat men ze in de toekomst opnieuw nodig heeft. Bij de browsercache zal de harde schijf of SSD sneller zijn in vergelijking met het opnieuw laden vanaf het internet.

Bij de CPU heeft men al een snelle geheugenvorm op de processor: de registers. Deze bleken echter te klein te zijn om aan alle eisen te kunnen voldoen. Het RAM-geheugen was dan wel groot genoeg, maar de geheugenbus is te traag t.o.v. processorsnelheid. Dus bedacht men een tussenstap: de CPU-caches. De eerste keer haalt de CPU sowieso de data van het RAM-geheugen, maar deze data wordt ook in de caches opgeslagen. Daarna wordt eerst de cache bekeken in de hoop dat er data of instructies te vinden zijn, zodat deze niet meer van het tragere RAM-geheugen gehaald moeten worden.

Grotere caches hebben een hogere hit rate: de kans is groter dat data er al inzit. Helaas zijn grotere caches vaak ook trager. Vandaar bestaat er een multi-level cachehiërarchie: eerst wordt de kleinere maar snelle L1-cache bekeken, daarna de iets grotere, maar tragere L2-cache.

De cache is te klein om alles te bewaren. Dus moet er soms ruimte vrijgemaakt worden. Het groter maken van een cache betekent niet per definitie snelheidswinst: als je iets bewaart in de cache dat in de toekomst toch niet meer nodig is, zal je geen snelheidswinst halen. Vandaar is niet op ieder systeem een L3-cache aanwezig.[5]

Hulpprocessor[bewerken]

Een processor is zodanig ontworpen dat hij verschillende soorten van berekeningen en bewerkingen kan uitvoeren. Soms wordt besloten om naast de "gewone" processor ook een "hulpprocessor" te voorzien. Dit kan de volgende voordelen hebben:

  • De gewone processor wordt zo ontlast.
  • Deze hulpprocessor kan gespecialiseerd zijn in iets, waardoor hij het ook sneller kan uitvoeren dan de gewone processor.

De bekendste hulpprocessor is waarschijnlijk de GPU en als die op dezelfde chip is uitgevoerd als de CPU spreekt men over IGP (integrated graphics processor). Zo heb je bij AMD de accelerated processing unit (APU), bij Intel HD Graphics en bij Nvidia Project Denver. [6]

Specificaties[7][bewerken]

Kloksnelheid[bewerken]

De kloksnelheid is wellicht de bekendste spec van een processor. Meer uitleg hierover staat in het Wikibook Basiskennis informatica > Snelheid > Kloksnelheid.

Doordat men steeds meer transistoren op eenzelfde oppervlakte kon krijgen, kon met de kloksnelheid laten toenemen (zie de Wet van Moore). Daar meer en meer de grenzen worden opgezocht van wat natuurkundig mogelijk is, zocht men (ook) naar andere manieren om de snelheid van een systeem te laten toenemen.

Multicpu[bewerken]

Een mogelijkheid om het systeem sneller te maken is om op één moederbord twee of meerdere processoren gebruiken, elk met hun eigen socket. Dit zorgt ervoor dat het ontwerp van het moederbord duurder is en de afstand tussen de processoren is (relatief gezien) groot, wat onderlinge communicatie niet gemakkelijk maakt. Het is dan ook niet zo'n populair ontwerp. Strikt gezien is een multicpu geen eigenschap van een processor, maar eerder van het moederbord. Het wordt hier toch vermeld, om het verschil met multicore duidelijk te maken.

Multicore[bewerken]

Bij een multikernprocessor worden op de processorchip (de die) twee of meerdere kernen (Engels: cores) gebruikt, waarbij iedere kern vaak zijn eigen L1- en L2-cache heeft en een eventueel gedeelde L3-cache. Bij een dubbelkernprocessor (Engels: dualcore) zitten er op één chip als het ware twee complete processors, die één enkele verbinding met het hoofdgeheugen delen — wat dan ook de flessenhals van multikernprocessors is.

Het plaatsen van meerdere kernen op een processor heeft als voordeel dat relatief veel snelheid gewonnen kan worden met een geringe investering. Toch zijn er ook nadelen:

  • Software maakt veelal niet automatisch gebruik van meerdere kernen; de software moet ofwel uit meerdere processen bestaan, ofwel gebruikmaken van multithreading. Klassieke applicaties met slechts een enkele thread profiteren nauwelijks van multikernprocessors.[8]
  • Het productieproces van de processors vereist dat alle processorkernen tegelijk succesvol gefabriceerd worden.
  • Een verdubbeling van het aantal kernen betekent vrijwel een verdubbeling van het energieverbruik van de processor (en dus ook warmte). Hierdoor moet soms teruggeklokt worden. Sommige systemen zullen bij het belasten van slechts één kern, de overige kernen uitschakelen. Als de belasting wegvalt, worden alle kernen weer ingeschakeld en de kloksnelheid teruggebracht (bv. Turbo Boost bij de Nehalem Core i7 architectuur).

Hyper-threading[bewerken]

Bij Hyper-threading worden de instructies opgehaald van het RAM-geheugen (de vier verschillende kleuren wijzen op instructies van vier programma's) en worden gedecodeerd + geordend door de frond end (een wit vakje is als er niets kan gebeuren). Daarna wordt dit doorgegeven aan de execution core, die instructies van twee verschillende programma's kan uitvoeren tijdens dezelfde kloktik.

Bij Hyper-threading gedraagt een fysieke processorkern zich als twee logische processors die de cache en externe interfaces delen. In de meeste gevallen wordt het hierdoor mogelijk dat de processorkern twee threads tegelijk uitvoert. Als er bepaalde CPU-onderdelen niet gebruikt worden door thread X, dan kunnen die gebruikt worden om thread Y uit te voeren. Zonder hyperthreading kan het voorkomen dat een thread moet wachten, alhoewel de meeste CPU-onderdelen op dat moment misschien niets aan het doen zijn.

Hyper-threading vereist ook dat de software ondersteuning biedt voor een systeem met meerdere processoren: een processor met hyperthreadingtechnologie wordt door het besturingssysteem meestal als twee losse processoren gezien. Zo kan het lijken alsof je een dualcore hebt, terwijl je eigenlijk een single core fysische processor hebt.

Over Hyper-threading is men niet altijd onverdeeld positief. Zo wordt gezegd dat een processor met deze technologie aanzienlijk meer energie verbruikt. Ook wordt de cache zwaarder gebruikt; doordat er twee processen tegelijk lopen, treden er meer cache-misses op, wat een negatieve uitwerking heeft op de performance en het energieverbruik.

TDP[bewerken]

De Thermal Design Power, ook wel Thermal Design Point genoemd en afgekort TDP, is de maximale hoeveelheid warmte die het koelsysteem van een chip geacht wordt nog af te kunnen voeren. Omdat het een hoeveelheid energie per tijdseenheid betreft wordt hiervoor de eenheid Watt gebruikt. Laat je niet misleiden door deze eenheid, want het wijst hier niet op de zuinigheid/verbruik van de processor.[9]

Bijvoorbeeld het koelsysteem van de CPU van een laptop kan ontworpen zijn voor een 20 W TDP, wat inhoudt dat het 20 watt aan warmte kan afvoeren zonder de maximale temperatuur van de chip te overschrijden (om te vermijden dat de CPU instabiel wordt).

x nm[bewerken]

Bij de specificaties van de processor merk je bv. 32 nm. Dit verwijst naar een bepaald productieproces om meer elektronica (transistoren) op eenzelfde oppervlakte te krijgen. Wat het (meestal) betekent is: kleinere transistoren => meer op eenzelfde oppervlakte => meer mogelijkheden/performantie/#cores => hogere kloksnelheden binnen eenzelfde of kleinere thermische specificatie => toegenomen performantie.[10]

De eenheid 'nanometer' verwijst naar aan 10-9 meter, dus 0,000 000 001 meter of een miljardste meter. In een nanometer passen zo'n vijf atomen.

Instructieset[bewerken]

De instructieset is de verzameling van alle elementaire opdrachten die de processor als machine begrijpt en dus ook kan decoderen en uitvoeren. Deze instructies worden als binaire codes in het geheugen gezet.[11]

De meeste processoren[12] hebben instructies voor de volgende functies:

  1. ophalen van een waarde uit een geheugenplaats
  2. terugschrijven van een waarde naar een geheugenplaats
  3. diverse rekenkundige (+, *, ...) en logische functies (AND, OR,...)
  4. testfuncties (is x gelijk y?)
  5. sprongfuncties, al dan niet voorwaardelijk (bv. if-then)
  6. afhandelen van interrupts (bv. bij bewegen muis)

Je merkt dat bovenstaande lijst beperkt is. Wil je iets programmeren met deze elementaire opdrachten, dan is dit heel tijdrovend. Programmeurs werken liever met een hogere programmeertaal dan met machinetaal en laten het vertalen naar machinetaal over aan de interpreter (bv. bij JavaScript) of compiler (bv. bij C, C++).

AMD en Intel processoren zijn verschillende merken van processoren die toch (ongeveer) eenzelfde instructieset hebben. Hierdoor kan software, bijvoorbeeld een besturingssysteem, zowel op een AMD- als op Intel-platform worden geïnstalleerd. ARM is een voorbeeld van een processor die een andere instructieset heeft dan AMD/Intel: zo kan de binaire code van het ophalen van een waarde uit een geheugenplaats tussen AMD/Intel en ARM er volledig anders uitzien. Dat is ook de reden dat naast Windows, ook Windows RT is ontwikkeld: een versie van Windows op ARM-apparaten. Wil je iets werkende krijgen op AMD/Intel én op ARM, dan zal je de broncode eens moeten compileren voor AMD/Intel en eens voor ARM.[13]

Bij bv. de AMD Phenom II X4 955 processor gaat het om de volgende instructieset(s): MMX(+), 3DNow!(+), SSE, SSE2, SSE3, SSE4A, x86-64, AMD-V. Zo helpt AMD-V bij het virtualiseren van hardware (Intels technologie wordt aangegeven als VT-X). Merk op dat x86-64 betekent dat de processor een 64-bit-processorarchitectuur heeft, compatibel met een 32-bit architectuur. Zo'n architectuur wordt soms ook aangegeven als EM64T, AMD64, IAMD64 of x64. Bij een zuivere 32-bit architectuur spreekt men over x86 of IA-32.

Werking[bewerken]

Een processor kan niet onmiddellijk iets uitvoeren, want:

  • De processor is geen geheugenopslag: de eigenlijke programma's staan op een opslagmedium. Vervolgens worden deze bij het uitvoeren geladen in het RAM-geheugen en tenslotte moet de processor deze nog ophalen. Dit laatste staat bekend als prefetch.
  • Dan weet de processor nog niet wat hij moet doen: voor het uitvoeren van een optelling moet hij zichzelf anders organiseren, dan bij het uitvoeren van een deling. Hij zal dus eerst nog de instructie moeten decoderen, om te weten wat hij moet doen.
  • Dan pas kan de processor iets uitvoeren. Dit staat bekend als execute.

Stel dat we een héél eenvoudige processorarchitectuur hebben, die enkel kan optellen en delen. Er moeten natuurlijk ook getallen uit het geheugen gehaald kunnen worden en ze moeten er ook terug in opgeslagen worden. Dan zou de instructietabel er als volgt kunnen uitzien:

00 /, nl. delen
01 +, nl. optellen
10 get from memory
11 store to memory

We weten ook al dat de processor werkt met (werk)registers. Stel dat we vier registers hebben, met onderstaande inhoud.

adres adres (bin) inhoud (bin) inhoud (dec)
R0 00 0101100 44
R1 01 1011101 93
R2 10 1110110 118
R3 11 0001010 10

Stel nu de processor de instructie 010111 heeft opgehaald, waarbij de inhoud van de registers is zoals hierboven. In de eerste kolom staat het adres, in de tweede kolom de binaire inhoud en in de derde kolom de overeenkomstige decimale waarde. Wat wordt er verwacht dat hij doet? Deze instructie 010111 bestaat uit de instructie zelf (01) en twee operands (01 en 11), wat het geheel 010111 maakt. Om te weten wat hij moet doen, moet de processor in zijn instructietabel (zie hoger) opzoeken wat '01' betekent, en dat blijkt de optelling te zijn. De eerste operand is 01 en is dus het tweede register, terwijl de tweede operand 11 is en dus het derde register. Na uitvoer wordt de inhoud van de registers:

adres adres (bin) inhoud (bin) inhoud (dec)
R0 00 0101100 44
R1 01 1100111 103
R2 10 1110110 118
R3 11 0001010 10

Ter info: dit is een sterk vereenvoudigde werking van een processor[14]. In het echt is dit een stuk complexer doordat er meer stappen zijn en doordat men technieken toepast die het geheel sneller maakt (bv. pipelining[15], dynamic branch prediction of de compiler die instructies in een andere volgorde plaats).

Bronnen, noten en/of referenties
  1. Meer informatie op leerplan D/2015/7841/003
  2. Cfr. de lijst van 80x86 sockets en slots.
  3. En ze willen de techniek nog verbeteren: Tweakers.net: Klein, kleiner, kleinst: de weg naar 5nm-chips
  4. In de filmpjes How a CPU is made, How do they make Silicon Wafers and Computer Chips? of Silicon Wafer Processing Animation kan je mooi enkele processen zien van hoe een CPU is gemaakt.
  5. Meer details over de werking van deze caches kan je lezen op extremetech.com: How L1 and L2 CPU caches work, and why they’re an essential part of modern chips.
  6. Een uitgebreide review van AMD Kaveri staat op AMD Kaveri Review - Cpu en gpu op gelijke voet
  7. Sommige kenmerken komen aan bod in de review op Tweakers.net van Intels Broadwell-E.
  8. Meer informatie over threads staat in het Wikibook Besturingssystemen > Functies > Multithreading
  9. Meer uitleg vind je in het Tweakers.net artikel Tdp: minder simpel dan het lijkt.
  10. Bron: What is "nm" mean in CPU . Ook het Tweakers.net-artikel Als nanometers te groot worden is interessant om lezen.
  11. Bij bv. een browser zou je a.h.w. ook kunnen spreken over een vorm van “instructieset”, nl. het feit dat een browser bv. HTML 4.01, XHTML 1.1, JavaScript 1-1.7 “begrijpt”.
  12. Een overzicht van instructiesets van een aantal processors: www.chipdir.nl/iset.
  13. Merk op: naast de machinetaal is ook het besturingssysteem belangrijk. Programmeurs maken vaak gebruik van specifieke besturingssysteem API's, waardoor een Windows-programma niet noodzakelijk ook zomaar werkt op Linux, alhoewel beide misschien een AMD-processor hebben.
  14. Een uitgebreidere uitleg over de werking staat op Processor (computer) > Werking van een processor.
  15. Pipelining wordt mooi voorgesteld bij The Megahertz Myth (YouTube), waarin Apple het belang van de architectuur op de snelheid uitlegt. Op eastaughs.fsnet.co.uk kan je een animatie bekijken en op Ars Technica kan je bij Pipelining: An Overview een diepgaand artikel lezen.
Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.