Kode-Erzeugung für Registersatz

Werbung
Kode-Erzeugung für Registersatz-Maschinen
Die meisten Maschinen sind heutzutage Registersatzmaschinen,
die einen Satz von 16-32 Universalregistern besitzen. Üblich sind
Dreiadress-Befehle
OP DEST, SRC1, SRC2 d.h. DEST:= SRC1 OP SRC2
oder Zweiadressbefehle, bei denen ein Quelloperand mit dem Zieloperanden übereinstimmt:
OP DEST, SRC2 d.h. DEST:= DEST OP SRC2
ADD R5, R6 bedeutet z.B. R5 := R5 + R6.
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 1
Zwei Klassen von Registersatz-Maschinen
CISC (complex instruction set computer)-Architekturen
umfangreiche Befehlssätze mit vielen Adressierungsmodi.
Ziel und Quellen können entweder Universalregister oder Speicheradressen sein,
z.B. ADD a, R6 bedeutet sp[a] := sp[a] + R6.
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 2
Zwei Klassen von Registersatz-Maschinen
RISC (reduced instruction set computer)-Architekturen (Load/Store)
Befehle möglichst einfach, einheitlich in der Länge
(sowohl zeitlich als auch als Codierung im Speicher), usw.
Operationen nur auf Registern!
das ermöglicht Beschleunigung mittels Pipelining (Fließbandprinzip)
CISC-Operation sp[a] := sp[a] + R6
braucht drei RISC-Befehle:
LOAD R0,a;
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
ADD R0,R6;
(14. Juli2005)
Seite 3
STORE R0,a
Kodegenerierung
Annahme: Load/Store-RISC; Dreiadressbefehle
DEST:= SRC1 op SRC2
1.
2.
3.
Zuweisung von Hilfsvariablen hi
Lebenszeitanalyse der Hilfsvariablen
Registerzuweisung
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 4
Kodegenerierung Beispiel
a+b∗c
h2
+
h1
*
a
b
c
h1 := b ∗ c;
h2 := h1 + a;
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 5
Kodegenerierung Beispiel
In einer Load/Store Architektur: Operationen nur auf Registern
h5
+
h4
*
h1
h2
h3
h1
h2
h3
h4
h5
...
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
:=
:=
:=
:=
:=
(14. Juli2005)
a;
b;
c;
h2 ∗ h3 ;
h4 + h1 ;
Seite 6
Load
Load
Load
Op
Op
Store
Kodegenerierung für Registersatz-Maschinen
1. Schritt:
Einführung von Hilfsvariablen hi für jeden Knoten im Syntaxbaum.
Annahme: Load/Store-RISC; Dreiadressbefehle
hi modellieren Register: zunächst unbeschränkte Anzahl
SSA-Form (static single assignment: statische einmalige Zuweisung).
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 7
2ter Schritt: Lebenszeitanalyse der
Hilfsvariablen
Ziel: Abbildung der Hilfsvariablen auf beschränkte Anzahl Register.
Gegeben: Sequenz S von Anweisungen (ohne Sprünge)
Definition Lebenszeit einer Hilfsvariablen:
Eine Variable x heißt lebendig (L) für eine Anweisung A in S,
wenn beginnend ab der Anweisung A (inklusive),
der nächste Zugriff auf x ein Lesezugriff ist.
Sonst heißt x tot (T) für A.
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 8
Lebenszeitanalyse: Vorgehen
Sequenz von Anweisungen wird rückwärts durchlaufen.
Start: alle Variablen (T).
Dann jeweils erst (L/T)-Werte übertragen, dann Änderung
Die Anweisung h1 := h2 op h3 ergibt:
•
•
die Variable h1 wird (T) markieren
die Variablen h2 und h3 als (L)markieren
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 9
Lebenszeitanalyse: Vorgehen Beispiel
Anweisung y := x − z + w;
Zuweisung
h1 := x
h2 := z
h3 := h1 − h2
h4 := w
h5 := h3 + h4
y := h5
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 10
h1
T
L
L
T
T
T
h2
T
T
L
T
T
T
h3
T
T
T
L
L
T
h4
T
T
T
T
L
T
h5
T
T
T
T
T
L
3. Schritt: Zuordnung von Registern zu
Hilfsvariablen
Hilfsvariable können gemeinsam ein Register benutzen,
wenn sich ihre Lebenszeiten nicht überschneiden.
verträgliche Hilfsvariablen
Beispiel (Fortsetzung)
h1, h3 und h5 sind verträglich
h2 und h4 sind verträglich.
Im Spezialfall der Sequenz:
Lebenszeitanalyse in polynomieller Zeit
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 11
Zuordnung von Registern zu Hilfsvariablen
Zuweisung
h1 := x
h2 := z
h3 := h1 − h2
h4 := w
h5 := h3 + h4
y := h5
h1
T
L
L
T
T
T
h2
T
T
L
T
T
T
h3
T
T
T
L
L
T
h4
T
T
T
T
L
T
ergibt:
R1
R2
R1
R2
R1
y
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
:=
:=
:=
:=
:=
:=
Seite 12
x;
z;
R1 − R2 ;
w;
R1 + R2 ;
R1 ;
h5
T
T
T
T
T
L
R1 R2
h1
h1
h3
h3
h5
h2
h4
Minimale Anzahl von Registern?
Im Fall einer Sequenz (lineare Befehlsfolge)
kann man die optimale Anzahl Register
in linearer Zeit zuordnen
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 13
Minimale Anzahl von Registernim allgemeinen
Fall
Im allgemeinen Fall, d.h. wenn die Befehlsfolge keine Sequenz:
Erstellung eines Kompatibilitätsgraphen
Knoten:
Kanten
Hilfsvariablen
hi − hj wenn verträglich
Suche nach minimaler Anzahl von Registern
entspricht dem Cliquenpartitionierungsproblem
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 14
Cliquenpartitionierungsproblem
Aufgabe:
Partitioniere die Knoten des Graphen so in Cliquen,
dass die Anzahl der Cliquen minimal wird.
Eine Clique ist ein ein vollständiger Unter-Graph
Eine Clique entspricht in unserer Anwendung einem Register.
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 15
Cliquenpartitionierungsproblem
In dem o.a. Beispiel erhält man folgenden einfachen Kompatibilitätsgraphen:
h3
h4
h5
h2
h1
Die beiden Cliquen werden durch die Knotenmengen
{h1, h3, h5} und {h2, h4} gebildet.
Das Cliquenpartitionierungsproblem ist N P-vollständig,
d.h. Algorithmen sind im schlimmsten Fall exponentiell
Fazit: Registerminimierung ist im allgemeinen Fall N P-vollständig.
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 16
Graphfärbung
Äquivalent: Färbung eines Graphen mit möglichst wenig Farben
Der Interferenz-Graph hat als Knoten die Hilfsvariablen.
hi und hj sind verbunden,
wenn sich ihre Lebenszeiten überschneiden
h4
h3
h5
h2
h1
Man sieht: der Graph lässt sich mit zwei Farben einfärben, wobei h3
und h4 unterschiedliche Farben bekommen, ebenso h1 und h2.
Das Färbungsverfahren ist günstiger als Cliquenpartitionierung ,
wenn die Anzahl der inkompatibel-Kanten klein ist.
P raktische Inf ormatik
2, SS
2005, F olien Kap.4,−3,
(14. Juli2005)
Seite 17
Herunterladen