Von-Neumann-Rechner        zurück ]      [ Index ]      [ Literatur-Index ]      [ Die Hyper-Bibliothek ]     

Ein im Jahre 1945 von John von Neumann vorgeschlagenes Konzept zur Gestaltung eines universellen Rechners (in The First Draft of a Report on the EDVAC ist von einem "computing system", nicht von einen Computer die Rede, während die Maschine selbst EDVAC (Electronic Discrete Variable Automatic Computer) also Computer genannt wurde. Der Neumann-Rechner, den man heute als Prozessor bezeichnet (während Computer für eine umfassendere Konstruktion verwendet wird), ist nach folgenden Prinzipien aufgebaut:”

Von-Neumann-Prinzipien

  • Der Rechner besteht aus fünf Funktionseinheiten, dem Steuerwerk, dem Rechenwerk, dem Speicher, dem Eingabewerk und dem Ausgabewerk.
  • Die Struktur des Von-Neumann-Rechners ist unabhängig von den zu bearbeitenden Problemen. Zur Lösung eines Problems muß von außen eine Bearbeitungsvorschrift, das Programm, eingegeben und im Speicher abgelegt werden. Ohne dieses Programm ist die Maschine nicht arbeitsfähig.
  • Programme, Daten, Zwischen- und Endergebnisse werden in demselben Speicher abgelegt.
  • Der Speicher ist in gleichgroße Zellen unterteilt, die fortlaufend durchnumeriert sind. über die Nummer (Adresse) einer Speicherzelle kann deren Inhalt abgerufen oder verändert werden.
  • Aufeinanderfolgende Befehle eines Programms werden in aufeinanderfolgenden Speicherzellen abgelegt. Das Ansprechen des nächsten Befehls geschieht vom Steuerwerk aus durch Erhöhen der Befehlsadresse um Eins.
  • Durch Sprungbefehle kann von der Bearbeitung der Befehle in der gespeicherten Reihenfolge abgewichen werden.
  • Es gibt zumindest
    - arithmetische Befehle wie Addieren, Multiplizieren, Konstanten laden usw.;
    - logische Befehle wie Vergleiche, logisches NICHT, UND, ODER usw.;
    - Transportbefehle, z.B. vom Speicher zum Rechenwerk und für die Ein-/Ausgabe;
    - bedingte Sprünge;
    - sonstige Befehle wie Schieben, Unterbrechen, Warten usw.
    Alle diese Befehle können in verschiedenen Adressierungsarten ausgeführt werden, ...
  • Alle Daten (Befehle, Adressen usw.) werden binär codiert. Geeignete Schaltwerke im Steuerwerk und an anderen Stellen sorgen für die richtige Entschlüsselung (Decodierung).

    Die Rechnerarchitektur des Von-Neumann-Rechners fällt in die Klasse der SISD-Architekturen.”


    Das Steuerwerk

    Die grundsätzlichen Funktionen eines Steuerwerkes wurden in 2.1.5 Steuerwerk erklärt. Die Funktionsweise des Steuerwerkes des Von-Neumann-Rechners (VNR) wird hier noch nicht erklärt, weil wir dann zu viele Punkte klären müßten, die in den folgenden Abschnitten beim Experimentieren mit einem „lebendigen" Von-Neumann-Rechner viel leichter klar werden. Nach der Simulation des VNR folgt Abschnitt 3.3 Nachbetrachtung: Steuerwerk, in dem wir wieder auf das Steuerwerk zurückkommen.

    Das Rechenwerk

    Das Rechenwerk können wir, anders als das Steuerwerk, bereits hier eingehend untersuchen. Es besteht lediglich aus zwei Komponenten, die wir beide bereits kennengelernt haben: Der Akkumulator ist ein einfaches Register, die Rechenlogik und die Ablaufsteuerung (die die sogenannten flags erzeugt) bilden zusammen das, was wir als ALU kennen.
    Typisch für das Konzept des Von-Neumann-Rechners ist der sparsame Umgang mit Registern – der Akkumulator ist das einzige Allzweckregister. Er ist als ein Operand an jeder Berechnung beteiligt und nimmt danach immer das Ergebnis auf (daher der Name – die Ergebnisse aufeinanderfolgender Berechnungen werden hier akkumuliert und bilden schließlich das Endergebnis).
    Der zweite Operand wird während der Berechnung direkt über den Datenbus geliefert – weil keine weiteren Allzweckregister an diesen Bus angeschlossen sind, muß der Wert entweder direkt aus dem Hauptspeicher oder aus dem Befehlsregister stammen, das wir in 2.2 Computerprinzipien kennengelernt haben.
    Die „Rechenlogik" meint hier ein Schaltnetz, das einige mathematische Funktionen realisiert. Die „Ablaufsteuerung" tut aber mehr, als nur die jeweils gewünschte Funktion auszuwählen – Akkumulator, Rechenlogik und Ablaufsteuerung bilden zusammen ein Schaltwerk, mit dessen Hilfe z.B. eine Multiplikation auf mehrere Additionen zurückgeführt werden kann. Die Erweiterung einer bestehenden ALU um die Multiplikation kostet damit praktisch nichts, eine Multiplikation mit n würde aber n-1 Mal so lange dauern, wie eine Addition; Alternativen wären das Hinzufügen eines (relativ großen) Schaltnetzes allein für die Multiplikation oder intelligente Mischformen.

    Der Arbeits-Speicher

    Simuliert und bei der Arbeit betrachtet werden kann der Arbeits-Speicher hier.


    3.1.4 Das Eingabe-/Ausgabewerk

    Diese Bezeichnung steht im Konzept des Von-Neumann-Rechners für alle die Logik, die den Computer mit "draußen" verbindet. "Draußen" bedeutet dabei nicht „außerhalb des Gehäuses", sondern "nicht mehr zu dem eigentlichen, universellen VNR-Konzept gehörend". Eine Grafikkarte, für die allermeisten Rechner notwendiges Bauteil zur Kommunikation mit dem Benutzer, ist bereits "draußen" – und heutzutage bereits ein spezialisierter Rechner für sich. Zu dem Ein-/Ausgabewerk gehören also z.B. der PCI-Bus für Einsteckkarten ebenso wie ein SCSI-Interface zum Anschluß von Peripheriegeräten und auch "klassische" parallele (Drucker) und serielle (Maus) Schnittstellen.

    Kritik

    Inwieweit der Von-Neumann-Rechner Grundlage heutiger Computer ist, sollte bis zum Ende dieses Abschnittes klar werden. Die Abschnitte 3.3 Nachbetrachtung: Steuerwerk, 3.5 Die Speicherhierarchie und 3.6 Konzepte zur Steigerung der Verarbeitungsleistung behandeln dann einige wichtige Erweiterungen des VNR-Konzeptes im Detail.
    Obwohl die Struktur dieses klassischen Universalrechners also vielfach erweitert wurde, besonders, um die Verarbeitungsleistung zu erhöhen, orientieren sich nahezu alle heutigen Rechenanlagen an ihr. Sie wird, wenn überhaupt, dann von hochgradig parallel arbeitender Hardware für spezielle Anwendungsfälle durchbrochen (Quelle: Carsten Kelling: Aufbau und Funktionsweise von Computersystemen)

    Dies gilt auch für alle Weiterentwicklungen des Geräts, das wir heute gemeinhin als Computer bezeichnen. Damit sind günstige Notebooks, aber auch bereits die nachfolgenden Geräte wie die Tablet-PCs mit all ihren Erscheinungen gemeint. Denn auch hinter diesen kleineren Computern steckt die Struktur des klassischen Universalrechners. Die Leistungskraft dieser Geräte hat sich deutlich und geradezu rasant weiter entwickelt, sie sind den ersten Rechnern haushoch überlegen.


    Meta-Kritik

    Heutzutage wird unter Von-Neumann-Architektur nur verkürzt ein Prozessor mit gemeinsamem Instruktions- und Datencache verstanden, im Unterschied zur Harvard-Architektur, der nach dem von Howard Aiken an der Universität Harvard konstruierten Mark I benannten Architektur mit getrenntem Speicher und getrennten Pfaden für Daten und Instruktionen. Das bezieht sich inzwischen nur noch auf den L1-Cache, dass L2-Cache und Hauptspeicher gemeinsam sind, ist für diese Betrachtung weitgehend unwichtig. Der 486 war in diesem Sinne ein typischer Von-Neumann-Prozessor, fast der letzte seiner Zunft, denn in der x86-Welt wurde diese Architektur dann nur noch von Cyrix am Leben gehalten -- wiewohl diese zum Schluss mit winzigen zusätzlichen Mini-Caches auch schon Havard-lastig waren. Seitdem sind Von-Neumann-Architekturen weitgehend ausgestorben. Ob Pentium 4 oder Athlon, ob Itanium oder Opteron, ob PowerPC, UltraSPARC oder ARM: Getrennte Caches für Instruktionen und Daten sind fast durchgängig der Standard.

    Dazu kommen noch die Verbindungen zwischen den Funktionsblöcken - das Bussystem.

    Die Rechnerarchitektur des Von-Neumann-Rechners fällt in die Klasse der SISD-Architekturen. ”

    SISD: Abkürzung für single instruction stream, single data stream. Ein Rechner mit solcher Architektur besitzt nur einen Prozessor und bearbeitet damit jeweils nur einen Befehl zur Zeit, erzeugt also auch nur einen Strom von Daten. Von praktischer Bedeutung sind noch folgende Architekturen:


    SIMD (single instruction stream, multiple data stream): Mehrere Prozessoren führen jeweils denselben Befehl auf unterschiedlichen Daten aus (Beispiel: systolische Arrays).
    MIMD (multiple instruction stream, multiple data stream): Das allgemeinste Architekturmodell für Parallelverarbeitung - mehrere Prozessoren führen unterschiedliche Befehle auf unterschiedlichen Daten aus.