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