John von Neumann und die Von-Neumann-Architektur

eniac

 

Computer der ersten Generation waren riesige Geräte. So bestand zum Beispiel der ENIAC (1943), ein aus Mitteln der amerikanischen Armee finanziertes Projekt, aus 18.000 Vakuumröhren und 1500 Relais, wog 30 Tonnen und verbrauchte 140 KW an Strom. Programmiert wurde der ENIAC durch Einstellen von bis zu 6000 mehrstelligen Schaltern und durch Anschluss unzähliger Buchsen mit einem wahrhaften Wald an Steckbrückenkabeln (vgl. [Tanenbaum2006, S. 30ff.])

JohnvonNeumann-LosAlamosIm Jahre 1944 legte John von Neumann, ein ehemaliges Mitglied des ENIAC-Projektes, ein Architektur-Konzept für einen speicherprogrammierten Universalrechner vor. Von Neumann fiel auf, dass die Programmierung von Computern mit Unmengen von Schaltern und Kabeln langsam, mühsam und unflexibel war.

Von Neumann erkannte, dass sich das Programm mit den Daten im Speicher des Computers in digitaler Form darstellen lässt, und fand heraus, dass sich die schwerfällige, serielle Dezimalarithmetik des ENIAC, bei der jede Ziffer mit zehn Vakuumröhren (1 On und 9 Off) dargestellt wird, durch parallele Binärarithmetik ablösen lässt.

Von-Neumann-Architektur

Der erste Entwurf von Neumanns ist heute als von-Neumann-Maschine oder als von-Neumann-Architektur bekannt. Wie weitsichtig und visionär sein Konzept war, wird daran deutlich, dass auch aktuellen Computern noch diese Architektur zugrunde liegt.

Eine Von-Neumann-Maschine weist die folgenden wichtigen Merkmale auf:

  1. Ein programmgesteuerter Rechner besteht aus
    1. zentraler Recheneinheit (CPU = Central Processing Unit) mit
      • einer ALU (Arithmetical Logical Unit) und
      • einer Steuereinheit
    2. Speicher
    3. Ein- und Ausgabe-Einheiten und
    4. den internen Datenwegen (Busse)
  2. Die Zahlen werden im Rechner binär dargestellt.
  3. Die Struktur des Rechners ist unabhängig von dem zu bearbeitenden Problem (Universalrechner). Die verschiedenen Aufgaben werden durch entsprechende Programme gelöst.
  4. Programme und von diesen benötigte Daten werden in einem gemeinsamen Speicher abgelegt. Die Speicherplätze sind gleich lang und werden über Adressen einzeln angesprochen.
  5. Befehle geben nur die Speicheradresse an, wo die Daten abgelegt sind, und nicht die Daten selbst.

von_neumann_rechner

Die bedeutendste Neuerung in der damaligen Zeit war von Neumanns Idee, das Programm und die Daten zuerst in denselben Speicher zu laden und dann auszuführen. Bis dahin war das Programm noch hardwaremäßig verschaltet oder wurde über Lochstreifen schrittweise eingelesen und sofort (streng sequentiell) bearbeitet. Nun war es möglich:

  1. Sprünge einzuführen, sowohl auf vorhergehende wie spätere Programmsequenzen, und
  2. Programmcode während des Programmablaufes zu modifizieren (allerdings eine sehr riskante, fehleranfällige Möglichkeit!).

Von Neumann erreicht also mit seinem Konzept, dass der Rechner selbstständig logische Entscheidungen treffen kann. Damit ist der Übergang vom starren Programmablauf zur flexiblen Programmsteuerung oder, anders ausgedrückt, von der Rechenmaschine zur Datenverarbeitungsanlage vollzogen.

Nachteile der von-Neumann-Architektur

Die von Neumann Architektur hat jedoch einige Nachteile:

  1. Im Speicher lassen sich Befehle und Daten anhand des Bitmusters nicht unterscheiden.
  2. Im Speicher lassen sich variable und konstante Daten nicht unterscheiden.
  3. Bei falscher Adressierung können Speicherinhalte verändert werden, die nicht geändert werden dürfen, wie z.B. Befehle und Konstanten (Eine Bitänderung bei einem Befehl erzeugt einen ganz anderen Befehl!)
  4. Da Daten und Befehle im Speicher gehalten werden, wird die Verbindung und Datenübertragung zwischen CPU und Speicher über den Systembus zum Von-Neumann-Flaschenhals:
    Jeglicher Datenverkehr von und zur CPU wird über den internen Bus abgewickelt, dessen Transfergeschwindigkeit langsamer ist, als die Verarbeitungsgeschwindigkeit der CPU.
    Dieses Problem versucht man in modernen PC’s durch die Verwendung von schnellem Cache-Speicher abzuschwächen, der meist in der CPU integriert ist.

John von Neumann: Die Rechenmaschine und das Gehirn