Inhaltsverzeichnis

Rechnerarchitektur

Prüfer: Dietmar Fey, Beisitzer: Lars Schwenger

Allgemein

Lockere Atmosphäre. Professor Fey hilft einem auch, wenn man nicht ganz versteht, worauf er hinaus will. Habe mich auch einmal vertan, aber das war auch nicht schlimm am Ende. Habe bei den Fragen bestimmt etwas vergessen; er hat die 30 Minuten voll ausgenutzt.

Als Vorbereitung bin ich die Vorlesungsfolien durchgegangen (v.a. Kapitel 1 und 2, Kapitel 3 war nicht so wichtig) und habe mir ein paar alte Prüfungsprotokolle angeschaut. Es war wirklich nur das relevant, was in der PDF „Contents for Exam“ steht, und auch davon kam längst nicht alles dran. Note: 1,0

Fragen

Kapitel 1

Komplexe Makrobefehle mit vielen Adressierungsmodi, die einen Einstieg ins Mikroprogramm bilden.

Simple Befehle, Load-Store-Architektur, dafür Pipelining.

Hab hier die klassische Pipeline hingemalt und kurz die einzelnen Phasen ein bisschen erklärt:

  1. Instruction Fetch
  2. Decode
  3. Operand Fetch
  4. Execute
  5. Write Back

Ja, aber bei mehreren Instruktionen, weil die dann gleichzeitig in den verschiedenen Phasen sein können.

Habe die drei Arten von Hazards genannt und kurz erklärt: Struktur-Hazards, Daten-Hazards und Kontroll-Hazards. (Ich musste aber kurz für den Namen von Kontroll-Hazards überlegen, und dann hat er schon die nächste Frage gestellt, sodass ich das gar nicht wirklich gesagt habe…)

Hier habe ich mich vertan, weil WAR ja in skalaren Pipelines gar nicht auftreten kann. Hatte dann zuerst ein Beispiel für RAW gegeben, aber er hat mir dann geholfen, und mit mir ein Beispiel für WAR konstruiert:

add r1 r2 r3

add r3 r4 r5

r3 bei der zweiten Addition darf erst geschrieben werden, nachdem der Wert für die erste Addition gelesen wurde.

Man kann die Abhängigkeiten verwalten, und sich dann vermerken, dass r3 von der ersten Addition gebraucht wird. Dann wird gewartet, bis der Operand dort gelesen wurde, und erst dann wird r3 von der zweiten Addition zurückgeschrieben.

Man hat Reservierungsstationen, und beim Instruction Issue werden die Werte der Operanden dann in die Reservierungsstation kopiert (oder vermerkt, aus welcher Einheit der Operand kommen wird). Man hat dann also nicht zwei mal dasselbe r3, sondern quasi zwei verschiedene Werte, und dementsprechend auch keine Probleme mit dem Überschreiben.

* Wie werden da die Ergebnisse an andere funktionale Einheiten mitgeteilt?

Über den common data bus.

Kapitel 2

Weil man bei Unicore die Transistoren immer kleiner und schneller gemacht hat, aber irgendwann ging das nicht mehr, weil man mit der Spannung nicht mehr runtergehen konnte und deswegen Temperaturprobleme bekommen hat.

Ja, die Dennard-Skalierung. Habe hierfür dann die Formel für die Energiedichte hingeschrieben:

P_diss = C * p * f * V²

f: geht hoch (da man ja die Spannung anhebt)

p: geht quadratisch hoch (da die Transistoren kleiner werden; quadratisch weil es eine Fläche ist)

V: geht runter (weil Transistoren kleiner werden; quadratisch weil ² in der Formel)

C: geht runter (da abhängig von der Fläche, welche kleiner wird (?))

Man konnte aus physikalischen Gründen die Spannung nicht mehr verringern, weil sonst die Elektronen nicht mehr überall hinkommen würden.

Habe hierfür auch die Formel hingeschrieben (zuerst etwas falsch, aber er hat mir dann geholfen sie zu korrigieren):

S = 1 / (T_s + T_p / N) [T_s: Anteil sequentiellen Codes, T_p: Anteil parallel Codes, N: Anzahl Kerne]

Maximaler Speedup ist dementsprechend N.

Wenn man es in die Formel einsetzt, sieht man, dass es keinen wirklich Unterschied macht, weil es durch den sequentiellen Anteil limitiert ist.

Weil es normalerweise nicht nur eine Applikation auf einem System gibt.

Kapitel 3

FPGA: Programmierbare Hardware mit Blöcken (LUTs) und Verbindungen dazwischen.

ASIC: Ein Schaltkreis, der für ein konkretes Problem designed wurde.

Universalprozessoren müssen alles können, sind deswegen an sich größer und teurer. ASICs haben hohe initiale Kosten (Schaltplan designen), aber die Kosten pro Stück sind dann sehr gering, und sie sind energetisch sehr effizient. FPGAs liegen dazwischen.

Siehe Kapitel 3 Folie 27: bei einem ASIC hat man eben nur genau die Gatter, die notwendig für die Operation sind.