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.
2 Grundlagen<br />
Definition 11 (Optimale Muster). Sei M eine Menge von Mustern. Ein Muster m ∈ M<br />
ist genau dann optimal, wenn kein semantisch äquivalentes Muster m ′ ∈ M existiert für<br />
das gilt:<br />
costM(m ′ ) < costM(m)<br />
Mit den bisherigen Definitionen kann nun eine lokale Optimierung in Form einer Ersetzungsregel,<br />
kurz Regel, wie folgt formal eingeführt werden:<br />
Definition 12 (Regel). Eine Regel r = (ml, mr) besteht aus zwei Mustern ml und<br />
mr, für die gilt: ml ≡ mr. ml wird linke Seite und mr rechte Seite der Regel genannt.<br />
Ferner muss für die Kosten der beiden Muster gelten: costM(ml) ≥ costM(mr). Gilt<br />
costM(ml) > costM(mr), so stellt r eine Optimierungsregel dar, gilt hingegen costM(ml) =<br />
costM(mr) so wird r als Transformationsregel bezeichnet. Alternativ kann man für r =<br />
(ml, mr) auch ml → mr schreiben.<br />
In Definition 12 wird der Fall eines teureren Musters auf der rechten Seite einer Regel<br />
explizit ausgeschlossen.<br />
2.3 Superoptimierung<br />
Im Kontext des Übersetzerbaus wird unter Optimierung die Transformation eines Ausdrucks,<br />
Musters oder einer Codesequenz verstanden, mit dem Ziel, diesen hinsichtlich<br />
eines Kostenmodells wie z. B. die erforderliche Rechenzeit zu verbessern. Dass das Ergebnis<br />
optimal ist oder das überhaupt eine Verbesserung erreicht wird, ist nicht garantiert.<br />
Ein Beispiel zeigt der folgende Ausdruck: x − (x + 0). Eine anwendbare lokale Optimierung<br />
ist die Ersetzung des Teilausdrucks x + 0 durch x. Damit wird der gesamte<br />
Ausdruck zwar optimiert, indem eine Addition eingespart wird, aber noch nicht das<br />
optimale Ergebnis 0 erreicht.<br />
An dieser Stelle setzt das Prinzip der Superoptimierung an. Der Begriff Superoptimierung<br />
umschreibt einen Vorgang, der darauf ausgerichtet ist, zu einem gegebenen Ausdruck<br />
bzw. Muster den optimalen Ausdruck mit gleicher Semantik zu ermitteln. Anders<br />
ausgedrückt bedeutet dies, dass zu einer gegebenen Codesequenz die einen Ausdruck<br />
repräsentiert, eine semantisch äquivalente Codesequenz gesucht wird, die bezüglich des<br />
gewählten Kostenmodells, wie die Summe der Instruktionen oder die Anzahl der notwendigen<br />
Taktzyklen, optimal ist.<br />
Eingeführt wurde der Begriff der Superoptimierung erstmals von Massalin [14] worauf<br />
in Kapitel 3 näher eingegangen wird. Anwendung findet dieses Prinzip heute in verschiedenen<br />
Arbeiten wie [3] und [11].<br />
15