Informatikmaterialien 
von Tino Hempel

Startseite | Informatik | Physik | Mathematik | Sonstiges |


Richard-Wossidlo-Gymnasium Ribnitz-Damgarten
Fachbereich Informatik


John-von-Neumann-Architektur 


von-Neumann-Prinzipien

John von Neumann1946 stellte der in die USA ausgewanderte Ungar John von Neumann das Konzept für einen universellen, speicherprogrammierbaren Rechner vor. Dieses Konzept schlägt sich auch heute noch in den modernen Computern nieder.

Demnach gelten folgende Prinzipien:

  1. Ein elektronisch arbeitender Rechner besteht stets aus:
Aufbau
  1. Ein Rechner ist universell einsetzbar und löst eine Vielzahl von Problemen. Dazu ist dem Gerät von außen ein Programm in den Speicher einzugeben.
  2. Im Speicher liegen Programme, Daten und Ergebnisse.
  3. Der Speicher besteht aus gleichgroßen, fortlaufend numerierten Zellen. Über die Nummer (Adresse) läßt sich die Speicherzelle lesen oder schreiben.
  4. Ein Programm ist eine Folge von Anweisungen, die entsprechend ihrer Abarbeitungsfolge hintereinander im Speicher steht. Sprungbefehle erlauben Abweichungen von der sequentiellen Abarbeitung der Befehle.
  5. Es gibt zumindestens
  6. Alle Daten werden binär codiert. Dem Inhalt einer Speicherzelle kann man nicht ansehen, ob es sich um einen Befehl, ein Datum oder eine Adresse handelt.
Aufbau nach von Neumann

Umsetzung

Zentraleinheit

Die Komponenten Rechenwerk und Steuerwerk sowie Grundelemente des Speichers (Register) der Von-Neumann-Architektur werden in der Zentraleinheit (CPU - Central Processing Unit) vereint. Dabei nimmt das Register A (Akkumulator) eine Sonderrolle ein. Alle Rechenoperationen werden im Rechenwerk mit Hilfe der Register vorgenommen. 

Ein angeschlossener Taktgeber sorgt für die schrittweise Arbeit in der CPU und im gesamten System. Die Erhöhung der Taktfrequenz ist eine Möglichkeit, die Arbeitsgeschwindigkeit zu verbessern. Allerdings sind hier Grenzen gesetzt, da die Operationen zeitlich aufeinander abgestimmt sind.

Der Datenbus gibt ebenfalls Aufschuss über die Leistungsfähigkeit des Rechners. Je größer er ist, desto mehr Datenbits können auf einmal verarbeitet werden.

Z80

BUS (Binary Unit System)Bus

Wir unterscheiden drei Busse:

Befehlsabarbeitung

Befehle werden nach ihrer Länge unterschieden. In 8-Bit-CPUs gibt es 1-, 2-, 3- und 4-Byte-Befehle. Diese bestehen stets aus einem Operationsteil der festlegt, was mit welchen Daten zu tun ist und ggf. aus ein oder zwei Operanden. Zur Abarbeitung wird zunächst der Befehl geholt, dann in der CPU dekodiert und schließlich ausgeführt.

Der Polycomputer 880, ein in der DDR erntwickelter Z80-Rechner, ist in der Lage, Programme real im Schrittbetrieb auszuführen und die Bussignale durch Leuchtdioden zu visualisieren.

LED des Polycomputers

Problemlösung durch Programmierung

Jeder Prozessor (CPU) ist in der Lage, bestimmte Grundbefehle abzuarbeiten, wie z. B.: 

Beispiel: Programmausschnitt für einen Z80-Prozessor (Übungsmaterial für LC 80 bzw. Link LC 80-Simulator):

Addresse
Maschinencode
Mnemonic/Assembler
Erläuterungen
2000
3A 40 20
LD A, (2040H)
Das Register A wird mit dem Inhalt der Speicherzelle 2040h geladen.
2003
2F
CPL
Der Inhalt des Register A wird negiert.
2004
32 41 20
LD (2041H), A
Auf die Speicherzelle 2041h wird der Inhalt des Registers A geschrieben.
2007
76
HALT
Programmhalt!









        
2040
6A
DEFB 6AH
Definiertes Byte 6Ah (Datenbyte)

Bei den ersten Computern musste der Maschinencode noch bitweise eingegeben werden, wie etwa beim Link Altair 8080, dem ersten kommerziell erhältlichen Mikrocomputer. Nachfolgemodelle nutzten dann schon die Darstellung der Maschinencodes durch Hexadezimalzahlen, wie der Polycomputer 880 oder der LC 80. Dennoch war das Erstellen von Programmen mühsehlig und so entwickelte sich eine erste maschinennahe Programmiersprache: Assembler, die aus den kryptischen Bit- bzw. Bytefolgen Befehle machte. Auch wenn diese ebenfalls noch kryptisch waren, so gab es doch bereits Programme, die es ermöglichten den Assembler einzugeben und daraus den Maschinencode zu erzeugen. Unter DOS/Windows gibt es den debug-Befehl noch heute und Link man kann ihn auch noch benutzen!

Lerncomputer LC 80 mit dem o. g. Programm

Ein Programm ist eine Folge von Anweisungen, die dem Computer sagen, was er zu tun hat. 

Solche Folgen von Anweisungen sind keine Erfindung des Computerzeitalters. Die Naturwissenschaften und Mathematik leben von Schrittfolgen zur Problemlösung. Allseits bekannt sind etwa:

Im mathematischen Sinne spricht man von Algorithmen. Aber auch außerhalb der Naturwissenschaften bestimmen Schrittfolgen unser Leben: Ausfüllen von Formularen, Waschen von Wäsche, Fahren eines Autos. 

Ein (imperativer) Algorithmus ist eine Verarbeitungsvorschrift, die aus einer endlichen Folge von eindeutig ausführbaren Anweisungen besteht, mit dem eine Vielzahl gleichartiger Aufgaben gelöst werden kann. 
Der Algorithmus gibt an, wie Eingabegrößen schrittweise in Ausgabegrößen umgewandelt werden. 
Dabei müssen folgende Eigenschaften erfüllt sein: 

  • Endlichkeit
    Text zum Aufschreiben des Algorithmus ist endlich, bei der Abarbeitung benötigt er endlich viel Platz.

  • Determiniertheit
    Unter gleichen Startbedingungen und Parametern liefert des Algorithmus immer das gleiche Ergebnis.

  • Universalität
    Algorithmus löst eine Klasse von Problemen; die Auswahl des Problems erfolgt über Parameter.

  • Deterministisch
    Zu jedem Zeitpunkt gibt es höchstens eine Möglichkeit der Fortsetzung des Algorithmus.

  • Terminiertheit
    Algorithmus liefert nach endlich vielen Schritten ein Ergebnis (gilt nicht für Betriebssysteme) 

Die Bezeichnung Algorithmus leitet sich übrigens aus der Verstümmelung des Namens des persisch-arabischen Mathematikers Abu Ja'far Muhammad ibn Musa Al-Chwarizmi (787 bis ca. 850), der insbesondere in Bagdad wirkte und in dem Buch Hisab al-jabr w'al-muqabala viele Rechenverfahren beschrieben hat.

Damit ergibt sich folgende Situation:

Die Beschreibung des Algorithmus kann natürlich in Maschinensprache/Assenbler erfolgen. Wie oben gesehen, hat diese aber einige fundamentale Nachteile: sie ist schwer verständlich und prozessorabhängig. Sinnvoll wäre die Beschreibung des Algorithmus (fast) umgangssprachlich bzw. unter Verwendung fester Begriffe/Schlüsselwörter. 

Diese Forderung erfüllen höhere Programmiersprachen. Eine der ersten höheren Programmiersprachen war COBOL und wurde von Navycaptain Link Grace Hopper entwickelt. Auf sie geht übrigens auch der Begriff Debugging und die Ursache des Millenium-Problem zurück.

Noch besser wäre eine prozessor- und programmiersprachenunabhängig Darstellung von Algorithmen, diese bietet dann das Flussdiagramm oder Struktogramm (Nasi-Shneiderman-Diagramm).

Quellen:



zur Startseite
© Tino Hempel 1997 - 2007 Im Web vertreten seit 1994.
Eine Internet-Seite aus dem Angebot von Tino Hempel.

Für alle Seiten gilt der 
Haftungsausschluss/Disclaimer.