Versions-History von Von Neumann Architekturmodell
Zum Begriff
Von Neumann Architekturmodell
Änderung des Felds
Beschreibung am Donnerstag, 25. Januar 2001, 23:00:
+Dem überwiegenden Teil aller Rechner liegt nach wie vor ein Maschinenmodell zugrunde,
<br>das vom Mathematiker J. von Neumann bereits in den fünfziger Jahren entworfen wurde.
<br>Seine wesentlichen Komponenten sind:
<br><ul><li>Prozessoren, die <a href="./?w=1&q=760">Programme</a> verarbeiten und aus einem Leit- und einem Rechenwerk bestehen;
<br><li>Speicher für <a href="./?w=1&q=760">Programme</a> und Daten;
<br><li>Ein- und Ausgabewerke für die Kommunikation mit der Umwelt.
<br></ul>
<br>Prozessoren werden auch als <a href="./?w=1&q=151">CPUs</a> (engl.:central processing unit) bezeichnet, und Leitwerke heißen manchmal auch Steuerwerke.
<br>Rechenwerke sind weiter als <a href="./?w=1&q=43">ALUs</a> ,(eng.:arithmetic logical unit) oder Operationswerke bekannt, und statt <a href="./?w=1&q=209">E/A</a>-Werken bzw. Geräten
<br>spricht man manchmal auch von der Peripherie.
<br>
<br>Technisch gesehen handelt es sich bei den einzelnen Einheiten und dem Gesamtsystem um Schaltwerke. Die <a href="./?w=1&q=151">CPU</a> sowie die meisten
<br>anderen Komponenten sind dabei als synchrone Schaltwerke ausgeführt, weil diese leichter zu größeren Schaltwerken zusammenzusetzen sind.
<br>
<br>Die zentrale Einheit des von Neumann-Maschinenmodells ist der <a href="./?w=1&q=151">Prozessor</a>. Wie bei komplexeren Schaltwerken üblich, ist er aus
<br>zwei kooperierenden Teilschaltwerken aufgebaut, wobei die verarbeitende Einheit, das Rechenwerk, durch das Leitwerk gesteuert wird.
<br>Die Aufgabe des Rechenwerks ist die Durchführung arithmetischer und logischer Operationen.
<br>
<br>Charakteristisch für von Neumann-Rechner sind neben der schon angegebenen Gliederung die folgenden Prinzipien:
<br><ul><li>Der Speicher besteht aus einzelnen, gleich großen Speicherzellen, welche fortlaufend adressiert sind.
<br><li>Der Inhalt einer Speicherzelle wird über ihre <a href="./?w=1&q=28">Adresse</a> angesprochen.
<br><li>Der Rechner verarbeitet Gruppen von <a href="./?w=1&q=99">Bits</a> fester Länge.
<br><li>Programme und Daten liegen in einem einheitlichen Speicher.
<br><li>Zur Bearbeitung von Aufgaben werden <a href="./?w=1&q=760">Programme</a> eingegeben und im Speicher abgelegt.
<br><li>Programme bestehen aus einzelnen <a href="./?w=1&q=86">Befehlen</a>, welche der <a href="./?w=1&q=151">Prozessor</a> sequentiell abarbeitet.
<br><li>Die Verarbeitung von <a href="./?w=1&q=86">Befehlen</a> geschieht normalerweise in der Reihenfolge ihrer Ablage im Speicher.
<br><li>Die normale Verarbeitungsreihenfolge der <a href="./?w=1&q=86">Befehle</a> kann durch bedingte und unbedingte Sprungbefehle verändert werden.
<br></ul>
<br>Hierdurch sind Verzweigungen im Ablauf des <a href="./?w=1&q=760">Programms</a> in Abhängigkeit von Daten möglich.
<br>
<br>Das hervorstechende Merkmal ist die Steuerung des <a href="./?w=1&q=151">Prozessors</a> durch im Speicher abgelegte <a href="./?w=1&q=760">Programme</a>. Diese Speicherprogrammierbarkeit erlaubt es, den <a href="./?w=1&q=151">Prozessor</a> "universell" für die
<br>Lösung sehr unterschiedlicher Probleme anzuwenden, ohne die Struktur des Rechners zu verändern.
<br>
<br>Eine Konsequenz der Gleichbehandlung von Daten und <a href="./?w=1&q=760">Programmen</a> ist es, daß <a href="./?w=1&q=760">Programme</a> selbst als Eingabe- oder Ausgabedaten anderer <a href="./?w=1&q=760">Programme</a> auftreten können. In diesem Sinne ist auch
<br>die Bezeichnung "Daten" an den Verbindungspfeilen von <a href="./?w=1&q=151">CPU</a> und den Ein-/Ausgabewerken in Bild 1.1 zu verstehen: zu den ein- bzw. ausgegebenen Daten gehören auch <a href="./?w=1&q=760">Programme</a>, die aber
<br>durch den <a href="./?w=1&q=151">Prozessor</a> nicht direkt ausgeführt, sondern erst im Speicher abgelegt und dann ausgeführt werden.
<br>
<br>Im Prinzip ist es durch die Behandlung von Befehlskode als Daten sogar möglich, den Kode des gerade laufenden Programmes zu verändern. Solch selbstmodifizierender Kode ist allerdings nur
<br>sehr schwer auf seine Korrektheit zu überprüfen und gilt inzwischen als schlechter Programmierstil. Statt dessen benutzt man Programmverzweigungen, um den Ablauf des Programmes von den
<br>Eingabedaten oder bestimmten Zwischenergebnissen abhängig zu machen. Der gesamte potentiell ausführbare Programmkode steht also bereits vor der eigentlichen Ausführung fest und kann so
<br>bereits auf bestimmte statische Eigenschaften hin überprüft werden, wie z.B. ob alle vorkommenden <a href="./?w=1&q=757">Variablen</a> vorher deklariert wurden.
<br>
<br>Moderne Rechner weichen in einigen Punkten von den oben genannten Prinzipien ab. Dennoch folgt nach wie vor das Gros aller Rechner den
<br>meisten dieser Prinzipien, so daß man sie als "von Neumann-Rechnerarchitekturen" bezeichnet.