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 />

Nr. Regel CINT2000 CINT2006 GCC Clang<br />

1 (x + x) + (y + y) → (x + y) + (x + y) 55 286 � �<br />

2 (x + x) − (y + y) → (x − y) + (x − y) 89 26 � ×<br />

3 (sc0 − x) + sc1 → (sc0 + sc1) − x 11 11 � �<br />

4 −(x + sc0) → −sc0 − x 89 36 � �<br />

5 −((x − y) + z) → y − (x + z) 4 2 � ×<br />

6 ∼ ((∼ y) | x) → (∼ x) & y 2 2 × �<br />

7 (x | y) | (x ˆ z) → (x | y) | z 2 0 × ×<br />

8 (x − z) + (z − y) → x − y 1 1 � �<br />

9 (x & y) | y → y 1 0 � �<br />

10 (x + sc0[and set : sc1]) & sc1 → x & sc1 1 14 � �<br />

11 (x + z) + (y − z) → x + y 0 6 � �<br />

12 x − ((x − y) + z) → y − z 0 1 � �<br />

13 ∼ (sc0 + x) → (∼ sc0) − x 0 177 × �<br />

14 ∼ (sc0 − x) → x + (∼ sc0) 0 13 × �<br />

Summe 255 575<br />

Tabelle 5.4: Übersicht über angewandte, von Optgen erzeugte, Optimierungsregeln<br />

in der SPEC CINT2000 und CINT2006 während der Übersetzung durch<br />

libFirm + Optgen, sowie die Unterstützung (�) der jeweiligen Regel durch<br />

GCC 4.6.3 und Clang 3.0.6.<br />

Auffällig ist vor allem das Testprogramm 429.mcf aus der SPEC CINT2006. Obwohl nur<br />

zwei Optgen-Regeln zusätzlich angewandt wurde, erhöht sich die Anzahl der ausgeführten<br />

Instruktionen mit +7% deutlich. Bei den beiden angewendeten Optimierungsregeln<br />

handelt es sich um die Regel Nr. 5 (siehe Tabelle 5.4). Bei der Untersuchung des erzeugten<br />

Assembler-Codes konnte festgestellt werden, dass aufgrund von Mehrfachverwendern<br />

zwar die Negation, wie sie im linken Teil der Regel angegeben ist, eingespart werden<br />

konnte, dafür allerdings zusätzlich eine Addition (x + z) und Subtraktion (y − (x + z))<br />

eingefügt wurde. Die zuvor bestehende Subtraktion (x − y) und Addition (x − y) + z<br />

wurden aufgrund weiterer Verwender nicht, wie von der Regel vorgesehen, entfernt. Dies<br />

hat zur Folge, dass zwar eine Instruktion eingespart werden konnte, aber zwei weitere<br />

hinzugefügt wurden. In Summe wurde also eine Instruktion ergänzt. Die Vermutung<br />

besteht, dass sich solche Probleme mit Mehrfachverwendern durch eine entsprechende<br />

Überprüfung bei der Anwendung der Optimierungsregel umgehen lassen. Allerdings muss<br />

die Anwendung einer Regel trotz Mehrfachverwendern nicht zwangsläufig zum Nachteil<br />

sein. Es besteht ebenso die Möglichkeit, dass sich eben durch die Anwendung weitere<br />

Optimierungsmöglichkeiten ergeben, mit denen sich ein noch besseres Endergebnis<br />

erreichen lässt (vgl. auch Abschnitt 4.3.1).<br />

Entgegen diesem negativen Fall, zeigt die Tabelle auch Testprogramme, in denen durch<br />

zusätzliche Optgen-Regeln eine Verringerung der ausgeführten Instruktionen erreicht<br />

werden konnte. Das deutlichste Beispiel hierfür ist das Testprogramm 197.parser aus der<br />

SPEC CINT2000 mit einer Reduktion der Instruktionsanzahl um 1,69%.<br />

72

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!