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? Die CPU-Ausführungszeit ergibt sich aus den verwendeten Operationen und der Taktung der CPU. Die CPU-Ausführungszeit ist die gemessene Zeit, welche die CPU real zum Ausführen der Codezeilen eines Programms benötigt. Die CPU-Systemzeit ist die Zeit, welche die CPU für Betriebssystemaufgaben verwendet. Die Benutzerantwortzeit ist ein geeignetes Maß für CPU-Performanz 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? Festplattenzugriffe Verzögerung durch Cache-Misses I/O-verzögerung durch Hardware CPU-Ausführungszeit c) Welche Elemente einer Programmausführung fließen in die Benutzerantwortzeit mit ein? I/O-verzögerung durch Hardware Verzögerung durch Cache-Misses CPU-Ausführungszeit 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
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 * 10 6 ) 3. gesucht: T, gegeben: f, CPI, B T = B * CPI / f 4. gesucht: B, gegeben: T, MIPS B = T * MIPS * 10 6 5. gesucht: Z, gegeben: T, CPI, MIPS Z =, T *CPI * MIPS * 10 6 b) Zwei unterschiedliche Prozessoren mit jeweils 2.4 Ghz und 2.233 Ghz Taktfrequenz bearbeiten eine Berechnung, die insgesamt aus 9 10 7 Instruktionen besteht. Der erste Rechner benötigt 14 Zyklen pro Instruktion, der zweite 12. Welcher Rechner ist schneller fertig? T = B CPI/ f. Also T 1 = 9 107 14 2.4 10 9 Hz 52.5 ms und T 2 = 9 107 12 48.4 ms. 2.233 10 9 Hz c) Die Operationen einer komplexen Berechnung benötigen zusammengenommen 7.7 10 7 Rechenzyklen. Wie lange dauert die Ausführung auf einem Prozessor mit 3.2 Ghz Taktfrequenz? T = Z/ f = 1.1 107 2.4 ms 3.2 10 9 Hz d) Ein Rechner benötigt für eine komplexe Berechnung 1350ms mit 2.3 MIPS. Wie viele Instruktionen werden dabei verarbeitet? B = T MIPS 10 6 = 1.35s 2.3/s 10 6 = 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 CPI für M1 CPI für M2 Add 2 1 Jmp 2 2 Mul 5 3 Shft 1 1 Befehlsklasse Häufigkeit Add 45% Jmp 15% Mul 25% Shft 15% Tabelle 1: CPI für M1 und M2 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
CPI für M1 bei Ausführung von P1 = 45 100 2 + 15 100 2 + 25 100 5 + 15 100 1 = 2,6 CPI für M2 bei Ausführung von P1 = 45 100 1 + 15 100 2 + 25 100 3 + 15 100 1 = 1,65 b) Wie ist die relative Performanz zwischen M1 und M2 bei Ausführung von P1? n 2 sei die Anzahl der Befehle von P1. CPU-Zeit für M1 zur Ausführung von P1 = n 2 2,6 1,133 10 9 s n 2 2,29 10 9 s CPU-Zeit für M1 zur Ausführung von P1 = n 2 1,65 7,5 10 8 s n 2 2,2 10 9 s Also ist M1 um 4.09% langsamer als M2. 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 = 2+2+5+1 4 = 2,5 CPI für M2 bei Ausführung von P2 = 1+2+3+1 4 = 1,75 d) Wie ist die relative Performanz zwischen M1 und M2 bei Ausführung von P2? n 1 sei die Anzahl der Befehle von P2. CPU-Zeit für M1 zur Ausführung von P2 = n 1 2,5 1,133 10 9 s n 1 2,21 10 9 s CPU-Zeit für M2 zur Ausführung von P2 = n 1 1,75 7,5 10 8 s n 1 2,33 10 9 s Also ist M1 um 5.15% schneller als M2. 3
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 sll $a1, $a1, 2 2 add $v0, $zero, $zero 3 add $t0, $zero, $zero 4 outer : add $t4, $a0, $t0 5 lw $t4, 0( $t4 ) 6 add $t5, $zero, $zero 7 add $t1, $zero, $zero 8 inner : add $t3, $a0, $t1 9 lw $t3, 0( $t3 ) 10 bne $t3, $t4, skip 11 addi $t5, $t5, 1 12 skip : addi $t1, $t1, 4 13 blt $t1, $a1, inner 14 slt $t2, $t5, $v0 15 bne $t2, $zero, next 16 add $v0, $t5, $zero 17 add $v1, $t4, $zero 18 next : addi $t0, $t0, 4 19 blt $t0, $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 1, 499 Zyklen pro Befehl. 225065003 150050003 4
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 R basis 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 R opt. Optimiere den Compiler. Das Compilerteam kann vor allem das automatische Beantworten von Mails effizienter zu gestalten. Die Kombination von verbessertem Compiler und R basis nennen wir R comp. 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 CPI Rbasis CPI Ropt Folien erstellen 17% 4 4 Übung erstellen 33% 5 5 Mails beantworten 40% 5 4 MuLö erstellen 9% 6 4 Leerlauf 1% 13 21 Befehlshäufigkeit Befehlsklasse Relative Häufigkeit ggü. Rbasis 1 F 85% Ü 110% Mail 33% Mulö 80% L 45% Tabelle 3: CPI für R basis und R opt Tabelle 4: Relative Häufigkeiten für R comp a) Wie hoch ist die durchschnittliche CPI für R basis und R opt? 2 Punkte CPI Rbasis = 17 100 5 + 9 100 6 + 1 100 13 = 5 CPI Ropt = 17 100 4 + 9 100 4 + 1 100 21 = 4, 5 b) Wieviel MIPS verarbeiten die Prozessoren jeweils? 1 Punkt MIPS Rbasis = 5 MHz 5 1 MIPS Ropt = 6 MHz 4,5 1, 333 c) Um wieviel schneller ist R opt gegenüber R basis? 1 Punkt MIPS Ropt = MIPS 1,333 Rbasis 1 1, 333 33, 3333% Verbesserung Man kann hier mittels MIPS vergleichen, da beide Rechner die gleiche Befehlsmenge haben. 1 Das bedeutet, dass z. B. R comp nur 85% der Anzahl von Instruktionen der Klasse F ausführt, die R basis benotigt. 5
d) Wie hoch ist die durchschnittliche CPI für R comp? 2 Punkte Für diese Aufgabe muß man die neue (relative) Anzahl an Instruktionen für R comp 17 berechnen. Dies ergibt: 100 85 100 + 33 100 110 100 + 40 100 33 100 + 9 100 80 100 + 1 100 45 100 = Die neue CPI kann dann berechnet werden zu 17 100 CPI Rcomp = 85 100 110 100 33 100 5 + 9 100 80 100 6 + 1 100 45 100 13 = 3.5435 4, 949 e) Um wieviel schneller ist R comp gegenüber R basis? Beachten Sie hierfür, dass sich die Anzahl der Befehle für beide Varianten unterscheidet! 2 Punkte Hier kann CPI Rcomp nicht direkt eingesetzt werden, da ein Programm zu zwei verschiedenen Kompilaten führt. Darum muss die Verringerung der Befehlsanzahl berücksichtigt werden. CPI Rbasis 5 MHz 5 MHz CPI Rcomp = 5 1, 411 4, 949 Also ist R comp etwa 41% schneller als R basis. f) Beide Verbesserungen konnen auch gemeinsam in einem Rechner R beide umgesetzt werden. Um wieviel schneller ist R beide als R basis? 2 Punkte Man muß zuerst CPI Rbeide bestimmen. Die neue CPI kann dann berechnet werden zu 17 100 CPI Rcomp = 85 100 110 100 33 100 4 + 9 100 80 100 4 + 1 100 45 100 21 = 3.3035 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 R basis und 6 MHz für R beide. Es ergibt sich somit nach Einsetzen in die Gleichungen aus Teilaufgabe e) CPI Rbasis 5 MHz 6 MHz CPI Rbeide = 5 6 1, 816 4, 6138 5 Damit ist R beide etwa 82% schneller als R basis. 6