Lösungsvorschlag zur 4. Übung, GdI 3
Transcrição
Lösungsvorschlag zur 4. Übung, GdI 3
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 4. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche Aussagen zu Bewertungskriterien für Prozessoren sind richtig? 4 Die CPU-Ausführungszeit ergibt sich aus den verwendeten Operationen und der Taktung der CPU. 2 Die CPU-Ausführungszeit ist die gemessene Zeit, welche die CPU real zum Ausführen der Codezeilen eines Programms benötigt. 4 Die CPU-Systemzeit ist die Zeit, welche die CPU für Betriebssystemaufgaben verwendet. 2 Die Benutzerantwortzeit ist ein geeignetes Maß für CPU-Performanz 2 Rechner mit hohen Durchsatz haben auch kürzere Ausführungszeiten als Rechner mit niedrigem Durchsatz. b) Welche Elemente einer Programmausführung fließen nicht in die user-CPU-time mit ein? 4 Festplattenzugriffe 4 Verzögerung durch Cache-Misses 4 I/O-verzögerung durch Hardware 2 CPU-Ausführungszeit c) Welche Elemente einer Programmausführung fließen in die Benutzerantwortzeit mit ein? 4 I/O-verzögerung durch Hardware 4 Verzögerung durch Cache-Misses 4 CPU-Ausführungszeit 4 Festplattenzugriffe 1.2 Leistungsbewertung In der Vorlesung haben wir folgende Größen im Zusammenhang mit der CPU-Zeit kennengelernt. T f t MIPS CPI B Z CPU-Zeit in Sekunden Taktfrequenz in Zyklen pro Sekunde Taktzykluszeit in Sekunden pro Zyklus Millionen von Instruktionen pro Sekunde mittlere Anzahl Zyklen pro Instruktion Anzahl Instruktionen CPU-Zeit in Zyklen 1 Lösungsvorschlag zur 4. Übung Grundlagen der Informatik 3, WS 09/10 a) Leiten Sie die Formeln der gesuchten Größen aus den angegebenen Größen her. 1. gesucht: T gegeben: Z, t T=Z*t 2. gesucht: CPI, gegeben: Z, MIPS, T CPI = Z / (T * MIPS * 106 ) 3. gesucht: T, gegeben: f, CPI, B T = B * CPI / f 4. gesucht: B, gegeben: T, MIPS B = T * MIPS * 106 5. gesucht: Z, gegeben: T, CPI, MIPS Z = , T *CPI * MIPS * 106 b) Zwei unterschiedliche Prozessoren mit jeweils 2.4 Ghz und 2.233 Ghz Taktfrequenz bearbeiten eine Berechnung, die insgesamt aus 9 · 107 Instruktionen besteht. Der erste Rechner benötigt 14 Zyklen pro Instruktion, der zweite 12. Welcher Rechner ist schneller fertig? T = B · CPI/ f . Also T1 = 9·107 ·14 2.4·109 Hz ≈ 52.5 ms und T2 = 9·107 ·12 2.233·109 Hz ≈ 48.4 ms. c) Die Operationen einer komplexen Berechnung benötigen zusammengenommen 7.7 · 107 Rechenzyklen. Wie lange dauert die Ausführung auf einem Prozessor mit 3.2 Ghz Taktfrequenz? T = Z/ f = 1.1·107 3.2·109 Hz ≈ 2.4 ms d) Ein Rechner benötigt für eine komplexe Berechnung 1350ms mit 2.3 MIPS. Wie viele Instruktionen werden dabei verarbeitet? B = T · MIPS · 106 = 1.35s · 2.3/s · 106 = 3 105 000 Instruktionen. e) Obiger Rechner hat eine Taktfrequenz von 750 Mhz. Wie hoch ist die mittlere Anzahl an Rechenzyklen pro Instruktion? T = B · CPI/ f → CPI = T · f /B = 1.35s·75·106 Hz 3105000 = 326 1.3 Performanzvergleich Betrachten wir zwei Hardware-Implementierungen M1 und M2 eines Befehlssatzes mit vier Befehlsklassen Add, Jmp, Mul und Shft. Die angegebene Taktfrequenz ist 1, 133 GHz für M1 und 750 MHz für M2. Desweiteren sind die Daten aus Tabelle 1 gegeben. Befehlsklasse Add Jmp Mul Shft CPI für M1 2 2 5 1 CPI für M2 1 2 3 1 Befehlsklasse Add Jmp Mul Shft Tabelle 1: CPI für M1 und M2 Häufigkeit 45% 15% 25% 15% Tabelle 2: Häufigkeiten für P1 a) Ein Programm P1 weist folgende Verteilung der Befehlshäufigkeiten auf: (siehe Tabelle 2). Wie viele CPI erreichen M1 und M2 bei der Ausführung von P1? 2 Lösungsvorschlag zur 4. Übung CPI für M1 bei Ausführung von P1 = CPI für M2 bei Ausführung von P1 = Grundlagen der Informatik 3, WS 09/10 45 100 45 100 ·2+ ·1+ 15 100 15 100 ·2+ ·2+ 25 100 25 100 ·5+ ·3+ 15 100 15 100 · 1 = 2,6 · 1 = 1,65 b) Wie ist die relative Performanz zwischen M1 und M2 bei Ausführung von P1? n2 sei die Anzahl der Befehle von P1. CPU-Zeit für M1 zur Ausführung von P1 = CPU-Zeit für M1 zur Ausführung von P1 = Also ist M1 um 4.09% langsamer als M2. n2 ·2,6 s ≈ n2 · 2,29 · 10−9 s 1,133·109 n2 ·1,65 s ≈ n2 · 2,2 · 10−9 s 7,5·108 c) Das Programm P2 enthält jeweils gleich viele Befehle aus den vier Befehlsklassen. Wie hoch ist die mittlere Anzahl der Zyklen pro Behfehl (CPI) bei Ausführung von P1 auf M1 und M2? CPI für M1 bei Ausführung von P2 = CPI für M2 bei Ausführung von P2 = 2+2+5+1 4 1+2+3+1 4 = 2,5 = 1,75 d) Wie ist die relative Performanz zwischen M1 und M2 bei Ausführung von P2? n1 sei die Anzahl der Befehle von P2. CPU-Zeit für M1 zur Ausführung von P2 = CPU-Zeit für M2 zur Ausführung von P2 = Also ist M1 um 5.15% schneller als M2. 3 n1 ·2,5 s ≈ n1 · 2,21 · 10−9 s 1,133·109 n1 ·1,75 s ≈ n1 · 2,33 · 10−9 s 7,5·108 Lösungsvorschlag zur 4. Übung Grundlagen der Informatik 3, WS 09/10 1.4 Geschachtelte Schleifen Folgendes Programmstück bearbeitet ein Array von 5000 Worten. Die Basisadresse des Arrays befindet sich in $a0 und die Array-Größe (5000) in $a1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 sll add add outer : add lw add add inner : add lw bne addi skip : addi blt slt bne add add next : addi blt $a1 , $v0 , $t0 , $t4 , $t4 , $t5 , $t1 , $t3 , $t3 , $t3 , $t5 , $t1 , $t1 , $t2 , $t2 , $v0 , $v1 , $t0 , $t0 , $a1 , 2 $zero , $zero $zero , $zero $a0 , $t0 0( $t4 ) $zero , $zero $zero , $zero $a0 , $t1 0( $t3 ) $t4 , skip $t5 , 1 $t1 , 4 $a1 , inner $t5 , $v0 $zero , next $t5 , $zero $t4 , $zero $t0 , 4 $a1 , outer a) Was wird mit diesem Programm berechnet? $v1 enthält das Element mit häufigstem Vorkommen im Array und $v0 enthält dessen Häufigkeit. b) Auf einem bestimmten Rechner benötigen die Befehle add, addi, sll und slt jeweils 1 Taktzyklus und die Befehle lw, bne und blt jeweils 2 Taktzyklen. Wieviel Taktzyklen benötigt dann unser Programmstück auf diesem Rechner im schlechtesten Fall. Die outer-Schleife wiederholt sich 5000 mal mit jeweils 1 + 2 + 1 + 1 Zyklen vor der inner-Schleife und 1 + 2 + 1 + 1 + 1 + 2 Zyklen danach im schlechtesten Fall. Wir haben also damit zunächst 5000 · 13 Zyklen. Die inner-Schleife wiederholt sich 5000 · 5000 mal mit jeweils 1 + 2 + 2 + 1 + 1 + 2 Zyklen, womit wir weitere 5000 · 5000 · 9 Zyklen haben. Mit den ersten 3 Instruktionen haben wir also maximal 3 + 5000 · 13 + 5000 · 5000 · 9 = 225065003 Taktzyklen. c) Wie hoch ist dann im schlechtesten Fall die mittlere Anzahl der Zyklen pro Befehl (CPI)? Im in b) dargestellten schlechtesten Fall werden 3 + 5000 · 10 + 5000 · 5000 · 6 = 150050003 Instruktionen ausgeführt. Damit ergeben sich also durchschnittlich 225065003 150050003 ≈ 1, 499 Zyklen pro Befehl. 4 Lösungsvorschlag zur 4. Übung Grundlagen der Informatik 3, WS 09/10 2 Hausübungen 2.1 Performanz Sie sind der Chefdesigner eines neuartigen hochspezialisierten Prozessors zur hardwaregestützen Organisation von Übungs und Praktikums-Aufgaben für Grundstudiumsveranstaltungen in der Informatik. Das Design und der Compiler sind fertig und wurde schon erfolgreich im WS08 getestet, Sie müssen aber jetzt entscheiden, ob Sie die aktuelle Version des Prozessors produzieren lassen, oder zusätzliche Zeit verwenden, den Prozessor weiter zu verbessern. Das Compilerteam schlägt zur Steigerung der Performanz vor, den Compiler zu verbessern. Sie diskutieren das Problem mit Ihrem Hardware und Compilerteam und kommen zu folgenden Optionen: • Das Design bleibt wie es ist. Dieser Prozessor wird Rbasis genannt und hat eine Taktrate von 5 MHz. • Optimiere die Hardware. Das Hardwareteam kann das Prozessordesign weiter verbessern und eine Taktrate von 6 MHz erreichen. Diesen Prozessor nennen wir Ropt . • Optimiere den Compiler. Das Compilerteam kann vor allem das automatische Beantworten von Mails effizienter zu gestalten. Die Kombination von verbessertem Compiler und Rbasis nennen wir Rcomp . Die Simulation der beiden Hardware implementierungen hat die Werte aus Tabelle 3 geliefert. Der neue Compiler verändert die Befehlshäufigkeiten relativ zur ursprünglichen Variante, wie in Tabelle 4 angegeben. Befehlsklasse Folien erstellen Übung erstellen Mails beantworten MuLö erstellen Leerlauf BefehlsCPI häufigkeit Rbasis 17% 4 33% 5 40% 5 9% 6 1% 13 CPI Ropt 4 5 4 4 21 Tabelle 3: CPI für Rbasis und Ropt a) Wie hoch ist die durchschnittliche CPI für Rbasis Befehlsklasse F Ü Mail Mulö L Relative Häufigkeit ggü. Rbasis1 85% 110% 33% 80% 45% Tabelle 4: Relative Häufigkeiten für Rcomp und Ropt ? 2 Punkte 33 40 9 1 17 100 · 4 + 100 · 5 + 100 · 5 + 100 · 6 + 100 · 13 = 5 17 33 40 9 1 100 · 4 + 100 · 5 + 100 · 4 + 100 · 4 + 100 · 21 = 4, 5 CPIRbasis = CPIRopt = b) Wieviel MIPS verarbeiten die Prozessoren jeweils? 1 Punkt 5 MHz ≈1 5 6 MHz 4,5 ≈ 1, 333 MIPSRbasis = MIPSRopt = c) Um wieviel schneller ist Ropt gegenüber Rbasis ? 1 Punkt MIPSRopt = 1,333 1 ≈ 1, 333 ⇒ 33, 3333% Verbesserung MIPSRbasis Man kann hier mittels MIPS vergleichen, da beide Rechner die gleiche Befehlsmenge haben. 1 Das bedeutet, dass z. B. Rcomp nur 85% der Anzahl von Instruktionen der Klasse F ausführt, die Rbasis benotigt. 5 Lösungsvorschlag zur 4. Übung Grundlagen der Informatik 3, WS 09/10 d) Wie hoch ist die durchschnittliche CPI für Rcomp ? 2 Punkte Für diese Aufgabe muß man die neue (relative) Anzahl an Instruktionen für Rcomp 85 33 40 33 9 80 1 45 17 · 100 + 100 · 110 berechnen. Dies ergibt: 100 100 + 100 · 100 + 100 · 100 + 100 · 100 = 0, 716 Die neue CPI kann dann berechnet werden zu CPIRcomp = 17 100 · 85 100 ·4+ 33 100 · 110 100 ·5+ 40 100 33 · 100 ·5+ 0, 716 9 100 · 80 100 ·6+ 1 100 · 45 100 · 13 3.5435 0, 716 ≈ 4, 949 = e) Um wieviel schneller ist Rcomp gegenüber Rbasis ? Beachten Sie hierfür, dass sich die Anzahl der Befehle für beide Varianten unterscheidet! 2 Punkte Hier kann CPIRcomp nicht direkt eingesetzt werden, da ein Programm zu zwei verschiedenen Kompilaten führt. Darum muss die Verringerung der Befehlsanzahl berücksichtigt werden. 5 MHz 5 CPIRbasis · = ≈ 1, 411 5 MHz CPIRcomp · 0, 716 4, 949 · 0, 716 Also ist Rcomp etwa 41% schneller als Rbasis . f) Beide Verbesserungen konnen auch gemeinsam in einem Rechner Rbeide umgesetzt werden. Um wieviel schneller ist Rbeide als Rbasis ? 2 Punkte Man muß zuerst CPIRbeide bestimmen. Die neue CPI kann dann berechnet werden zu CPIRcomp = 17 100 · 85 100 ·4+ 33 100 · 110 100 ·5+ 40 100 33 · 100 ·4+ 0, 716 9 100 · 80 100 ·4+ 1 100 · 45 100 · 21 3.3035 0, 716 ≈ 4, 6138 = Hier ergibt sich analog zur vorherigen Teilaufgabe d) ein Wert von ca. 4,6138. Die Taktraten der beiden Rechner sind 5 MHz für Rbasis und 6 MHz für Rbeide . Es ergibt sich somit nach Einsetzen in die Gleichungen aus Teilaufgabe e) CPIRbasis 6 MHz 5·6 · = ≈ 1, 816 5 MHz CPIRbeide · 0, 716 4, 6138 · 0, 716 · 5 Damit ist Rbeide etwa 82% schneller als Rbasis . 6