Informaticasite van het Sondervick College te Veldhoven                 © L.J.M van Haperen (bron : R.J. van der Beek)
 

Hoofdstuk 3 Hardware

3.1 De Processor en Intern geheugen

  3.1.1. De processor

De microprocessor of centrale verwerkings-eenheid (C.V.E.), of Central Processing Unit (C.P.U.) is het hart van elke computer.

De snelheid van de processor is van doorslaggevend belang voor de prestatie van de computer.
De grootste fabrikant van processoren is INTEL, die de Pentium en de Celeron fabriceert.
Concurrenten van INTEL zijn o.a.AMD, IBM, CYRIX.

       

Elke processor is weer anders, en natuurlijk beter, dan de vorige. Maar als een programma met een oudere processor draait, loopt het ook wel op computers met nieuwere processoren, maar andersom is dat niet altijd het geval.

De CPU zit meestal m.b.v. een slot of een socket op het moederbord vast, maar tegenwoordig zit hij ook wel op een speciale insteekkaart.
Hij kan gemakkelijk worden verwijderd en vervangen door een andere.
Een processor is voorzien van een koeling want hij produceert behoorlijk wat warmte.
Meestal is dit een aluminium gietstuk bestaande uit een plaat met daarop een groot aantal uitsteeksels.
Vaak wordt ook een ventilator op het koellichaam geplaatst.

De processor bestaat uit een aantal onderdelen: de rekenkundige en logische eenheid (ALU = arithmetic and logical unit), een aantal registers en de besturingseenheid (CU = control unit). Zie de figuur hier onder.


  • De rekenkundige en logische eenheid of ALU voert rekenkundige bewerkingen uit. Bijvoorbeeld het optellen van twee getallen, dat doet de rekeneenheid. Dat gaat m.b.v. schakelingen; één van die schakelingen, namelijk die voor de optelling, is in hoofdstuk 2 besproken.
    En hij vergelijkt waarden; er wordt dan bijvoorbeeld gekeken of het ene getal groter is dan het andere. Het resultaat van zo'n vergelijking is waar of onwaar, en afhankelijk van dat resultaat worden bepaalde opdrachten uitgevoerd. Het vergelijken doet de logische eenheid.
  • De registers zijn tijdelijke opslagplaatsen voor gegevens en instructies.
    Er is een register, waarin de instructie wordt opgeslagen, die aan de beurt is om uitgevoerd te worden. Dat is het instructieregister, IR.
    Er is ook een register, waarin het adres van de eerstvolgende instructie bewaard wordt (dat is het nummer van de geheugenplaats waar die opdracht staat). Dat is de instructie-pointer, IP.
    Verder zijn er nog een heel stel registers waar gegevens in bewaard kunnen worden, bijvoorbeeld getallen die moeten worden opgeteld, en ook de uitkomst van die optelling.
    Die registers worden aangegeven met R1, R2, enz.
    De eerste processoren hadden maar heel weinig registers. Er was maar één register waar een uitkomst in bewaard kon worden, dat werd de accumulator genoemd.
  • De besturingseenheid, of Control Unit (CU), bestuurt de instructiecyclus (zie de volgende paragraaf) en zorgt er voor dat de stappen goed doorlopen worden.

  3.1.2. De kloksnelheid en MIPS

De processor doet het eigenlijke werk van de computer.
Een programma bestaat uit een hele reeks instructies. De processor voert die instructies één voor één uit. Dat moeten machinetaal-instructies zijn, anders begrijpt de processor ze niet.
Wat machinetaal-instructies precies zijn hoor je later.
De snelheid van een processor wordt vooral bepaald door de kloksnelheid, die wordt gegeven in megahertz (MHz) of gigaherz (GHz)
Bij de nu verkochte processoren is de grens van 3GHz. al overschreden.
3 GHz of 3000 MHz wil zeggen dat er 3000 000 000 kloksignalen per seconde worden afgegeven.
En bij elke kloktik doet de processor iets, en daarbij wordt de zogenaamde instructiecyclus gevolgd:
  • De instructie wordt uit het RAM-geheugen opgehaald en in het instructieregister (= IR) op de processor gezet
  • De instructie wordt gedecodeerd, en de instructiepointer (= IP) wordt met één verhoogd. (De instructiepointer is een register op de processor waarin is vastgelegd welke instructie aan de beurt is)
  • De instructie wordt uitgevoerd
  • Daarna begint het weer opnieuw, de volgende instructie wordt opgehaald, enz.
De instructies worden dus één voor één door de processor uitgevoerd, want de processor kan maar één ding tegelijk doen. Dit heet het Von Neumann-principe.

Als je er op let hoeveel instructies (met een instructie wordt bijvoorbeeld een optelling bedoeld) er per seconde uitgevoerd kunnen worden, dan heb je de MIPS-waarde (MIPS = miljoenen instructies per seconde).

Het is technisch mogelijk om op het moederbord een hogere kloksnelheid in te stellen dan op de processor is aangegeven.
Dit noemt men overklokken, maar je loopt wel het risico dat de processor oververhit wordt.

Het aantal bits dat de processor tegelijk kan verwerken speelt ook een rol. Bij de nieuwste processoren (vanaf de Pentium) is dat 64 bits.

  3.1.3. Typen processoren, de Von Neumann-bottleneck

  • De Pentium
    De Pentium kan meerdere instructies tegelijkertijd verwerken en beschikt extern over een 32-bit adres bus en een 64-bit databus.
    De processor zit samen met het cache geheugen op een apart insteekkaartje. Verder werkt het L2-cache geheugen op de volledige processor snelheid.
    De eerste Pentium 4 kwam uit in 2000. Naast de hogere kloksnelheid biedt deze processor ook een hogere bussnelheid dan zijn voorgangers. In de nieuwste Pentium 4-chips zitten meer dan 100 miljoen transistoren.
  • De Celeron Processor:
    De Celeron processor is in principe identiek aan de Pentium processor, alleen de L2-cache ontbreekt of is veel kleiner dan bij de Pentium.
    Het weglaten of verkleinen van het dure L2-cache-gedeelte zorgt er voor dat de Celeron veel goedkoper is dan de Pentium.
  • AMD Athlon
    Processorfabrikant AMD brengt de Athlon processoren op de markt.
    AMD probeert steeds opnieuw INTEL de loef af te steken.
    De getallen naast het type zijn misleidend. Een Athlon XP 2500+ draait niet op 2500 MHz, maar op circa 1850 MHz. Het getal 2500 wordt wel de Intel pentium rating genoemd. Het geeft de kloksnelheid aan waarmee een Intel Pentium-processor moet draaien om dezelfde prestaties te halen als de AMD. Daarmee wordt ook aangetoond dat de kloksnelheid niet alles zegt over de uiteindelijke prestatie.
  • De Sempron Processor:
    De Sempron-processor is in principe identiek aan de Athlon-processor, alleen de L2-cache ontbreekt of is veel kleiner dan bij de Athlon. Wat de Celeron is voor Intel is de Sempron voor AMD.
  • Dual core processoren (of multikern-processoren)
    Een dual core-processor is een processor waarbij twee processorkernen op één chip zitten.
    Er zitten op één chip dus eigenlijk twee complete processoren, maar die hebben één enkele verbinding met het hoofdgeheugen; die verbinding moeten ze delen en dat is dan ook de flessenhals van de dual core-processor.
    Je moet wel speciale software hebben dat automatisch gebruik maakt van meerdere kernen, oude programma's profiteren nauwelijks van dual core-processoren.
    Verder betekent het werken met twee kernen een verdubbeling van het energieverbruik, en dat levert warmteproblemen op. Om die problemen te voorkomen is de kloksnelheid van de dual core-processor vaak lager dan die van een processor met één kern.
  • De Core I7 Processor:
    De Core I7 (980X Extreme Edition) is de nieuwste processor van Intel, geïntroduceerd in mei 2010.
    Dit is een processor met zes kernen (6 cores). Dankzij hyperthreading is het net alsof er nog zes extra processoren zijn, voor het tegelijk afhandelen van twaalf processen.
    De kloksnelheid is 3.33 GHz, de L2-cache is 1024 kB en de L3-cache is 12 MB
    Deze processor kost bijna € 1000,-
    Ook AMD heeft processor met zes cores: de AMD Phenom II X6. De kloksnelheid is 3.2 GHz, en de L3-cache is 6 MB
    Deze is 20% langzamer dan de snelste Intel (De Core I7 980X Extreme Edition), maar hij is wel veel goedkoper.
De Von Neumann-bottleneck

Een programma bestaat uit een ontzettend groot aantal opdrachten, en de processor werkt die opdrachten allemaal achter elkaar af. Deze afhandeling is dus sequentieel, ze worden één voor één afgewerkt. Dat is het Von Neumann-principe.
Die opdrachten worden wel ontzettend snel achter elkaar uitgevoerd, maar het zou natuurlijk nog veel sneller gaan als de opdrachten tegelijkertijd uitgevoerd zouden kunnen worden. Maar dat kan niet door het Von Neumann-principe, en daarom wordt dat ook wel de Von Neumann-bottleneck genoemd.
Er wordt steeds geprobeerd een oplossing te vinden voor die bottleneck, in ieder geval om de snelheid te verhogen.
De kloksnelheid nog meer verhogen lukt bijna niet meer, daarom zijn er andere oplossingen bedacht:
  • Coprocessor.
    Gebruik maken van een ondersteunende processor, een zogenaamde coprocessor: naast de CVE wordt een extra processor ingebouwd die speciale taken uitvoert. Vanaf de 80486 wordt er al gewerkt met een coprocessor, die zware rekentaken op zich neemt.
  • Hyper Threading.
    Deze technologie werd voor het eerst door de Pentium 4-processor gebruikt.
    Computerprogramma's worden gesplitst in verschillende, parallelle "instructiestromen".
    Hyper Threading maakt het mogelijk om de verschillende instructiestromen gelijktijdig te laten verwerken door één processor.
    Vroeger werden commando's altijd na elkaar uitgevoerd. Nu kan commando B beginnen, terwijl commando A nog aan de gang is; dit noemt men ook wel pipelining.
  • Dual core.
    Een dual core-processor is een processor waarbij twee processorkernen op één chip zitten.
    Er zitten op één chip dus eigenlijk twee complete processoren, maar die hebben één enkele verbinding met het hoofdgeheugen; die verbinding moeten ze delen.
    In 2007 zijn de eerste processoren met 4 kernen op de markt gekomen, en er worden nu types ontwikkeld met 8 processorkernen.
  • Parallelle processoren.
    Bij het gebruik van parallelle processoren bevat de computer 2 of meer processoren, die elk een deel van de instructies (gelijktijdig) uitvoeren. Dit wordt alleen in mainframes (hele grote computers) toegepast.
  • Cache.
    Vanaf de Pentium wordt gebruik gemaakt van cache-geheugen, dat ongeveer 50 keer zo snel is als gewoon geheugen.

  3.1.4. Geheugen

Het geheugen van de computer wordt onderscheiden in extern en intern geheugen.
Je noemt het geheugen extern als de gegevens in dat geheugen niet gewist worden als de computer wordt uitgezet (behalve ROM-geheugen, dat hoort bij het intern geheugen, en wordt toch niet gewist bij het uitzetten van de computer).
Voorbeelden van extern geheugen zijn: de harde schijf (die zit meestal in de computer, maar hoort bij het extern geheugen), een floppydisk, een CDROM, een USB-stick, tape.

Er zijn drie soorten intern geheugen:
  • ROM : Read Only Memory
  • RAM : Random Access Memory
  • Cache geheugen
Elke geheugencel in de computer heeft een nummer, dat wordt het adres genoemd.
De computer onthoudt ook op welke plaats, dus op welk adres, hij gegevens opslaat.
Tegenwoordig wordt meestal met 32-bits adressering gewerkt, de adressen bestaan dan uit 4 bytes. Daarmee kun je 232 adressen gebruiken, dat is ongeveer 4000 MB, dus 4 Gigabyte.

Het interne geheugen (het RAM-geheugen) is ongeveer 10000 keer zo snel als de harde schijf.
De toegangstijd van intern geheugen wordt gemeten in nanoseconden (een nanoseconde is een miljardste seconde = 10-9 sec), en de toegangstijd van de harde schijf wordt gemeten in duizendsten van seconden.

Als je met een programma werkt dan wordt dat programma van de harde schijf ingelezen, en in het werkgeheugen (=RAM-geheugen) gezet.
Als het programma erg groot is, wordt soms niet het hele programma in het werkgeheugen gezet, maar alleen het gedeelte dat je op dat moment nodig hebt.
Als je dan een ander onderdeel van het programma wilt gebruiken wordt dat eerst weer van de harde schijf gelezen en in het RAM-geheugen gezet.

Als je met een bestand werkt dat groter is dan het gedeelte van het RAM-geheugen dat voor die gegevens gereserveerd is, dan passen die gegevens dus niet in het (gereserveerde) werkgeheugen. Dan wordt het overgebleven gedeelte op een speciaal gedeelte van de harde schijf gezet, en dan wordt er op die manier mee gewerkt. Dat gedeelte van de harde schijf wordt het virtuele geheugen genoemd. Het is dus eigenlijk extern geheugen, maar het wordt gebruikt alsof het intern geheugen is. Maar als daar veel gebruik van gemaakt wordt dan werkt dat wel heel traag, en kun je beter het interne geheugen vergroten om de computer sneller te maken.

Cachegeheugen is ongeveer 50 keer zo snel als gewoon intern geheugen, maar het is ook behoorlijk duurder dan RAM-geheugen.
In het cache-geheugen worden de dingen gezet, die al eens gebruikt zijn (toen is het in het RAM-geheugen gezet, maar ook in het cache-geheugen), en die vaker gebruikt worden. Als de computer zoiets weer moet gebruiken kan het uit het cache-geheugen worden gehaald, en dat gaat veel sneller dan uit het RAM-geheugen.

  3.1.5. ROM

Het systeemgeheugen, ook wel het ROM (Read Only Memory) genoemd, wordt gebruikt om de systeemsoftware in op te slaan.
HET ROM-geheugen is niet "vluchtig", zoals RAM-geheugen: de gegevens van het ROM-geheugen blijven bewaard, ook als de computer uit is. De gegevens kunnen ook niet gewist worden.

       

Er zijn verschillende soorten ROM:
  • PROM's of programmable ROM worden in de fabriek geprogrammeerd, daarna kan er niets meer gewijzigd worden.
  • EPROM's of Erasable PROM's kunnen meerdere malen geprogrammeerd worden.
    Tegenwoordig zijn de meeste moederborden voorzien van de laatste soort: een flash-BIOS. Het kan met speciale software vernieuwd worden. En de term Read Only Memory is dus eigenlijk niet meer op zijn plaats.
    Deze nieuwere chips zijn tevens geschikt voor Plug and Play: ze kunnen signalen van randapparaten ontvangen en interpreteren en hun instellingen daarop aanpassen.
Het ROM-geheugen bevat de BIOS.
BIOS is de afkorting van Basic Input Output System, en het bevat een aantal programma's die de computer op de hardware instellen. Meestal is dit 1 MB groot.
De BIOS is dus software die verantwoordelijk is voor de besturing van schijven, toetsenbord, monitor, muis, etc. Het gedraagt zich als een brug tussen het besturingssysteem en de hardware.

De BIOS zorgt er ook voor dat de gegevens uit de CMOS worden gelezen.
CMOS is de afkorting van Complementary Metal Oxide Semiconductor.
CMOS is een RAM-chip waarop de data bewaard blijven met behulp van een klein batterijtje. Het is een zeer klein geheugen van ongeveer 100 of 200 bytes, en het heeft betrekking op o.a. de harde schijven, het toetsenbord, de CPU, de waarden voor de chipset, de datum en de tijd, enz.

SETUP
De meeste gegevens worden door de fabrikant in het CMOS geprogrammeerd, maar als je de configuratie van de PC wijzigt (vb. nieuwe harde schijf) moet je die wijzigingen kunnen aanpassen. De standaard (default) instellingen kunnen gewijzigd worden m.b.v. het SETUP programma.

Je kunt het Setup programma meestal oproepen door de [delete-toets] of de [F1-toets] in te drukken tijdens het opstarten van de PC (op de monitor is tijdens het opstarten te zien welke toets je moet gebruiken).

  3.1.6. RAM

Het werkgeheugen, ook wel het RAM (dat is de afkorting van Random Access Memory) genoemd, wordt door de computer gebruikt voor de tijdelijke opslag van data.
De gegevens worden meestal op de harde schijf bewaard, maar de processor kan er alleen mee werken als ze in het werkgeheugen worden geladen.
Dat betekent bijvoorbeeld dat als je aan het typen bent het programma en de ingetypte tekst beide in het werkgeheugen zijn opgeslagen.
Als de stroom uitvalt zal de tekst, die nog niet is opgeslagen, verloren gaan. Het programma staat waarschijnlijk op de harde schijf en kan dus gemakkelijk weer opgestart worden.

Daarom wordt het RAM geheugen ook wel het vluchtig geheugen genoemd.
Hoe meer RAM geheugen in je computer zit, hoe minder de pc gegevens van de harde schijf hoeft in te lezen (wat aanmerkelijk trager verloopt dan gegevens lezen uit het RAM geheugen). De toegangstijd van het RAM geheugen is meestal iets tussen de 10 en 100 nanoseconden (dat zijn miljardste seconden), terwijl die van harde schijven meestal in de buurt van de 9 ms (milliseconden) zit.



De grootte van het intern geheugen bepaalt voor een deel de snelheid van de computer.
Als je het RAM-geheugen uit wilt breiden dan kun je gewoon een RAM-module kopen, en dat in de socket plaatsen.
Je moet dan wel weten welk type RAM-geheugen vereist is op je moederbord.
PC's hebben tegenwoordig vaak 2 GB RAM, beter nog is 4 GB, en over een paar jaar is dat misschien nog veel meer.

We kunnen twee soorten RAM onderscheiden: dynamisch ("gewoon"RAM) en statisch RAM (dat is cache-geheugen en dus eigenlijk geeen RAM).

  1. DRAM
    Het traditioneel geheugen is het DRAM, of dynamisch RAM.
    Dit geheugen moet om de zoveel milliseconden opgefrist worden (refresh), omdat de condensatoren in de chip zichzelf ontladen.
    DRAM is goedkoper dan SRAM, maar ook minder snel.
    Er worden voortdurend nieuwe types op de markt gebracht, tegenwoordig wordt meestal DDR SDRAM (Double Data Rate Synchronous Dynamic RAM) gebruikt.
    DDR kan per kloktik twee keer data versturen, en SDR (Single Data Rate) RAM maar één keer per kloktik. Daarom wordt DDR RAM geheugen dat op 200 Mhz loopt vaak aangeduid als 400 Mhz geheugen.
    De moederbordsnelheid bepaalt welke geheugensnelheid gebruikt kan worden.
    Op een moederbord met een FSB van 200 MHz kun je ook 166 MHz RAM-geheugen zetten, maar een deel van de snelheid van het moederbord blijft dan onbenut. (maar als het DDR is, is de eigenlijke snelheid van het geheugen 332 MHz)

    Het RAM-geheugen is beschikbaar in 64 bit modules, die men DIMM's noemt, of Dual Inline Memory Module. Soms worden ook nog SIMM's gebruikt.
    SIMM staat voor Single Inline Memory Module. Vroeger waren ze 8 bits breed, tegenwoordig 32 bits.
    Dat heeft tot gevolg dat je bij 64 bit processoren 2 SIMM's nodig hebt, die dan in paren gemonteerd worden, en dat noem je een bank.
    Bij DIMM's is dat, tenminste bij 64-bit processoren, niet nodig, omdat ze zelf 64 bits breed zijn.
  2. SRAM
    SRAM betekent statisch RAM geheugen.
    In tegenstelling tot DRAM werkt het niet met condensatoren, maar met transistoren (aan/uit schakelaars), en daardoor blijft het zijn inhoud bewaren (zonder gerefresht te worden). Dit geheugen is ook veel sneller dan het DRAM, en wordt daarom ook gebruikt in L1 en L2-cache geheugen .

  3.1.7. Cache geheugen

Het cache-geheugen is geheugen dat een buffer vormt tussen het werkgeheugen en de processor.
Zoiets is nodig omdat moderne processoren zó snel zijn dat ze de gegevens veel sneller kunnen verwerken dan het werkgeheugen ze kan aanleveren.
Door het plaatsen van (dure) statische RAM chips als buffer tussen het intern geheugen en de processor kan de werking van de processor aanzienlijk versneld worden.

De cache bestaat uit speciale (zeer dure) geheugenchips die veel sneller zijn dan die van het gewone werkgeheugen.
Gegevens worden vaak meer dan één keer gebruikt.
Eenmaal gebruikte gegevens kunnen dan uit het veel snellere cache-geheugen worden gehaald, zodat de processor niet op het werkgeheugen hoeft te wachten.
Bovendien worden de gegevens in aaneengesloten blokken binnengehaald, en daardoor is de kans groot dat bij het uitvoeren van een programma, er gegevens worden gebruikt die zich al in de cache bevinden.

Bij de Pentium 4-processor is de zgn. level 1-cache (L1) in de processor zelf ingebouwd, en die is 20 KB groot. De omvang is relatief klein, maar door zijn plaats op de processor is het effect groot.
En verder wordt er nog een tweede cache ingebouwd [second level cache, L2] om de interne cache van de processor aan te vullen, en die is 1 MB bij de nieuwste processoren. Tegenwoordig zit die trouwens meestal op dezelfde chip als de processor.
Het zijn statische RAM-chips (SRAM). Dit soort geheugenchips is veel sneller dan de gebruikelijke dynamische RAM chips (DRAM), maar ook veel duurder.
In principe is het niet mogelijk om cache geheugen toe te voegen, dit in tegenstelling tot het RAM geheugen.