25.10.2012 Aufrufe

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!