Loading AI tools
Van Wikipedia, de vrije encyclopedie
Registergeheugen is intern geheugen dat gebruikt wordt in processors om waarden op te slaan waar de processor direct toegang toe moet hebben om zijn werk te kunnen voltooien.
Een processor, zoals die normaal voorkomt in computers, is een Von Neumannmachine die voortdurend de drie stappen van Von Neumann uitvoert: Haal de volgende instructie op - decodeer de instructie - voer de instructie uit.
Alle data in de computer zijn gecodeerd in de vorm van bitrijen - rijen van 1'en en 0'en. Om de bovengenoemde stappen uit te kunnen voeren, moet de processor een instructie in de vorm van een bitrij ophalen, vervolgens uit deze bitrij afleiden welke instructie de bitrij voorstelt en ten slotte de instructie uitvoeren. Tijdens het uitvoeren van dit werk heeft de processor een plaats nodig om de invoer en eventuele tussenresultaten op te slaan. Dit is bijvoorbeeld nodig voor het optellen of vermenigvuldigen van twee waarden: invoer, uitvoer en tussenresultaten moeten allemaal ergens opgeslagen worden, totdat de processor het resultaat wegzet en met de volgende instructie kan beginnen. Hiervoor zou een deel van het RAM, het zogenaamde werkgeheugen, waarmee Iedere computer uitgerust is, gebruikt kunnen worden. Dit geheugen is via een bus verbonden met de processor. De afstand tussen processor en dit geheugen (te overbruggen via de bus) maakt een dergelijke oplossing echter ondoenlijk: voor iedere microstap van de processor zouden de bits af- en aangevoerd moeten worden over die enorm lange bus. Om deze reden beschikt de processor over een hoeveelheid geïntegreerd geheugen dat hij directer kan benaderen. Deze groepen cellen worden registers genoemd en vormen samen het registergeheugen.
Zoals eerder opgemerkt, bevindt het registergeheugen zich direct op de processor. De processor heeft hierdoor veel sneller toegang tot de data die in zijn registers opgeslagen liggen - de datapaden tussen de registers en de bewerkingseenheden van de processor zijn extreem kort. Het gebruik van registergeheugen is dan ook ettelijke malen sneller dan het gebruik van RAM, zowel in de toegangstijd tot het geheugen als in de opzoektijd (die gelijk is aan 0 μs).
Hier staat tegenover dat de registers in de processor geïntegreerd zijn; registers zijn dus vele malen duurder per eenheid van opslag dan RAM en nog eens veel duurder dan bijvoorbeeld opslagruimte op een harde schijf. Bovendien is het aantal registers gelimiteerd door de beschikbare oppervlakte van de processor, hoewel steeds verdergaande miniaturisering de mogelijke hoeveelheid geheugen op de processor wel vergroot. Het is dus vooral zaak voor de besturing van de computer (zowel in de hardware-zin als in de zin van de programma's) om een optimale verdeling van de benodigde geheugencapaciteit tussen registergeheugen en RAM te bereiken.
In grote lijnen zijn er twee soorten bitrijen waar een processor mee te maken krijgt tijdens zijn werk:
Hoewel beide bitrijen feitelijk niet meer zijn dan rijen 1'en en 0'en (strikt volgens het principe van John von Neumann), zijn er toch verscheidene processors die hun beschikbare registers "specialiseren" naar toepassing (adressen of data). Hoewel de fysieke opbouw van de twee soorten registers niet verschilt, is het door deze onderverdeling vaak mogelijk om betere prestaties te behalen in de werking van de processor, omdat er bij de implementatie van een aantal instructies in de processor van uit kan worden gegaan dat bepaalde registers bepaalde soorten data bevatten.
Overigens is de bovengenoemde scheiding niet absoluut. Er zijn genoeg processors op de markt die een dergelijk onderscheid niet aanbrengen, of die wel een onderscheid aanbrengen, maar dan ook een derde groep van registers hebben die beide soorten data mogen bevatten, of waarvan de adresregisters puur voor adressen zijn en de dataregisters data of adressen mogen bevatten.
Er zijn verschillende soorten registers te onderscheiden:
Deze wildgroei aan mogelijkheden zorgt voor een aanzienlijke uitdaging aan schrijvers van compilers. Hun compilers vertalen programma's in machine-instructies en bouwen daarbij ook een verdeling op van opslag van data over registers en geheugen, registerallocatie genoemd. Het is voor de programmeur een grote uitdaging om programma's zo te vertalen dat de opgebouwde verdeling optimaal is en zo de beste prestaties uit het gehele systeem haalt.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.