Informatik · Klasse 10–13 · aktualisiert
Von-Neumann-Architektur einfach erklärt
Du lernst die Bauteile, den Befehlszyklus und den Befehlszähler kennen. Außerdem verstehst du den Flaschenhals und was Caches bringen.
0 von 13 Aufgaben gelöst
Kurz gesagt
Bei der Von-Neumann-Architektur hält ein gemeinsamer Speicher Programmbefehle und Daten. Das Steuerwerk arbeitet Befehle im Zyklus FETCH, DECODE, FETCH OPERANDS, EXECUTE und WRITE BACK ab. Ein gemeinsamer Bus für Befehle und Daten bremst: der Von-Neumann-Flaschenhals.
Die meisten heute bekannten Computer arbeiten nach einem gemeinsamen Grundplan: der Von-Neumann-Architektur. Wenn du sie verstehst, weißt du, wie ein Prozessor ein Programm Schritt für Schritt abarbeitet. Und du erkennst, warum selbst schnelle Prozessoren immer wieder auf Daten warten müssen.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
4 Abschnitte
Bei der Von-Neumann-Architektur hält ein gemeinsamer Speicher sowohl die Programmbefehle als auch die Daten. Der Hauptprozessor (CPU) hat als Hauptkomponenten das Steuerwerk und das Rechenwerk.
Das Rechenwerk (ALU) führt Rechenoperationen und boolesche Verknüpfungen aus. Boolesche Verknüpfungen sind logische Verknüpfungen von Wahrheitswerten. Das Steuerwerk interpretiert die Anweisungen eines Programms und regelt die Befehlsabfolge. Dazu sendet es Steuersignale an andere Funktionseinheiten und empfängt Statussignale von ihnen. Im Steuerwerk befinden sich der Befehlszähler, das Befehlsregister, der Befehlsdecoder und die Operationensteuerung.
Der Speicher speichert sowohl Programme als auch Daten. Das Bussystem dient zur Kommunikation zwischen den einzelnen Komponenten. Dazu gehören Steuerbus, Adressbus und Datenbus. Das Eingabe-/Ausgabewerk steuert die Ein- und Ausgabe von Daten, zum Anwender (Tastatur, Bildschirm) oder zu anderen Systemen (Schnittstellen).
Register sind besonders schnell erreichbar. In der EXECUTE-Phase eines Befehls sind alle notwendigen Daten in Registern vorhanden. Auch der Befehlszähler ist ein Register innerhalb des Hauptprozessors.
Definition
Register
Ein Register ist ein Speicherbereich für Daten, auf den der Prozessor besonders schnell zugreifen kann.
| Einheit | Aufgabe |
|---|---|
| Steuerwerk | Interpretiert die Anweisungen eines Programms und regelt die Befehlsabfolge |
| Rechenwerk (ALU) | Führt Rechenoperationen und boolesche Verknüpfungen aus |
| Register | Speicherbereiche für Daten, auf die der Prozessor besonders schnell zugreift |
| Speicher | Speichert sowohl Programme als auch Daten |
| Bussystem | Dient zur Kommunikation zwischen den Komponenten |
| Ein-/Ausgabe | Steuert die Ein- und Ausgabe von Daten, etwa mit Tastatur und Bildschirm |
Teste dich
Der Befehlszyklus beschreibt den Ablauf der Verarbeitung eines Maschinenbefehls. Er heißt auch Fetch-Execute-Cycle. Ein Maschinenbefehl ist ein einzelner Befehl, den der Prozessor abarbeitet. Das Steuerwerk eines Rechners mit klassischer Von-Neumann-Architektur arbeitet ein Maschinenprogramm im Von-Neumann-Zyklus ab. Dieser hat hier fünf Phasen. Andere Darstellungen zählen vier Stufen (Befehl laden, dekodieren, ausführen, Ergebnis speichern). Auf dieser Seite zählen wir die fünf Phasen der klassischen Von-Neumann-Architektur.
FETCH: Der Prozessor greift auf die Arbeitsspeicheradresse zu, die im Befehlszähler steht. Die Daten von dort werden ins Befehlsregister geladen. Bei dieser Zählweise wird der Befehlszähler schon in FETCH um die Länge des Befehls erhöht.
DECODE: Das Steuerwerk löst den Befehl in Schaltinstruktionen für das Rechenwerk auf.
FETCH OPERANDS: Aus dem Speicher werden die Operanden geholt. Das sind die Werte, die der Befehl verändern soll oder die er als Parameter verwendet.
EXECUTE: Das Rechenwerk führt eine arithmetische oder logische Operation aus. Bei Sprungbefehlen und erfüllter Sprungbedingung wird in dieser Phase der Befehlszähler verändert.
WRITE BACK: Sofern notwendig, wird das Ergebnis der Berechnung in den Speicher zurückgeschrieben.
FETCH und DECODE sind für jeden Maschinenbefehl gleich. Die letzten drei Phasen müssen nicht bei jeder Befehlsart alle ausgeführt werden. Wenn kein HALT-Befehl ausgeführt wurde, beginnt der Zyklus danach wieder von vorn und ein weiterer Befehl wird abgearbeitet. Der Von-Neumann-Zyklus ist ein Modell: Moderne Mikroprozessoren haben intern kaum noch etwas mit dem klassischen Zyklus gemein.
Definition
Befehlszyklus
Der Befehlszyklus (Fetch-Execute-Cycle) beschreibt den Ablauf der Verarbeitung eines Maschinenbefehls.
| Phase | Was passiert? |
|---|---|
| FETCH | Befehl von der Adresse im Befehlszähler ins Befehlsregister laden |
| DECODE | Das Steuerwerk löst den Befehl in Schaltinstruktionen für das Rechenwerk auf |
| FETCH OPERANDS | Aus dem Speicher werden die Operanden geholt |
| EXECUTE | Das Rechenwerk führt eine arithmetische oder logische Operation aus |
| WRITE BACK | Sofern notwendig, wird das Ergebnis in den Speicher zurückgeschrieben |
Merke: Die Reihenfolge im Von-Neumann-Zyklus lautet FETCH, DECODE, FETCH OPERANDS, EXECUTE, WRITE BACK. FETCH und DECODE sind für jeden Maschinenbefehl gleich.
Teste dich
Der Befehlszähler heißt auch Programmzähler. Er zeigt auf den nächsten auszuführenden Befehl. Je nach Systemarchitektur enthält er die Speicheradresse des derzeitigen oder des nächsten Befehls. Hier gehen wir vom nächsten Befehl aus.
Normalerweise wird der Inhalt des Befehlszählers um Eins erhöht. Dann folgt der nächste Befehl im Speicher. Das gilt, wenn jeder Befehl eine Adresse belegt. Bei Befehlen mit anderer Länge wird er um die Länge des geladenen Befehls erhöht.
Sprung-Befehle verändern den Inhalt des Befehlszählers um einen anderen Wert als +1: Bei einem Sprungbefehl wird der Zeiger auf die angegebene Sprungadresse gesetzt. Verzweigungs-Befehle erhöhen den Befehlszähler je nach Wert eines Entscheidungs-Bits um Eins oder führen einen Sprung-Befehl aus. Bei einem bedingten Sprung heißt das: Ist die Bedingung erfüllt, geht es zur Sprungadresse. Ist sie nicht erfüllt, geht es mit dem nächsten Befehl weiter.
So verfolgst du ihn: Schreibe für jeden Schritt auf, auf welcher Adresse der Befehlszähler steht, welcher Befehl dort liegt und welchen Wert der Befehlszähler danach hat. In der Musteraufgabe unten siehst du das an einem ausgedachten Beispiel.
Definition
Befehlszähler
Der Befehlszähler (Programmzähler) ist ein Register im Hauptprozessor. Er zeigt auf den nächsten auszuführenden Befehl.
Merke: Normalerweise wird der Befehlszähler um Eins erhöht. Ein Sprung setzt ihn auf die Sprungadresse, wenn die Sprungbedingung erfüllt ist.
Teste dich
Bei der Von-Neumann-Architektur teilen sich Programme und Daten denselben Speicher und denselben Datenbus. Alle Aktionen laufen über einen einzigen Bus. Der Von-Neumann-Flaschenhals beschreibt Performance-Verringerungen von Prozessoren durch konkurrierende Daten- und Befehlscode-Zugriffe über einen gemeinsamen Bus. Er beschreibt auch den erzwungenen Sequentialismus: Der einzige Bus zwingt alle Aktionen in eine Reihenfolge nacheinander.
Das Problem wurde größer. Seit geraumer Zeit wächst die CPU-Verarbeitungsgeschwindigkeit deutlich stärker als die Datentransferraten der Busse oder der Speicher. Von 1986 bis 2000 wuchsen die CPU-Geschwindigkeiten jährlich um 55 %, die Speichertransfergeschwindigkeiten nur um 10 %. Die Speicherlatenz, also die Wartezeit auf den Speicher, wurde der Flaschenhals der Computerrechenleistung. Als erste Maßnahme wurden schon früh Datenregister eingeführt.
Eine weitere Maßnahme ist der Cache. Ohne Cache müsste die CPU jedes Byte direkt aus dem Arbeitsspeicher anfordern. Der Arbeitsspeicher braucht etwa 60 ns pro Zugriff (ns steht für Nanosekunden, das sind winzige Zeitspannen). In diesen 60 ns kann jeder Kern der CPU 300 Takte ausführen. Der Prozessor-Cache ist ein kleiner, schneller Speicher mit Kopien der am häufigsten benötigten Daten des Arbeitsspeichers. Bei jedem Lesezugriff der CPU auf den Arbeitsspeicher wird eine Kopie der gelesenen Daten im Cache gespeichert. Findet die CPU die Daten im Cache, ist das ein Cache-Hit. Fehlen sie, ist das ein Cache-Miss: Die Anforderung geht an den Arbeitsspeicher weiter und die CPU muss warten.
Der Nutzen ist groß: Die Cache-Verwaltung schafft es, 80 % bis 90 % der vom Prozessor benötigten Daten rechtzeitig im Cache bereitzustellen. Heute beschleunigen dreistufige Caches bei leistungsstarken Prozessoren die allermeisten Lade- und Schreibbefehle, ohne dass der Hauptspeicher zunächst beteiligt ist.
Die Grenze: Für die Cache-Größe gibt es eine sinnvolle Obergrenze. Wird der Cache zu groß, dauert das Suchen und Verwalten zu lange. Und trotz aller Raffinessen kann kein heutiger Speicher den Datenhunger moderner CPUs befriedigen. Ein Cache löst den Flaschenhals also nicht vollständig.
Definition
Von-Neumann-Flaschenhals
Der Von-Neumann-Flaschenhals beschreibt Performance-Verringerungen von Prozessoren, weil Daten- und Befehlscode-Zugriffe über einen gemeinsamen Bus konkurrieren.
Beispiel: Ein Byte wird zweimal gebraucht
- 1Die CPU fordert ein Byte zum ersten Mal an. Es ist noch nicht im Cache: Cache-Miss.
- 2Die Anforderung geht an den Arbeitsspeicher weiter, die CPU muss warten.
- 3Eine Kopie der gelesenen Daten wird im Cache gespeichert.
- 4Wird das Byte kurz danach erneut angefordert, findet der Cache-Controller es: Cache-Hit.
- 5Die CPU bekommt das Byte aus dem Cache und muss nicht auf den Arbeitsspeicher warten.
Merke: Caches helfen, doch auch mit Cache muss die CPU immer wieder warten. Kein heutiger Speicher kann den Datenhunger moderner CPUs befriedigen.
Teste dich
Alles auf einen Blick
Von-Neumann-Architektur
Aufbau
Das Steuerwerk regelt die Befehlsabfolge, das Rechenwerk rechnet, der Speicher hält Programme und Daten, der Bus verbindet.
Befehlszyklus
In der klassischen Zählung gibt es fünf Phasen: FETCH, DECODE, FETCH OPERANDS, EXECUTE, WRITE BACK.
Befehlszähler
Normalerweise wird er um Eins erhöht, ein Sprung setzt ihn auf die Sprungadresse.
Flaschenhals
Daten- und Befehlszugriffe konkurrieren um einen gemeinsamen Bus.
Cache
Ein kleiner, schneller Speicher mit Kopien häufig benötigter Daten. Er hilft, löst den Flaschenhals aber nicht vollständig.
Musteraufgabe · Schritt für Schritt
Befehlszähler bei einer kurzen Befehlsfolge verfolgen (ausgedachtes Beispiel)
- 1Befehle: 1: LADE · 2: ADDIERE · 3: SPRUNG nach 2, solange die Bedingung erfüllt ist · 4: HALT
- 2Annahme: Jeder Befehl belegt genau eine Adresse. Beim ersten SPRUNG ist die Bedingung erfüllt, beim zweiten nicht.
- 3Schritt 1: Befehlszähler 1 → Befehl LADE → Befehlszähler danach 2
- 4Schritt 2: Befehlszähler 2 → Befehl ADDIERE → Befehlszähler danach 3
- 5Schritt 3: Befehlszähler 3 → bedingter SPRUNG nach 2: Bedingung erfüllt → Befehlszähler danach 2 (statt 4)
- 6Schritt 4: Befehlszähler 2 → Befehl ADDIERE → Befehlszähler danach 3
- 7Schritt 5: Befehlszähler 3 → bedingter SPRUNG nach 2: Bedingung nicht erfüllt → Befehlszähler danach 4
- 8Schritt 6: Befehlszähler 4 → Befehl HALT → das Programm hält
- 9Ausgeführte Adressen in dieser Reihenfolge: 1 2 3 2 3 4
Fehler finden
Prüfe die Aussagen zum Befehlszyklus In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 4Hier wird die Ausnahme übersehen. Richtig: Die letzten drei Phasen müssen nicht bei jeder Befehlsart alle ausgeführt werden.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Das regelt die Befehlsabfolge eines Programms. Im Von-Neumann-Zyklus folgt auf FETCH die Phase . Findet die CPU ein erneut angefordertes Byte im Cache, nennt man das einen .
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback