====== von Neumann-Architektur ====== In den ersten Rechnern, z.B. Konrad Zuses [[https://de.wikipedia.org/wiki/Zuse_Z3|Z3]] oder der [[https://de.wikipedia.org/wiki/ENIAC|ENIAC]], waren die Programme auf Lochstreifen gespeichert oder durch Kabelverbindungen oder Schalter fest verdrahtet. Diese Art der Programmierung war unflexibel und fehleranfällig. Daher erdachte der Mathematiker John von Neumann 1946 die "**von Neumann-Architektur**", ein Referenzmodell für Computer, das bis heute verwendet wird. Im Zentrum steht die Idee, die **Programme im Arbeitsspeicher des Rechners** zu speichern, sodass sie mit wenig Aufwand gegen andere Programme ausgetauscht werden können. ===== Komponenten eines von-Neumann-Rechners ===== * **Prozessor** //(**C**entral **P**rocessing **U**nit)//, bestehend aus * **Rechenwerk** //(**A**rithmetic **L**ogic **U**nit)// \\ Es führt **Rechenoperationen** (Plus, Minus, Mal, ...) und **logische Operationen** (Und, Oder, Nicht, ...) aus. * **Steuerwerk** //(Control Unit)// \\ **interpretiert die Anweisungen des Programms** und **steuert** das **Ein-/Ausgabewerk**, das **Rechenwerk** und die **Arbeitsspeicher** entsprechend der aktuellen Anweisung; \\ Regelt den Datenfluss im Prozessor und auch die Befehlsabfolge. * **Bussystem** \\ Ein Bus ist eine Menge paralleler Leitungen, an denen alle Komponenten des von-Neumann-Rechners angeschlossen sind und über die sie Daten austauschen. Man unterscheidet zwischen * **Datenbus**: Über ihn werden die Daten zwischen den Komponenten übertragen. Auch die jeweils nächste Programmanweisung wird über den Datenbus vom Arbeitsspeicher zum Prozessor übertragen. * **Adressbus**: An ihn legt der Prozessor bspw. die Adresse der Speicherzelle des Arbeitsspeichers, aus der er lesen/in die er schreiben möchte. * **Steuerbus**: Er überträgt Steuersignale (z.B. den Systemtakt, ob gerade gelesen/geschrieben wird, Interruptsignale der Komponenten an den Prozessor usw.) * **Speicher** //(Memory)//: Speichert sowohl Programme als auch Daten und ist für das Rechenwerk und das Steuerwerk zugänglich. * **Ein- und Ausgabeeinheit** //(I/O Unit)//: steuert die Eingabe und Ausgabe von Daten zum Anwender (z.B. Maus/Tastatur/Bildschirm) und zu anderen Systemen (Schnittstellen). ===== von-Neumann-Prinzipien ===== - Ein Rechner besteht aus den oben genannten Komponenten. - Programme sind Folgen von Anweisungen. Sie werden von außen geladen und im Arbeitsspeicher gespeichert. - Der Arbeitsspeicher ist in Zellen gleicher Größe unterteilt, die fortlaufende Adressen besitzen. - Anweisungen einer Sequenz liegen im Arbeitsspeicher direkt hintereinander. - Von der sequenziellen Ausführung der Anweisungen kann durch Sprungbefehle abgewichen werden. - Die elementaren Speicherbauteile kennen nur zwei Zustände "ein" und "aus". Daher werden Befehle und Daten üblicherweise binär kodiert.