DEPARTMENT INFORMATIK Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Martensstraße 3, 91058 Erlangen 12.02.2014 Klausur zu Computational Engineering I............ Matrikelnummer Geb.-Datum Vorname Name Es sind keine Hilfsmittel erlaubt Legen Sie den Ausweis (mit Lichtbild!) griffbereit auf den Platz! Dieses Aufgabenheft umfasst 17 Seiten. Überprüfen Sie die Vollständigkeit! Gesondert beigelegte Blätter werden nicht bewertet. Schreiben Sie deutlich! Unleserliches wird nicht bewertet! Es darf nicht mit der Farbe rot geschrieben werden! Offensichtlich falsche oder überflüssige Antworten können zu Punktabzug führen! Durch meine Unterschrift bestätige ich den Empfang der vollständigen Klausurunterlagen die Kenntnisnahme der obigen Informationen. Erlangen, den 12.02.2014... (Unterschrift) Ich bin damit einverstanden, dass mein Prüfungsergebnis der Klausur unter Angabe der Matrikel-Nummer veröffentlicht wird. Erlangen, den 12.02.2014... (Unterschrift) Aufgabe 1 2 3 4 5 6 7 8 9 10 Summe max. Punktzahl 7 9 10 9 8 8 12 7 10 10 90 erreichte Punktzahl
Aufgabe 1: Zahlendarstellung (7 Punkte) Führen Sie die folgenden Additionen schriftlich im Binärsystem (5-bittige Binärzahlen in Zweierkomplement-Darstellung) durch und überprüfen Sie die Ergebnisse durch Umrechnung in Dezimalzahlen: 00001+10011 11000+01101 Stellen Sie die folgenden beiden Dualzahlen im Oktal- und Hexadezimalsystem dar: 111010 1011101
Aufgabe 2: Boolesche Algebra und Gatterlogik (9 Punkte) Minimieren Sie die folgende logische Schaltung hinsichtlich der Anzahl von Gattern durch Anwendung boolescher Algebra! Der Lösungsweg sollte erkennbar sein.
Aufgabe 3: Mikroprogrammierung (10 Punkte) Erläutern Sie kurz, welche Vorteile ein mikroprogrammiertes Leitwerk im Vergleich zu einem festverdrahteten Leitwerk hat! Welche Phasen des Befehlszyklus werden in einem mikroprogrammierten Leitwerk durch Mikrobefehle realisiert? Was versteht man unter Vertikaler Mikroprogrammierung?
Was versteht man unter Horizontaler Mikroprogrammierung? Welche Vor- und Nachteile haben diese Verfahren jeweils?
Aufgabe 4: Pipelining (9 Punkte) 1. Wie viele Stufen hat eine Pipeline, die für 10 Befehle einen Speedup von 5 erzielt? 2. Im Folgenden sehen Sie einen Assembler-Pseudocode: 1: label: 2: mul R3, R4, R1 \\R1=R3*R4 3: add R1, R3, R6 \\R6=R1+R3 4: jltz R6, label \\springe zu label, falls R6<0 5: print("ende") \\Bildschirmausgabe Wenn dieser Code in einer simplen 5-stufigen Pipeline (BH, DE, OP, BA, RS) ausgeführt wird, treten zwei Arten von Hazards auf. Nennen Sie diese beiden Arten und geben Sie an, wo es in dem Code genau zu Hazards kommt!
Aufgabe 5: Assembler-Programmierung (8 Punkte) Gegeben sei ein Prozessor mit 5 Registern t0,...,t4, sowie einem speziellen Register zero, welches immer den Wert 0 enthält. Geben Sie einen Assembler-Code an, welcher t0 (Betrag des Wertes in t0) in das Register t1 lädt! Folgende Assembler-Befehle stehen dabei zur Verfügung (ri,rj,rk seien beliebige Register und c eine Konstante): add ri rj rk setzt Register ri auf rj+rk. sub ri rj rk setzt Register ri auf rj-rk <label>: eine beliebige Zeichenkette, die eine Codezeile markiert zu der über einen Sprungbefehl gesprungen werden kann. bltz ri <label> Springt zu der Marke <label>, falls Inhalt von ri kleiner 0. beq ri c <label> Springt zu der Marke <label>, falls Inhalt von ri gleich der Konstanten c. jmp <label> Springt in jedem Fall zu <label>.
Aufgabe 6: Caches (8 Punkte) Nennen Sie die drei gebräuchlichen Cache-Organisationsformen! Wie heißen die beiden in der Vorlesung vorgestellten Prinzipien, auf Grund derer sich bei einem Speicherzugriff benötigte Daten häufig im Cache finden lassen? Nennen Sie zwei Aktualisierungsstrategien welche eingesetzt werden, um Inkonsistenzen zwischen Hauptspeicher und Cache zu vermeiden! Nennen Sie eine weitere Ersetzungsstrategie neben LRU (Least Recently Used)!
Aufgabe 7: Caches2 (12 Punkte) Gegeben sei ein 64 KByte großer byteadressierer Hauptspeicher. Ferner seinen folgende drei Caches gegeben: Cache A: direkt abbildend, Cachelinegröße 4 Byte, Gesamtgröße 4 KByte Cache B: 2-fach assoziativ, Cachelinegröße 8 Byte, Gesamtgröße 32 KByte Cache C: 4-fach assoziativ, Cachelinegröße 32 Byte, Gesamtgröße 32 KByte Die Cachezeilen bei Cache A bzw. die Mengen bei Cache B und C seinen fortlaufend adressiert. Die Abbildung einer Zeile eines Hauptspeichers auf eine Cachezeile bzw. eine Cachemenge erfolge per Modulo-Operation. Geben Sie für jeden der drei Caches die Adresse der Cachezeile (Cache A) bzw. der Cachemenge (Cache B und C) an, auf die das Byte an der Hauptspeicheradresse 1001111101000111 abgebildet würde. Hinweis: die Anzahl der zu verwendenden Bits für die Cachezeilen-/Cachemengenadresse ergibt sich aus der verfügbaren Anzahl der Zeilen/Mengen im jeweiligen Cache.
Aufgabe 8: OpenMP (7 Punkte) 1. Im folgenden Programmabschnitt sollen mehrere Threads ein Array x beginnend ab Index offset wiederholt mit der Folge aller Thread-Ids füllen. Dabei wurden aber Klauseln für die Daten-Verwaltung vergessen. Welche Klauseln müssen bei der parallelen Region angegeben werden, damit alle Variablen korrekt (privat oder global) behandelt werden? int N=100; int offset = 10; int tid, num_threads; int x[n]; #pragma omp parallel { num_threads=omp_get_num_threads(); tid = omp_get_thread_num(); offset = tid+offset; for(int j=offset;j<n;j+=num_threads){ x[j] = tid; } }
2. Welcher Wert für die Variable sum wird am Ende des folgenden Programmabschnitts ausgegeben? int sum=0; int localsum=0; int x[10]; #pragma omp parallel firstprivate(localsum) shared(x,sum) { #pragma omp for for(int i=0;i<10;i++){ x[i]=i; } #pragma omp for for(int i=0;i<10;i++){ localsum=localsum+x[i]; } #pragma omp critical { sum=sum+localsum; } } printf("%d\n",sum);
Aufgabe 9: MESI (10 Punkte) In folgender Abbildung ist der Ablauf des MESI-Protokolls dargestellt: Ergänzen Sie entsprechend die Inhalte der Caches (auf der nächsten Seite) mit den zugehörigen MESI-Zuständen von CPU A und CPU B nach dem Ausführen der angegebenen Anweisungen. Alle Variablen sind als globale Variablen zu betrachten und als Ersetzungsstrategie werde LRU (Least Recently Used) verwendet.
Aufgabe 10: Leistungsmaße (10 Punkte) Gegeben sei ein Programm, das sich wie folgt für p Prozessoren parallelisieren lässt: 4% können nur seriell ausgeführt werden 80% können nur von p/4 Prozessoren parallel ausgeführt werden Der Rest lässt sich perfekt auf p Prozessoren parallelisieren 1. Was ist der maximal mögliche Speed-Up mit 8 Prozessoren nach Amdahl? 2. Welche parallele Effizienz ergibt sich daraus? 3. Was ist die obere Grenze für den Speed-Up mit p Prozessoren? Eine parallelisierte Anwendung habe ein Laufzeit von 10 s mit 8 Prozessoren. Davon werden 2 s für den seriellen Anteil benötigt. Wie hoch ist der skalierte Speed-Up nach Gustafson-Barsis?
Zusätzlicher Platz
Zusätzlicher Platz