Das heute allgemein angewandte Prinzip, das nach seiner Beschreibung von John von Neumann von 1946 als "Von-Neumann-Architektur" bezeichnet wird, definiert für einen Computer vier Hauptkomponenten:
Allerdings wurde dieses Prinzip schon 1936 von Konrad Zuse entwickelt, 1937 in zwei Patentschriften dokumentiert und
1938 in der Z1 erstmals realisiert.
In den heutigen Computern sind die ALU und die Steuereinheit meist zu
einem Baustein verschmolzen, der so genannten CPU (Central Processing Unit, zentraler Prozessor).
Der Speicher ist eine Anzahl von durchnummerierten "Zellen", jede dieser Zellen kann ein kleines Stück Information aufnehmen. Diese Information wird als Binärzahl, also einer Abfolge von ja/nein-Informationen, in der Speicherzelle abgelegt. Charakteristikum der "Von Neumann-Architektur" ist, dass diese Zahl (z.B. 65) entweder ein Teil der Daten sein kann (also z.B. der Buchstabe "A"), oder ein Befehl für die CPU ("Springe...").
Wesentlich in der Von-Neumann-Architektur ist, dass sich Programm und
Daten einen Speicherbereich teilen (dabei belegen die Daten
in aller Regel den unteren und die Programme den oberen
Speicherbereich). Dem gegenüber stehen in der sog. Harvard-Architektur
Daten und Programmen eigene (physikalisch
getrennte) Speicherbereiche gegenüber. Dadurch können
Daten-Schreiboperationen keine Programme überschreiben.
In der Von-Neumann-Architektur ist die Steuereinheit dafür zuständig, zu wissen, was sich an welcher Stelle im Speicher befindet. Man kann sich das so vorstellen, dass die Steuereinheit einen "Zeiger" auf eine bestimmte Speicherzelle hat, in der der nächste Befehl steht, den sie auszuführen hat. Sie liest diesen aus dem Speicher aus, erkennt zum Beispiel "65", erkennt dies als "Springe". Dann geht sie zur nächsten Speicherzelle, weil sie wissen muss, wo sie hinspringen soll. Sie liest auch diesen Wert aus, interpretiert die Zahl als Nummer (so genannte Adresse) einer Speicherzelle. Dann setzt sie den Zeiger auf eben diese Speicherzelle, um dort wiederum ihren nächsten Befehl auszulesen; der Sprung ist vollzogen. Wenn der Befehl zum Beispiel statt "Springe" lauten würde "Lies Wert", dann würde sie nicht den Programmzeiger verändern, sondern aus der in der Folge angegebenen Adresse einfach den Inhalt auslesen, um ihn dann beispielsweise an die ALU weiterzuleiten:
Die ALU hat die Aufgabe, Werte aus Speicherzellen zu kombinieren. Sie bekommt die Werte von der Steuereinheit geliefert, verrechnet sie (addiert z.B. zwei Zahlen, welche die Steuereinheit aus zwei Speicherzellen ausgelesen hat)und gibt den Wert an die Steuereinheit zurück, welche den Wert dann für einen Vergleich verwenden oder wieder in eine dritte Speicherzelle zurückschreiben kann.
Die Ein-/Ausgabeeinheiten schließlich sind dafür zuständig, die initialen Programme in die Speicherzellen eingeben und die Ergebnisse der Berechnung einem Benutzer auch wieder anzeigen zu können.