| De SAP-1 (Simple Assembly Program-computer, een hypothetische computer die vaak wordt gebruikt in inleidende computerarchitectuurcursussen) voert instructies uit in een fetch-decode-execute-cyclus. Hier is een overzicht:
1. Ophalen: Het adres van de instructie (opgenomen in de programmateller, pc) wordt naar het geheugen verzonden. Het geheugen haalt de instructie van dat adres op en plaatst deze in het instructieregister (IR). De pc wordt vervolgens opgehoogd om naar de volgende instructie te verwijzen.
2. Decoderen: De besturingseenheid decodeert de instructie in de IR. Dit omvat het identificeren van de opcode (het deel van de instructie dat de uit te voeren bewerking specificeert) en de operanden (de gegevens waarop de bewerking zal inwerken). De operanden kunnen directe waarden zijn (ingebed in de instructie zelf), adressen van geheugenlocaties of registernummers.
3. Uitvoeren: Op basis van de gedecodeerde opcode stuurt de besturingseenheid de juiste acties:
* Rekenkundige/logische bewerkingen: Als de instructie een rekenkundige bewerking (ADD, SUB, etc.) of een logische bewerking (AND, OR, etc.) is, worden de operanden (opgehaald uit het geheugen of uit registers zoals gespecificeerd) naar de Arithmetic Logic Unit (ALU) gestuurd. De ALU voert de bewerking uit en slaat het resultaat op in een gespecificeerd register of geheugenlocatie.
* Gegevensoverdrachtbewerkingen: Instructies zoals LOAD en STORE verplaatsen gegevens tussen geheugen en registers. LOAD verplaatst gegevens van een geheugenlocatie naar een register; STORE verplaatst gegevens van een register naar een geheugenlocatie.
* Instructies voor controlestroom: Deze instructies veranderen de volgorde van uitvoering van instructies.
* SPRING: De pc wordt geladen met een nieuw adres dat in de instructie is opgegeven, waardoor het programma naar een andere locatie springt.
* BRANCH (voorwaardelijke sprong): De pc wordt alleen met een nieuw adres geladen als aan een bepaalde voorwaarde (bijvoorbeeld de waarde van een register is nul) is voldaan. Anders gaat de uitvoering verder met de volgende instructie.
* HALT: De processor stopt de uitvoering.
Voorbeeld:
Laten we zeggen dat we de instructie `ADD R1, R2` hebben (voeg de inhoud van register R1 toe aan register R2 en sla het resultaat op in R2).
1. Ophalen: De pc wijst naar de geheugenlocatie met `ADD R1, R2`. Deze instructie wordt opgehaald en in de IR geladen. De pc wordt verhoogd.
2. Decoderen: De besturingseenheid herkent "ADD" als de opcode en identificeert R1 en R2 als de operanden (registers).
3. Uitvoeren: De besturingseenheid stuurt de volgende acties:
* De inhoud van R1 wordt opgehaald.
* De inhoud van R2 wordt opgehaald.
* De ALU telt de twee waarden bij elkaar op.
* Het resultaat wordt opgeslagen in R2.
De cyclus herhaalt zich vervolgens met de volgende instructie waarnaar de pc verwijst. De specifieke details van registergebruik, geheugenadresseringsmodi en instructieformaten variëren enigszins, afhankelijk van de specifieke SAP-1-implementatie die in een leerboek of cursus wordt beschreven. De fundamentele cyclus van ophalen, decoderen en uitvoeren blijft echter constant. |