Informatik

Von-Neumann-Architektur einfach erklärt

Von-Neumann-Architektur einfach erklärt
Von-Neumann-Architektur einfach erklärt
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Die Von-Neumann-Architektur beschreibt einen universellen Rechner, der Befehle und Daten in einem gemeinsamen Speicher hält. Ein Steuerwerk liest die Befehle nacheinander, deutet sie und veranlasst ihre Ausführung. Sprungbefehle können diese Reihenfolge verändern.

Auf dieser Seite verfolgst du einen Maschinenbefehl durch den Rechner und untersuchst, warum der gemeinsame Speicherweg die Leistung begrenzen kann.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Warum kann dieselbe Hardware verschiedene Aufgaben lösen?

Frühe Rechner waren teilweise eng an eine bestimmte Aufgabe gebunden. Beim Von-Neumann-Modell bestimmt dagegen ein gespeichertes Programm, was die Hardware tut. Für eine neue Aufgabe wird das Programm gewechselt; die grundlegende Rechnerstruktur bleibt bestehen.

Definition

Befehl

Ein Befehl ist eine elementare, hardwarenahe Anweisung, zum Beispiel: Lade einen Wert, addiere zwei Werte oder gib einen Wert aus.

Definition

Programm

Ein Programm ist eine geordnete Folge von Befehlen. Die Befehle liegen codiert im Speicher und werden normalerweise nacheinander ausgeführt.

Der Hauptspeicher besteht im Modell aus gleich großen, fortlaufend adressierten Zellen. Eine Adresse ist die Nummer, über die eine Speicherzelle ausgewählt wird. In demselben logischen Speicher liegen sowohl Programmbefehle als auch Daten.

Merke

Die Hardware gibt die möglichen Operationen vor. Das gespeicherte Programm bestimmt, welche dieser Operationen in welcher Reihenfolge ausgeführt werden.

Teste dich
Frage 1 von 1LeichtWelche Aussage beschreibt das gespeicherte Programm?
Lösung: Befehle und Daten liegen im Speicher, und die Befehle steuern die Verarbeitung. — Beim Von-Neumann-Modell werden Befehle ebenso wie Daten gespeichert. Dadurch kann dieselbe Rechnerstruktur unterschiedliche Programme ausführen.
Welche Bauteile arbeiten zusammen?

Die Darstellungen zählen die Bestandteile unterschiedlich: Häufig nennt man vier Funktionswerke und zusätzlich das verbindende Bussystem. Entscheidend sind ihre Aufgaben, nicht die Zahl in der Aufzählung.

BestandteilAufgabe
SteuerwerkHolt und decodiert Befehle, steuert die Reihenfolge und sendet Steuersignale.
Rechenwerk oder ALUFührt arithmetische Operationen und logische Verknüpfungen aus.
RegisterSpeichern kurzfristig Werte, Adressen oder Befehle direkt im Prozessor.
HauptspeicherBewahrt Programme und Daten in adressierten Zellen auf.
Ein-/AusgabewerkVermittelt zwischen Rechner und Umwelt, etwa bei Eingabe und Ausgabe.
BussystemTransportiert Daten, Adressen und Steuersignale zwischen den Einheiten.

Rechenwerk und Steuerwerk bilden zusammen den Kern der CPU. Register gehören ebenfalls zum Prozessor. Der Hauptspeicher und die Ein-/Ausgabe sind dagegen eigene Einheiten.

Definition

Akkumulator

Ein Akkumulator ist ein Register des Rechenwerks. In einem klassischen einfachen Rechner nimmt er einen Rechenwert auf und speichert anschließend das Ergebnis der Operation.

Beispiel

Beim Befehl „Addiere den Wert aus Speicherzelle 12“ kann der aktuelle Rechenwert im Akkumulator liegen. Der zweite Wert wird aus Zelle 12 geholt. Die ALU addiert beide Werte und legt das Ergebnis wieder im Akkumulator ab.

Teste dich
Frage 1 von 2LeichtWelcher Bestandteil führt eine Addition aus?
Lösung: Das Rechenwerk beziehungsweise die ALU — Arithmetische und logische Operationen gehören zur ALU. Das Steuerwerk koordiniert ihren Einsatz.
Frage 2 von 2MittelWo gehört der Hauptspeicher in diesem Modell hin?
Lösung: Er ist eine eigene Einheit außerhalb der CPU. — Zur CPU gehören vor allem Steuerwerk, Rechenwerk und Register. Der Hauptspeicher ist eine eigene Funktionseinheit.
Wie durchläuft ein Befehl den Rechner?

Der Befehlszähler, auch Program Counter, enthält die Adresse des nächsten Befehls. Der Befehlszyklus wiederholt sich, bis das Programm endet.

  1. Fetch: Das Steuerwerk holt den Befehl aus dem Speicher in das Befehlsregister. Der Befehlszähler wird normalerweise weitergeschaltet.
  2. Decode: Das Steuerwerk entschlüsselt den Operationscode.
  3. Fetch Operands: Falls nötig, werden die benötigten Operanden aus Registern oder Speicher geladen.
  4. Execute: Das Rechenwerk oder eine andere zuständige Einheit führt den Befehl aus.
  5. Write back: Ein Ergebnis wird in ein Register oder in den Speicher geschrieben.
Definition

Operand

Ein Operand ist ein Wert oder eine Angabe, auf die sich eine Operation bezieht. Bei einer Addition sind die zu addierenden Werte Operanden.

Beispiel

Betrachte den Befehl „Addiere den Inhalt von Speicherzelle 12 zum Akkumulator“:

  1. Das Steuerwerk holt und decodiert den Befehl.
  2. Der Wert aus Zelle 12 wird geladen.
  3. Die ALU addiert ihn zum Akkumulatorwert.
  4. Das Ergebnis wird in den Akkumulator zurückgeschrieben.

Der entscheidende Gedanke: Ein einzelner Programmbefehl löst mehrere interne Transport- und Verarbeitungsschritte aus.

Teste dich
Frage 1 von 2LeichtWas geschieht beim Decode-Schritt?
Lösung: Das Steuerwerk deutet den geladenen Befehl. — Nach dem Holen muss das Steuerwerk erkennen, welche Operation und welche Operanden der Befehl bezeichnet.
Frage 2 von 2MittelWelche Reihenfolge ist richtig?
Lösung: Befehl holen, decodieren, Operanden laden, ausführen, Ergebnis zurückschreiben — Der Befehlszyklus führt vom Holen und Deuten über die Bereitstellung der Operanden zur Ausführung und zum Zurückschreiben.
Wie verändern Sprünge die Reihenfolge?

Ohne Sprung zeigt der Befehlszähler normalerweise auf den nachfolgenden Befehl. Ein Sprungbefehl setzt ihn dagegen auf eine andere Adresse.

  • Ein unbedingter Sprung wird immer ausgeführt.
  • Ein bedingter Sprung hängt von einer geprüften Bedingung ab.

So lassen sich Verzweigungen und Schleifen auf Maschinenebene verwirklichen. Eine Schleife ist dort kein eigener Grundmechanismus: Ein Sprung führt zu einem früheren Befehl zurück.

Beispiel

Ein Programm prüft, ob ein Zähler bereits null ist. Falls ja, springt es zum Programmende. Andernfalls verarbeitet es den nächsten Schritt und springt danach zur Prüfung zurück.

Der normale Ablauf würde immer zur nächsten Adresse führen. Erst die beiden Sprünge erzeugen Auswahl und Wiederholung.

Einen Befehlszähler verfolgen

Ein didaktischer Modellrechner verwendet die Codefolge 20, 64, 22, 64, 60:

  • 20, 64: Eingabewert in Zelle 64 speichern
  • 22, 64: Wert aus Zelle 64 ausgeben
  • 60: Programm beenden
SchrittBefehlszähler vorherWirkungBefehlszähler danach
10Eingabebefehl mit Adressangabe wird verarbeitet.2
22Ausgabebefehl mit Adressangabe wird verarbeitet.4
34Der einteilige Endbefehl wird verarbeitet.5

Gibt der Benutzer den Wert 5 ein, wird er in Zelle 64 gespeichert und anschließend wieder ausgegeben. Die Schrittweiten zwei, zwei und eins gehören zu diesem Modell und seinen unterschiedlich langen Befehlen; sie sind keine allgemeine Regel für alle Rechner.

Gut zu wissen

Der verwendete Modellrechner trennt seine Code- und Datenbereiche fest und stellt Zahlen dezimal dar. Damit weicht er bewusst vom reinen Von-Neumann-Prinzip ab. Der Ablauf eignet sich trotzdem dazu, Befehlszähler, Decodierung und Datentransport sichtbar zu machen.

Teste dich
Frage 1 von 2MittelAuf welchen Wert zeigt der Befehlszähler nach der Verarbeitung von 20, 64?
Lösung: 2 — Der nächste Befehl beginnt in der Codefolge an Position 2.
Frage 2 von 2SchwerWas müsste ein bedingter Sprung verändern, wenn er ausgeführt wird?
Lösung: Den Befehlszähler — Der Befehlszähler bestimmt, welcher Befehl als Nächstes geholt wird. Ein ausgeführter Sprung setzt ihn auf die Zieladresse.
Wo liegt der Flaschenhals?

Im klassischen Von-Neumann-Modell teilen sich Befehle und Daten den Hauptspeicher und einen gemeinsamen Zugriffsweg. Möchte die CPU einen Befehl und zusätzlich Daten übertragen, konkurrieren diese Transfers um den begrenzten Weg.

Definition

Von-Neumann-Flaschenhals

Der Von-Neumann-Flaschenhals ist die Leistungsgrenze, die durch den gemeinsamen Transportweg zwischen CPU und Speicher entsteht. Die CPU kann warten müssen, obwohl ihre Recheneinheiten bereit wären.

Die Memory-Wall bezeichnet das wachsende Geschwindigkeitsgefälle zwischen schnellen Prozessoren und dem langsameren Datentransfer zum Speicher außerhalb des Prozessorchips.

Wie helfen Caches?

Ein Cache ist ein schneller Zwischenspeicher nahe an oder in der CPU. Er hält Kopien häufig benötigter Speicherblöcke. Findet die CPU einen benötigten Befehl oder Wert im Cache, muss sie nicht sofort auf den langsameren Hauptspeicher zugreifen.

Moderne Prozessoren können getrennte Caches für Befehle und Daten besitzen. Trotzdem bleibt der Hauptspeicher aus Programmsicht logisch gemeinsam. Die Optimierung hebt das Grundmodell daher nicht automatisch auf.

Merke

Caches verkürzen viele Speicherzugriffe, beseitigen aber nicht jede Grenze: Fehlen benötigte Inhalte im Cache, ist weiterhin ein Zugriff auf tiefere Cache-Stufen oder den Hauptspeicher nötig.

Abgrenzung zur Harvard-Architektur

MerkmalVon-Neumann-ModellHarvard-Modell
Programmspeicher und Datenspeicherlogisch gemeinsamgetrennt
Zugriffswegeklassisch gemeinsamgetrennt
Gleichzeitiges Holen von Befehl und Datendurch den gemeinsamen Weg begrenztüber getrennte Wege möglich

Praktische Rechner können Merkmale beider Modelle verbinden, etwa getrennte Instruktions- und Datencaches vor einem gemeinsamen Hauptspeicher.

Teste dich
Frage 1 von 3LeichtWarum kann der gemeinsame Speicherweg zum Flaschenhals werden?
Lösung: Befehle und Daten konkurrieren um eine begrenzte Übertragungskapazität. — Rechenleistung hilft wenig, wenn Befehle oder Daten nicht schnell genug bei der CPU eintreffen.
Frage 2 von 3MittelWas leistet ein Cache?
Lösung: Er hält Kopien häufig benötigter Speicherblöcke nahe an der CPU bereit. — Ein Cache verkürzt viele Zugriffe, ändert aber weder automatisch den Programmablauf noch beseitigt er alle Speicherwartezeiten.
Frage 3 von 3SchwerEin Prozessor besitzt getrennte Befehls- und Datencaches, aber einen logisch gemeinsamen Hauptspeicher. Welche Einordnung passt?
Lösung: Es ist eine Mischform, die das logische Von-Neumann-Grundmodell beibehält. — Moderne Rechner können Harvard-artig getrennte Cache-Wege mit einem gemeinsamen Hauptspeicher verbinden.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Von-Neumann-Architektur
    • Gespeichertes Programm
      • Gemeinsamer Speicher für Befehle und Daten
      • Problemunabhängige Hardware
    • Funktionseinheiten
      • Steuerwerk und Rechenwerk
      • Register, Speicher, Ein-/Ausgabe und Bus
    • Befehlsablauf
      • Fetch, Decode und Operanden laden
      • Execute und Write back
    • Kontrollfluss
      • Normaler Folgebefehl
      • Bedingte und unbedingte Sprünge
    • Leistungsgrenze
      • Gemeinsamer Speicherweg
      • Caches als begrenzte Gegenmaßnahme
Abschluss-Check
Teste dich
Frage 1 von 4LeichtWelches Register bestimmt normalerweise, welcher Befehl als Nächstes geholt wird?
Lösung: Der Befehlszähler — Der Befehlszähler verweist auf den nächsten Befehl und wird normal weitergeschaltet oder durch einen Sprung verändert.
Frage 2 von 4MittelEin Befehl wurde geholt und decodiert. Was muss vor einer Addition typischerweise noch geschehen?
Lösung: Die benötigten Operanden müssen bereitgestellt werden. — Erst wenn die Operanden in Registern oder über den Speicherweg verfügbar sind, kann die ALU die Addition ausführen.
Frage 3 von 4MittelIn der Folge 20, 64, 22, 64, 60 steht der Befehlszähler auf 2. Was geschieht als Nächstes?
Lösung: Der Wert aus Zelle 64 wird ausgegeben; danach zeigt der Zähler auf 4. — An Position 2 beginnt 22, 64. Erst an Position 4 folgt der Endbefehl 60.
Frage 4 von 4SchwerEin Cache beschleunigt viele Zugriffe. Warum ist die Speichergrenze damit nicht vollständig verschwunden?
Lösung: Bei einem Cache-Fehlschlag muss eine langsamere Speicherstufe angesprochen werden. — Cache-Treffer verkürzen Zugriffe. Nicht vorhandene oder zu verdrängende Inhalte verursachen jedoch weiterhin Verkehr zu tieferen Speicherstufen.

Du beherrschst das Grundmodell, wenn du einen Befehl vom Befehlszähler über Decodierung und Ausführung bis zum Ergebnis verfolgen und dabei erklären kannst, wo Datentransport nötig ist.

Passend dazu