# Wie ein Von-Neumann-Rechner funktioniert Üblicherweise wird die Von-Neumann-Architektur in folgendem bekannten Schaubild dargestellt: {{:hardware:von-neumann-bekannt.drawio.svg|}} ## Von-Neumann-Prinzipien 1. **Aufbau** Ein Rechner hat fünf Hauptteile: 1) Das Steuerwerk 2) Das Rechenwerk 3) Den Speicher 4) Das Eingabewerk 5) Das Ausgabewerk {{:hardware:von-neumann-5-komponenten.drawio.svg?800|}} 2. **Programme sind nötig** Der Rechner kann verschiedene Aufgaben lösen, aber nur, wenn ein Programm von außen in den Speicher geladen wird. Ohne Programm kann er nichts tun. 3. **Speicherinhalt** Im Speicher liegen nicht nur Programme, sondern auch Daten, Zwischen- und Endergebnisse. 4. **Speicherzellen** Der Speicher ist in gleich große Zellen aufgeteilt, die fortlaufend nummeriert sind. Über die Nummer (Adresse) kann man auf den Inhalt jeder Zelle zugreifen oder ihn ändern. 5. **Befehle im Speicher** Befehle eines Programms werden nacheinander in Speicherzellen abgelegt. Das Steuerwerk ruft den nächsten Befehl auf, indem es die Adresse um eins erhöht. 6. **Sprungbefehle** Mit Sprungbefehlen kann die normale Reihenfolge der Befehle verändert werden. 7. **Befehlsarten** Es gibt verschiedene Arten von Befehlen: - Rechenbefehle (z. B. `Addieren`, `Multiplizieren`) - Logische Befehle (z. B. `Vergleiche`, `UND`, `ODER`) - Transportbefehle (z. B. Daten zwischen Speicher und Rechenwerk bewegen) - Bedingte Sprünge - Sonstige Befehle (z. B. Schieben, Warten) 8. **Binärcode** Alle Daten (Befehle, Adressen usw.) werden im Binärcode gespeichert. Schaltwerke im Steuerwerk sorgen dafür, dass alles richtig entschlüsselt wird. ## Ladevorgang eines Programms 1. **Eingabe des Programms:** Das Programm wird über das **Eingabewerk** (z. B. Tastatur, Netzwerk, Datenträger) in den Rechner eingegeben. Das kann z. B. durch das Tippen von Code, das Laden einer Datei oder das Übertragen von einem anderen Gerät geschehen. 2. **Umwandlung in Maschinensprache:** Falls das Programm in einer höheren Programmiersprache (z. B. Python, C++) geschrieben ist, wird es zunächst von einem **Compiler** oder **Interpreter** in Maschinensprache übersetzt. Maschinensprache besteht aus Binärcode, den der Rechner direkt verstehen und ausführen kann. 3. **Speicherung im Arbeitsspeicher (RAM):** Der Binärcode des Programms wird nun in den **Hauptspeicher (RAM)** geladen. Das Steuerwerk des Rechners organisiert diesen Vorgang: - Der Binärcode wird in die **Speicherzellen** des RAM geschrieben. - Jede Speicherzelle hat eine **Adresse**, unter der der Binärcode abgelegt wird. - Die Befehle des Programms werden in aufeinanderfolgenden Speicherzellen gespeichert. 4. **Start des Programms:** Sobald das Programm im RAM liegt, beginnt das **Steuerwerk** mit der Ausführung: - Es liest den ersten Befehl aus der Speicherzelle mit der Startadresse. - Der Befehl wird entschlüsselt (decodiert) und an das **Rechenwerk** oder andere Funktionseinheiten weitergegeben. - Das Steuerwerk erhöht die Adresse um eins, um den nächsten Befehl zu laden, es sei denn, ein Sprungbefehl ändert die Reihenfolge. 5. **Ausführung der Befehle:** Die Befehle werden nacheinander abgearbeitet. Dabei können Daten aus dem Speicher gelesen oder dorthin geschrieben werden. Bei Bedarf werden Zwischenergebnisse im Speicher abgelegt. **Zusammenfassung:** Ein Programm wird über das Eingabewerk in den Rechner geladen, in Maschinensprache übersetzt, im RAM gespeichert und vom Steuerwerk schrittweise ausgeführt. Der Von-Neumann-Rechner arbeitet dabei nach dem Prinzip der **gespeicherten Programme**: Programm und Daten liegen im selben Speicher und werden sequenziell abgearbeitet.