Klausur zur Lehrveranstaltung Hardware/Software-Codesign Dr. Christian Plessl Paderborn Center for Parallel Computing Universität Paderborn 8.10.2009 Die Bearbeitungsdauer beträgt 75 Minuten. Es sind keine Hilfsmittel zugelassen. Verwenden Sie kein eigenes Papier. Bei Bedarf bekommen Sie Konzeptpapier bei der Klausuraufsicht. Schreiben Sie auf jedes Blatt (auch auf das Konzeptpapier) in Blockschrift Ihren Namen und Ihre Matrikelnummer. Bei mehreren präsentierten Lösungen wird die Aufgabe nicht gewertet! Streichen Sie daher bei Angabe mehrerer Lösungsansätze die nicht zu bewertenden Lösungen durch! Abschreiben und abschreiben lassen oder Hilfe Dritter führt zum Nichtbestehen der Klausur. Vor- und Nachname: Matrikelnummer: optional E-Mail: Zuordnung: Informatik Bachelor andere: Aufgabe 1 2 3 4 Punkte 10 20 25 20 75 Erreicht 1
Hardware/Software-Codesign Aufgabe 1 (Multiple Choice) [10 Punkte] Bei den folgenden Fragen können eine oder mehrere Antworten richtig sein. Kreuzen Sie die richtigen Antworten deutlich an. (a) Die Verwendung von Evolutionären Algorithmen bei der Entwurfsraumexploration ist dann besonders sinnvoll, wenn: sich das Optimierungsproblem als Lineares Programm formulieren lässt mehrere Kriterien gleichzeitig optimiert werden sollen der Suchraum sehr klein ist eine Approximation der optimalen Lösung ausreichend ist (b) FPGAs haben folgende typischen Eigenschaften: sehr hoher Grad an Parallelverarbeitung grosse integrierte Caches für Daten- und Instruktionen Programmierung auf der Bitebene sind bei hohen Stückzahlen billiger als ASICs (c) Ein neuer Grundblock eines Programmes beginnt: bei jedem Sprungziel bei jeder Load/Store Instruktion bei der Instruktion unmittelbar vor einer Sprunganweisung am Anfang des Programmes (d) Welche der folgenden Aussagen zum Thema Taktperiode und CPI sind korrekt: Ein idealisierter Prozessor mit Pipelining hat einen CPI Wert von 1 Tiefe Pipelines führen zu CPI Werten von kleiner als 1 VLIW Prozessoren haben (idealisiert) einen CPI Wert kleiner als 1 Eine höhere Cache Miss Strafe (Cache Miss Penalty) hat einen höheren CPI Wert zur Folge Seite 2 / 16
NAME: Matrikelnummer: Aufgabe 2 (RTG Kriterium) [20 Punkte] Eine Hardwareentwicklerin beabsichtigt eine Prozessorarchitektur mit dem in Abb. 1 dargestellten Datenpfad zu implementieren. Die Architektur enthält zwei funktionale Einheiten, einen Multiplizierer und eine ALU (für Additionen und Subtraktionen), sowie vier Register t, p, R0 und a. Um sicherzustellen, dass ein Compiler mit optimaler Codegenerierung für baumähnliche DAGs entwickelt werden kann, soll das Registertransfergraph (RTG) Kriterium überprüft werden. 1. Extrahieren Sie aus dem Datenpfad alle Instruktionen, die diese Architektur implementieren kann und listen Sie diese auf. Gruppieren Sie die Instruktionen nach Arithmetik- (MULT,ADD/SUB) und Datentransfer-Instruktionen. Notieren Sie für jede Instruktion die Speicherplätze der Operanden und des Resultates. 2. Erstellen Sie den Registertransfergraphen und überprüfen Sie ob das RTG Kriterium erfüllt ist. Begründen Sie ihre Antwort. Falls das RTG Kriterium nicht erfüllt ist, machen Sie einen Vorschlag wie die Architektur zu verändern ist, damit das Kriterium erfüllt ist. from memory (data bus) t R0 MULT MUX MUX p ADD/SUB a to memory (data bus) Abbildung 1: Datenpfad einer Prozessor Architektur Seite 3 / 16
Seite 4 / 16 Hardware/Software-Codesign
NAME: Matrikelnummer: Seite 5 / 16
Hardware/Software-Codesign Aufgabe 3 (Architektursynthese) [25 Punkte] Abbildung 2 spezifiziert einen Datenflussgraphen, der in Hardware implementiert werden soll. Die Operationen 1... 7 sollen auf die Funktionseinheiten Multiplizierer und Addierer abgebildet werden. Die Latenz des Multiplizierers beträgt 10ns, die Latenz des Addierers 5ns. Die Schaltung soll mit einer Taktperiode von 5ns betrieben werden. 1 + 2 3 + 7 + 4 5 + 6 + Abbildung 2: Datenflussgraph 1. Erstellen unter der Annahme, dass keine Ressourcenbeschränkungen existieren einen ASAP (as soon as possible) und einen ALAP (as late as possible) Ablaufplan (Schedule) für diesen Datenflussgraphen. Verwenden Sie die Latenz des ASAP Ablaufplans als Latenzschranke für die Ermittlung des ALAP Ablaufplans. 2. Wir betrachten nun eine Ausführungsarchitektur mit Resourcenbeschränkungen, die einen Multiplizierer und einen Addierer bietet. Erstellen Sie für diese Architektur einen gültigen Ablaufplan mit der List Scheduling Methode. Verwenden Sie dabei die Mobilität der Operatoren als Prioritätskriterium. 3. Formulieren Sie ein ganzzahliges lineares Programm (ILP), das dieses Architektursyntheseproblem mit dem Ziel der Minimierung der Latenz modelliert. Auch hier soll die Resourcenbeschränkung auf einen Multiplizierer und einen Addierer gelten. Geben Sie dabei die Variablen und deren Wertebereiche, die Bedingungen und die Zielfunktion an soweit möglich mit konkreten Zahlenwerten. Bei umfangreicheren Gleichungen, die stets dieselbe Struktur aufweisen (zum Beispiel bei der Modellierung der Datenabhängigkeiten), können Sie die Gleichungen auch für ausgewählte Knoten(paare) exemplarisch angeben. Seite 6 / 16
NAME: Matrikelnummer: Seite 7 / 16
Seite 8 / 16 Hardware/Software-Codesign
NAME: Matrikelnummer: Seite 9 / 16
Hardware/Software-Codesign Aufgabe 4 (Lebenszeit Analyse, Registerallokation) [20 Punkte] Das folgende Programm benutzt 6 Variablen a, b, c, d, e, f. Das Ziel dieser Aufgabe ist es durch eine Programmfluss- und Lebenszeitanalyse die Anzahl der Register zur Speicherung dieser Variablen zu minimieren. 1: a = read(); 2: b = read(); 3: c = read(); 4: a = a + b + c; 5: if(a < 10) { 6: d = c + 8; 7: write(c); 8: } else if(a < 20) { 9: e = 10; 10: d = e + a; 11: write(e); 12: } else { 13: f = 12; 14: d = f + a; 15: write(f); 16: } 17: } 18: write(d); 1. Bestimmen Sie die Grundblöcke dieses Programms und zeichnen Sie den Kontrollflussgraphen. Schreiben Sie in jeden Knoten des Kontrollflussgraphen den Code des zugehörigen Grundblocks. 2. Annotieren Sie graphisch die Lebenszeiten der Variablen im Kontrollflussgraphen. Benutzen Sie dabei die in der folgenden Grafik dargestellte Notation. x x =... B1... = x B2... B3... = x B4 Abbildung 3: Lebenszeiten im Kontrollfluss Graphen. Das Beispiel visualisiert die Lebenszeit der Variablen x, welche im Grundblock B1 definiert und in den Grundblöcken B2 und B4 verwendet wird. 3. Erstellen Sie ausgehend von den Lebenszeiten für die Variablen a, b, c, d, e, f, die Sie im letzten Schritt ermittelt haben einen Registerkonfliktgraphen. Ermitteln Sie eine Abbildung der sechs Variablen auf drei Register durch Graphfärbung. Seite 10 / 16
NAME: Matrikelnummer: Seite 11 / 16
Seite 12 / 16 Hardware/Software-Codesign
NAME: Matrikelnummer: Konzeptpapier: Falls der Platz unter den einzelnen Aufgaben nicht ausreicht, können Sie diese Seiten für Zwischenrechnungen nutzen. Bitte Lösung und Lösungsweg eindeutig mit der Aufgabennummer markieren! Seite 13 / 16
Hardware/Software-Codesign Konzeptpapier: Falls der Platz unter den einzelnen Aufgaben nicht ausreicht, können Sie diese Seiten für Zwischenrechnungen nutzen. Bitte Lösung und Lösungsweg eindeutig mit der Aufgabennummer markieren! Seite 14 / 16
NAME: Matrikelnummer: Konzeptpapier: Falls der Platz unter den einzelnen Aufgaben nicht ausreicht, können Sie diese Seiten für Zwischenrechnungen nutzen. Bitte Lösung und Lösungsweg eindeutig mit der Aufgabennummer markieren! Seite 15 / 16
Hardware/Software-Codesign Konzeptpapier: Falls der Platz unter den einzelnen Aufgaben nicht ausreicht, können Sie diese Seiten für Zwischenrechnungen nutzen. Bitte Lösung und Lösungsweg eindeutig mit der Aufgabennummer markieren! Seite 16 / 16