www.wikidata.uk-ua.nina.az
Optimizuvalnij kompilyator kompilyator v yakomu vikoristovuyutsya rizni metodi otrimannya optimalnogo programnogo kodu pri zberezhenni jogo funkcionalnih mozhlivostej Najbilsh poshireni cili optimizaciyi skorochennya chasu vikonannya programi pidvishennya produktivnosti kompaktifikaciya programnogo kodu ekonomiya pam yati minimizaciya energovitrat zmenshennya kilkosti operacij vvedennya vivedennya Optimizaciya mozhe vidbuvatisya neyavno pid chas translyaciyi programi ale yak pravilo vvazhayetsya okremim etapom roboti kompilyatora Komponuvalniki takozh mozhut vikonuvati chastinu optimizacij takih yak viluchennya nevikoristovuvanih pidprogram abo yih peregrupuvannya Optimizaciya yak pravilo realizuyetsya za dopomogoyu poslidovnosti optimizuvalnih peretvoren algoritmiv yaki prijmayut programu i zminyuyut yiyi dlya otrimannya semantichno ekvivalentnogo variantu ale bilsh efektivnogo z tochki zoru deyakogo naboru cilej optimizaciyi Bulo pokazano sho deyaki problemi optimizaciyi kodu ye NP povnimi 1 abo navit nerozv yaznimi 2 Prote praktichno bagato z nih virishuyutsya nablizhenimi metodami sho dayut cilkom zadovilni rezultati Rozriznyayut nizko i visokorivnevu optimizaciyu Nizkorivneva optimizaciya peretvoryuye programu na rivni elementarnih komand napriklad instrukcij procesora konkretnoyi arhitekturi en Visokorivneva optimizaciya zdijsnyuyetsya na rivni strukturnih elementiv programi takih yak moduli funkciyi rozgaluzhennya cikli Zmist 1 Tipi optimizacij 1 1 Peephole optimizaciya 1 2 Lokalna optimizaciya 1 3 Vnutrishnoprocedurna optimizaciya 1 4 Optimizaciya cikliv 1 5 Mizhprocedurna optimizaciya 2 Faktori sho vplivayut na optimizaciyu 3 Zagalni principi 4 Konkretni metodi 4 1 Optimizaciya cikliv 4 2 Optimizaciya potoku danih 4 3 SSA forma i optimizaciyi zasnovani na nij 5 Div takozh 6 Primitki 7 Literatura 8 PosilannyaTipi optimizacij RedaguvatiMetodi vikoristovuvani dlya optimizaciyi mozhut buti klasifikovani za sferoyu zastosuvannya voni mozhut vplivati yak na okremij operator tak i na cilu programu Lokalni metodi zachipayut neveliku chastinu programi prostishe realizuvati nizh globalni zastosovuvani do vsiyeyi programi ale pri comu globalni metodi chasto viyavlyayutsya bilsh vigidnimi Peephole optimizaciya Redaguvati Lokalni peephole optimizaciyi angl peephole vichko rozglyadayut kilka susidnih v terminah odnogo z grafiv podannya programi instrukcij yak nibi divitsya u vichko na kod shob pobachiti chi mozhna yih yakos transformuvati z metoyu optimizaciyi Zokrema voni mozhut buti zamineni odniyeyu instrukciyeyu abo korotshoyu poslidovnistyu instrukcij Napriklad podvoyennya chisla mozhe buti bilsh efektivno vikonane z vikoristannyam livogo zsuvu abo shlyahom dodavannya chisla z takim samim Lokalna optimizaciya Redaguvati V lokalnij optimizaciyi za odin krok rozglyadayetsya tilki informaciya odnogo bazovogo bloku 3 404 lt ref gt Oskilki v bazovih blokah nemaye perehodiv potoku upravlinnya taka optimizaciya vimagaye neznachnogo analizu zaoshadzhuyuchi chas i znizhuyuchi vimogi do pam yati ale ce takozh oznachaye sho ne zberigayetsya informaciya dlya nastupnogo kroku Vnutrishnoprocedurna optimizaciya Redaguvati Vnutrishnoprocedurni optimizaciyi angl intraprocedural globalni optimizaciyi sho vikonuyutsya cilkom v ramkah odinici translyaciyi napriklad funkciyi abo proceduri 3 407 Za takoyi optimizaciyi opracovuyetsya znachno bilshe informaciyi nizh za lokalnoyi sho dozvolyaye dosyagati bilsh znachnogo efektu ale pri comu chasto potribni resursovitratni obchislennya Za nayavnosti u optimizovuvanij programnij odinici globalnih zminnih optimizaciya takogo vidu mozhe buti utrudnena Optimizaciya cikliv Redaguvati Isnuye znachna kilkist optimizacij sho zastosovuyutsya do cikliv Za velikoyi kilkosti povtoren ciklu taki optimizaciyi nadzvichajno efektivni oskilki nevelikim peretvorennyam vplivayut na znachnu chastinu vikonannya programi Oskilki cikli vagoma chastina chasu vikonannya bagatoh program optimizaciyi cikliv isnuyut praktichno u vsih kompilyatorah i ye najvazhlivishimi Napriklad viyavivshi invarianti ciklu ru inodi mozhna vinesti chastinu operacij z ciklu shob ne vikonuvati nadlishkovih povtornih obchislen Mizhprocedurna optimizaciya Redaguvati Taki vidi optimizacij analizuyut vidrazu ves sircevij kod programi Bilsha kilkist informaciyi sho otrimuyetsya danimi metodami oznachaye sho optimizaciyi mozhut buti bilsh efektivnimi v porivnyanni z inshimi metodami Taki optimizaciyi mozhut vikoristovuvati dosit skladni metodi napriklad viklik funkciyi zamishayetsya kopiyeyu tila funkciyi vbudovuvannya abo inline Priklad Nehaj ye deyaka funkciya int pred int x if x 0 return 0 else return x 1 Do yiyi vbudovuvannya kod viglyadav tak int f int y return pred y pred 0 pred y 1 Pislya optimizaciyi int f int y int temp 0 if y 0 temp 0 else temp y 1 1 if 0 0 temp 0 else temp 0 1 2 if y 1 0 temp 0 else temp y 1 1 3 return temp Vbudovuvannya funkcij dozvolyaye usunuti vitrati resursiv pov yazani z viklikami funkcij Krim cogo pislya vbudovuvannya mozhlivo zastosuvati vnutrishnoprocedurni optimizaciyi yaki buli nemozhlivi abo zanadto vazhki dlya realizaciyi do cogo Prote u vbudovuvannya ye minusi yak i majzhe u bud yakij optimizaciyi zbilshuyetsya statichnij rozmir kodu sho mozhe prizvoditi do negativnih efektiv v chastinah aparaturi chutlivih do cogo faktoru Faktori sho vplivayut na optimizaciyu RedaguvatiSered faktoriv sho vplivayut na optimizaciyu vidznachayutsya yak obchislyuvalni harakteristiki cilovoyi mashini napriklad kilkist i taktova chastota procesornih yader rozmir procesornogo keshu propuskna zdatnist sistemnoyi shini obsyag operativnoyi pam yati tak i arhitektura cilovogo procesora zokrema v riznih arhitekturah ye rizne chislo registriv zagalnogo priznachennya po riznomu realizovanij obchislyuvalnij konveyer Inshij klas chinnikiv sho vplivayut na optimizaciyu scenariyi vikoristannya cilovogo programnogo kodu napriklad cilovi harakteristiki optimizaciyi mozhut znachno vidriznyatisya dlya kodu priznachenogo nalagodzhennya i testuvannya dlya zapusku chas vid chasu dlya postijnogo vikoristannya dlya zastosuvannya u vbudovanih abo avtonomnih sistemah Zagalni principi RedaguvatiSered principiv optimizaciyi sho zastosovuyutsya v riznih metodah optimizaciyi v kompilyatorah deyaki z nih mozhut superechiti odin odnomu abo buti nepridatnimi pri riznih cilyah optimizaciyi zmenshennya nadmirnosti povtorne vikoristannya rezultativ obchislen skorochennya chisla pereobchislen kompaktifikaciya kodu vidalennya nepotribnih obchislen i promizhnih znachen skorochennya chisla perehodiv u kodi napriklad vikoristannya vbudovuvannya funkcij en angl Inline expansion abo rozmotuvannya ciklu dozvolyaye v bagatoh vipadkah priskoriti vikonannya programi cinoyu zbilshennya rozmiru kodu lokalnist kod i dani dostup do yakih neobhidnij najblizhchim chasom povinni buti rozmisheni poruch odne z odnim u pam yati shob dotrimuvatisya principu lokalnosti posilan en vikoristannya iyerarhiyi pam yati rozmishennya najchastishe vikoristovuvanih danih u registrah zagalnogo priznachennya mensh vikoristovuvanih u keshi she mensh vikoristovuvanih v operativnij pam yati najridshe vikoristovuvani na disku rozparalelyuvannya zminennya poryadku operacij mozhe dozvoliti vikonati kilka obchislen paralelno sho priskoryuye vikonannya programi Konkretni metodi RedaguvatiOptimizaciya cikliv Redaguvati Analiz induktivnih zminnih ru Yaksho zminna v cikli ye rezultatom prostoyi linijnoyi funkciyi vid induktivnoyi zminnoyi napriklad for i 0 i lt 10 i j 17 i To mozhna vidpovidnim chinom onovlyuvati danu zminnu na kozhnij iteraciyi Ce nazivayetsya znizhennyam sili operacij en Rozpodil ciklu na chastini Robitsya sproba rozdiliti cikl na kilka okremih z tim samim diapazonom indeksiv Kozhen novij cikl ye chastinoyu tila vihidnogo ciklu Ce mozhe polipshiti lokalnist posilan Ob yednannya cikliv ru Zlittya cikliv Inshij metod poklikanij zmenshiti nakladni vitrati ciklu Yaksho dva susidnih cikli povtoryuyutsya odnakove chislo raziv to yih tila mozhut buti ob yednani yaksho voni ne vzayemodiyut Inversiya ciklu Cej metod zminyuye standartnij while cikl na cikl do while postavlenij pid deyaku umovu sho zmenshuye kilkist perehodiv na dva dlya vipadkiv koli cikl vikonuyetsya Rozsheplennya ciklu Robitsya sproba sprostiti cikl abo usunuti zalezhnosti v cikli rozbivshi jogo na kilka chastin sho mayut odnakove tilo vihidnogo ciklu i rizni diapazoni lichilnika Optimizaciya potoku danih Redaguvati Optimizaciya potoku danih zasnovana na analizi potoku danih en i zazvichaj yak vihidni dani rozglyadayut pov yazani mizh soboyu graf potoku keruvannya i graf potoku danih a takozh chasto derevo cikliv i ciklovu rozmitku grafu potoku keruvannya Shlyahom analizu zokrema propagaciyi informaciyi na cih grafah viyavlyayut mozhlivist optimizaciyi z tochki zoru potribnih cilej a potim optimizaciyi zastosovuyutsya Usunennya spilnih pidviraziv Vidalennya spilnih pidviraziv optimizaciya kompilyatora za yakoyi shukayutsya primirniki odnakovih viraziv i analizuyetsya mozhlivist zamini yih odniyeyu zminnoyu sho mistit obchislene znachennya Zgortannya konstant ru Optimizaciya za yakoyi zmenshuyutsya nadlishkovi obchislennya shlyahom zamini konstantnih viraziv i zminnih yih znachennyami Analiz induktivnih zminnih en Div opis v optimizaciyi cikliv Vidalennya tupikovih zapisiv Vidalennya prisvoyen zminnih yaki zgodom ne chitayutsya Prisvoyennya vidalyayetsya abo cherez te sho do kincya chasu zhittya zminnoyi vona ne bula prochitana abo cherez te sho podalshe prisvoyennya yiyi perezapishe SSA forma i optimizaciyi zasnovani na nij Redaguvati SSA Single Static Assignment yedine statichne prisvoyuvannya ce forma podannya grafa potoku danih DFG Data Flow Graph za yakoyi kozhnij zminnij znachennya prisvoyuyetsya tilki odin raz Ce dozvolyaye uniknuti mnozhennya dug u grafi pri bagatoh zapisah i chitannyah odniyeyi zminnoyi i polegshuye analiz grafa Dlya cogo SSA podannya vvodit specialni Phi funkciyi vuzli grafa potoku danih u deyakih miscyah shodzhennya v grafi potoku upravlinnya Ci novi vuzli ye tak zvanimi psevdo prisvoyuvannyami Mnozhinni viznachennya mozhlivi ne tilki cherez shodzhennya potoku upravlinnya abo ale cherez mozhlivist chitannya deyakogo skladenogo znachennya yak cilogo yake bulo zapisano po chastinah bilsh nizh odniyeyu operaciyeyu i V comu vipadku dlya pidtrimki SSA formi vvodyatsya dodatkovi psevdo prisvoyuvannya vseredini bazovih blokiv yaki zbirayut odne znachennya z kilkoh Na SSA zasnovani deyaki optimizaciyi Hocha okremi z nih mozhut pracyuvati i bez SSA najbilsh efektivnimi voni ye v prisutnosti SSA Div takozh RedaguvatiEfektivnist algoritmuPrimitki Redaguvati http www cs uiuc edu class fa07 cs498mjg notes optimizations pdf nedostupne posilannya stor 29 30 Register allocation Instruction Scheduling CIS570 Programming Language Implementation Arhiv originalu za 2 kvitnya 2005 Procitovano 25 bereznya 2007 stor 8 pro ekvivalentnist zadachi stvorennya povnistyu optimizuvalnogo kompilyatora problemi zupinki a b Cooper Keith D Torczon Linda 2004 Engineering a Compiler angl Morgan Kaufmann s 407 ISBN 1 55860 699 8 Literatura RedaguvatiAlfred Aho Monika Lam Ravi Seti Dzheffri Ulman Kompilyatory principy tehnologii i instrumentarij Compilers Principles Techniques and Tools 2 e vidannya Moskva Vilyams 2008 1184 s 1500 prim ISBN 978 5 8459 1349 4 Steven Muchnick Advanced Compiler Design and Implementation Morgan Kaufmann 1997 ISBN 1 55860 320 4 Keith Cooper Linda Torczon Engineering a Compiler Second Edition Morgan Kaufmann 2011 ISBN 978 0 12 088478 0Posilannya RedaguvatiNOU INTUYiT Vvedennya v optimizaciyu zastosunkiv z vikoristannyam kompilyatoriv Intel Informaciya Intuyit ru 2011 Otrimano z https uk wikipedia org w index php title Optimizuvalnij kompilyator amp oldid 39334225