Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
5 Evaluation<br />
kürzeren Gesamtlaufzeit von 5386 s zeigt. Dass der Aufwand durch die Verwendung von<br />
zusätzlichen Testvektoren tv ∈ T VADD dennoch gerechtfertigt ist, belegt die nächste<br />
Messung. Hier wurden sowohl Zeugen als auch zusätzliche Testvektoren (hier wurde die<br />
beste Konfiguration aus den ersten drei Messungen verwendet) genutzt. Die Fehlentscheidungsrate<br />
konnte um weitere 8% auf 14% verringert werden. Die sechste Messung zeigt,<br />
dass ein weitere Verbesserung möglich ist, wenn die Anzahl der Testvektoren, die für die<br />
Hashwert-Berechnung verwendet werden, erhöht wird. Zwar wird die Qualität des Vorabtests<br />
nicht verbessert, aber die Gesamtlaufzeit deutlich verringert. Eine Begründung<br />
hierfür ist eine größere Streuung der Hashwerte und dadurch eine Verringerung der Anzahl<br />
der Muster pro Hash-Klasse, so dass der Vorabtest weniger Kandidaten pro neuem<br />
Muster untersuchen muss. Hieraus resultiert eine Laufzeitabnahme des Vorabtests um<br />
882 s auf 2 370 s gegenüber dem vorherigen fünften Testfall.<br />
5.2.2 Evaluation der erzeugten Optimierungsregeln<br />
Heutige Übersetzer beherrschen ein Vielzahl <strong>lokaler</strong> <strong>Optimierungen</strong>. Durch Optgen sollen<br />
die letzten noch nicht berücksichtigten lokalen Optimierungsmöglichkeiten gefunden<br />
werden, so dass ein Übersetzer um diese erweitert werden kann. Ob solche Fälle existieren<br />
und ob diese bei der Übersetzung von Programmen in der Praxis vorkommen, wird<br />
in diesem Abschnitt evaluiert.<br />
Die Grundlage dieser Evaluierung bildet libFirm [13], einmal in der Originalversion und<br />
einmal in einer, um ausgewählte Optimierungsregeln, die von Optgen erzeugt wurden,<br />
erweiterten Variante. Bei den ausgewählten Optgen-Regeln handelt es sich um 46<br />
Regeln die aus den Kostenstufen 2, 3 (nur arithmetische Operationen) und 3 (nur Bit-<br />
Operationen), die von libFirm aktuell nicht unterstützt werden. Für beide Varianten<br />
wurde die Anzahl der durchgeführten lokalen <strong>Optimierungen</strong> bei der Übersetzung der in<br />
Tabelle 5.3 aufgelisteten Programme der SPEC CINT2000 und CINT2006 bestimmt. Die<br />
zweite Spalte der Tabelle gibt die Anzahl der von libFirm durchgeführten lokalen <strong>Optimierungen</strong><br />
an. Die nächsten Spalten beziehen sich auf die erweiterte Variante libFirm<br />
+ Optgen. Der Reihe nach aufgelistet sind, die Gesamtanzahl der durchgeführten lokalen<br />
<strong>Optimierungen</strong>, der Anteil der angewendeten Optgen-Regeln, die Differenz der<br />
angewandten <strong>Optimierungen</strong> zu libFirm, sowie eine Aufschlüsselung der verwendeten<br />
Optgen-Regeln und deren Häufigkeit.<br />
Die während der Übersetzung der Testprogramme angewandten Optgen-Regeln sind in<br />
Tabelle 5.4 aufgeführt. Von den 46 implementierten Optgen-Regeln können 14 Regeln<br />
in der SPEC in der Summe 830 mal angewendet werden. Da nicht alle Regeln implementiert<br />
wurden, besteht die Möglichkeit, dass noch weitere von libFirm nicht betrachtete<br />
Regeln existieren, die in der SPEC anwendbar sind. Weiterhin zeigt die Tabelle, welche<br />
der neuen Regeln, die im Rahmen der Übersetzung durch libFirm + Optgen in der<br />
SPEC anwendbar sind, von den beiden Übersetzern GCC 4.6.3 [10] und Clang 3.0.6 [6]<br />
unterstützt (�) oder nicht unterstützt (×) werden. Bei der in Regel Nr. 10 verwende-<br />
70