- Von-Neumann-Rechner
-
Die von-Neumann-Architektur ist ein Referenzmodell für Computer, wonach ein gemeinsamer Speicher sowohl Computerprogrammbefehle als auch Daten hält. Von-Neumann-Systeme gehören nach der Flynnschen Klassifikation zur Klasse der SISD-Architekturen (Single Instruction Stream, Single Data Stream), im Unterschied zur Parallelverarbeitung.
Die von-Neumann-Architektur bildet die Grundlage für die Arbeitsweise der meisten heute bekannten Computer. Sie ist benannt nach dem österreichisch-ungarischen, später in den USA tätigen Mathematiker John von Neumann, dessen wesentliche Arbeit zum Thema 1945 veröffentlicht wurde. Sie wird manchmal auch nach der gleichnamigen US-Universität Princeton-Architektur genannt.
Inhaltsverzeichnis
Entwicklung
Von Neumann beschrieb das Konzept 1945 in dem zunächst unveröffentlichten Papier „First Draft of a Report on the EDVAC“ im Rahmen des Baus der EDVAC-Rechenmaschine. Es war seinerzeit revolutionär, denn zuvor entwickelte Rechner waren an ein festes Programm gebunden, das entweder hardwaremäßig verschaltet war oder über Lochkarten eingelesen werden musste. Mit der von-Neumann-Architektur war es nun möglich, Änderungen an Programmen sehr schnell und ohne Änderungen an der Hardware durchzuführen oder in kurzer Folge verschiedene Programme ablaufen zu lassen.
Viele Ideen der von-Neumann-Architektur waren schon vorher 1936 von Konrad Zuse ausgearbeitet, in zwei Patentschriften 1937 dokumentiert und größtenteils bereits 1938 in der Z1-Maschine mechanisch realisiert worden. Es gilt aber als unwahrscheinlich, dass von Neumann Zuses Arbeiten kannte, als er 1945 seine Architektur vorstellte.
Die meisten der heute gebräuchlichen Computer basieren auf dem Grundprinzip der von-Neumann-Architektur. Die einfache Einteilung der verschiedenen Schaltwerke hat aber im Laufe der Zeit Differenzierungen erfahren.
Konzept
Die von-Neumann-Architektur ist ein Schaltungskonzept zur Realisierung universeller Rechner (von-Neumann-Rechner, VNR). Sie realisiert alle Komponenten einer Turingmaschine. Dabei ermöglicht ihre systematische Aufteilung in die entsprechenden Funktionsgruppen jedoch die Nutzung spezialisierter binärer Schaltwerke und damit eine effizientere Strukturierung der Operationen.
Im Prinzip bleibt es aber dabei, dass alles, was mit einer Turingmaschine berechenbar ist, auch auf einer Maschine mit von-Neumann-Architektur berechenbar ist und umgekehrt. Gleiches gilt für alle höheren Programmiersprachen, die durch einen Compiler oder Interpreter auf die binäre Repräsentation abgebildet werden. Sie vereinfachen zwar das Handling der Operationen, bieten jedoch keine Erweiterung der von der Turingmaschine vorgegebenen Semantik. Dies wird daran deutlich, dass die Übersetzung aus einer höheren Programmiersprache in die binäre Repräsentation wiederum von einem binären Programm ohne Anwenderinteraktion vorgenommen wird.
Komponenten
Ein von-Neumann-Rechner beruht auf folgenden Komponenten, die bis heute in Computern verwendet werden:
- ALU (Arithmetic Logic Unit) - Rechenwerk, auch Prozessor oder Zentraleinheit genannt, führt Rechenoperationen und logische Verknüpfungen durch.
- Control Unit - Steuerwerk oder Leitwerk, interpretiert die Anweisungen eines Programms und steuert die Befehlsabfolge.
- Memory - Speicherwerk speichert sowohl Programme als auch Daten, welche für das Rechenwerk zugänglich sind.
- I/O Unit - Eingabe-/Ausgabewerk steuert die Ein- und Ausgabe von Daten, zum Anwender (Tastatur, Bildschirm) oder zu anderen Systemen (Schnittstellen).
Programmablauf
Diese Komponenten arbeiten Programmbefehle nach folgenden Regeln ab.
- Prinzipien des gespeicherten Programms:
- Befehle sind in einem RAM-Speicher mit linearem (1-dimensionalem) Adressraum abgelegt.
- Ein Befehls-Adressregister, genannt Befehlszähler oder Programmzähler, zeigt auf den nächsten auszuführenden Befehl.
- Befehle können wie Daten geändert werden.
- Prinzipien der sequentiellen Programm-Ausführung (s. a. von-Neumann-Zyklus):
- Befehle werden aus einer Zelle des Speichers gelesen und dann ausgeführt.
- Normalerweise wird dann der Inhalt des Befehlszählers um Eins erhöht.
- Es gibt einen oder mehrere Sprung-Befehle, die den Inhalt des Befehlszählers um einen anderen Wert als +1 verändern.
- Es gibt einen oder mehrere Verzweigungs-Befehle, die in Abhängigkeit vom Wert eines Entscheidungs-Bit den Befehlszähler um Eins erhöhen oder einen Sprung-Befehl ausführen.
Weiterentwicklungen
von-Neumann-Flaschenhals
Der von-Neumann-Flaschenhals der von-Neumann-Architektur bezeichnet den Sachverhalt, dass das Verbindungssystem (Daten- und Befehls-Bus) zum Engpass zwischen dem Prozessor und dem Speicher wird. Da im Gegensatz zur Harvard-Architektur nur ein gemeinsamer Bus für Daten und Befehle genutzt wird, müssen sich diese die maximal übertragbare Datenmenge aufteilen. Bei frühen Computern stellte die CPU die langsamste Einheit des Rechners dar. Die ebenfalls langsamen Busse waren zu dieser Zeit ausreichend, d. h. die Datenbereitstellung erfolgte schneller als die Verarbeitung durch die CPU. Seit Mitte der 90er Jahre steigen jedoch die Taktraten der CPUs wesentlich schneller als die der verwendeten Speicherbausteine (RAM) und der übertragenden Busse, so dass die Datenübertragung und -bereitstellung mehr Zeit beansprucht als die Datenverarbeitung durch die CPU.
Hauptspeicher und Bussystem bestimmen somit die Arbeitsgeschwindigkeit des gesamten Systems und bilden den von-Neumann-Flaschenhals. In der Praxis versucht man, diesen Effekt durch die Nutzung von Datencaches abzuschwächen.
Harvard-Architektur
Eine der wichtigsten Modifikationen ist die Aufteilung von Befehls- und Datenspeicher gemäß der Harvard-Architektur. Einzelne Elemente der Harvard-Architektur fließen seit den 1980er Jahren verstärkt wieder in die üblichen von-Neumann-Rechner ein, da eine klarere Trennung von Befehlen und Daten die Betriebssicherheit erfahrungsgemäß deutlich erhöht. Besonders die gefürchteten Pufferüberläufe, die für die meisten Sicherheitslücken in modernen Systemen verantwortlich sind, werden bei stärkerer Trennung von Befehlen und Daten besser beherrschbar.
Weblinks
- John von Neumann: First Draft of a Report on the EDVAC. (PDF-Format, engl.) 1945
- Erklärung des Von Neumann Rechners des Department Informatik der Uni Hamburg mit Java-Applet zur Simulation
- MOPS ist ein Modellrechner mit von-Neumann-Architektur
Wikimedia Foundation.