John von Neumann
John von Neumann (* 28. Dezember 1903 in Budapest, Österreich-Ungarn; † 8. Februar 1957 in Washington, D.C., Vereinigte Staaten) war ein ungarisch-US-amerikanischer Mathematiker.
Von Neumann gilt als einer der Väter der Informatik. Nach ihm wurde die Von-Neumann-Architektur benannt, ein Computer, in dem Daten und Programm binär codiert im selben Speicher liegen.
Von-Neumann-Architektur
1945 beschrieb John von-Neumann sein Konzept erstmals. Das Konzept war damals revolutionär, da zuvor entwickelte Rechner an ein festes Programm gebunden waren. Die meisten der heute gebräuchlichen Computer basieren auf dem Grundprinzip der Von-Neumann-Architektur.
Ein Von-Neumann-Rechner beruht auf folgenden Komponenten, die bis heute in Computern verwendet werden:
- Rechenwerk
- führt Rechenoperationen und logische Verknüpfungen durch
- Steuerwerk
- interpretiert die Anweisungen eines Programms und regelt die Befehlsabfolge
- Bus System
- dient zur Kommunikation zwischen den einzelnen Komponenten
- Speicherwerk
- speichert sowohl Programme als auch Daten, welche für das Rechenwerk zugänglich sind
- Ein-/Ausgabewerk
- steuert die Ein- und Ausgabe von Daten, zum Anwender (Tastatur, Bildschirm) oder zu anderen Systemen (Schnittstellen)
Bus-System
Man unterscheidet drei verschiedene Busse: Adressbus, Datenbus und Steuerbus
- Adressbus
- überträgt Speicheradressen
- Busbreite bestimmt den adressierbaren Speicher
- Datenbus
- überträgt Daten
- Busbreite bestimmte maximale Datenmenge die pro Schritt verarbeitet werden kann
- Steuerbus
- steuert Bus-Vorgänge wie z.B. Lesen oder Schreiben
Arbeitsweise CPU
Von-Neumann-Zyklus
Der Prozessor führt immer wieder den gleichen zyklischen Ablauf aus. Dieser Ablauf wird auch Von-Neumann-Zyklus genannt und besteht aus folgenden Schritten:
1. Befehl laden
Der nächste Befehl wird aus dem Speicher in das Befehlsregister geladen. Dazu wird die Adresse des nächsten Befehls vom Programmzähler an das Speicherwerk Übertragen. Der Befehl wird aus dem Speicher über den Datenbus in das Befehlsregister übertragen. Anschliessend wird der Programmzähler um eins erhöht.
2. Befehl decodieren
Nun wird der Befehl, welcher in das Befehlsregister geladen worden ist, decodiert. Das bedeutet, dass das Dekodierwerk die Aktionen, welche für diesen Befehl ausgeführt werden müssen, in Steuersignale an die verschiedenen Komponenten Übersetzt.
3. Befehl ausführen
Schliesslich wird der eigentliche Befehl ausgeführt, indem das Dekodierwerk die Steuersignale an die Komponenten auslöst. Im nächsten Abschnitt werden einige typische Befehle erläutert.
Aufgabe
Versuche den Von-Neumann-Zyklus anhand des Additionsbeispiels des LMC nachzuvollziehen. Spiele dazu das Programm schrittweise (also mit dem roten ⏯️-Button) ab.
Befehlssatz
Der Befehlssatz ist die komplette Sammlung von Befehlen, welche ein Prozessor versteht und ausführen kann. Im folgenden werden einige typische Befehle betrachtet.
Wert laden
Um einen Wert bearbeiten zu können, muss dieser erst aus dem Hauptspeicher geladen werden. Mit einem Lade-Befehl wird ein Wert aus dem Speicher in den Akkumulator des Rechenwerks geladen.
Wert speichern
Wenn im Rechenwerk ein Resultat berechnet wurde, muss es wieder in den Speicher geschrieben werden. Das geschieht mit diesem Befehl.
Addieren
Im Rechenwerk können arithmetische Operationen durchgeführt werden. Es können also zwei Zahlen addiert, subtrahiert, multipliziert oder dividiert werden.
Eingabe
Ein Wert kann aus einem Eingabegerät in den Hauptspeicher eingelesen werden.
Ausgabe
Ein Wert kann aus dem Hauptspeicher auf ein Ausgabegerät ausgegeben werden.
Aufgabe
Finde die oben beschriebenen Befehle im LMC und notiere ihren entsprechenden Code (3 Buchstaben)
Wert Laden =
Wert Speichern =
Addieren =
Eingabe =
Ausgabe =
Logische Schaltung
Durch geschicktes Verknüpfen von Gatter können Schaltungen erzeugt werden, welche Berechnungen durchführen. Im Beispiel lassen sich Binärzahlen stellenweise addieren:
👉 Addierer