Zurück zur StartseiteInformatik · Q2 Grundkurs · Fach wechseln
Kostenlos starten
Q2 Grundkurs · Informatik
Endliche Automaten, Grammatiken und Grenzen der Informatik · Von-Neumann-Architektur und Grenzen der Automatisierung

Von-Neumann-Architektur und maschinennahe Programme

Du tippst auf dem Smartphone eine Nachricht, und in Sekundenbruchteilen passiert etwas Erstaunliches: Ein Prozessor holt Befehle aus dem Speicher, rechnet und legt Ergebnisse wieder ab. Aber wie sieht das auf der untersten Ebene aus? Und warum liegen Programm und Zahlen im selben Speicher? Das klären wir hier an einem stark vereinfachten Rechnermodell.

Aufbau der Von-Neumann-Architektur

Fast jeder Computer, vom Laptop bis zum Mikrocontroller in der Waschmaschine, folgt dem Entwurf von John von Neumann (1945). Er besteht aus vier Teilen, die über ein Bussystem verbunden sind.

Von-Neumann-Architektur: Rechenwerk und Steuerwerk bilden die CPU, verbunden über den Bus mit Speicher und Ein-/Ausgabewerk CPU (Prozessor) Steuerwerk BZ, BR Rechenwerk ALU, ACC Speicher Befehle + Daten (Adresse → Inhalt) Ein-/Ausgabewerk Bus (Adressen, Daten, Steuersignale)

Das Besondere ist das Prinzip des gemeinsamen Speichers: Befehle und Daten liegen im selben Speicher, beide als Bitmuster. Ob ein Bitmuster ein Befehl oder eine Zahl ist, hängt nur davon ab, wie es verwendet wird.

Üben★☆☆Nicht begonnen
Nennen Sie die Hauptbestandteile der Von-Neumann-Architektur und beschreiben Sie in je einem Satz die Aufgabe von Rechenwerk, Steuerwerk, Speicher und Ein-/Ausgabewerk.

Nennen Sie die Hauptbestandteile der Von-Neumann-Architektur und beschreiben Sie in je einem Satz die Aufgabe von Rechenwerk, Steuerwerk, Speicher und Ein-/Ausgabewerk.

Lösen
Üben★☆☆Nicht begonnen
Erklären Sie das Prinzip des gemeinsamen Speichers für Daten und Programme in der Von-Neumann-Architektur. Nennen Sie einen Vorteil und einen Nachteil.

Erklären Sie das Prinzip des gemeinsamen Speichers für Daten und Programme in der Von-Neumann-Architektur. Nennen Sie einen Vorteil und einen Nachteil.

Lösen

Ein einfaches Maschinenprogramm

Wir nutzen ein vereinfachtes Modell mit einem Akkumulator. Die Schreibweise Speicher[x] bedeutet: Inhalt der Zelle mit Adresse x.

Befehl Wirkung
LOAD x ACC ← Speicher[x]
ADD x ACC ← ACC + Speicher[x]
SUB x ACC ← ACC − Speicher[x]
STORE x Speicher[x] ← ACC
JUMP z springe zu Zeile z
JUMPZ z springe zu Zeile z, falls ACC = 0
HALT Programm beenden

Ohne Sprung führt der Rechner die Zeilen nacheinander aus. Mit JUMP und JUMPZ entstehen Verzweigungen und Schleifen.

Üben★☆☆Nicht begonnen
Ein Rechner hat einen Akkumulator ACC und die Befehle LOAD x (ACC ← Speicher[x]), ADD x (ACC ← ACC + Speicher[x]), STORE x (Speicher[x] ← ACC). Es gilt Speicher[10] = 7…

Ein Rechner hat einen Akkumulator ACC und die Befehle LOAD x (ACC ← Speicher[x]), ADD x (ACC ← ACC + Speicher[x]), STORE x (Speicher[x] ← ACC). Es gilt Speicher[10] = 7 und Speicher[11] = 5.

Das Programm lautet: LOAD 10, ADD 11, STORE 12.

Geben Sie den Inhalt von ACC nach jedem Befehl und den Inhalt von Speicher[12] am Ende an.

Lösen
Üben★★☆Nicht begonnen
Ein Registermaschinenmodell kennt die Befehle LOAD x, ADD x, SUB x, STORE x, JUMPZ z (springe zu Zeile z, falls ACC = 0), JUMP z, HALT. Zu Beginn gilt Speicher[20] = 3,…

Ein Registermaschinenmodell kennt die Befehle LOAD x, ADD x, SUB x, STORE x, JUMPZ z (springe zu Zeile z, falls ACC = 0), JUMP z, HALT. Zu Beginn gilt Speicher[20] = 3, Speicher[21] = 4, Speicher[22] = 0, Speicher[23] = 1.

Programm:

1: LOAD 22

2: ADD 21

3: STORE 22

4: LOAD 20

5: SUB 23

6: STORE 20

7: JUMPZ 9

8: JUMP 1

9: HALT

  1. a) Protokollieren Sie die Werte von Speicher[20] und Speicher[22] nach jedem Durchlauf der Schleife.
  1. b) Welche mathematische Operation berechnet das Programm?
Lösen
Üben★★★Nicht begonnen
Schreiben Sie ein Programm für die Registermaschine aus MEDIO-01 (mit Befehlen LOAD, ADD, SUB, STORE, JUMPZ, JUMP, HALT), das das Produkt von Speicher[30] und…

Schreiben Sie ein Programm für die Registermaschine aus MEDIO-01 (mit Befehlen LOAD, ADD, SUB, STORE, JUMPZ, JUMP, HALT), das das Produkt von Speicher[30] und Speicher[31] (beide nichtnegativ) in Speicher[32] ablegt. Speicher[33] enthält die Konstante 1. Erläutern Sie den Ablauf und testen Sie mit $4 \cdot 3$.

Lösen

Befehlszyklus und Bitmuster

Wie arbeitet das Steuerwerk ein Programm ab? Immer im gleichen Rhythmus, dem Befehlszyklus:

  1. Fetch (Holen): Der Befehl, auf den der Befehlszähler zeigt, wird aus dem Speicher ins Befehlsregister geladen. Der Befehlszähler wird um 1 erhöht.

  2. Decode (Entschlüsseln): Das Steuerwerk erkennt, welche Operation und welche Adresse im Befehlsregister stehen.

  3. Execute (Ausführen): Die Operation wird ausgeführt, z. B. holt das Rechenwerk den Operanden und addiert ihn zum Akkumulator.

Danach beginnt der Zyklus von vorn. Bei einem Sprung überschreibt der Befehl den Befehlszähler mit der Zieladresse.

Befehlszyklus: Fetch, Decode, Execute als Kreislauf Fetch Decode Execute BR ← Speicher[BZ] danach: nächster Befehl (BZ weiter)

Alles ist ein Bitmuster

Zahlen, Zeichen und Befehle sind im Speicher nur Folgen von Bits. Eine 8-Bit-Zahl ohne Vorzeichen hat den Wertebereich 0 bis $2^8 - 1 = 255$. Zum Beispiel ist $200 = 128 + 64 + 8$, also $1100\,1000_2$.

Addiert man 100, ergibt sich mathematisch 300. Das passt nicht in 8 Bit (Maximum 255): Es entsteht ein Überlauf. Gespeichert wird der Rest modulo 256, also $300 - 256 = 44 = 0010\,1100_2$.

Üben★★☆Nicht begonnen
Erklären Sie anhand des Befehlszyklus (Fetch, Decode, Execute), wie der Befehl ADD 11 aus Aufgabe FACIL-03 abgearbeitet wird. Gehen Sie dabei auf Befehlszähler,…

Erklären Sie anhand des Befehlszyklus (Fetch, Decode, Execute), wie der Befehl ADD 11 aus Aufgabe FACIL-03 abgearbeitet wird. Gehen Sie dabei auf Befehlszähler, Befehlsregister und Akkumulator ein.

Lösen
Üben★★☆Nicht begonnen
Ein Mikrocontroller speichert die Zahl 200 als 8-Bit-Binärzahl ohne Vorzeichen. a) Geben Sie die Binärdarstellung an. b) Es wird 100 addiert. Berechnen Sie das Ergebnis…

Ein Mikrocontroller speichert die Zahl 200 als 8-Bit-Binärzahl ohne Vorzeichen.

  1. a) Geben Sie die Binärdarstellung an.
  1. b) Es wird 100 addiert. Berechnen Sie das Ergebnis im 8-Bit-Speicher und erklären Sie, was geschieht (Überlauf).
  1. c) Erklären Sie, warum Programmbefehle und Zahlen im Speicher beide als Bitmuster vorliegen.
Lösen

Grenzen und Risiken der Architektur

Der gemeinsame Speicher und der gemeinsame Bus haben Folgen.

Sicherheit

Weil Befehle und Daten im selben Speicher liegen, kann ein fehlerhafter Sprung auf eine Datenzelle zeigen. Der Rechner führt diese Daten dann als Befehl aus, denn er kann sie nicht unterscheiden. Bei einem Pufferüberlauf schreibt ein Programm mehr Daten in einen Puffer als vorgesehen; die Daten überschreiben benachbarte Speicherbereiche, im schlimmsten Fall Programmcode oder Rücksprungadressen. Ein Angreifer kann so eigenen Code einschleusen.

Gegenmaßnahmen: Längen von Eingaben prüfen, Speicherbereiche als „nicht ausführbar“ markieren (Speicherschutz des Betriebssystems), zufällige Anordnung der Speicherbereiche, regelmäßige Updates.

Der Von-Neumann-Flaschenhals

Prozessor und Speicher sind über einen einzigen Bus verbunden. Befehle und Daten müssen nacheinander hindurch. Der Prozessor könnte viel schneller rechnen, als der Speicher liefert: Er wartet. Das begrenzt die Gesamtleistung.

Abmilderung: Cache-Speicher, kleine, sehr schnelle Zwischenspeicher direkt am Prozessor. Oft benötigte Befehle und Daten liegen dort bereit, der langsame Hauptspeicher wird seltener gebraucht.

Die Harvard-Architektur trennt Programm- und Datenspeicher mit eigenen Bussen. Befehl und Datum können gleichzeitig geholt werden, und Daten können nicht versehentlich als Programm laufen. Dafür braucht man mehr Leitungen und ist weniger flexibel. Für feste Steuerungen, etwa in einer Waschmaschine, deren Programm sich nie ändert, ist sie sinnvoll; viele Mikrocontroller nutzen sie.

Üben★★★Nicht begonnen
Ein Programm läuft in einer Schleife und enthält durch einen Fehler einen Sprungbefehl, der auf eine Datenzelle statt auf einen Befehl zeigt. a) Erklären Sie, warum die…

Ein Programm läuft in einer Schleife und enthält durch einen Fehler einen Sprungbefehl, der auf eine Datenzelle statt auf einen Befehl zeigt.

  1. a) Erklären Sie, warum die Von-Neumann-Architektur dies nicht verhindern kann.
  1. b) Erläutern Sie, welche Sicherheitsprobleme sich daraus ergeben können (z. B. Pufferüberlauf).
  1. c) Nennen Sie eine Gegenmaßnahme.
Lösen
Üben★★★Nicht begonnen
Der Von-Neumann-Flaschenhals begrenzt die Leistung eines Rechners. a) Erklären Sie, was damit gemeint ist. b) Erläutern Sie, wie Cache-Speicher das Problem abmildern. c)…

Der Von-Neumann-Flaschenhals begrenzt die Leistung eines Rechners.

  1. a) Erklären Sie, was damit gemeint ist.
  1. b) Erläutern Sie, wie Cache-Speicher das Problem abmildern.
  1. c) Beurteilen Sie, ob ein Rechner mit getrenntem Programm- und Datenspeicher (Harvard-Architektur) für eine Waschmaschinensteuerung sinnvoll wäre.
Lösen

Zurück zum Anfang: Beim Tippen holt der Prozessor im Fetch-Decode-Execute-Takt Befehle aus demselben Speicher, in dem auch deine Daten liegen.

Auf einen Blick

Alle Aufgaben zu diesem Abschnitt anzeigen