Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Von-Neumann-Architektur

Die Von-Neumann-Architektur (VNA) ist ein Referenzmodell für Computer, wonach ein gemeinsamer Speicher sowohl Computerprogrammbefehle als auch Daten hält.

Inhalt6 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Entwicklung
  3. 3. Komponenten eines Von-Neumann-Rechners
  4. 4. Programmablauf
  5. 5. Vorteile und Leistungsgrenzen
  6. 6. Abgrenzung zur Harvard-Architektur

Grundidee und Bedeutung

Die Von-Neumann-Architektur (VNA) ist ein Referenzmodell für universelle Computer. Ihr entscheidendes Merkmal ist, dass Programmbefehle und zu verarbeitende Daten im selben Speicher liegen. Auf diesem Grundprinzip beruhen die meisten heute bekannten Computer. Die Architektur wird auch Princeton-Architektur genannt.

Ein Von-Neumann-Rechner verwirklicht alle Komponenten einer Turingmaschine mit Ausnahme ihres theoretisch unbegrenzten Speichers, der technisch nicht realisierbar ist. Daher gilt: Alles, was mit einer Turingmaschine berechenbar ist, kann auch eine Maschine mit Von-Neumann-Architektur berechnen – und umgekehrt. Höhere Programmiersprachen erweitern diese Berechenbarkeit nicht. Compiler oder Interpreter übersetzen ihre Anweisungen lediglich in eine binäre, vom Rechner ausführbare Darstellung.

Die Aufteilung des Rechners in spezialisierte Funktionsgruppen ermöglicht eine effiziente technische Umsetzung mit binären Schaltwerken. Aus Sicht der Software bleibt das Modell dennoch vergleichsweise einfach und einheitlich.

Entwicklung

John von Neumann beschrieb das Konzept 1945 im zunächst unveröffentlichten Papier „First Draft of a Report on the EDVAC“, das im Zusammenhang mit dem Bau der EDVAC-Rechenmaschine entstand. Frühere Rechner waren meist an ein festes Programm gebunden: Dieses war entweder fest in der Hardware verschaltet oder musste über Lochkarten eingelesen werden. Beim neuen Modell konnten Programme schnell geändert und verschiedene Programme nacheinander ausgeführt werden, ohne die Hardware umzubauen.

Wichtige Ideen waren bereits 1936 von Konrad Zuse ausgearbeitet, 1937 in zwei Patentschriften dokumentiert und 1938 größtenteils mechanisch in der Z1 verwirklicht worden. 1941 bauten Konrad Zuse und Helmut Schreyer mit der Zuse Z3 den ersten funktionsfähigen Digitalrechner der Welt. Es gilt jedoch als unwahrscheinlich, dass von Neumann Zuses Arbeiten kannte, als er seine Architektur 1945 vorstellte.

Heutige Rechner entsprechen meist noch den grundlegenden Eigenschaften der VNA, sind intern aber wesentlich komplexer. Architekturen wie x86 wurden erweitert, um mehr Leistung zu erreichen und zugleich aus Sicht der Software kompatibel zum Von-Neumann-Modell zu bleiben. Wachsende Zahlen paralleler Recheneinheiten, also Multicore-Prozessoren, und mehrere Bussysteme machen diese Kompatibilität zunehmend aufwendig. Als möglicher Vorbote anderer paralleler Modelle wird NUMA-Computing genannt, bei dem der Speicher nicht überall dieselben Zugriffsmerkmale besitzt.

Komponenten eines Von-Neumann-Rechners

Ein Von-Neumann-Rechner besteht aus fünf grundlegenden Funktionsgruppen:

• Die ALU (Arithmetic Logic Unit), auf Deutsch Rechenwerk, führt Rechenoperationen und boolesche Verknüpfungen aus.

• Die Control Unit, das Steuer- oder Leitwerk, interpretiert Programmanweisungen. Sie verbindet die benötigten Datenquellen, Datenziele und Teile der ALU miteinander und steuert die Reihenfolge der Befehle.

• Das Bussystem überträgt Informationen zwischen den Komponenten. Dazu gehören Steuerbus, Adressbus und Datenbus.

• Das Speicherwerk, normalerweise RAM beziehungsweise Arbeitsspeicher, enthält sowohl Programme als auch Daten, auf die das Rechenwerk zugreifen kann.

• Das Eingabe-/Ausgabewerk, auch I/O Unit genannt, steuert den Datenaustausch mit dem Anwender, etwa über Tastatur und Bildschirm, oder mit anderen Systemen über Schnittstellen.

Programmablauf

Das Modell folgt dem Prinzip des gespeicherten Programms. Befehle befinden sich in einem RAM-Speicher mit linearem, also eindimensionalem Adressraum. Ein Befehls-Adressregister, auch Befehlszähler oder Programmzähler genannt, verweist auf den nächsten auszuführenden Befehl. Das Steuerwerk lädt und interpretiert diesen Befehl und sendet passende Steuersignale an die anderen Funktionseinheiten. Weil Befehle im selben Speicherformat wie Daten liegen, können sie grundsätzlich auch wie Daten verändert werden.

Die Programmausführung ist im Grundmodell sequenziell: Ein Befehl wird aus einer Speicherzelle gelesen und anschließend ausgeführt. Danach wird der Befehlszähler normalerweise um Eins erhöht. Sprungbefehle können ihn stattdessen um einen anderen Wert als +1 verändern. Verzweigungsbefehle entscheiden abhängig vom Wert eines Entscheidungs-Bits, ob der Zähler um Eins erhöht oder ein Sprung ausgeführt wird. So lassen sich trotz der schrittweisen Abarbeitung Schleifen, Bedingungen und unterschiedliche Programmwege verwirklichen.

Vorteile und Leistungsgrenzen

Als Vorteile gelten ein einfacher, deterministischer Programmablauf und die flexible Speichernutzung. Da Programme und Daten denselben Speicher verwenden, lässt sich der verfügbare Platz dynamisch zwischen beiden aufteilen. Programme können dadurch vergleichsweise einfach geladen, ausgeführt und aktualisiert werden. Der Artikel behauptet außerdem, dass der einzelne Bus Race Conditions und Daten-Inkohärenzen ausschließe; der betreffende Abschnitt ist jedoch ausdrücklich als nicht hinreichend belegt gekennzeichnet.

Der gemeinsame Übertragungsweg verursacht zugleich den Von-Neumann-Flaschenhals: Befehle und Daten konkurrieren um denselben Bus zwischen Prozessor und Speicher. Der Bus kann daher nur begrenzt Informationen übertragen und erzwingt grundsätzlich ein „immer nur eine Sache auf einmal“. John W. Backus prägte den Ausdruck „Von-Neumann-Flaschenhals“ 1977 in seinem Vortrag zur Verleihung des Turing Awards. Er bezeichnete damit sowohl die technische Begrenzung des Datenverkehrs als auch ein „Ein-Wort-zu-einer-Zeit-Denken“, bei dem Programme den umfangreichen Transport einzelner Wörter organisieren müssen.

Eng damit verbunden ist die „Memory-Wall“. Sie bezeichnet das wachsende Geschwindigkeitsgefälle zwischen der CPU und dem Speicher außerhalb des CPU-Chips. Von 1986 bis 2000 stieg die CPU-Geschwindigkeit jährlich um 55 %, die Speichertransfergeschwindigkeit dagegen nur um 10 %. Dadurch wurde die Speicherlatenz, also die Wartezeit beim Speicherzugriff, zu einem wesentlichen Leistungsengpass.

Zur Entlastung wurden zunächst Datenregister und später mehrstufige Caches eingeführt. Bei leistungsfähigen Prozessoren beanspruchen dreistufige Caches etwa die Hälfte der Chipfläche. Sie bedienen die meisten Lade- und Schreibbefehle, ohne sofort auf den Hauptspeicher zuzugreifen. Getrennte Caches für Daten und Befehle sowie mehrere Cache-Hierarchien haben den ursprünglichen Flaschenhals in modernen Prozessoren stark abgeschwächt: Viele Befehlsdecoder und Rechenwerke können sich den Hauptspeicher teilen, ohne dass ständig große Leistungsverluste entstehen.

Abgrenzung zur Harvard-Architektur

Bei der Von-Neumann-Architektur teilen sich Programme und Daten Speicher und Datenbus. Das erlaubt eine flexible Aufteilung des Speichers, doch Befehle und Daten müssen denselben Übertragungsweg nutzen.

Die Harvard-Architektur besitzt dagegen getrennte Speicherbereiche und Datenpfade für Programmbefehle und Daten. Auf beide kann unabhängig zugegriffen werden, sodass Befehls- und Datenzugriffe parallel möglich sind. Eine klassische Harvard-Architektur mit vollständig getrennten Befehls- und Datenbussen ist außerhalb von Spezialfällen jedoch unüblich. Nach Darstellung des Artikels könnten dabei nur bereits fertige Programme aus nichtflüchtigem Speicher ausgeführt werden; Nachladen sowie dynamisches Kompilieren und Ausführen wären nicht möglich.

Super-Harvard-Architekturen kommen häufig in digitalen Signalprozessoren (DSPs) vor und besitzen zwei oder vier Bussysteme. Beispiele sind der Motorola 56001 und der Texas Instruments TMS320. Häufig wird die strikte Trennung gelockert, sodass jeder Bus sowohl Code als auch Daten liefern kann. Dabei können Kollisionen die Leistung verringern. Zusätzlich zum CPU-Kern greifen oft DMA-Controller, die Datenübertragungen selbstständig durchführen, und Video-Controller auf den Speicher zu.

Moderne Prozessoren verbinden Eigenschaften beider Modelle: Bereits 1993 wurden getrennte L1-Caches für Befehle (L1I) und Daten (L1D) vor einem gemeinsamen RAM-Controller verwendet. Das Schema von 1997 ergänzt einen gemeinsamen L2-Cache. Für 2008 zeigt der Artikel mehrere CPU-Kerne mit eigenen L1- und L2-Caches, einem gemeinsamen L3-Cache und einem RAM-Controller. Dual-Sockel-Server-Systeme erweitern dieses Prinzip auf zwei Prozessorfassungen mit jeweils mehreren Kernen, Cache-Hierarchien und RAM-Controllern. Niedrige, schnelle Cache-Stufen trennen häufig Code und Daten nach Art der Harvard-Architektur; höhere Cache-Stufen und der Hauptspeicher folgen weiterhin dem Von-Neumann-Prinzip und speichern beides.

Lernvideos zu Von-Neumann-Architektur

Weiterlesen

Computer Ein Computer (englisch; deutsche Aussprache [kɔmˈpjuːtɐ]) oder Rechner ist ein Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Arbeitsspeicher Zugriffe auf den Arbeitsspeicher durch den Hauptprozessor werden zumeist über ein oder mehrere Pufferspeicher oder Cache-RAMs (kurz „Cache“) optimiert. Im Cache … Daten Daten bezeichnet als Plural von Datum Fakten, Zeitpunkte oder kalendarische Zeitangaben. Als Pluralwort steht es für durch Beobachtungen, Messungen u. a. John von Neumann Von Neumann gilt als einer der Väter der Informatik. Nach ihm wurde die Von-Neumann-Architektur (auch Von-Neumann-Rechner) benannt, ein Computer, in dem … Harvard-Architektur Die Harvard-Architektur bezeichnet in der Informatik ein Schaltungskonzept, bei dem der Befehlsspeicher logisch und physisch vom Datenspeicher getrennt ist. Lochkarte Eine Lochkarte (LK) ist ein aus stabilem dünnen Karton gefertigter Datenträger, der früher vor allem in der Datenverarbeitung zur Speicherung von Daten und … Konrad Zuse Konrad Ernst Otto Zuse (* 22. Juni 1910 in Deutsch-Wilmersdorf; † 18. Dezember 1995 in Hünfeld) war ein deutscher Bauingenieur, Erfinder und Unternehmer … Zuse Z3 Die Z3 war einer der ersten funktionsfähigen Digitalrechner weltweit und wurde am 12. Mai 1941 von Konrad Zuse in seiner Werkstatt in der Methfesselstraße 7 in … Mehrkernprozessor Multi-Threaded-CPUs sind mehrfädige (engl. multithreading) Prozessorkerne mit mehreren Programmzählern und Registersätzen, die sich gegenüber dem System aber … Turingmaschine Eine Turingmaschine ist ein mathematisches Modell der theoretischen Informatik, das eine abstrakte Maschine definiert. Bei diesem Rechnermodell werden nach … Höhere Programmiersprache Eine höhere Programmiersprache ist eine Programmiersprache zur Abfassung eines Computerprogramms, die in Abstraktion und Komplexität von der Ebene der … Compiler Ein Übersetzer zur Übertragung von Assembler-Quellprogrammen in Maschinensprache wird als Assembler oder Assemblierer bezeichnet. Geschichte. Bearbeiten.