Inhaltsverzeichnis

CPU Entwurf mit VHDL 7,5 ECTS Prüfung 2022-08-11

Meta Information

Prüfung

1. Teil: VHDL

* Einstiegsfrage: Skizziere doch mal eine SingeCycleCPU.

Blatt und Stift genommen und skizziert, die Verbindungen ein bisschen erklärt.

* Frage: Wie wird das jetzt umgesetzt? Am Besten mal am Beispiel des Register Files aufzeigen.

Mit VHDL, Hardwarebeschreibungssprache. Es gibt taktsynchrone/sequentielle Teile, zu denen das RegFile gehört und kombinatorische Teile. Herangehensweise ist Denkweise auf dieser RTL Ebene und Umsetzung in taktsynchronen Prozessen bzw. kombinatorischen Prozessen oder Datenflussbeschreibung.

* Frage, um mich in die richtige Richtung zu lenken: Also wie genau ist so eine VHDL Datei aufgebaut, schreib mal was hin.

Ich habe dann eine VHDL Datei fürs RegFile geschrieben, mit kurzem Verweis auf Librarys, std_logic als 9 Wertige Logik mit Beispielen dazu (U,-,X). Dann entity und achritecture. In der Entity hatte ich ein paar Ports vergessen und dann im Laufe der architecture Entwicklung dann noch ergänzt, da hat mich Philipp zum Glück NICHT unterbrochen und mal machen lassen. Daduch konnte ich das schön ergänzen.

* Rückfrage zu Datentypen, Passen die so?

für Zugriff mit std_logic_vector Adresse muss man noch to_integer(unsigned(addr)) machen.

*Was muss dann noch passieren mit der VHDL Beschreibung?

Simulation, Synthese (architekturspezifische Netzliste) und Implementierung (Translation, Map , Place and Route genannt)

*Frage: Wie sieht denn das Ergebnis der Synthese für dein Register File aus?

FF-Arrays hingezeichnet, data_in mit decoder zu One Hot Codierung angedeutet und dann ver-und-et mit WE, das an den En Eingang der FFs. Ausgang zwei 32:1 MUX hingezeichnet mit je einer addr als Steuereingang. Erwähnt, dass solche MUXs als Baum aus 2:1 MUXs aufgebaut würden.

*Wie sieht es mit 1. Takt und 2. Ressourcenverbrauch aus, wenn wir 1. die Anzahl der Register auf 64 erhöhen oder 2. die Breite der Register auf 64 erhöhen.

Wahrscheinlich längste Antwort/Phase: 1. Takt: 1. verlängert kritischen Pfad, damit Takt ggf. langsamer. 2. hat keine Auswirkungen auf Takt, man braucht nur parallel mehr MUXE.
2. Ressourcenverbraucht: 1. Braucht 32 2:1 MUX zusätzlich, hängt an den MUX Baum also eine Ebene dran ⇒ Sind dann also doppelte so viele MUXs. 2. Wir brauchen dann 64 32:1 MUXS

Pipelining und IPC Steigerung

*Wovon hängt der Takt ab und wie bekommen wir den Takt schneller?

Vom längsten kritischen Pfad, durch Pipelining. stages eingezeichnet

*Probleme damit? Ists besser, wenn wir 10 Pipelinestufen verwenden?

Hazards und Latenzzeit bei Interrupts/Flushen der Pipeline. Grundsätzlich sind 10 besser, wenn wir alle Stufen gleich groß machen und die Hazard Behandlung hinbekommen.

* Hazards? Welche gibt es und Lösungen?

Strukturh., ⇒ Komponenten verdoppeln
Datah. ⇒ Kompiler oder in HW: Forewarding an der gezeichneten Pipeline erklärt und eingezeichnet
Controlh. ⇒ bei Sprüngen. Delay Slots, Kompiler oder Sprungentscheidung vorzeihen nur ganz kurz behandelt, hatten da schon nur noch 5 min Zeit

* Wie ist der IPC der Pipeline-CPU und wie bekommen wir den nach oben?

VLIW: IPC je nachdem, wie viele Befehle wir in einen Slot packen dürfen.
Multicores (kurz noch Multithreading erwähnt): IPC, wie Anzahl Cores.
Superskalarität: Da war die Zeit um, Philipp wollte das aber noch machen. Bin dann da etwas durcheinander gekommen und konnte nicht mehr sagen, woher der IPC Uplift kommt.
Philipp hat es mir dann erklärt: Es wird nicht nur die ALU vervielfacht sondern das Registerfile wird mächtiger und wir laden gleichzeitig mehrere Befehle. Wir können im RegFile dann mehrere gleichzeitig speichern und rausbekommen.