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