Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 3 » Rechnerarchitektur   (Übersicht)

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)