Geheugenadres
Uit Wikipedia, de vrije encyclopedie
Het werkgeheugen van een computer bestaat uit een groot aantal kleine eenheden van dezelfde grootte. Elk van deze eenheden is toegankelijk via een uniek nummer. Dit nummer wordt een geheugenadres (Eng: memory address) genoemd.
Inhoud |
[bewerk] Uitleg
[bewerk] Byte
De adresseerbare eenheden van het geheugen zijn meestal bytes (8 bits). Alleen voor hele simpele processoren, zoals die in toetsenborden gebruikt worden, worden wel 4-bits processoren gebruikt.
[bewerk] Woord
De fysieke geheugeneenheden ('woorden') zijn tegenwoordig meestal groter, namelijk 32-bits (4 bytes) of 64-bits (8 bytes). Dit betekent dat elke eenheid 1 byte aan data kan bevatten. Dit heet de woordbreedte van een computer. Er bestaan computers met woordbreedtes van meer dan 64 bits. Vroeger heeft men wel computers gemaakt met een woordbreedte van 12 en 48 bits, maar dit is tegenwoordig niet meer gebruikelijk.
[bewerk] Adresruimte
Zulke adressen worden doorgaans geschreven in hexadecimale vorm. Bijvoorbeeld, een geheugen van 64kB kan geadresseerd worden door met de adressen van 000016 tot en met FFFF16. Dit is een 16-bits adres. De 8-bits processoren uit de jaren 80 hadden doorgaans een adresruimte van deze grootte. Tegenwoordig is een adresruimte van gigabytes gebruikelijk, en dit neemt alsmaar toe. Voor het adresseren van 4 gigabyte is een 32-bits adres nodig.
[bewerk] Adresbus
De microprocessor heeft aan de buitenkant een aantal verbindingen die de adresbus heten. Op deze verbindingen (32 stuks in het geval van een 32-bits adresbus) komt van het adres te staan waarvan de processor de waarde uit het geheugen wil lezen of schijven. De data wordt via de databus uitgewisseld. De grootte hiervan is gelijk aan de woordbreedte van de computer.
[bewerk] Meer over het geheugen
[bewerk] Swapping
In de wat grotere computersystemen verwijst een geheugenadres in een actief programma vaak niet meer rechtstreeks naar het geheugenadres dat aangeboden wordt aan de geheugenchips. De memory manager, beheerd door het besturingssysteem, zit hier nog tussen. Deze vertaalt de logische adressen (zoals de software ze ziet) naar fysieke adressen (zoals de hardware ze ziet). Het belangrijkste nut hiervan is dat weinig gebruikte stukken geheugen tijdelijk op de harde schijf bewaard kunnen worden. Dit mechanisme wordt swapping genoemd. Het logische geheugen dat op deze manier wel te adresseren is, maar niet direct adresseerbaar is (omdat het naar de schijf geswapt is) heet virtueel geheugen.
[bewerk] Von Neumann
Computers die met het systeem van een adresseerbaar geheugen werken (dit zijn bijna alle computers) heten Von Neumann-computers. Zowel het uit te voeren programma als de gegevens staan in dit geheugen. Het gegeven dat minder informatie over de databus gestuurd kan worden dan de microprocessor kan verwerken heet de Von Neuman bottleneck.
Er bestaan ook computers die niet volgens de Von Neumann-architectuur werken. Voorbeelden zijn:
- De zogenaamde Harvard-architectuur. Dit is is slechts een variant op Von Neumann waarbij de adres/databussen voor data en instructies gescheiden zijn.
- Neurale netwerken.
- Parallelle computers. Deze bestaan uit een aantal CPU's variërend van twee tot duizenden niet middels één data/adresbus met elkaar communiceren, maar middels vele (vaak seriele) verbindingen. Elke CPU is toch weer een kleine von Neumann computer. Veel moderne supercomputers werken volgens dit principe waarop zeer veel varianten mogelijk zijn. Een bekende topologie is de hypercube waarbij op elk hoekpunt van een denkbeeldige n-dimensionale kubus een processor zit die via de ribben verbonden is met zijn buurprocessoren. Homecomputers met meerdere (op het ogenblik tot acht) processoren werken gewoon met een von Neumann architectuur waarbij meerdere CPU's hezelfde geheugen aanspreken. Homecomputers die in een netwerk gezamenlijk een berekening uitvoeren, zoals in het SETI project, zijn in feite wel een parallelle computer.
- Array processoren. Hierbij wordt een aantal FPU's achter elkaar geschakeld waarbij de uitkomst van de eerste berekening in de eerste FPU de input is voor een volgende, enzovoort. Berekeningen die uit meerdere stappen bestaan worden op deze manier parallel uitgevoerd. Traditionele supercomputers werken volgens deze architectuur.