Von-Neumann-Architektur einfach erklärt
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.
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.
Befehl
Ein Befehl ist eine elementare, hardwarenahe Anweisung, zum Beispiel: Lade einen Wert, addiere zwei Werte oder gib einen Wert aus.
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.
Die Hardware gibt die möglichen Operationen vor. Das gespeicherte Programm bestimmt, welche dieser Operationen in welcher Reihenfolge ausgeführt werden.
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.
| Bestandteil | Aufgabe |
|---|---|
| Steuerwerk | Holt und decodiert Befehle, steuert die Reihenfolge und sendet Steuersignale. |
| Rechenwerk oder ALU | Führt arithmetische Operationen und logische Verknüpfungen aus. |
| Register | Speichern kurzfristig Werte, Adressen oder Befehle direkt im Prozessor. |
| Hauptspeicher | Bewahrt Programme und Daten in adressierten Zellen auf. |
| Ein-/Ausgabewerk | Vermittelt zwischen Rechner und Umwelt, etwa bei Eingabe und Ausgabe. |
| Bussystem | Transportiert 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.
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.
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.
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.
- Fetch: Das Steuerwerk holt den Befehl aus dem Speicher in das Befehlsregister. Der Befehlszähler wird normalerweise weitergeschaltet.
- Decode: Das Steuerwerk entschlüsselt den Operationscode.
- Fetch Operands: Falls nötig, werden die benötigten Operanden aus Registern oder Speicher geladen.
- Execute: Das Rechenwerk oder eine andere zuständige Einheit führt den Befehl aus.
- Write back: Ein Ergebnis wird in ein Register oder in den Speicher geschrieben.
Operand
Ein Operand ist ein Wert oder eine Angabe, auf die sich eine Operation bezieht. Bei einer Addition sind die zu addierenden Werte Operanden.
Betrachte den Befehl „Addiere den Inhalt von Speicherzelle 12 zum Akkumulator“:
- Das Steuerwerk holt und decodiert den Befehl.
- Der Wert aus Zelle 12 wird geladen.
- Die ALU addiert ihn zum Akkumulatorwert.
- Das Ergebnis wird in den Akkumulator zurückgeschrieben.
Der entscheidende Gedanke: Ein einzelner Programmbefehl löst mehrere interne Transport- und Verarbeitungsschritte aus.
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.
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 speichern22, 64: Wert aus Zelle 64 ausgeben60: Programm beenden
| Schritt | Befehlszähler vorher | Wirkung | Befehlszähler danach |
|---|---|---|---|
| 1 | 0 | Eingabebefehl mit Adressangabe wird verarbeitet. | 2 |
| 2 | 2 | Ausgabebefehl mit Adressangabe wird verarbeitet. | 4 |
| 3 | 4 | Der 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.
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.
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.
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.
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
| Merkmal | Von-Neumann-Modell | Harvard-Modell |
|---|---|---|
| Programmspeicher und Datenspeicher | logisch gemeinsam | getrennt |
| Zugriffswege | klassisch gemeinsam | getrennt |
| Gleichzeitiges Holen von Befehl und Daten | durch 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.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- 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
- Gespeichertes Programm
Abschluss-Check
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.
Mit Google fortfahren