Anweisungszyklus - Instruction cycle

Der Befehlszyklus (auch Fetch-Decode-Execute-Zyklus oder einfach der Fetch-Execute-Zyklus genannt ) ist der Zyklus, den die Zentraleinheit (CPU) vom Hochfahren bis zum Herunterfahren des Computers durchläuft, um Befehle zu verarbeiten . Es besteht aus drei Hauptstufen: der Abrufstufe, der Dekodierungsstufe und der Ausführungsstufe.

Dies ist ein einfaches Diagramm, das die einzelnen Stufen des Abrufen-Decodieren-Ausführen-Zyklus veranschaulicht.

In einfacheren CPUs wird der Befehlszyklus sequentiell ausgeführt, wobei jeder Befehl abgearbeitet wird, bevor der nächste gestartet wird. In den meisten modernen CPUs werden die Befehlszyklen stattdessen gleichzeitig und oft parallel über eine Befehlspipeline ausgeführt : Der nächste Befehl beginnt mit der Verarbeitung, bevor der vorherige Befehl beendet ist, was möglich ist, da der Zyklus in einzelne Schritte unterteilt ist.

Rolle der Komponenten

Der Programmzähler (PC) ist ein spezielles Register, das die Speicheradresse des nächsten auszuführenden Befehls enthält. Während der Abrufphase wird die im PC gespeicherte Adresse in das Speicheradressregister (MAR) kopiert und dann wird der PC inkrementiert, um auf die Speicheradresse des nächsten auszuführenden Befehls zu "zeigen". Die CPU nimmt dann den Befehl an der vom MAR beschriebenen Speicheradresse und kopiert ihn in das Speicherdatenregister (MDR) . Der MDR fungiert auch als Zwei-Wege-Register, das aus dem Speicher geholte Daten oder Daten hält, die darauf warten, im Speicher gespeichert zu werden (aus diesem Grund wird es auch als Speicherpufferregister (MBR) bezeichnet). Schließlich wird der Befehl im MDR in das aktuelle Befehlsregister (CIR) kopiert, das als temporärer Haltepunkt für den gerade aus dem Speicher geholten Befehl dient.

Während der Dekodierungsstufe dekodiert die Steuereinheit (CU) den Befehl im CIR. Die CU sendet dann Signale an andere Komponenten innerhalb der CPU, wie beispielsweise die arithmetisch-logische Einheit (ALU) und die Gleitkommaeinheit (FPU) . Die ALU führt arithmetische Operationen wie Addition und Subtraktion und auch Multiplikation durch wiederholte Addition und Division durch wiederholte Subtraktion durch. Es führt auch logische Operationen wie UND , ODER , NICHT und binäre Verschiebungen durch. Die FPU ist für die Durchführung von Gleitkommaoperationen reserviert .

Zusammenfassung der Etappen

Die CPU jedes Computers kann basierend auf unterschiedlichen Befehlssätzen unterschiedliche Zyklen haben, die jedoch dem folgenden Zyklus ähnlich sind:

  1. Abrufstufe : Der nächste Befehl wird von der Speicheradresse geholt, die gegenwärtig im Programmzähler gespeichert ist, und im Befehlsregister gespeichert. Am Ende der Abrufoperation zeigt der PC auf den nächsten Befehl, der im nächsten Zyklus gelesen wird.
  2. Dekodierstufe : Während dieser Phase wird der codierte Befehl in dem Befehlsregister präsentiert wird durch den Decodierer interpretiert.
    • Lesen der effektiven Adresse : Im Falle einer Speicheranweisung (direkt oder indirekt) wird die Ausführungsphase während des nächsten Taktimpulses sein. Wenn der Befehl eine indirekte Adresse hat , wird die effektive Adresse aus dem Hauptspeicher gelesen, und alle erforderlichen Daten werden zur Verarbeitung aus dem Hauptspeicher geholt und dann in Datenregistern abgelegt (Taktimpuls: T 3 ). Wenn der Befehl direkt ist, wird während dieses Taktimpulses nichts getan. Wenn dies ein E/A-Befehl oder ein Registerbefehl ist, wird die Operation während des Taktimpulses ausgeführt.
  3. Ausführungsphase : Die Steuereinheit der CPU leitet die decodierten Informationen als Folge von Steuersignalen an die entsprechenden Funktionseinheiten der CPU weiter, um die von der Anweisung erforderlichen Aktionen auszuführen, wie z mathematische oder logische Funktionen darauf und das Ergebnis zurück in ein Register schreiben. Wenn die ALU beteiligt ist, sendet sie ein Bedingungssignal an die CU zurück. Das durch die Operation erzeugte Ergebnis wird im Hauptspeicher gespeichert oder an ein Ausgabegerät gesendet. Basierend auf der Rückmeldung von der ALU kann der PC auf eine andere Adresse aktualisiert werden, von der der nächste Befehl geholt wird.
  4. Zyklus wiederholen

Außerdem können bei den meisten Prozessoren Interrupts auftreten. Dadurch springt die CPU zu einer Interrupt-Service-Routine, führt diese aus und kehrt dann zurück. In einigen Fällen kann eine Anweisung mittendrin unterbrochen werden, die Anweisung hat keine Wirkung, wird aber nach der Rückkehr aus dem Interrupt erneut ausgeführt.

Einleitung

Der Zyklus beginnt, sobald das System mit Strom versorgt wird, mit einem anfänglichen PC-Wert, der durch die Systemarchitektur vordefiniert ist (z. B. bei Intel IA-32- CPUs ist der vordefinierte PC-Wert 0xfffffff0). Normalerweise verweist diese Adresse auf einen Satz von Anweisungen im Festwertspeicher (ROM), der den Vorgang des Ladens (oder Bootens ) des Betriebssystems beginnt .

Abrufphase

Der Abrufschritt ist für jeden Befehl gleich:

  1. Die CPU sendet den Inhalt des PCs an die MAR und sendet einen Lesebefehl auf den Steuerbus
  2. Als Antwort auf den Lesebefehl (mit Adresse gleich PC) gibt der Speicher die Daten zurück, die an der vom PC angegebenen Speicherstelle auf dem Datenbus gespeichert sind
  3. Die CPU kopiert die Daten vom Datenbus in ihren MDR (auch MBR genannt; siehe Abschnitt Rolle der Komponenten oben)
  4. Sekundenbruchteile später kopiert die CPU die Daten vom MDR in das Befehlsregister zur Befehlsdecodierung
  5. Der PC wird inkrementiert, so dass er auf den nächsten Befehl zeigt. Dieser Schritt bereitet die CPU auf den nächsten Zyklus vor.

Die Steuereinheit ruft die Adresse des Befehls aus der Speichereinheit ab .

Dekodierungsstufe

Der Decodierprozess ermöglicht es der CPU zu bestimmen, welcher Befehl ausgeführt werden soll, damit die CPU feststellen kann, wie viele Operanden sie abrufen muss, um den Befehl auszuführen. Der aus dem Speicher geholte Opcode wird für die nächsten Schritte decodiert und in die entsprechenden Register verschoben. Die Decodierung erfolgt durch typischerweise ausgeführt binäre Decoder in der CPU ‚s Control Unit .

Auslesen der effektiven Adresse

In diesem Schritt wird bewertet, welche Art von Operation ausgeführt werden soll. Handelt es sich um eine Speicheroperation, prüft der Computer, ob es sich um eine direkte oder indirekte Speicheroperation handelt:

  • Direkter Speicherbetrieb - Es wird nichts getan.
  • Indirekte Speicheroperation - Die effektive Adresse wird aus dem Speicher gelesen.

Handelt es sich um einen E/A- oder Registerbefehl, prüft der Computer seinen Typ und führt den Befehl aus.

Phase ausführen

Die CPU sendet den decodierten Befehl als einen Satz von Steuersignalen an die entsprechenden Computerkomponenten. Wenn der Befehl Arithmetik oder Logik beinhaltet, wird die ALU verwendet. Dies ist die einzige Stufe des Instruktionszyklus, die aus Sicht des Endbenutzers nützlich ist. Alles andere ist Overhead, der erforderlich ist, um den Ausführungsschritt auszuführen.

Siehe auch

Verweise