registrite allokeeriminekodu.ut.ee/~varmo/tm2006/slides/tm-reg.pdf · 2006. 11. 27. · registrite...
TRANSCRIPT
![Page 1: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/1.jpg)
Registrite allokeerimine
![Page 2: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/2.jpg)
Registrite allokeerimine
ÜlevaadeMuutujate väärtusi võib hoida põhimälus või registrites.
� Mällu kirjutamine ja mälust lugemine on registritega
võrreldes väga aeglane (umbes kaks suurusjärku).
� Registrite arv on rangelt piiratud (mõni kuni
mõnikümmend).
Registrite allokeerimise eesmärk on vähendada
mälupöördumiste arvu hoides võimalikult paljude
muutujate väärtusi registrites.
� Otsustab milliseid väärtusi hoida registrites ja milliseid
mälus.
� Määrab registrites hoitavatele väärtustele konkreetsed
registrid.
![Page 3: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/3.jpg)
Registrite allokeerimine
PõhitähelepanekudTavaliselt on registreid vähem kui muutujaid.
Samaaegselt elusolevad muutujad ei saa paikneda samas
registris (muutujad interfereeruvad).
Küll aga võivad muutujad mille eluajad ei kattu paikneda
samas registris.
Vastavaid kitsendusi saab esitada graa�na:
� tipud = muutujad;
� kaared = samaaegselt elus olevate muutujate vahel;
� nn. interferentsigraaf.
Registrite määramine on selle graa� k värviga värvimise
probleem (Lavrov 1962, Chaitin 1981)
� k = registrite arv.
![Page 4: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/4.jpg)
Registrite allokeerimine
{a}b = a + 2
{a,b}c = b * b
{a,c}b = c + 1
{a,b}return b*a
Code Live sets
a b c
Live ranges
a
b c
Interference graph
![Page 5: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/5.jpg)
Registrite allokeerimine
{a}b = a + 2
{a,b}c = b * b
{a,c}b = c + 1
{a,b}return b*a
Code Live sets
a b c
Live ranges
a
b c
Interference graph
![Page 6: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/6.jpg)
Registrite allokeerimine
{a}b = a + 2
{a,b}c = b * b
{a,c}b = c + 1
{a,b}return b*a
Code Live sets
a b c
Live ranges
a
b c
Interference graph
= Register 1 (R1)
= Register 2 (R2)
R2 = R1 + 2
R2 = R2 * R2
R2 = R2 + 1
return R2*R1
![Page 7: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/7.jpg)
Registrite allokeerimine
Graa� konstrueerimineInterferentsigraa� konstrueerimiseks tuleb leida muutujate
elususpiirkonad.
Baasploki piires registrite allokeerimisel on
elususpiirkonnad lineaarsed.
4 Nii elususpiirkondade leidmine kui kattumise
kontrollimine väga lihtne.
8 Baasploki alguses tuleb muutujad registritesse lugeda
ning lõpus mällu salvestada.
Globaalsel registrite allokeerimisel moodustavad
elususpiirkonnad võrgu (web).
8 Elususpiirkondade leidmine keerulisem.
4 Võimaldab efektiivsemat registrite kasutust.
![Page 8: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/8.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 9: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/9.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 10: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/10.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 11: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/11.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 12: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/12.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 13: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/13.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 14: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/14.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 15: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/15.jpg)
Registrite allokeerimine
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
s1
s2
s3
s4
Võrgud s1 ja s2 kattuvad
Võrgud s1 ja s4 kattuvad
use x
use y
def x
def y
use x
def x
use x
def xuse y
def y
![Page 16: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/16.jpg)
Graa� värvimine
De�nitsioonidGraa� värvimiseks nimetatakse tema tippude
märgendamist arvudega selliselt, et ükski tipp ei omaks
ühegi oma naabriga sama märgendit.
Graa� mis on värvitav k värviga nimetatakse k-aluseliseks.
PõhiküsimusedKuidas efektiivselt leida graa� k-värvimine?
Kas ja kuidas leida optimaalset (so. minimaalse värvide
arvuga) värvimist?
Mida teha, kui graa� värvimiseks pole piisavalt värve (so.
registreid)?
![Page 17: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/17.jpg)
Graa� värvimine
ProbleemGraa� värvimise ülesanne on NP-täielik.
TähelepanekudOptimaalne algoritm töötab kõigil graa�del.
� Halvima juhtumi graa� praktikas ei esine.
Leiab alati minimaalse värvimise.
� Tihti piisab ligikaudsest heuristilisest värvimisest.
![Page 18: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/18.jpg)
Graa� värvimine
ProbleemMida teha kui graaf pole k-aluseline?
So. pole piisaval arvul registreid.
Juhtub väga sageli.
PillamineValime muutuja ning hoiame teda registri asemel
põhimälus (so. magasinis).
� Seda protsessi nimetatakse pillamiseks (spilling).
Muutuja kasutuskohtadesse genereerime ekstra koodi tema
mälust ajutisse registrisse lugemiseks ja mällu
kirjutamiseks.
![Page 19: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/19.jpg)
Graa� värvimine
IdeeValime graa�s tipu mille järk on väiksem kui k.
� See tipp on k-värvitav!
Eemaldame selle tipu (ja kõik temaga seotud servad)
graa�st.
� Kõigi naabertippude järk väheneb ühe võrra.
� Võib tekkida juurde uusi tippe mille järk on k-st
väiksem.
Kui kõik tipud on vähemalt k naabriga, siis valime tipu
mille pillame mällu ja jätkame.
![Page 20: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/20.jpg)
Graa� värvimine
Chaitini algoritm1 Kuni leidub tippe mille järk on väiksem kui k:
� valime ühe sellise tipu ja paneme ta magasini;
� kustutame selle tipu ja temaga seotud servad graa�st.
2 Kui graaf on mittetühi (ja kõigi tippude järk on vähemalt
k), siis:
� valime tipu (kasutades mingit heuristikat) ja pillame ta
mällu;
� kustutame selle tipu ja temaga seotud servad graa�st;
� kui selle tulemusena tekkis tippe mille järk on k-st
väiksem, siis lähme sammule 1;
� vastasel korral jätkame sammuga 2.
3 Võtame üksteise järel magasinist tippe ja värvime nad
vähima värviga, mis erineb juba värvitud naabertippude
värvidest.
![Page 21: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/21.jpg)
Chaitini algoritm
Näide:
Stack
1
2
3
4 5
![Page 22: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/22.jpg)
Chaitini algoritm
Näide:
Stack
2
3
4 5
1
![Page 23: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/23.jpg)
Chaitini algoritm
Näide:
Stack
3
4 5
12
![Page 24: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/24.jpg)
Chaitini algoritm
Näide:
Stack
3
5
12
4
![Page 25: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/25.jpg)
Chaitini algoritm
Näide:
Stack
5
12
43
![Page 26: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/26.jpg)
Chaitini algoritm
Näide:
Stack Colors
12
43
5
![Page 27: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/27.jpg)
Chaitini algoritm
Näide:
Stack
5
Colors
12
43
![Page 28: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/28.jpg)
Chaitini algoritm
Näide:
Stack
3
5
Colors
12
4
![Page 29: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/29.jpg)
Chaitini algoritm
Näide:
Stack
3
4 5
Colors
12
![Page 30: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/30.jpg)
Chaitini algoritm
Näide:
Stack
2
3
4 5
Colors
1
![Page 31: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/31.jpg)
Chaitini algoritm
Näide:
Stack
1
2
3
4 5
Colors
![Page 32: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/32.jpg)
Graa� värvimine
Optimistlik värvimine (Briggs et al)
Kui kõik tipud on järguga vähemalt k, siis mitte ei pilla
tippe mällu vaid paneme mingi prioriteedi alusel magasini.
� Magasinist tippe võttes võivad nad kõik olla ikkagi
värvitavad!
Näide alljärgnev graaf on 2-värvitav:
1
2
3
4
![Page 33: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/33.jpg)
Graa� värvimine
Optimistlik värvimine (Briggs et al)
Kui kõik tipud on järguga vähemalt k, siis mitte ei pilla
tippe mällu vaid paneme mingi prioriteedi alusel magasini.
� Magasinist tippe võttes võivad nad kõik olla ikkagi
värvitavad!
Näide alljärgnev graaf on 2-värvitav:
1
2
3
4
![Page 34: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/34.jpg)
Graa� värvimine
Chaitin-Briggs'i algoritm1 Kuni leidub tippe mille järk on väiksem kui k:
� valime ühe sellise tipu ja paneme ta magasini;
� kustutame selle tipu ja temaga seotud servad graa�st.
2 Kui graaf on mittetühi (ja kõigi tippude järk on vähemalt
k), siis:
� valime tipu, paneme ta magasini ning kustutame ta
(koos servadega) graa�st;
� kui selle tulemusena tekkis tippe mille järk on k-st
väiksem, siis lähme sammule 1;
� vastasel korral jätkame sammuga 2.
3 Võtame üksteise järel magasinist tippe ja värvime nad
vähima vaba värviga.
� Kui tippu ei õnnestu värvida, siis valime värvimata tipu,
pillame ta mällu ja alustame sammult 1.
![Page 35: Registrite allokeeriminekodu.ut.ee/~varmo/TM2006/slides/tm-reg.pdf · 2006. 11. 27. · Registrite allokeerimine Ülevaade Muutujate äärtusiv võib hoida põhimälus või registrites](https://reader033.vdocuments.site/reader033/viewer/2022060922/60ad8b6d4f83af312c0c29ec/html5/thumbnails/35.jpg)
Graa� värvimine
PillamisheuristikadPillamiseks tipu valimine on efektiivsuse kohalt kriitilise
tähtsusega.
Chaitini heuristika:
� minimiseerida pillamiskao cost ja tipu hetkejärgu degree
jagatise costdegree
väärtust;
� so. valime pillamiseks võimalikult �odava� tipu, mis
samas vähendab võimalikult paljude tippude järku.
Alternatiivseid meetrikaid: cost
degree2, cost , pillamiste arv.
Variatsioonid:
� interferentsipiirkonna pillamine;
� elususpiirkondade tükeldamine;
� rematerialiseerimine.