3. von-Neumann-Architektur
3.1 historischer Zusammenhang
Versetzen wir uns zurück zum Ende des 19. Jahrhunderts. An Computer in der heutigen Form war noch nicht zu denken. Dafür gab es Rechenmaschinen. Diese folgten zunächst dem Prinzip der Staffelwalzenmaschine (näheres kann man dazu zum Beispiel hier nachlesen (Achtung! Externer Link)), waren also rein mechanisch.
Zu Beginn des 20. Jahrhunderts kam es dann zum revolutionären Durchbruch durch die Erfindung erster vollautomatischer elektrischer Rechenmaschinen. Diese bekamen im Laufe der Zeit immer mehr elektronische Komponenten, die die mechanischen ersetzten. Es begann die Entwicklung diese Maschinen programmgesteuert einsetzen zu können und sie dadurch flexibel einsetzbar zu gestalten. Als erster Vorläufer des Computers entstand so die Z1 von Konrad Zuse im Jahr 1941. Bei den bis dahin erfunden programmierbaren Maschinen waren die Programme fest durch ihre Hardware vorgegeben. Änderungen konnten nicht eingebaut werden.
1945 veröffentlichte John von Neumann eine Zusammenfassung verschiedener wissenschaftlicher Erkenntnisse zur Computertheorie und ergänzte diese durch das Konzept Computerprogramme flexibel zu speichern. Dies war eine bahnbrechende Idee, da Programme bisher nur durch Schaltungen und Verdrahtungen an der Maschine verändert werden konnten. Dieses Konzept der speicherprogrammierbaren Computer hat bis heute Bestand. So fahren wir wie selbstverständlich den Rechner hoch und starten anschließend mehrere Programme. Auch die Installation neuer Software ist durch dieses Konzept problemlos möglich.
3.2 Aufbau und Funktionsweise
Die von-Neumann-Architektur besteht aus fünf verschiedenen Komponenten:
- Rechenwerk
- Speicherwerk
- Steuerwerk
- Ein- und Ausgabewerk
- BUS-System
Das Ein- und Ausgabewerk verbindet den eigentlichen Rechner mit seiner Umwelt. In das Eingabewerk werden Zeichen eingegeben, zum Beispiel mit Hilfe einer Tastatur. Durch das Ausgabewerk werden dem Benutzer die Ergebnisse der Berechnungen mitgeteilt.
Diese Daten, Variablen und Programme können im Speicherwerk abgelegt werden. Hierfür stehen viele durchnummerierte gleichgroße Zellen zur Verfügung. Die Nummer gibt dabei die Speicheradresse an, über die die Speicherzelle abgerufen werden kann.
Das Rechenwerk führt während des Programmablaufs die anfallenden arithmetischen Berechnungen ( + - * / ) und logischen Operationen (AND, OR, NOT) auf Bitebene aus.
Das Steuerwerk koordiniert die vom Programm vorgegebenen Anweisungen unter Berücksichtigung der zeitlichen Abläufe. Es hat Zugriff auf alle Komponenten der von-Neumann-Architektur. Steuerwerk und Rechenwerk sind heute nicht mehr von einander getrennte Komponenten, sondern bilden zusammen die CPU.
Die Kommunikation der einzelnen Komponenten findet über ein Bussystem statt. Dies ist problematisch, da nicht mehrere Signale gleichzeitig über dieses System geleitet werden können. Wollen also mehrere Komponenten gleichzeitig auf den Bus zugreifen, kommt es zu Kollissionen, bei denen alle beteiligten Daten verloren gehen. Entsprechend kann immer nur eine Komponente auf den Bus zugreifen. Dieses Problem wird heute durch Caches und Multithreading etwas abgemlidert.
Soll die Funktionsweise noch genauer dargestellt und vertieft werden, empfiehlt sich das Programm Johnny.
zum ExkursAufgabe: Ablauf