===== Hardware-Software-Co-Design ===== * Datum: 21.02.14 * Prüfer: Prof. Teich * Dauer: 30 Minuten, Beginn etwas verzögert ==== Allgemeines / Beginn ==== * Drei Frageblöcke vorbereitet, davon wurde alles verwendet. * Am Ende wurde es etwas knapp, da er nichts weglassen wollte und sich das erste Thema hinzog * Ausweis vorzeigen, sofortiger Beginn mit 1. Frage (nichts Allgemeines über HSCD) * Fragen meist etwas ausführlicher, unten nur Kurzfassung * Entspanntes Gespräch; Prüfer hilft, falls man nicht auf die Antwort kommt; lässt nichts weg, wenn man es nicht so sagt, wie er es wünscht, erklärt er es selber ==== Fragen ==== === Systempartitionierung === * Was ist das? Was gibt es für Verfahren? => alle nennen * Wie lassen sich diese einordnen? => exakt / heuristisch: konstruktiv, iterativ * Warum verwendet man heuristische V., wenn es doch exakte V. gibt? => evtl. keine Lösung in endlicher Zeit === Ausführungszeit === * Ausführungszeit bestimmbar (HW/SW)? => in SW nur Schätzung * WCET: Was ist das? => Formel, Erklärung * [Legt ca. 10 Zeilen C-Code vor] Einordnung im Doppeldach? Grundblockgraph zeichnen! (Vorher GB bestimmen) * Bedingungen WCET? Beginnen, WCET zu bestimmen (GB-Eingang = GB-Ausgang) * [Legt Tabelle mit Werten von 3 Schätzverfahren vor, jeweils E(D) und M(D)] Berechnen sie Treue und Exaktheit! => Formel, Erklärung und Berechnung === Codegenerierung === * Ablauf Codegenerierung? => Allokation, Ablaufplanung, Bindung * Was wird jeweils konkret getan? * Anforderungen an "guten" Code? * Wie kann man die Registervergabe bestimmen/optimieren/...? * => Graphfärbung, Registerbelegungsgraphen (beides kurz erklären) * => Nutzenfunktion (kurz nennen) * => Dynamische Programmierung: [legt math. Ausdruck vor, ähnlich: ''a + b * x + d / e''] => DAG erstellen * Reduzierter Satz (Kosten jeweils 1): ''Ri = Ri op Rj; Ri = Mi; Mi = Ri;'' * => DP durchführen, Kostenvektoren (Erklärung) => beginnen, daraus Code zu erstellen