Der nächste Schritt einer CPU -Anweisung hängt vollständig davon ab, was die * aktuelle * Anweisung ist und was die Architektur der CPU ist. Es gibt keine einzige Antwort. Wir können jedoch den allgemeinen Prozess skizzieren:
Nachdem eine CPU eine Anweisung abgeschlossen hat, ist der typische Fluss:
1. Inkrementieren Sie den Programmzähler (PC): Der PC ist ein Register, in dem die Speicheradresse der nächsten Ausführung der nächsten Anweisung enthält. Die CPU erhöht den PC automatisch, um auf die nächste Anweisung nacheinander zu verweisen (es sei denn, ein Sprung oder eine Zweiganweisung hat ihn geändert).
2. Die nächste Anweisung abrufen: Die CPU holt die Anweisung an der Adresse, die im PC vom Speicher gespeichert ist.
3. Dekodieren Sie die Anweisung: Die abgerufene Anweisung ist dekodiert, um festzustellen, welche Vorgänge ausgeführt werden müssen und welche Operanden (Daten) beteiligt sind.
4. Führen Sie den Anweisungen aus: Die CPU führt die Anweisung aus und führt den angegebenen Vorgang aus. Dies kann den Zugriff auf Speicher, die Durchführung von arithmetischen oder logischen Operationen, die Manipulation von Registern oder die Steuerung des Programmflusses (Sprünge, Zweige usw.) beinhalten.
5. zurückschreiben (falls erforderlich): Wenn die Anweisung das Schreiben von Daten an einen Register- oder Speicherort beinhaltet, wird das Ergebnis zurückgeschrieben.
Was macht es komplex:
* Anweisungenstypen: Unterschiedliche Anweisungen (arithmetischer, logischer, Speicherzugriff, Steuerfluss) haben unterschiedliche Ausführungspfade.
* Pipeline: Moderne CPUs verwenden Pipelining, wobei mehrere Anweisungen gleichzeitig in verschiedenen Phasen verarbeitet werden (abrufen, dekodieren, ausführen, zurückschreiben). Der "nächste Schritt" für eine Anweisung könnte mit der Ausführung anderer Anweisungen verflochten sein.
* Zweigvorhersage: Wenn die aktuelle Anweisung ein Zweig (bedingter Sprung) ist, kann die CPU versuchen, das Ergebnis vorherzusagen, um zu vermeiden, dass das Warten auf die Bewertung des Zweigzustands wird, bevor nachfolgende Anweisungen abgerufen werden. Wenn die Vorhersage falsch ist, ist eine Pipeline -Spülung erforderlich.
* Interrupts: Externe Ereignisse (Interrupts) können die normale Ausführungssequenz für Anweisungen unterbrechen und die CPU dazu zwingen, den Interrupt zu verarbeiten, bevor das ursprüngliche Programm wieder aufgenommen wird.
* Cache: Der Speicherzugriff ist erheblich schneller, wenn sich die Daten im CPU -Cache befinden. Der nächste Schritt der CPU könnte das Überprüfen des Cache vor dem Zugriff auf den Hauptspeicher umfassen.
Kurz gesagt, es gibt einen allgemeinen Zyklus, aber die Besonderheiten sind unglaublich kompliziert und hängen von der Anweisung und der CPU -Architektur ab. Der scheinbar einfache "nächste Schritt" ist ein hochoptimierter und komplexer Prozess.