De volgende stap van een CPU-instructie hangt volledig af van wat de *huidige* instructie is en wat de architectuur van de CPU is. Er is geen enkel antwoord. We kunnen het algemene proces echter schetsen:
Nadat een CPU een instructie heeft voltooid, is de typische stroom:
1. Verhoog de programmateller (pc): De pc is een register dat het geheugenadres bevat van de volgende uit te voeren instructie. De CPU verhoogt de pc automatisch zodat deze naar de volgende instructie in de juiste volgorde verwijst (tenzij een sprong- of vertakkingsinstructie deze heeft gewijzigd).
2. Haal de volgende instructie op: De CPU haalt de instructie op het adres dat in de pc is opgeslagen uit het geheugen.
3. Decodeer de instructie: De opgehaalde instructie wordt gedecodeerd om te bepalen welke bewerking moet worden uitgevoerd en om welke operanden (data) het gaat.
4. Voer de instructie uit: De CPU voert de instructie uit en voert de opgegeven bewerking uit. Dit kan inhouden dat u toegang krijgt tot het geheugen, rekenkundige of logische bewerkingen uitvoert, registers manipuleert of de programmastroom controleert (sprongen, vertakkingen, enz.).
5. Schrijf terug (indien nodig): Als de instructie het schrijven van gegevens naar een register of geheugenlocatie omvat, wordt het resultaat teruggeschreven.
Wat het complex maakt:
* Instructietypen: Verschillende instructies (rekenkundig, logisch, geheugentoegang, besturingsstroom) hebben verschillende uitvoeringspaden.
* Pijplijn: Moderne CPU's maken gebruik van pipelining, waarbij meerdere instructies gelijktijdig in verschillende fasen worden verwerkt (ophalen, decoderen, uitvoeren, terugschrijven). De "volgende stap" voor één instructie kan verweven zijn met de uitvoering van andere instructies.
* Vertakkingsvoorspelling: Als de huidige instructie een vertakking is (voorwaardelijke sprong), kan de CPU proberen de uitkomst te voorspellen om te voorkomen dat moet worden gewacht tot de vertakkingsvoorwaarde is geëvalueerd voordat volgende instructies worden opgehaald. Als de voorspelling onjuist is, is een pijpleidingspoeling vereist.
* Onderbreekt: Externe gebeurtenissen (interrupts) kunnen de normale uitvoeringsvolgorde van instructies onderbreken, waardoor de CPU wordt gedwongen de interrupt af te handelen voordat het oorspronkelijke programma wordt hervat.
* Cache: Geheugentoegang is aanzienlijk sneller als de gegevens zich in de CPU-cache bevinden. De volgende stap van de CPU kan bestaan uit het controleren van de cache voordat toegang wordt verkregen tot het hoofdgeheugen.
Kortom, er is een algemene cyclus, maar de details zijn ongelooflijk ingewikkeld en zijn afhankelijk van de instructie en CPU-architectuur. De ogenschijnlijk eenvoudige ‘volgende stap’ is een sterk geoptimaliseerd en complex proces. |