Befehlszyklus

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Der Befehlszyklus (engl. Instruction cycle) beschreibt den Ablauf der Verarbeitung eines Maschinenbefehls innerhalb eines synchronen Mikroprozessors.

Schema der Befehlsverarbeitung[Bearbeiten]

Schematischer Aufbau einer einfachen CPU. Die Integer-Einheit ist für den Programmablauf verantwortlich.

Die Verarbeitung eines Maschinenbefehls erfolgt nach einem festen mehrstufigen Schema, das sich aus mehreren Maschinenzyklen zusammensetzt, welche üblicherweise mit dem CPU-Takt gleichlaufen. Je nach Prozessortyp und verwendetem Maschinenbefehlssatz findet man unterschiedliche Ausprägungen des im folgenden vorgestellten Schemas.

1. Befehl laden (engl. Fetch instruction)[Bearbeiten]

Zunächst muss der Befehl aus dem Hauptspeicher in den Prozessor geladen werden. Dazu benutzt der Prozessor den aktuellen Wert des Programmzählers, um die Stelle des Befehls im Hauptspeicher zu bestimmen. Der betreffende Befehl wird über den Adressbus in das Memory Data Register des Prozessors geladen und gelangt von dort aus in das Instruction Register (CIR).

2. Befehl dekodieren (engl. Decode instruction)[Bearbeiten]

In dieser Stufe werden der Befehlscode und die Operanden ermittelt. Außerdem wird ermittelt wie die Operanden adressiert werden müssen.

Befehlsoperanden laden (engl. Fetch operands)[Bearbeiten]

Nach dem Dekodieren des Befehls werden die Operanden in den Prozessor geladen. Die dafür erforderlichen internen Schritte sind abhängig von der jeweils verwendeten Adressierung.

3. Befehl ausführen (engl. Execute)[Bearbeiten]

Nach dem Laden der benötigten Hauptspeicherinhalte in den Prozessor, wird der Befehl gemäß dem Befehlscode ausgeführt. Beispielsweise werden logische Befehle mit Hilfe des Rechenwerks verarbeitet.

4. Ergebnis speichern (engl. Store results)[Bearbeiten]

Das Ergebnis der Befehlsausführung wird im Hauptspeicher abgelegt. Handelte es sich beim letzten Befehl um einen Sprungbefehl, wird der Programmzähler entsprechend gesetzt. Anderenfalls erhält der Programmzähler die Adresse des nächsten Befehls.

Zusammenhang zwischen Befehlszyklus und Taktzyklus[Bearbeiten]

Ein Maschinenprogramm besteht aus einer Menge von Maschinenbefehlen. Bei der Ausführung werden diese Befehle nacheinander in jeweils einem Befehlszyklus vom Prozessor abgearbeitet. Je nach Komplexität des Maschinenbefehlssatzes, benötigt jeder Schritt des Befehlszyklus mehrere Taktzyklen. Um die Anzahl der abgearbeiteten Maschinenbefehle je Zeiteinheit zu erhöhen, können beispielsweise Taktfrequenzen erhöht oder eine Pipeline in den Prozessor integriert werden. Mit dem Pipelining kann die Bearbeitung aufeinander folgender Maschinenbefehle bis zu einem gewissen Grad parallelisiert werden (siehe auch Superskalarität).

Beispiel[Bearbeiten]

Aufbau eines Befehlszyklus beim Intel 8085

Das Schema rechts zeigt den Befehlszyklus eines typischen Mikrocontrollers.

  1. Lesen des neuen Befehls aus dem Speicher in das Befehlsregister (engl.: Instruction Register IR) gemäß der aktuellen Adresse des Befehlszählers (engl.: Program Counter PC)
  2. Dekodierung des Befehls
  3. Erhöhung des Inhalts vom PC um +1 (bzw. um die Größe des gerade geladenen Befehls, die besonders bei CISC-Architekturen variabel ist)
  4. Zugriff zu den Operanden, unter Umständen über einen erneuten Speicherlesevorgang und eine zugehörige Adressrechnung (bei indirekter Adressierung)
  5. Operationsdurchführung (z.B. Addition)
  6. Ergebnisabspeicherung

Literatur[Bearbeiten]

  • Randy H. Katz; Contemporary Logic Design; University of California, Berkeley; ISBN 0-8053-2703-7
  • Wolfgang Böge: Vieweg-Handbuch Elektrotechnik, Vieweg 2004. S. 595.