Von-Neumann-Zyklus

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Der Von-Neumann-Zyklus bezeichnet in der Technischen Informatik einen Prozess bei der Befehlsverarbeitung in einem Von-Neumann-Rechner. Die meisten Prozessoren sind zwar heutzutage Harvard-Architekturen und haben kaum noch etwas mit dem Von-Neumann-Zyklus gemein, allerdings verhalten sie sich nach außen hin wie ihre Ur-Ur-Urahnen, die Von-Neumann-Prozessoren waren.

Die Teilschritte[Bearbeiten | Quelltext bearbeiten]

Von-Neumann-Zyklus

Der Zyklus besteht aus fünf Teilschritten

  1. FETCH – Befehlsabruf: Aus dem Speicher wird der nächste zu bearbeitende Befehl entsprechend der Adresse im Befehlszähler in das Befehlsregister geladen und der Befehlszähler wird um die Länge des Befehls erhöht.
  2. DECODE – Dekodierung: Der Befehl wird durch das Steuerwerk in Schaltinstruktionen für das Rechenwerk aufgelöst.
  3. FETCH OPERANDS – Operandenabruf: Aus dem Speicher werden nun die Operanden geholt. Das sind die Werte, die durch den Befehl verändert werden sollen oder die als Parameter verwendet werden.
  4. EXECUTE – Befehlsausführung: Eine arithmetische oder logische Operation wird vom Rechenwerk ausgeführt. Bei Sprungbefehlen und erfüllter Sprungbedingung wird an dieser Stelle der Befehlszähler verändert.
  5. WRITE BACK – Rückschreiben des Resultats: Sofern notwendig, wird das Ergebnis der Berechnung in Register oder Speicher zurückgeschrieben.

Dabei kann ein Teilschritt mehrere Takte dauern. Nach dem Beenden des Zyklus beginnt dieser wieder von vorn und ein weiterer Befehl wird abgearbeitet.

Moderne Zentralprozessoren haben Taktfrequenzen von 2 bis 5 GHz. Pro Takt werden bei aktuellen Prozessoren

  • mehrere dieser oben genannten Teilschritte parallel (gleichzeitig) durch so genanntes Pipelining ausgeführt,
  • jeder Teilschritt wird im Allgemeinen pro Takt auch noch mehrfach ausgeführt. Bei der Befehlsausführung nennt man das Ports. Beispielsweise kann die Haswell-CPU bis zu 8 neue Befehle pro Takt neu anfangen, deren Ausführungszeit meist zwischen 1 und 5 Takten liegen, so dass sich bis zu 40 Maschinenanweisungen in der EXECUTE-Phase befinden können.

Als weitere leistungssteigernde Merkmale kommen hinzu:

  • SIMD-Befehle
  • Mehrere Kerne

Das führt dazu, dass aktuelle Prozessoren in Mainstream-PCs bis zu 2000 arithmetische Befehle parallel ausführen können. Diese Werte sind praktisch unerreichbar.

FETCH[Bearbeiten | Quelltext bearbeiten]

In das Befehlsregister, das zusammen mit Steuer- und Rechenwerk (arithmetisch-logische Einheit, ALU) den Hauptprozessor (CPU) darstellt, wird aus RAM- oder ROM-Speicher der nächste zu bearbeitende Befehl geladen. Anschließend wird der Befehlszähler (der Instruction Pointer) erhöht, so dass er auf die nächste Speicherstelle zeigt. Diese Erhöhung ist schon hier notwendig, damit ein Sprungbefehl mit „Rückkehrabsicht“ (Unterprogrammsprung) die Adresse des Folgebefehls vor dem Sprung sichern kann.

Prozessoren können oft mehrere Befehle aus dem Speicher in einen Zwischenspeicher (Prefetch-Registerblock) laden, während der aktuelle Befehl noch decodiert wird. Dieses Verfahren wird als OpCode Prefetching (dt. Operationscode-Vorabruf) bezeichnet.

  1. Vorteil: Deutliche Steigerung der Verarbeitungsgeschwindigkeit.
  2. Nachteil: Bei Programmverzweigungen muss der Befehl evtl. wieder entfernt werden.

Weblinks[Bearbeiten | Quelltext bearbeiten]

  • μRISCy - RISC-Simulationsrechner für Vertiefungsübungen
  • MOPS ist ein Modellrechner, der den Von-Neumann-Zyklus anschaulich darstellt
  • JOHNNY ist ein OpenSource-Simulator, der den Von-Neumann-Zyklus anschaulich darstellt.