Wat is een instructieregister?
In termen van computerhardware is een instructieregister een element in de centrale verwerkingseenheid (CPU) van een computer of ander apparaat dat de programmeerinstructie bevat die wordt uitgevoerd aan het begin van de volgende klokcyclus zoals voorgeschreven door andere delen van de PROCESSOR. Andere elementen van de CPU, zoals de instructiedecoder, vertrouwen op het instructieregister om deze informatie te bewaren, zodat deze kan worden gedecodeerd, opgelost en uiteindelijk uitgevoerd. Bij sommige typen microprocessorarchitectuur kan er meer dan één instructieregister zijn, zodat meerdere instructies tegelijkertijd kunnen worden verwerkt, waardoor een logische assemblagelijnstijl wordt gevormd die bekend staat als een pijplijn. In het algemeen worden nieuwe instructies aan het instructieregister gegeven via een ander deel van de CPU dat bekend staat als de programmateller, die een zeer vergelijkbaar doel dient, maar kan doorgaan naar de volgende instructie terwijl informatie die het instructieregister bevat wordt uitgevoerd.
Een register is een reeks fysieke schakelaars op een microprocessor of printplaat die kunnen worden in- of uitgeschakeld, waardoor elke schakelaar equivalent is aan een bit. Wanneer verschillende van de schakelaars, ook wel latches genoemd, zijn gekoppeld, kunnen ze binaire gegevens opslaan, zoals nummers, die kunnen worden omgezet in geheugenadressen of instructiecodes. Binnen de CPU kan het instructieregister ofwel het adres bevatten in het computergeheugen van de instructie die wordt uitgevoerd of, voor efficiëntie, kan het de instructie zelf bevatten. Deze informatie wordt doorgegeven aan het register via een ander register dat bekend staat als de programmateller, die in de meeste gevallen vooruit springt naar de volgende uit te voeren instructie na het doorgeven van de huidige instructie.
De soorten instructies die door de registers worden verwerkt, zijn over het algemeen commando's op laag niveau van assemblagetalen die uiteindelijk worden vertaald in machinecode of bytecode. Deze verschillen duidelijk van instructies in programmeertalen van een hoger niveau, omdat de montage-instructies op een zeer kleine, directe schaal werken. Een voorbeeld is een regel code op hoog niveau die twee getallen bij elkaar optelt en de resultaten opslaat in een variabele, die slechts één regel code op hoog niveau nodig heeft om uit te drukken. Wanneer de code wordt gecompileerd, kunnen een dozijn of meer instructies worden gegenereerd om de taak te voltooien, waarbij elke instructie iets eenvoudigs is, zoals het door elkaar schakelen van waarden tussen RAM-geheugen en een hulpprogramma-register.
Nadat naar een instructie is verwezen door het instructieregister, wordt deze doorgegeven aan de instructiedecoder zodat de instructie kan worden omgezet in machinecode. Verwijzingen naar geheugenlocaties die variabelen of andere informatie kunnen bevatten, zijn opgelost en die informatie wordt soms in andere registers geplaatst. Ten slotte wordt de daadwerkelijke instructie uitgevoerd. Gedurende deze tijd zal de programmateller door de CPU worden verhoogd om naar de volgende instructie te wijzen die door het instructieregister wordt vastgehouden, zodat het proces kan worden herhaald totdat het hele programma is uitgevoerd.