Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 3 » Rechnerarchitektur (Übersicht)
Inhaltsverzeichnis
Rechnerarchitektur
Prüfer: Prof. Fey
Beisitzer: Franz Richter
Zettel und Stift stehen zur Verfügung. Laut Vorlesung ist die 5 ECTS-Prüfung identisch zur 7,5 ECTS-Prüfung.
Prof. Fey holt sich zwischendurch immer Ideen für Fragen von einem beiliegenden Blatt. Es wirkt so, als soll jedes Thema zumindest einmal angesprochen werden. Note: sehr gut
CISC
F: Wie funktioniert ein Mikroprogrammwerk und warum nutzt man es?
A: Mikroprogrammwerk aufgemalt und dabei einzelnde Komponenten erklärt:
Makroinstruktion | v Decoder | v Sequencer ---------------------------> CAR ^ | | v | Mikroprogrammspeicher | | | v | CBR | | | v |------------------------------ Decoder | CPU-interne und Speicherbussignale v
F: Ist es auch ohne Decode hinter CBR möglich?
A: Ja, aber das ist dann wieder weniger flexibel; Anm.: Etwas viele Prozessorsignale zu speichern (tausende)
F: Hat der Sequencer auch noch anderen Eingänge?
A: Ja, die ALU-Flags und natürlich die Clock.
F: Welchen Vorteil hat nun ein Mikroprogrammwerk?
A: Es sind Fehler behebbar, man kann Kompatibiltität mit anderen Befehlssätzen herstellen und auch Kompatibilität mit anderen Befehlssatzversionen ist möglich.
F: Warum wollte man dann von CISC weg?
A: Befehle sind unterschiedlich lang, komplex, und haben viele Adressierungsarten und Berechnungen dieser in einem Befehl. Mit Aufkommen den Pipelines wollte man das vereinfachen → RISC
F: Was sind die Vorteile von RISC?
A: Immer gleich große Befehlsworte, festverdrahteter Decoder (kein Mikroprogrammwerk mehr nötig), höheres Takten aufgrund der Pipeline
F: Wie ist der Durchsatz einer Pipeline bei k Stufen und tau Stufenzeit?
A: (Wollte erst Speedup erklären:) Speedup bei unendlich Instruktionen ist k. Ein Schritt dauert tau Sekunden, jeden Schritt wird ein weiterer Befehl fertig, außer beim ersten, der braucht k Schritte, bevor einer fertig wird.
F: Und damit ist jetzt der Durchsatz?
A: 1/tau
F: Welche Probleme gibt es beim Pipelining?
A: Strukturhazard („zu wenig Hardware“), Steuerungshazard („Sprünge“), Datenhazard („Ergebnisabhängigkeiten“)
F: Steuerungshazard wurde bereits in einer anderen Prüfung behandelt. Welche Datenhazards gibt es alles?
A: RAW (behebbar durch Forwarding), WAW, WAR
RAW:
div r0, r1, r2 add r3, r0, r4
r0 ist hierbei in der Operandenholphase unter Umständen noch nicht berechnet worden
WAR:
div r0, r1, r2 add r1, r3, r4
Unter Umständen kann r1 vom add-Befehl geschrieben werden, bevor div ihn als Operand geholt hat. WAW ist so ähnlich wie WAR.
F: Wann passiert so etwas? (WAR)
A: Superskalare Ausführung. (Anm.: Eigentlich war gewünscht zu sagen, dass div eventuell die Operanden noch nicht geholt hat, weil auf r2 gewartet werden muss)
A: Das kann man aber ganz einfach durch Kopieren des Wertes Lösen wie bei Tomasulo.
F: Das ist die Lösung! Wie heißt denn der Fachbegriff zu Tomasulo?
A: Reservierungsstationen?
F: … beinhalten Register …?
A: Registerumbenennung!
F: Noch einen Schritt zurück: Wie funktioniert das Scoreboard? (Es war nichts vorgegeben)
A: Die DE-Phase wird in DE1 und DE2 (auch Operandenholphase) getrennt. Beim Warten werden stalls eingefügt.
DE1: WAW-Hazard auflösen durch Prüfung, ob Zielregister nicht von anderer Operation beschrieben werden wird.
DE2: RAW-Hazard auflösen durch Prüfung, ob Operandenregister fertig sind
EX: Langweilig fürs Scoreboard
WB: WAR-Hazard auflösen durch Prüfung, ob eine Instruktion das Zielregister noch als Operandenregister benötigt
F: Und was ist das Scoreboard?
A: Datenstrukturen, speichern beispielsweise Busy, Zielregister, Operandenregister, Operandenregisterfüllende FU (das wollte er hören)
Multiprozessorsysteme
F: Warum Multiprozessorsysteme?
A: Pollacks Regel, Inverse Pollacks Regel erklärt und Vorteile gezeigt. Grund für diese Überlegungen war, dass man durch Drehen an der Taktschraube an der thermischen Belastungsgrenze ankam. Daher: Mehr Prozessoren/Kerne, obwohl schwieriger zu programmieren (macht nicht die Hardware selbst, wie beim Pipelining).
F: Ein bisschen weiterführendes Thema: Um was muss sich ein Programmierer kümmern?
A: Starten weiterer Instruktionsströme, Teilen des Problems in Teilprobleme, die parallel ausgeführt werden können.
F: Annahme, das sei gegeben, aber die Befehlsströme müssen sich koordinieren.
A: Synchronisation, z.B. per gegenseitigem Ausschluss. Kann aber unter Umständen Deadlocks provozieren.
F: Auch etwas weg vom Stoff der Vorlesung: Warum sind Multiprozessorsysteme auch besonders in Hinsicht auf Echtzeitsysteme problematisch?
A: Prioritätsumkehr, die man durch Priority-Ceiling-Protokolle umgehen kann
F: Das Problem hat man auch bei Singlecore! Tipp: Was ist mit den Caches?
A: Bei Echtzeitsystemen rechnet man damit, dass jeder Speicherzugriff ein Miss ist. (Anm.: Man deaktiviert einfach die Caches) Cache-Kohärenz muss eingehalten werden, was vielleicht wieder nicht ganz vorhersagbar ist.
F: Und wie behebt man das?
A: Message-Passing, dann ist es gar nicht nötig, Cache-Kohärenz-Protokolle zu verwenden.
Roofline
F: Was ist das Roofline-Modell?
A: Vereinfachtes Modell um herauszufinden, ob ein Kernel („bestimmter Problemalgorithmus“) memory-bound oder CPU-bound ist.
FLOPS ^ | -------------------------------------------- | / | / | / | / | / --------------------------------------------------------> operationelle Intensität (FLOP/Byte) | | Kernel 1 Kernel 2
Kernel 1 ist memory-bound (kleine operationelle Intensität), Kernel 2 CPU-bound (höhere operationelle Intensität)
F: Wie kann man die Leistung verbessern?
A: CPU-Begrenzung: SIMD, Speicherbegrenzung: NUMA beachten
F: Was ist NUMA?
A: Unterschiedliche physikalische Anbindungen des Speichers.
Memory 0 <--> CPU 0 <--> Verbindung (Hypertransport/QuickpathInterconnect) <--> CPU 1 <---> Memory 1
Zugriff von CPU 0 auf Memory 0 schneller als Zugriff auf Memory 1 von CPU 0.
F: Unit-Stride-Access ist auch eine Möglichkeit. Was ist das?
A: Daten gleich in größeren Happen („Wortbreite“) holen, anstelle einzeln. Dabei außerdem DDR-Speicher ausnutzen, der gleich blockweise Daten holt. Also möglichst auf hintereinander liegende Daten zugreifen.
Spezialprozessoren
F: Was ist der Unterschied zwischen Universalprozessoren, FPGAs und ASICs?
A: Universalprozessoren: Können alles, flexibel, komplex, teuer, „wenige“; ASICs: Spezieller Anwendungsfall, eher simpel, „billig in großer Stückzahl“, „viele“; FPGAs: Bei geringerer Stückzahl ASICs vorzuziehen, programmierbare Hardware
F: Wie funktionieren FPGAs?
A: „Logikblöcke“, die programmiert werden können, was an dem Ausgang bei welchem Eingang anliegen soll. Vernetzung untereinander. Beispiel für Belegung:
Eingang | Ausgang --------|-------- 00 | 0 01 | 1 10 | 1 11 | 0
F: Welches System ist am energieeffizientesten?
A: ASICs, da sie ohne Dekodierlogik (im Gegensatz zum Universalprozessor) auskommen. (Anm.: Auch Befehlspipeline kann man sich sparen)