Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting Generierung lokaler Optimierungen - IPD Snelting

pp.info.uni.karlsruhe.de
von pp.info.uni.karlsruhe.de Mehr von diesem Publisher
25.10.2012 Aufrufe

4 Implementierung var0 sc0 sc ∪ Z8Bit add var1 var ∪ sc ∪ Z8Bit add rleft ⇒ Regel r ′ var0 var1 var ∪ sc ∪ Z8Bit add sc0 sc ∪ Z8Bit add rright Abbildung 4.26: Zyklisch anwendbare Regel – rleft und rright besitzen eine gemeinsame Teilmenge von Mustern, die sie überdecken, z. B. Muster m aus Abbildung 4.25. r ′ ist sowohl auf m, als auch auf das resultierende Muster anwendbar. wird jedoch von der Musteranalyse direkt verworfen, da r ′ auf m anwendbar ist. Nach der Transformationsregel r ′ ist die normalisierte Variante von m ein Muster m ′′ (vgl. Abbildung 4.27), das dieselbe Struktur, also denselben Aufbau wie m besitzt und sich lediglich durch die vertauschten symbolischen Konstanten sc0 und sc1 unterscheidet. Hier beginnt das Problem. r ′ ist nicht nur auf m, sondern auch auf dessen normalisierte Variante m ′′ anwendbar, womit die normalisierte Variante von m ′′ wieder m ist. Es entsteht ein Zyklus, indem m durch zweifaches anwenden von r ′ immer wieder auf sich selbst abgebildet wird. Für die Musteranalyse würde dies bedeuten, dass sowohl m als auch die normalisierte Variante m ′′ verworfen werden. Demnach wird nie ein Muster mit dem Aufbau von m durch den Vorabtest oder den Erfüllbarkeitstest behandelt und die in in Abbildung 4.25 gezeigte Regel r wird nie gefunden. var0 add sc0 add m sc1 r → ′ var0 add sc1 add m ′′ Regel r ′ Abbildung 4.27: r ′ ist sowohl auf m als auch auf das resultierende Muster m ′′ anwendbar. Das ursprüngliche Muster m wird wieder hergestellt. 60 sc0 r → ′ var0 add sc0 add m sc1

Beispiel 2: Entfernen optimaler Muster 4 Implementierung Für dieses Beispiel wird aus Darstellungsgründen angenommen, dass die Datentypbreite von Variablen auf 3 Bit reduziert und der Wertebereich von Konstanten auf {-4,. . . ,3} beschränkt ist. Ausgangspunkt dieses Beispiels ist die Abbildung 4.28. Wie sich zeigt, existiert für jedes Muster aus der Abbildung mit negativer Konstante ein semantisch äquivalentes Muster mit positiver Konstante. Bei näherer Betrachtung erkennt man, das für die Konstanten ein Zusammenhang durch die Relation sc0new = sc0old + (−4) gegeben ist. Mittels komplexer symbolischer Konstanten lässt sich eine verallgemeinerte Regel angeben, die in Abbildung 4.29 gezeigt wird. −1 −2 −3 −4 sub add m var0 var0 var0 var0 r0 ⇒ 3 var0 r1 ⇒ 2 var0 r2 ⇒ 1 var0 r3 ⇒ Abbildung 4.28: Für jedes Muster mit negativer Konstante (linkes) existiert ein semantisch äquivalentes Muster mit positiver Konstante (rechts). Pro Paar ist eine Regel möglich. Hier besteht, ähnlich zu dem vorherigen Beispiel, das Problem, dass die in Abbildung 4.29 dargestellte Regel r nach ihrer Anwendung auf ein Muster m auch auf das resultierende Muster m ′ angewendet werden kann. Beispielsweise wird die Konstante −4 durch r auf die Konstante 0 abgebildet. Da der Knoten sc0 im linken Muster der Regel aber alle Konstanten überdecken kann, ist die Regel auch auf das Muster m ′ mit der Konstante 0 anwendbar. 0 wird hierdurch wieder auf −4 abgebildet. Auch hier ergibt sich ein Zyklus von anwendbaren Regeln, genauer von r, durch den nicht nur die Muster aus Abbildung 4.28 mit einer negativen Konstante, sondern auch die, zu diesen Mustern semantisch äquivalenten, optimalen Muster mit positiver Konstante entfernt werden. 0 sub add m ′ var0 61

4 Implementierung<br />

var0 sc0 sc ∪ Z8Bit<br />

add var1 var ∪ sc ∪ Z8Bit<br />

add<br />

rleft<br />

⇒<br />

Regel r ′<br />

var0 var1 var ∪ sc ∪ Z8Bit<br />

add sc0 sc ∪ Z8Bit<br />

add<br />

rright<br />

Abbildung 4.26: Zyklisch anwendbare Regel – rleft und rright besitzen eine gemeinsame<br />

Teilmenge von Mustern, die sie überdecken, z. B. Muster m aus Abbildung<br />

4.25. r ′ ist sowohl auf m, als auch auf das resultierende Muster<br />

anwendbar.<br />

wird jedoch von der Musteranalyse direkt verworfen, da r ′ auf m anwendbar ist. Nach<br />

der Transformationsregel r ′ ist die normalisierte Variante von m ein Muster m ′′ (vgl.<br />

Abbildung 4.27), das dieselbe Struktur, also denselben Aufbau wie m besitzt und sich<br />

lediglich durch die vertauschten symbolischen Konstanten sc0 und sc1 unterscheidet.<br />

Hier beginnt das Problem. r ′ ist nicht nur auf m, sondern auch auf dessen normalisierte<br />

Variante m ′′ anwendbar, womit die normalisierte Variante von m ′′ wieder m ist. Es<br />

entsteht ein Zyklus, indem m durch zweifaches anwenden von r ′ immer wieder auf sich<br />

selbst abgebildet wird. Für die Musteranalyse würde dies bedeuten, dass sowohl m als<br />

auch die normalisierte Variante m ′′ verworfen werden. Demnach wird nie ein Muster mit<br />

dem Aufbau von m durch den Vorabtest oder den Erfüllbarkeitstest behandelt und die<br />

in in Abbildung 4.25 gezeigte Regel r wird nie gefunden.<br />

var0<br />

add<br />

sc0<br />

add<br />

m<br />

sc1<br />

r<br />

→<br />

′<br />

var0<br />

add<br />

sc1<br />

add<br />

m ′′<br />

Regel r ′<br />

Abbildung 4.27: r ′ ist sowohl auf m als auch auf das resultierende Muster m ′′ anwendbar.<br />

Das ursprüngliche Muster m wird wieder hergestellt.<br />

60<br />

sc0<br />

r<br />

→<br />

′<br />

var0<br />

add<br />

sc0<br />

add<br />

m<br />

sc1

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!