Die als von Neumann- Architektur bekannte Architektur ist ein Modell für einen Computer , der eine einzelne Speicherstruktur verwendet, um sowohl die Anweisungen als auch die von der Berechnung angeforderten oder erzeugten Daten zu speichern. Solche Maschinen werden auch als aufgezeichnete Programmcomputer bezeichnet . Die Trennung zwischen Speicher und Prozessor ist in diesem Modell impliziert.
Diese Architektur wird in Anlehnung an den Mathematiker John von Neumann genannt , der im Juni 1945 im Rahmen des EDVAC- Projekts die Erstbeschreibung eines Computers entwickelte, dessen Programm in seinem Speicher gespeichert ist.
Alan Turing, John von Neumann sowie John William Mauchly und John Eckert (während ihrer Arbeit an ENIAC) verwendeten dieses Konzept unabhängig voneinander.
Herman Goldstine (ein Kollege von John von Neumann) verteilte eine unvollendete Beschreibung mit dem Titel " Erster Entwurf eines Berichts über EDVAC", die auf der Arbeit von Eckert und Mauchly unter dem alleinigen Namen von Neumann basiert.
Das Dokument wurde von Dutzenden von Neumanns Kollegen in Amerika und Europa gelesen und inspirierte mehrere Maschinen im Bauwesen.
Die von Neumann-Architektur zerlegt den Computer in vier Teile:
Indem Anweisungen wie Daten behandelt werden, kann ein Computer, auf dem ein Programm gespeichert ist, Anweisungen leicht ändern. Ein wichtiger Grund, der eine solche Möglichkeit hervorgerufen hat, war die Notwendigkeit, dass ein Programm das Adressfeld der Anweisungen inkrementiert oder modifiziert (um beispielsweise Schleifen zu erstellen). Dieser Grund ist weniger wichtig geworden mit dem Aufkommen der Verwendung von Indexregistern und indirekt als Standardfunktion der Adressierung Prozessoren .
Die derzeitige Architektur von Computern macht es unnötig, die Anweisungen des Programms - seinen "Code" - in geringem Umfang zu ändern, da dies die Cache- und Pipeline- Verwaltungstechniken im Prozessor ineffizient machen würde . Diese Praxis ist daher bisher überholt. In größerem Maßstab ermöglicht natürlich die Fähigkeit, Anweisungen wie Daten zu behandeln, das Schreiben von Compilern . Dies ist auch eine Funktion, die von Viren ausgenutzt wird, wenn sie einem vorhandenen Programm eine Kopie ihres eigenen Codes hinzufügen. Das Problem des unbefugten Kopierens von Code kann durch die Verwendung eines Speicherschutzsystems und insbesondere durch den virtuellen Speichermanager vermieden werden .