Nästa steg i en CPU -instruktion beror helt på vad * nuvarande * instruktionen är och vad CPU:s arkitektur är. Det finns inget enda svar. Vi kan dock beskriva den allmänna processen:
Efter att en CPU har slutfört en instruktion är det typiska flödet:
1. ökning Programräknare (PC): Datorn är ett register som innehåller minnesadressen för nästa instruktion som ska köras. CPU:er ökar automatiskt datorn för att peka på nästa instruktion i sekvens (såvida inte en hopp- eller greninstruktion har förändrat den).
2. hämta nästa instruktion: CPU hämtar instruktionen på adressen lagrad i datorn från minnet.
3. avkoda instruktionen: Den hämtade instruktionen avkodas för att bestämma vilken operation som måste utföras och vilka operander (data) är involverade.
4. Utför instruktionen: CPU utför instruktionen och utför den angivna operationen. Detta kan innebära åtkomst till minne, utföra aritmetiska eller logiska operationer, manipulera register eller kontrollera programflöde (hopp, grenar etc.).
5. Skriv tillbaka (vid behov): Om instruktionen innebär att skriva data till ett register eller en minnesplats skrivs resultatet tillbaka.
Vad gör det komplext:
* Instruktionstyper: Olika instruktioner (aritmetik, logisk, minnesåtkomst, kontrollflöde) har olika exekveringsvägar.
* pipeline: Modern CPUS använder pipelining, där flera instruktioner behandlas samtidigt i olika steg (hämta, avkoda, utföra, skriva tillbaka). "Nästa steg" för en instruktion kan sammanflätas med utförandet av andra instruktioner.
* grenförutsägelse: Om den nuvarande instruktionen är en gren (villkorad hopp) kan CPU försöka förutsäga resultatet för att undvika att vänta på att grenvillkoret ska utvärderas innan de hämtar efterföljande instruktioner. Om förutsägelsen är fel krävs en rörledningsflush.
* avbrott: Externa händelser (avbrott) kan avbryta den normala instruktionsutförande -sekvensen, vilket tvingar CPU att hantera avbrottet innan det ursprungliga programmet återupptas.
* cache: Minnesåtkomst är betydligt snabbare om data finns i CPU -cachen. CPU:s nästa steg kan innebära att du kontrollerar cachen innan du får åtkomst till huvudminnet.
Kort sagt, det finns en allmän cykel, men detaljerna är oerhört komplicerade och beror på instruktions- och CPU -arkitekturen. Det till synes enkla "nästa steget" är en mycket optimerad och komplex process.