Inhaltsverzeichnis

Kapitel 1

CISC/RISC

P: Was ist CISC und wie funktioniert es?

Viele mächtige Befehle, komplizierte Adressierungsarten. Bild mit IR → Decoder → Control Address Register → Control Memory → Control Buffer Register → Decoder und Sequencing Logic gemalt. Erklärt, wie Sprünge von Sequencing Logic erkannt werden (ALU Flags), warum Decoder nach CBR nötig (vertikale Mikroprogrammierung, siehe GRa).

P: Warum ist man von CISC abgekommen?

P: Was charakterisiert RISC?

Pipelining, Hazards

P: Erklären Sie mal das Pipeline-Prinzip.

Stufen BH, BD, BA, MEM, WB als Rechtecke hingemalt. Wenn Befehl in BD, kann gleichzeitig ein neuer Befehl in BH stecken usw. ⇒ Idealer Speedup von k bei k Stufen.

P: Wie kann BA direkt nach BD kommen? Fehlt da nicht etwas?

Ich wusste zuerst nicht, worauf er hinaus wollte. Er meinte die Operandenholphase. Ich entgegnete: Bei RISC sind das nur Register, also auch in BD machbar. [Anm.: Es gibt verschiedene akademische Pipeline-Modelle. Meine Variante ist die MIPS-Pipeline aus den Übungsblättern. Laut Folien ist sogar BH-BD in einer Stufe machbar.]

P: Wie viele Stufen hat denn eine aktuelle Intel Pipeline?

≈ 20

P: Sie haben den Speedup von k erwähnt. Warum wird er in der Realität nicht erreicht?

ld *$r1*, (0xCAFEBABE)
add $r2, *$r1*, $r3

P: Wie viele Zyklen verliere ich bei einem Kontrollhazard bei einem unbedingten Sprung?

1 Zyklus, da Ziel erst in BD feststeht, sowohl bei direkt als auch indirekt. [Anm.: Denn RISCs indirekte Sprünge können nur registerindirekt sein und Register in BD auslesbar.]

P: Skizzieren Sie mal die restlichen Datenhazards.

RAW oben schon gezeigt. WAW und WAR skizziert und erklärt. Skizzieren meint Assemblerprogramme

WAW:

div *$r1*, $r2, $r3
⋮
ld *$r1*, (0xCAFEBABE)
⋮

Das geht wegen Out-of-order Commit kaputt:

div |-------------|
⋮                 ↓
ld  |---------|   ↓
                  ↓

WAR:

div *$r1*, $r2, $r3
add $r4, *$1*, **$r5**
ld **$r5**, (0xCAFEBABE)

* kennzeichnet RAW und ** den eigentlichen WAR, der Operanden kaputt schreibt.

P: Wie heißen die Architekturen, die WAW zulassen?

WAW und WAR nur bei Superskalarität.

P: [Zeigt Blatt mit Scoreboard, im WS 16/17 Foliensatz ist das Kapitel 1 Folie 64]. Erklären Sie, wo welche Hazards beseitigt werden.

P: Skizzieren Sie doch mal Tomasulo. [Anm.: auf dem Blatt Papier, das man am Anfang bekam. Ohne jegliche Folie.]

Skizze: [Anm.: Ich hatte zuerst das Register File ausgelassen, Prof. hat es dann in der nächsten Frage selbst erwähnt.]

+----------+          +----------+
|    RS    |          |    RS    |
+----------+          +----------+
|    RS    |          |    RS    |
+----------+          +----------+
|    RS    +-----+----+    RS    |
+----------+     |    +----------+
|          |     |    |          |
|    FU    |     |    |    FU    |
|          |     |    |          |
|          |     |    |          |
+----------+     |    +----------+
                 |                                 +--------------------------+
                 |Common Data Bus (CDB)            |                          |
     +---------------------+-----------------------+      Reorder Buffer      |
     |                     |                       |                          |
+----+-----+          +----+-----+                 +--------------------------+
|    LW    |          |    SW    |                 |                          |
|          |          |          |                 +--------------------------+
+----------+          +----------+                 |                          |
|          |          |          |                 +--------------------------+
+----------+          +----------+                 |                          |
|          |          |          |                 +--------------------------+
+----------+          +----------+                 |                          |
|          |          |          |                 +-------------+------------+
+----------+          +----------+                               |
                                                                 |
                                                        +----------------+
                                                        |  Register File |
                                                        |                |
                                                        +----------------+
                                                        |                |
                                                        +----------------+
                                                        |                |
                                                        +----------------+
                                                        |                |
                                                        +----------------+

(mit http://asciiflow.com/ erstellt, dort auch Modifikationen nach Import möglich)

P: Das heißt, der ROB hat welche Funktion bei falscher Sprungvorhersage?

Er verhindert Seiteneffekte, u. a. auf Register. Das ist nicht perfekt, da z. B. Cacheeffekte nicht vermieden werden und so die Sicherheitslücke Meltdown ermöglichten.

Kapitel 2

Manycore Beweggründe

P: Das soll für Kapitel 1 genügen. In Kapitel 2 haben wir uns mit Manycore beschäftigt. Warum haben wir überhaupt Manycore?

Generelles Ziel ist es, die Rechenleistung zu erhöhen. Wie?

[Anm.: Als Prof. Fey die Prüfungsthemen in der letzten VL besprach, meinte er sinngemäß, dass die Dennard'sche Skalierung nicht unbedingt prüfungsrelevant ist, aber ein i-Tüpfelchen wäre. Wer also eine sehr gute Note reißen möchte, könnte sich das z. B. angucken. Ich vermute aber, dass Prof. Fey darauf nicht eingegangen wäre, hätte ich das nicht erwähnt. Man dürfte also nicht darauf warten, sondern müsste kommunizieren, dass man das weiß.]

P: Warum kann man [Anm.: in der Dennard'schen Skalierung] die Frequenz linear um κ erhöhen?

Habe gezögert.

P: Wenn weniger Elektronen bewegt werden müssen, dann …?

Ah, weil die Seitenlänge und der kritische Pfad auch mit 1/κ runtergehen. Dann habe ich weiter erklärt, dass die Leistungsdichte = 1 ist, also für den gleich großen Chip ungefähr dieselbe Kühlleistung veranschlagt werden muss. Heute ist das nicht mehr tragbar, in P = ρ ⋅ C ⋅ f ⋅ V_{dd}^2 sind f und V_{dd}^2 korreliert!

P: Das heißt, helfen kann uns nur noch …?

Echte Parallelität! Hier auch Amdahl's Law erwähnt, die charakteristische Kurve (Speedup über #Cores). Ob mehr Kerne wirklich besser sind, hängt auch von #Applikationen ab, wie in der VL auf dem TPT Diagramm besprochen. [Anm.: Kapitel 2 Folie 18 (Foliensatz WS 17/18, Schlagwort in der PDF: „Grenze gilt für eine auf allen Kernen laufende Applikation“, „Häufig jedoch: viele Applikationen“)]

P: [Holt seinen Ausdruck dieser Folie.] Ah, wenn Sie das auch noch erklären wollen, nur zu!

GPGPU Aufbau

P: Roofline lassen wir mal aus, da wir schon vertieft auf andere Sachen bisher eingegangen sind. Erklären Sie, wie eine GPGPU aufgebaut ist.

P: Können Sie noch kurz etwas zur Speicherhierarchie sagen?

Register → Thread-lokaler Speicher (in GDDR, gecached im Shared Memory, dies konfigurierbar) → Shared Memory (für ganzen Threadblock) → L2 Cache → GDDR

Kapitel 3: Hierarchie von Rechensystemen

P: In Kapitel 3 haben wir die Hierarchie von GPP bis zu ASICs besprochen. Können Sie die aufzeigen?

Kapitel 3, Folie 2 (Foliensatz aus WS 17/18, Schlagwort in der PDF: „Kosten-/Leistungsvergleich verschiedener Implementierungsarten von Prozessoren“) skizziert. Insbesondere die Schlagworte an den Pfeilen wurden auf Nachfrage hin abgeprüft.

P: Nehmen wir das einfache Beispiel „if (a + b < c)“. Wie würde man das im GPP, im FPGA und im ASIC umsetzen?

Kapitel 4: Klassifikation von Multiprozessorsystemen

P: HOG lassen wir mal aus, da wir schon vertieft auf andere Sachen bisher eingegangen sind. Kapitel 4: Wie kann man Multiprozessoren klassifizieren?

Er wollte eigentlich Speicher- und Nachrichtenkopplung hören. Ich habe erstmal die Flynn'sche Klassifikation erwähnt und zu jeder Klasse ein Beispiel (insbesondere zu MISD: verzweigte Ausführung bei der Sprungvorhersage).

P: Nun aber zu Speicher- und Nachrichtenkopplung. Erklären Sie.

Speicherkopplung: ein virtueller Adressraum. Schwieriger zu programmieren, da man ein Speichermodell benötigt und eben urteilen muss, wann welche Variable wie sichtbar wird. Nicht so sehr skalierbar, da Adressraum beschränkt. Nachrichtenkopplung: Nachrichten. Mehr Overhead. Leichter zu programmieren. Skalierbar.

P: Der Adressraum ist bei Nachrichtenkopplung auch beschränkt. Warum ist Nachrichtenkopplung trotzdem skalierbarer? Wie genau?

Man verwende die Architekturen aus dem Internet: Switches und Router.

Prüfungsathmosphäre

Lernstil