Hoe je conventioneel geheugen effectief kunt begrijpen
Eerlijk gezegd kan het nogal ingewikkeld zijn om de verschillende soorten geheugen in een computer uit te leggen. Je hebt ROM, RAM, DRAM, SRAM, NAND, NOR-flashgeheugen – het is een heleboel. En eerlijk gezegd worden de meeste hiervan tegenwoordig in specifieke niches gebruikt. Veel van de “oudere” typen – zoals conventioneel geheugen – zijn grotendeels van de radar verdwenen, maar het is best interessant om te zien hoe ze allemaal in de computergeschiedenis passen. Zo is ROM, dat vroeger een grote rol speelde bij de opslag van BIOS en firmware, vrijwel vervangen door flashgeheugen dat goedkoper en herschrijfbaar is. Meestal is dat NOR-flashgeheugen, maar NAND-flashgeheugens zijn tegenwoordig ook gangbaar. Maar soms hebben mensen het nog steeds over “conventioneel geheugen”, ook al is het meestal slechts een historische term die nieuwkomers in verwarring brengt.
Een korte geschiedenisles op de pc
Pc’s zagen er niet altijd uit zoals de gestroomlijnde machines van nu. Vroeger waren ze log, duur en behoorlijk ondermaats. Eigenlijk konden alleen grotere bedrijven en organisaties ze betalen, en de softwarewereld was een puinhoop: geen eenvoudige downloads, geen browsers (want ja, internet? Dat bestond nog niet echt) en al helemaal geen schattige kattenplaatjes. De eerste computers werkten meestal via de opdrachtregel en de meeste konden maar één ding echt goed: ontworpen zijn voor specifieke taken. De kosten vormden een grote barrière, waardoor ze niet bepaald toegankelijk waren voor de doorsnee burger.
Toen kwam de IBM PC, die een ware game-changer was. Hij creëerde niet het internet of katten, maar maakte computers min of meer voor iedereen toegankelijk. Het was een apparaat voor algemeen gebruik, niet supergoedkoop, maar betaalbaar genoeg om wijdverspreid te worden gebruikt. Daardoor bleef de term ‘pc’ bestaan, ook al is hij nu wat aan het vervagen. Natuurlijk gingen met de populariteit ook de gebruikelijke problemen gepaard: beperkingen, compatibiliteitsproblemen, dat soort dingen. Maar veel daarvan is in de loop der jaren opgelost, hoewel er nog steeds enkele eigenaardigheden in oudere systemen zitten.
De Intel 8086
Deze CPU vormde in feite de ruggengraat van de eerste pc’s. Het was de eerste echt universele CPU, maar hij had wel wat extra’s. Hij kon slechts 1 MB geheugen verwerken – niet meer. En dat is niet alleen RAM; dat is alles wat in het geheugen is opgeslagen – BIOS, grafische kaart, randapparatuur – noem maar op. De eerste 640 KB daarvan was bestemd voor RAM, het zogenaamde “conventionele geheugen”, en de resterende 384 KB was gereserveerd voor andere systeemonderdelen, wat tot veel verwarring leidde, vooral vanwege de manier waarop geheugengroottes worden aangeduid (denk aan: 1000 versus 1024).Dit stukje geschiedenis verklaart waarom de capaciteit van harde schijven soms wat afwijkt van wat er wordt geadverteerd – vanwege het verschil tussen decimale en binaire prefixen.
Vroege pc’s, die graag de grenzen opzochten, gebruikten een methode genaamd geheugensegmentatie om deze beperkingen te omzeilen. Moderne systemen gebruiken echter nu virtuele geheugenadressen, die alleen fysiek geheugen in kaart brengen, zodat programma’s niet meer met die beperkingen te maken hebben. Toch is het nogal vreemd dat deze oude beperkingen van invloed zijn op hoe we hardware vandaag de dag nog steeds zien.
Nalatenschap
In de loop der tijd hebben verschillende trucs en technische verbeteringen ervoor gezorgd dat pc’s meer geheugen konden aanspreken, maar het kernprobleem was de beperkte adresruimte van de 8086 CPU. Tegenwoordig gebruiken besturingssystemen virtueel geheugen, wat betekent dat ze de werkelijke fysieke geheugenindeling voor software verbergen, wat de zaken veel flexibeler maakt. In plaats van rechtstreeks toegang te krijgen tot daadwerkelijke geheugenadressen, krijgen apps virtuele adressen die het besturingssysteem vertaalt. Daardoor is het oude concept van “conventioneel geheugen” vrijwel verdwenen en vervangen door een systeem dat het volledige geheugen toegankelijk *laat lijken*, ongeacht de daadwerkelijke fysieke beperkingen.
In de praktijk is dit de reden waarom je nauwelijks nog over die oude geheugenbeperkingen hoort. Toch is het handig om deze geschiedenis te begrijpen wanneer je problemen met heel oude systemen wilt oplossen of wanneer je oudere software wilt draaien.
Afronding
In principe bestond “conventioneel geheugen” slechts uit de eerste 640-680KiB van de 1MiB adresseerbare ruimte in vroege pc’s, bepaald door de beperkingen van de Intel 8086 CPU. Dat deel diende als systeem-RAM, terwijl de rest werd gebruikt voor BIOS, grafisch geheugen en randapparatuur. Tegenwoordig is die term volledig achterhaald, omdat moderne computers 64-bits architecturen met virtueel geheugen gebruiken, waardoor toegang tot *veel* meer mogelijk is – theoretisch tot 16EiB. Fysieke geheugenadressen zijn nu geabstraheerd en het hele concept van vaste segmenten of beperkingen is vrijwel verdwenen.
Ik snap niet waarom het soms in discussies blijft hangen, maar het begrijpen van de oorzaken maakt het oplossen van problemen of het omgaan met oudere software in ieder geval een stuk makkelijker. Want Windows en hardwarefabrikanten maken dingen natuurlijk graag ingewikkelder dan nodig is.