Drei Preise an der Kiosk-Kasse
AFB I–IIDie Kasse des Schulkiosks enthält einen sehr einfachen Prozessor nach dem Von-Neumann-Prinzip. Für einen Einkauf mit drei Artikeln zu 12, 7 und 4 (Preise in Zehn-Cent-Schritten) liegt das folgende Programm im Speicher. Die Befehle bedeuten: LADE [x] legt den Inhalt von Zelle x in den Akkumulator, ADDIERE [x] addiert den Inhalt von Zelle x zum Akkumulator, SPEICHERE [x] schreibt den Akkumulator in Zelle x, STOPP beendet das Programm. Zu Beginn stehen Befehlszähler und Akkumulator auf 0.
- Entnehmen Sie der Abbildung, in welchen Zellen Befehle und in welchen Daten stehen, und geben Sie den Inhalt von Zelle 6 an.
- Bestimmen Sie für jeden der fünf Befehle den Stand von Befehlszähler und Akkumulator nach seiner Ausführung sowie den Inhalt von Zelle 8 am Programmende.
- Beschreiben Sie, was während der drei Phasen des Von-Neumann-Zyklus beim Befehl in Zelle 2 geschieht. Nennen Sie dabei die beteiligten Einheiten.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Befehle stehen in den Zellen 0 bis 4, Daten in den Zellen 5 bis 7; Zelle 8 ist für das Ergebnis vorgesehen und noch leer. Zelle 6 enthält den Wert 7. Programm und Daten liegen also im selben Speicher — das Kennzeichen der Von-Neumann-Architektur.
Erwartungshorizont zu Aufgabe b)
LADE [5]: Befehlszähler 1, Akkumulator 12. ADDIERE [6]: Befehlszähler 2, Akkumulator \(12+7=19\). ADDIERE [7]: Befehlszähler 3, Akkumulator \(19+4=23\). SPEICHERE [8]: Befehlszähler 4, Akkumulator 23 (unverändert), Zelle 8 = 23. STOPP: Das Programm endet, der Akkumulator bleibt 23.
Zelle 8 enthält am Ende 23, also 2,30 €.
Erwartungshorizont zu Aufgabe c)
Holen: Das Steuerwerk schickt den Befehlszählerstand 2 als Adresse über den Bus zum Speicher; der Befehl „ADDIERE [7]“ kommt über den Bus zurück ins Befehlsregister. Dekodieren: Das Steuerwerk entschlüsselt den Befehl: Es soll addiert werden, und der Wert steht in Zelle 7. Ausführen: Der Wert 4 wird über den Bus aus Zelle 7 geholt; das Rechenwerk (ALU) addiert ihn zum Akkumulator (19 + 4 = 23). Danach springt der Befehlszähler auf 3.
Das doppelt so schnelle Rechenwerk
AFB II–IIIEine Messstation soll 1000 Messwerte aufsummieren. Ihr Programm besteht aus 1000 ADDIERE-Befehlen hintereinander. Für jeden dieser Befehle gilt auf dem bisherigen Prozessor: Befehl über den Bus holen 10 ns, dekodieren 1 ns, den Messwert über den Bus holen 10 ns, im Rechenwerk addieren 2 ns (1 ns = eine milliardstel Sekunde).
Ein Hersteller bietet einen Prozessor an und wirbt: „Unser neues Rechenwerk addiert doppelt so schnell — nur 1 ns!“ Der Bus bleibt dabei unverändert. Ein zweiter Hersteller bietet zum selben Preis einen Prozessor mit dem alten Rechenwerk, aber einem größeren Cache an. Befehle und Daten, die schon im Cache liegen, erreicht dieser Prozessor in 1 ns statt 10 ns; der Cache fasst allerdings nur wenige Megabyte, und was zum ersten Mal gebraucht wird, muss weiterhin über den Bus kommen.
- Erläutern Sie am Beispiel eines
ADDIERE-Befehls, warum der Bus in der Von-Neumann-Architektur zum Flaschenhals wird. - Weisen Sie rechnerisch nach, dass das Programm mit dem neuen Rechenwerk nur um etwa 4 % schneller fertig wird.
- Diskutieren Sie, welcher der beiden Prozessoren für die Messstation die bessere Wahl ist.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
In der Von-Neumann-Architektur liegen Befehle und Daten im selben Speicher und erreichen den Prozessor über denselben Bus. Ein ADDIERE-Befehl braucht den Bus zweimal nacheinander: erst, um den Befehl zu holen, dann, um den Messwert zu holen. Beides gleichzeitig ist nicht möglich. Von 23 ns entfallen 20 ns auf Bustransporte und nur 2 ns auf das eigentliche Rechnen — das Rechenwerk wartet die meiste Zeit. Der Bus ist die enge Stelle, an der sich alles staut: der Von-Neumann-Flaschenhals.
Erwartungshorizont zu Aufgabe b)
Bisher: \(10 + 1 + 10 + 2 = 23\text{ ns}\) pro Befehl, also \(1000 \cdot 23\text{ ns} = 23\,000\text{ ns} = 23\ \mu\text{s}\). Neu: \(10 + 1 + 10 + 1 = 22\text{ ns}\), also \(22\,000\text{ ns}\).
Ersparnis: \(\frac{1000\text{ ns}}{23\,000\text{ ns}} \approx 0{,}043 = 4{,}3\,\%\). Obwohl das Rechenwerk doppelt so schnell ist, wird das Programm nur um etwa 4 % schneller fertig — die Aussage ist nachgewiesen.
Erwartungshorizont zu Aufgabe c)
Pro Cache: Er setzt am Flaschenhals an. Liegen Befehl und Messwert im Cache, braucht ein Befehl \(1 + 1 + 1 + 2 = 5\text{ ns}\) statt 23 ns — mehr als viermal so schnell, während das neue Rechenwerk nur 1 ns spart. Contra Cache: Beim ersten Durchlauf müssen alle 1000 Befehle und Messwerte trotzdem über den Bus kommen, dann ist der Vorteil gering; der Cache ist klein, bei sehr vielen Daten passt nicht alles hinein. Pro Rechenwerk: Der Gewinn ist sicher, aber winzig (etwa 4 %); nützlich wäre es nur bei Programmen, die viel rechnen und wenig Daten holen.
Ergebnis in der Regel: Der Prozessor mit größerem Cache ist die bessere Wahl, vor allem wenn die Station ihr Programm immer wieder mit denselben Befehlen ausführt. Auch ein anderes Ergebnis ist zulässig, wenn es schlüssig begründet ist. Vollständig ist die Antwort mit Argumenten für beide Seiten, einem Bezug auf den Flaschenhals und einem klaren Ergebnis.
