![]() | Name | Last modified | Size | Description |
---|---|---|---|---|
![]() | Parent Directory | - |
Ich bin 20 min vorher im 7. Stock des Turms. Es ist kein Aushang zur Klausur da, also mache ich mich auf die Suche. Ich finde Philipp in seinem Büro, die Tür ist offen. Er fragt, ob ich für die Klausur da bin. Ich bejahe. Er meint, ich solle noch kurz warten und weist auf den Stuhl zwischen Bespr.-Raum und Büro hin. Ich nehme Platz. 5-10 Minuten später kommt er nochmal vorbei, wir gehen in den Prüfungsraum.
Er fragt, ob das meine erste mdl. Klausur ist. Ja.
Er
erläutert den Ablauf, fragt ob 7.5 ECTS oder 5 ECTS und ob ich mich
gesund fühle. Der Zweitprüfer trifft ein. Wir beginnen.
Ich frage, ob ich zeichnen soll. Ja.
. Ich zeichne SC-CPU, muss
ein paar mal Erweiterungen hinzufügen (z. B. immediate-register
multiplexer). Währenddessen erläutern.
Ich überlege und komme zu nichts. # Vielleicht stelle ich die Frage
anders, woher kommt denn die Speicheraddresse
Ich bin etwas aus
dem Konzept gebracht. Ich sage man hat speicherinstruktionen mit
einem großen immediate, äh… nein, einem register und einem immediate
offset
Ja, weißt du wie das heißt
Ähm, Register-Register… Register Memory?
Nein, es wäre
register indirect…
Ich schreibe den Program Counter in VHDL und erkläre währenddessen. Fange mit Entity an, erläutere Vergleich mit Header in C. Prozess und Datenfluss verwendet. Korrekturen möglich (CLK erst bei Beginn des Prozesses hinzugefügt.)
Wo beginnt der Program Counter. “Oh, ein Reset wäre
wünschenswert. Ich füge rst
zu den
std_logic
-Signalen hinzu, füge ein if
ein.
Kurze Überlegung, ob vor oder nach normaler counter-logik
Ich entscheide mich für danach, damit der Counter bei 0
beginnt. Er scheint zufrieden.
Während Programmieren Frage Wie heißt die Library, aus der
unsigned
kommt?
ieee_
er unterbricht mich, meint ich müsste die Zahl
nicht auswendig wissen.
Ich schreibe noch use ieee_… .all
hin und weise auf die
Funktion von .all hin.
Frage: Muss ich auch std_logic importieren. Meine Antwort:
nein.
Muss man aber.
Ich erkläre es als neunwertiger Wert mit den wichtigsten Werten
0
, 1
und nenne dann U
für
undefiniert im Simulator, X
für Konflikt. Er unterbricht
mich, bevor ich Z
nenne.
Ich nenne Synthese, Implementierung mit Map, Translate, P&R. Er
scherzt die Implementierung steht ja schon da
. Ich erläutere,
dass das Ergebnis der Synthese dort für das spezielle FPGA übersetzt
wird.
Ich zeichne ein Flip-Flop mit CLK, Multiplexer zwischen
4
und jmp_off
getrieben von
should_jmp
. Frage ihn, ob ich genauer auf den Addierer
eingehen soll. Nein, nur eine Box mit + drauf
.
Ich möchte den Reset als MUX zwischen 0
und dem neuen
Wert zeichnen. Ich sage Haben die FF einen eigenen RST
. Er sagt,
sie haben einen. Ich streiche den MUX durch und verkable den RST mit den
FFs.
Hängt vom kritischen Pfad ab.
Der längste Pfad, hier vom Ausgang der Register bis zum Eingang, weil jede Komponente eine bestimmte Zeit benötigt.
Zeit, also Sekunden
Ich überlege. Ich fange mit dem Multiplexer an, dann fällt mir auf, dass man nur mehr parallele Multiplexer braucht. Ich gehe zum Addierer über. Ich sage, wenn man einen RCA verwendet benötigt man länger.
Ich nenne in der Anzahl der Bits.
Ich nenne die CARRY4-Blöcke im FPGA und den CLA. Ich beschreibe und
fange mit pro Bit propagiert und generiert
an, er meint, so genau
wäre das nicht nötig.
Ich überlege kurz und nenne . Passt.
Pipelining.
Ich führe die SC-CPU an, bei der dinge in einem Schritt passieren und nenne, wie man sie in Schritte zerlegen könnte.
Eine wäre z. B. EX
Register und die HW, die man vorher hatte, also z. B. die ALU.
So dass sie alle gleich lang brauchen
Nein, weil Hazards.
Sprünge, man muss die Pipeline flushen.
Branch Delay Slot, ich erläutere. Vorteil: Einfach für den CPU-Designer. Nachteil: Unflexibel, falls man längere Pipeline möchte. Performance wird evtl. nicht ganz ausgenutzt.
Branch Prediction: Ich nenne Always-Taken, Not-Taken und die BHT.
Wenn man keine Extra-Hardware verwendet frühestens EX
Dann nach ID/OF, wenn man einen Extra Vergleicher baut.
Äh, so spät wie man will eigentlich. Hier wird es holprig.
Ok, wenn man dann korrigiert. Aber ab wo spätestens wenn man nichts korrigiert.
Mir fällt es ein. Dann bevor etwas geschrieben wurde.
Er: Was?
Ich: Register
Er: Ja.
Ich: Oder memory.
Je früher man es macht, desto weniger falsche Instruktionen in der
Pipeline. Dafür auch weniger information
. Bei EX kann man z. B.
die ALU verwenden, bei ID/OF braucht man eigene Vergleicher und bei IF
müsste man sogar den Wert extra aus den Registern holen.
Ich überlege und rede um den heißen Brei herum, indem ich die
Abwägung von vorher nenne. Er stellt mir die Frage nochmal sehr
bestimmt. Ich nenne und begründe: Später, da man nicht die Extra HW
auf dem Crit-Path hat
Das ist zufriedenstellend.
Er meint: Letztes Thema
1 IPC, Verbesserung: VLIW, also man macht doppelt so große Instruktionen und arbeitet zwei auf einmal ab, also Superskalarität.
Hier wechsle ich mental zwischen -fach größer und einfach verdoppelt hin und her. Ich nenne den inst-mem und die ALU, die man verdoppeln müsste und Register. Er fragt, wie viele Ports man an den Registern braucht. 2 lesen, schreiben.
Ich muss überlegen. Ich nenne zuerst die One-Hot-Decoder, die man verdoppeln bzw. ver n-fachen müsste. Nach etwas überlegen fällt mir ein, dass man den zu schreibenden Wert multiplexen muss.
Ich nenne 32 Bit breite 2:1-MUXe. Er fragt Wie viele?. Ich sage 32. Richtig.
Ich erläutere ein bisschen zu Superskalarität mit einem Beispiel, dass man zwei ALU-Instruktionen hintereinander hat.
Wir sind fertig, leicht überzogen.
Ich möchte meine Tasche mitnehmen, er weißt mich darauf hin, das er mich gleich nocheinmal hereinbitten würde. Sie besprechen ein paar Minuten lang, er nennt mir die Minute.
Er meint, er hätte mir ein paar mal Hinweise geben müssen, aber dass ich auf viele Dinge alleine gekommen wäre und generell Ahnung hätte, was ich tue.
Die Atmosphäre war insgesamt sehr entspannt, auch wenn ich mal Hilfestellung brauchte ging es danach gut wieder voran. Gute Prüfung, kann ich empfehlen.
Ich gehe, bitte den nächsten herein, sage ihm die Note und wünsche
ihm Viel Glück
und setze mich anstelle von ihm auf den Stuhl.
Beim schreiben dieses Protokolls grüßt mich Tobias Baumeister. Große
Klausur voraus
, Nein, gerade bestanden, ich schreibe
Protokoll
, Ach, du hast wegen der 1.0 geschrien. Glückwunsch.
Ich schreibe weiter.
Der nächste kommt heraus, er meint, er wurde zu Automaten gefragt, was er schwierig fand. Er bestand trotzdem. Ich beglückwünsche ihn.
Die übernächste kommt vorbei, ich weise sie zum Raum und wünsche ihr viel Glück.