Voorpagina > Computers > Evolutie van PC’s: het geheugen

Evolutie van PC’s: het geheugen

Het eerste losse moederbord dat ik kocht was een 80286 moederbord met sockets voor SIPP modules: dat waren geheugenmodules met pinnetjes. De 30-pin SIPPs werden vrij snel al opgevolgd door 30-pin SIMMs (dezelfde modules maar dan zonder pootjes), later door 72-pin SIMMs en nog later door 168-pin DIMMs en die laatste gebruiken we intussen alweer ruim 10 jaar.

In de ZX81 hobbycomputer werd oorspronkelijk nog gebruik gemaakt van statisch geheugen (2 chips van 512 bytes per stuk): de stand van elk bit van het geheugen wordt in zo’n chip door een paar samenwerkende transistoren onthouden.

Maar geheugen kon pas echt groot gaan worden met de toepassing van dynamisch geheugen: hierin wordt elk bit opgeslagen in één (piepklein) condensatortje. Gegevens in dynamisch geheugen gaan verloren, tenzij ze regelmatig een „refresh” krijgen. Het voordeel van de Z80A microprocessor was dat deze ondersteuning voor het refreshen van dynamisch geheugen al ingebouwd had.

Oorspronkelijk bestond geheugen in een IBM compatibele PC (en hobbycomputers) uit een flinke reeks in het moederbord geprikte geheugenchips. Als je een PC kocht met 512KB geheugen, dan had het moederbord waarschijnlijk lege voetjes om nog 128KB geheugen bij te kunnen prikken, op zo op het maximum van 640KB RAM te kunnen komen. In die tijd was de prijs van computergeheugen al net zo volatiel als nu: de prijs kon best verdubbelen in een jaar tijd.

Parity

Volgens mij was het met de AT 286 dat IBM de „parity check” introduceerde: 12,5% aan extra geheugenchips zorgen ervoor dat als er ergens in een van de geheugenchips 1 bit niet goed werkt dit doorgegeven wordt aan de CPU (als NMI). En dan gebeurde dit:

parity-error

in de linkerbovenhoek van het scherm en verder niets meer. Het operating system DOS liep simpelweg helemaal vast. En dit is voor zover ik weet bij latere operating systems van Micosoft ook altijd zo gebleven. Behalve als er een geheugenmodule stuk is, kon deze melding kan ook optreden als gevolg van kosmische straling (ongeveer één keer per systeem per jaar).

Op de 30-pin SIMMs werd normaal gesproken altijd een 9e (of later: het 3e chipje) voor het paritybit toegevoegd, alleen in érg goedkope (merk-)systemen ontbrak dit in die tijd wel eens. Zo’n enkel paritybit is alleen geschikt voor detectie van fouten in een oneven aantal bits, zoals het spreekwoordelijke „omgevallen bitje”.

Bij de overschakeling op 72-pin SIMMs zou je 4 paritybits kunnen gaan combineren voor de iets betere ECC check. Alleen in theorie dan, want de 4 bytes kunnen onafhankelijk van elkaar geschreven kunnen worden en in zo’n geval wordt het herberekenen wel erg complex (en langzaam).

Er waren fabrikanten van geheugenmodules die bespaarden op de kosten door de parity niet in een geheugenchip op te slaan, maar door hem bij elke leesactie opnieuw te laten berekenen met een speciaal chipje op de SIMM. Dit werkte niet in alle systemen even goed, waarschijnlijk door de vertraging die deze berekening veroorzaakte. In die tijd werd er op nog veel meer manieren gerotzooid met geheugenmodules, waar ik al eerder een artikel over schreef.

Voor systemen waar nog betere check belangrijk was werden er SIMMs gemaakt met extra bits, voor bouwers die goedkoper geheugen wilden werden de paritybits weggelaten. Je kon 32-bits, 36-bits en 40-bits geheugenmodules kopen. Moederborden geschikt voor 40-bit SIMMs waren er bijna niet en in de praktijk stapte nu bijna iedereen over op geheugenmodules zonder parity (32 bits dus): omdat het goedkoper was, omdat de kwaliteit van geheugen toegenomen was en omdat het OS een gevonden fout toch niet kon oplossen.

De firma WED/ECMIC maakte adaptertjes waarmee je 4 30-pin SIMMs kon gebruiken in een socket bedoeld voor 1 72-pin SIMM.

SPF

Tegenwoordig bevatten DIMMs een kleine chip waarin de specificaties van de module zijn opgeslagen. Op die manier kan het moederbord zichzelf automatisch configureren op deze module. Het spreekt voor zich dat bij de allergoedkoopste partijen geheugenmodules deze chip gewoon ontbrak.

Rare DIMMs

Een van de vreemdste fenomenen op geheugengebied was dat je de eerste DIMMs te koop in een „gebufferde” en een „ongebufferde” versie. De bufferchips op de DIMM zorgden voor een vertraging en daar konden PC’s niet tegen.

Je kon bij DIMMs ook kiezen tussen een 3 Volt en een 5 Volt uitvoering. Het soort DIMMs is gecodeerd met een nokjes, als ze niet werken zullen ze ook niet in het voetje passen.

Waarom je deze dingen kon kopen is me nooit duidelijk geworden: ik ken geen enkel systeem dat kan werken met een ander type dan precies dat ene „standaardtype” DIMM.

Cache

Het cachegeheugen is een speciaal stuk snel geheugen in de PC, als het ware tussen de CPU en het gewone geheugen in. Vanaf de snelste typen 386DX werd het moederbord vaak uitgerust met cachegeheugen, omdat toen de processor te snel werd voor het gewone werkgeheugen.

Wilde je een systeem bouwen met veel werkgeheugen, meer dan wat de meeste mensen hadden, dan was het nodig om een grotere „Tag RAM” chip te plaatsen op het moederbord: de grootte van deze chip bepaalde namelijk hoeveel Megabyte van het werkgeheugen cache-baar was: alles daarboven wordt niet gecached en is dus erg traag.

Vanaf de 486 werden CPU’s geleverd met een ingebouwde cache. Maar omdat deze erg klein was werd door moederbordfabrikanten uiteraard nog steeds een externe cache toegevoegd: de cache in de CPU werd voortaan L1 cache genoemd en de cache op het moederbord L2 cache. De allergoedkoopste systemen hadden natuurlijk geen L2 cache.

Een korte periode was het zo dat je op sommige moederborden zelf een L2 cache kon toevoegen door het plaatsen van een COASt module (soms ook „CELP module” genoemd). Dit was een standaard die vreemd genoeg bedacht is door Motorola.

Vanaf de PentiumPro is in de meeste CPU’s ook de L2 cache ingebouwd. CPU’s die dit niet hebben bestaan nog wel, maar ze zijn altijd heel erg langzaam.

Videokaart

Sinds behoorlijk wat jaren is het normaal om de videokaart rechtstreeks toegang te geven tot het geheugen van de CPU. Dit is tegenwoordig niet meer zo bezwaarlijk als zeg 10 jaar geleden, omdat het geheugen steeds sneller geworden is.

In de jaren ‘90 was het op een systeem goed te merken wanneer je videokaart het systeemgeheugen als „framebuffer” gebruikte: bij een hoge resolutie werd het systeem er ongeveer de helft trager door.

Groot en snel

1GB = 1024MB = 1024*1024KB

De afgelopen 10 jaar is er niet zoveel ontwikkeling meer op geheugengebied als in de jaren ‘90. Het enige dat er nog verandert is dat geheugen steeds groter, sneller en goedkoper wordt. Momenteel worden computers uitgerust met minimaal 1GB geheugen en ondersteunen CPU’s vanwege de 32-bits adresbus maximaal 4GB geheugen. Geheugen is tegenwoordig zelfs zo goedkoop dat veel systemen, zelfs laptops, worden uitgerust met de maximum hoeveelheid geheugen.

Het kopieren van 64KB geheugen met het snelste kopieercommando van de Z80-A duurde 25 jaar geleden op de ZX Spectrum ongeveer een hele seconde. Als geheugen nu nog steeds dezelfde snelheid zou hebben, dan zou het opstarten van een PC met 1GB geheugen (16384 keer zoveel) ruim 4 uur kosten.

In de tijd dat IBM het systeem OS/2 wilde verkopen als opvolger van DOS, moest je 16MB geheugen hebben om het goed te kunnen gebruiken. In die tijd was 1MB of 4MB normaal en kostte uitbreiding naar 16MB je ruim 1.000 gulden. Dat was een bedrag dat niemand er voor over had om even OS/2 te kunnen uitproberen. Concurrent Microsoft kwam met Windows op de markt, dat genoeg had aan 4MB geheugen en wat dit kleine verschil betekende voor de verloop van de geschiedenis is bij iedereen bekend.

Chipfabrikanten zetten graag hun nieuwste productieprocessen in voor de productie van geheugenchips (Intel uitgezonderd). Dit omdat de structuur van een geheugenchip heel erg eenvoudig is; een grotere geheugenchip is gewoon meer van hetzelfde, dat is een gemakkelijke manier om het nieuwe productieproces toe te passen.

Links

  1. Nog geen reacties.