Muita rekisteriallokaatiomenetelmiä



Samankaltaiset tiedostot
TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

Eloisuusanalyysi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Eloisuusanalyysi.

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 17. marraskuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 13. lokakuuta 2009

Silmukkaoptimoinnista

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 2. marraskuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 26. lokakuuta 2009

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Jäsennysalgoritmeja. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Jäsennysalgoritmeja

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Muistinsiivous. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Muistinsiivous.

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Attribuuttikieliopit

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Algoritmit 1. Luento 13 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (syksy 2015)

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Täydentäviä muistiinpanoja jäsennysalgoritmeista

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Tietorakenteet, laskuharjoitus 3, ratkaisuja

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

Tarkennamme geneeristä painamiskorotusalgoritmia

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Tietorakenteet (syksy 2013)

Tietorakenteet ja algoritmit - syksy

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

C.C. McGeoch, Toward an experimental method for algorithm simulation. algorithm simulation = algoritmin testaus, experimental algorithmics

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

Algoritmit 2. Luento 11 Ti Timo Männikkö

Rekursiiviset tyypit

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Algoritmit 2. Luento 4 To Timo Männikkö

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Algoritmit 1. Luento 10 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Luento 3 Ti Timo Männikkö

2 Funktion derivaatta

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00

13 Lyhimmät painotetut polut

Pinoautomaatit. Pois kontekstittomuudesta

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Algoritmit 1. Luento 12 Ti Timo Männikkö

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

811312A Tietorakenteet ja algoritmit I Johdanto

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

Datatähti 2019 loppu

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Algoritmit 2. Luento 2 To Timo Männikkö

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Algoritmit 2. Luento 4 Ke Timo Männikkö

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Algoritmit 1. Luento 14 Ke Timo Männikkö

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

Algoritmit 1. Luento 12 Ke Timo Männikkö

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

Algoritmit 1. Luento 8 Ke Timo Männikkö

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Luento 4 Aliohjelmien toteutus

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009

Algoritmit 2. Luento 5 Ti Timo Männikkö

Samanaikaisuuden hallinta

Lisää pysähtymisaiheisia ongelmia

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 16. helmikuuta 2012

Sekalukuoptimointi. Lehtonen, Matti Matemaattisen ohjelmoinnin seminaari, Tietojenkäsittelytieteen laitos Helsingin Yliopisto

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

4. Joukkojen käsittely

Algoritmit 2. Luento 6 To Timo Männikkö

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

Jäsennysaiheesta lisää Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

Algoritmit 1. Luento 6 Ke Timo Männikkö

Ohjelmoinnin peruskurssi Y1

Syntaksi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Syntaksi. Aluksi.

Oliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Transkriptio:

TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 23. marraskuuta 2009

Sisällys

Sisällys

Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman rekisteriallokaatiota) Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio

Kääntäjän rakenne lähdeohjelma SELAAJA sanasjono JÄSENTÄJÄ rakennepuu VÄLIKOODIN GENEROIJA välikoodi KOHDEKOODIN GENEROIJA kohdeohjelma TARKASTAJA SOKERINPILKKOJA OPTIMOIJA OPTIMOIJA

Sisällys

-menetelmä Sethi & Ullman: The generation of optimal code for arithmetic expressions, Journal of the ACM, 1970. yleistys E-vaiheessa mainitusta Strahlerin (Ershovin) algoritmista soveltuu vain lausekepuille (ei DAG-esityksille) lokaalisti optimaalinen ei sovellu globaaliin allokointiin oletuksena k samanarvoista yleiskäyttöistä rekisteriä R 1,..., R k voidaan soveltaa puun sijasta puun tiilipeitolle

-laputus Syöte Puu (kullakin solmulla enintään kaksi lasta) Tulos Taulukko need : Solmut N. Algoritmi Käy puun solmut läpi jälkijärjestyksessä: Jos solmulla t ei ole lapsia, aseta need(t) := 1. Jos solmulla t on yksi lapsi t, aseta need(t) := need(t ). Jos solmulla t on lapset t 1 ja t 2 : Jos need(t 1 ) = need(t 2 ), aseta need(t) := 1 + need(n 1 ); muutoin aseta need(t) := max{need(t 1 ), need(t 2 )}.

-rekisteriallokaatio (1) Apufunktio Syöte Puu t, sen -laputus need, ja kokonaisluku n (0 n < k). Ensimmäisessä kutsussa n = 0. Tulos Puun laskeva käskyjono, joka laskee tuloksen rekisteriin reg(n, t). reg(n, t) = { R n+need(t) jos need(t) k n, R k n muuten. Algoritmi Rekursiivisesti seuraavien kalvojen mukaan.

-rekisteriallokaatio (2) Jos need(t) > k ja t:llä on kaksi lasta t 1 ja t 2 : Jos need(t 1 ) need(t 2 ): 1. Sovella rekursiivisesti parametreilla t = t 1 ja n = 0. 2. Generoi push R k. 3. Sovella rekursiivisesti parametreilla t = t 2 ja { 0, jos need(t n = 2 ) k, k need(t 2 ) 1 muutoin. 4. Generoi pop R k 1. 5. Generoi reg(n, t) := op(t)(r k 1, R k ). 1 Jos need(t 1 ) < need(t 2 ), sovella edellistä kohtaa t 1 ja t 2 keskenään vaihtaen. 1 Tässä op(t) valitsee t:lle pseudokäskyn, tai mikäli kyse on tiilestä, hakee tiiltä vastaavan pseudokäskyn.

-rekisteriallokaatio (3) Jos need(t) k ja t:llä on kaksi lasta t 1 ja t 2 : Jos need(t 1 ) = need(t 2 ): 1. Sovella rekursiivisesti parametreilla t = t 2 ja n = n + 1. 2. Sovella rekursiivisesti parametreilla t = t 1 ja n = n. 3. Generoi reg(n, t) := op(t)(reg(n, t 1 ), reg(n + 1, t 2 )) Jos need(t 1 ) < need(t 2 ): 1. Sovella rekursiivisesti parametreilla t = t 2 ja n = n. 2. Sovella rekursiivisesti parametreilla t = t 1 ja n = n. 3. Generoi reg(n, t) := op(t)(reg(n, t 1 ), reg(n, t 2 )) Jos need(t 1 ) > need(t 2 ), sovella edellistä kohtaa t 1 ja t 2 keskenään vaihtaen.

-rekisteriallokaatio (4) Jos t:llä on yksi lapsi t : 1. Sovella rekursiivisesti parametreilla t = t ja n = n. 2. Generoi reg(n, t) := op(t)(reg(n, t )). Jos t:llä ei ole lasta: 1. Generoi koodi, joka laittaa rekisteriin reg(n, t) solmun arvon.

Sisällys

-metodi Poletto & Sarkar: Linear Scan Register Allocation, ACM Transactions on Programming Languages and Systems, 1999. ei optimaalinen, mutta erittäin nopea käännösaikana ja tuottaa kohtuullisen tuloksen keskeinen käsite: elämäväli [i, j], missä i ja j ovat käskyjä [i, j] on muuttujan v elämäväli jos v ei ole elossa i:tä ennen eikä j:n jälkeen konservatiivinen eloisuuden approksimaatio Elämävälit on helppo laskea eloisuusanalyysin tuloksesta; ne oletetaan tunnetuksi. Oletetaan, että mikään rekisteriallokoitu muuttuja ei pakene, jolloin ainoa syy tallettaa se muistiin on rekisterien riittämättömyys.

: tietorakenteet Kullakin muuttujalla v on seuraavat attribuutit (joista osaa algoritmi muokkaa): start(v) on v:n elämävälin alkukäsky (ei muutu) end(v) on v:n elämävälin loppukäsky (ei muutu) reg(v) on rekisteri, joka on varattu v:lle (on aluksi tyhjä) loc(v) on muistipaikka aktivaatiotietueessa, joka on varattu v:lle (on aluksi tyhjä) Apumuuttujia ovat: R, joka on rekisterien joukko A, joka on sellaisten muuttujien joukko, joille on kullakin hetkellä varattu rekisteri A kannattaa esittää siten, että loppukäskyjen järjestys on helppo löytää. A:n koko A on aina enintään k (rekisterien lukumäärä).

: pääalgoritmi 1. Aseta R kaikkien rekisterien joukoksi. 2. Aseta A :=. 3. Kullekin muuttujalle v (start(v):n kasvavassa järjestyksessä): 3.1 Kullekin w A, jolle pätee end(w) < start(v): Aseta A := A {w}. Aseta R := R {reg(w)}. 3.2 Jos A = k, tee spill (seuraava kalvo). 3.3 Muutoin, tee seuraavaa: 3.3.1 Valitse r R. 3.3.2 Aseta R := R {r}. 3.3.3 Aseta reg(v) := r. 3.3.4 Aseta A := A {v}.

: spill 1. olkoon w A siten, että end(w) on suurin mahdollinen, ja tee seuraavaa: 2. Jos end(w) < start(v), tee seuraavaa: 2.1 Aseta reg(v) := reg(w). 2.2 Aseta loc(w):ksi seuraava vapaa aktivaatiotietueen muistipaikka. 2.3 Aseta A := A {w}. 2.4 Aseta A := A {i}. 3. Muutoin aseta loc(v):ksi seuraava vapaa aktivaatiotietueen muistipaikka.

Sisällys

Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman rekisteriallokaatiota) Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio