P11.3 Analiza zivotnog veka, Graf smetnji

Слични документи
P9.1 Dodela resursa, Bojenje grafa

P1.2 Projektovanje asemblera

P1.3 Projektovanje makroasemblera

Algoritmi i arhitekture DSP I

Microsoft Word - 11 Pokazivaci

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

P2.1 Projektovanje paralelnih algoritama 1

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

PROMENLJIVE, TIPOVI PROMENLJIVIH

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

P11.1 Izbor instrukcija, najveci zalogaj

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

P2.1 Formalne gramatike

P9.2 Optimizujuci kompajler, prednji deo

Logicko projektovanje racunarskih sistema I

Zbirka resenih zadataka iz arhitekture racunara

OPIS RAČUNARSKOG SISTEMA Računarski sistem se sastoji od procesora, operativne memorije, tajmera i terminala. Sve komponente računarskog sistema su me

_sheets.dvi

Увод у организацију и архитектуру рачунара 1

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

P11.2 Izbor instrukcija, IBURG

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

P1.1 Analiza efikasnosti algoritama 1

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Algoritmi

3.Kontrlne (upravlja~ke) strukture u Javi

Microsoft PowerPoint - C-4-1

Vezbe_AOR1_2014_V1.0

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

AR2019

Inženjering informacionih sistema

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

TEORIJA SIGNALA I INFORMACIJA

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Logičke izjave i logičke funkcije

Funkcije predavač: Nadežda Jakšić

Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

Precesor Intel 8086

Microsoft Word - CAD sistemi

Classroom Expectations

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

Slide 1

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Microsoft Word - IP_Tables_programski_alat.doc

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

P1.2 Analiza efikasnosti algoritama 2

УНИВЕРЗИТЕТ У БЕОГРАДУ МАШИНСКИ ФАКУЛТЕТ Предмет: КОМПЈУТЕРСКА СИМУЛАЦИЈА И ВЕШТАЧКА ИНТЕЛИГЕНЦИЈА Задатак број: Лист/листова: 1/1 Задатак 5.1 Pостоје

RAČUNARSKI SISTEM Ne postoji jedinstvena definicija pojma računarski sistem. Računarski sistem predstavlja skup mašina i pridruženih metoda (realizova

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama

P3.2 Paralelno programiranje 2

1 Konusni preseci (drugim rečima: kružnica, elipsa, hiperbola i parabola) Definicija 0.1 Algebarska kriva drugog reda u ravni jeste skup tačaka opisan

DUBINSKA ANALIZA PODATAKA

P1.0 Uvod

Optimizacija

Техничко решење: Метода мерења ефективне вредности сложенопериодичног сигнала Руководилац пројекта: Владимир Вујичић Одговорно лице: Владимир Вујичић

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

F-6-158

Programski jezik C

Ravno kretanje krutog tela

Електротехнички факултет Универзитета у Београду Катедра за рачунарску технику и информатику Kолоквијум из Интелигентних система Колоквију

Slide 1

Vektorski procesori Najveći izvor paralelizma su DoAll petlje kako je već definisano u poglavlju o paralelizaciji petlji. Paralelizam tih petlji, ako

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Zadatak T=5: Jedinica WBSD propušta vred Potiče iz polja Rwb.LMD Signal Rwb.WRLMD izaziva propuštanje ove vrednosti 2. Vrednost 0000

Profajliranje ivica: Knutov algoritam i njegova unapredenja Seminarski rad u okviru kursa Verifikacija softvera Matematički fakultet Nevena Nikolić, 1

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

УНИВЕРЗИТЕТ У НИШУ ПРИРОДНО-МАТЕМАТИЧКИ ФАКУЛТЕТ Департман за рачунарске науке Писмени део испита из предмета Увод у рачунарство 1. [7 пое

I колоквијум из Основа рачунарске технике I СИ- 2017/2018 ( ) Р е ш е њ е Задатак 1 Тачка А Потребно је прво пронаћи вредности функција f(x

Рачунарска интелигенција

Slide 1

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

PowerPoint Presentation

Pojačavači

Uvod u takmičarsko programiranje

Microsoft Word - III godina - EA - Metodi vjestacke inteligencije

Grananje u programu predavač: Nadežda Jakšić

PowerPoint Presentation

ПА-4 Машинско учење-алгоритми машинског учења

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

Microsoft Word - SIORT1_2019_K1_resenje.docx

1

Microsoft Word - 02 Elementi programskog jezika Pascal

Microsoft PowerPoint - Timer0 16F887.ppt [Compatibility Mode]

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Programski jezik C

COMARC/A Format

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

Edukacioni racunarski sistem

Транскрипт:

Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1

Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 2

Поједностављени поглед на задњи део компајлера Псеудо-асемблер (листа инструкција које још увек не баратају стварним ресурсима) Додела ресурса Потпуни асемблерски код 3

Додела ресурса Потребно је операнде полазног језика (тј. међујезика) превести у операнде одредишног језика. 4

Операнди Операнди међујезика: Променљиве Операнди машинског језика: Регистри Меморија 5

Операнди Својства променљивих: Својства регистара: Својства меморије: 6

Операнди Својства променљивих: Врста (ресурсни оп., константа/литерал...) Тип (величина...) Трајност Назив Својства регистара: Величина Назив (редни број) Својства меморије: Величина Ширина Може бити више група регистара! Може бити више врста меморије! Логички (стек, општа меморија) и физички (различите меморијске банке) 7

Додела ресурса За сваки операнд међујезика имамо одлуку са којом врстом операнада одредишног језика да га заменимо. Та одлука зависи не само од својстава самог операнда, већ и од начина његове употребе и расположивог скупа инструкција. 8

Где сместити променљиву? Два питања: Коју врсту ресурса доделити одређеној променљивој? (Тј. у коју врсту ресурса је сместити) Који конкретан ресурс (или ресурсе) јој доделити? (Тј. у које је конкретне ресурсе сместити) 9

У коју врсту ресурса? Зависи од својстава променљиве и начина њене употребе. Примери: Променљива статичке трајности -> меморија Променљива аутоматске трајности ~> регистар Фиктивни параметар функције -> зависи од позивне конвенције Са оваквом употребом:foo(&x); -> меморија Великог типа -> меморија И још треба разматрати различите врсте регистара и меморије. 10

Неке променљиве могу бити смештене у две, или више, врста ресурса У општем случају важе следеће смернице: Увек је боље у регистар него у меморију Свака променљива може бити смештена у меморију Меморије има довољно много 11

Додела меморије Једноставан приступ: int x; -> 4 бајта MojTip y; -> 8 бајтова char z[5]; -> 5 бајтова int a; -> 4 бајта Нпр. на MIPS архитектури 0000 x 0001 x 0002 x 0003 x 0004 y 0005 y 0006 y 0007 y 0008 y 0009 y 000A y 000B y 000C z 000D z 000E z 000F z 0010 z 0011 a 0012 a 0013 a 0014 a 12

Додела регистара Једноставан приступ: int x; -> 1 регистар R0 Резервисан R1 x R2 y R3 z R4 a short y; -> 1 регистар int* z; -> 1 регистар int a; -> 1 регистар Нпр. на MIPS архитектури 13

Додела регистара Једноставан приступ: int x; -> 1 регистар short y; -> 1 регистар int* z; -> 1 регистар int a; -> 1 регистар int b; -> 1 регистар short c; -> 1 регистар int* d; -> 1 регистар int e; -> 1 регистар R0 Резервисан R1 x R2 y R3 z R4 a R5 b R6 c R7 d?? e Има само 8 регистара! Нпр. на MIPS архитектури 14

Анализа животног века програмских објеката Фаза избора инструкција не узима у обзир ограничен број регистара реалног процесора. Наравно, променљиве које нису истовремено у употреби могу делити исти регистар процесора. На тај начин је могуће велики број привремених променљивих смештати у расположиви скуп регистара процесора. 15

Преливање променљивих И поред дељења ресурса, број потребних регистара може превазићи број расположивих регистара. Решење је смештање прекобројних променљивих у следећу класу ресурса. За прекобројне променљиве се каже да су се прелиле у наредну класу ресурса. 16

Која врста ресурса? Одговор за процесор MASC privremene promenljive lokalne promenljive pokušaj ako ne uspe onda AKUMULATORI globalne promenljive lokalne promenljive od kojih se uzima adresa na stek ili u memoriju pokušaj u memoriju na stek ili u memoriju REGISTRI OPŠTE NAMENE STEK I MEMORIJA 17

Анализа животног века променљиве Животни век променљиве започиње првом дефиницијом променљиве (упис почетне вредности у променљиву), а завршава се њеном последњом употребом (последње очитавање садржаја променљиве). Први корак у овој анализи је конструисање графа тока управљања. 18

Граф тока управљања Свака инструкција програма представи се чвором графа, а затим се за сваке две инструкције x и y, такве да x претходи y, повлачи стрелица од x ка y. Често коришћен облик графа тока управљања је тзв. блок дијаграм алгоритма. 19

Пример графа тока управљања 1 a := 0 c је стално жива L 1 : a 0 b a + 1 c c + b a b * 2 if a < N goto L 1 return c 2 3 4 5 b := a+1 c := c+b a := b*2 a < N b је жива на: 2 -> 3 -> 4 a је жива на: 1 -> 2 и 4 -> 5 -> 2 6 return c 20

Анализа датог примера (1/2) Пошто је променљива жива ако је њена вредност потребна у будућности, анализа иде у обрнутом смеру, од будућности ка садашњости. Нпр. променљива b се користи у инструкцији 4, што значи да је жива на ивици 3->4, а пошто се користи и у инструкцији 3, значи да је жива и на ивици 2->3. Како инструкција 2 додељује вредност променљивој b, она сигурно није жива на ивици 1->2, тј. на тој ивици је она мртва. Према томе опсег живота променљиве b је {2->3->4}. 21

Анализа датог примера (2/2) Опсег живота променљиве a је {1->2, 4->5- >2}, а променљива c је жива у целом програму. Након што су одређени опсези живота појединих променљивих, види се да су потребна свега два регистра, с обзиром да променљиве a и b нису живе истовремено. Из претходног се види да се животни опсег променљиве простире, илити тече, преко ивица (стрелица) графа тока управљања, па је из тог разлога одређивање опсега живота пример проблема тока података. 22

Граф тока података Чвор графа тока података има излазне стрелице које воде до чворова наследника и улазне стрелице које воде од чворова претходника. Скуп pred[n] је скуп свих чворова претходника за чвор n, а скуп succ[n] је скуп чворова наследника чвора n. Надаље, се дефинише def[n] као скуп променљивих (операнада) које чвор дефинише (задаје им вредност), а use[n] као скуп променљивих које чвор користи (очитава). 23

Жива на стрелици, Жива-наулазу, Жива-на-излазу Променљива је жива на стрелици графа ако постоји усмерена путања од те стрелице до use чвора, а да путања не прелази преко иједног def чвора. Променљива је жива-на-улазу (енгл. live-in) чвора ако је жива на било којој улазној стрелици чвора. Променљива је жива-на-излазу (енгл. live-out) чвора ако је жива на било којој излазној стрелици чвора. 24

Једначине животног века Означимо скуп променљивих типа жива-на-улазу чвора n са in[n], а скуп променљивих типа жива-на-излазу чвора n са out[n]. Онда важи: in[n] = use[n] U (out[n] def[n]) out[n] = U succ[n] in[s] 25

Решење система једначина животног века Дато је следећим алгоритмом: for each n in[n] = {}; out[n] = {} repeat for each n in [n] = in[n]; out [n] = out[n] in[n] = use[n] U (out[n] def[n]) out[n] = Usucc[n] in[s] until in [n] = in[n] and out [n] = out[n] for all n 26

Практична реализација решења једначина животног века Прво се одређује out[n], а затим in[n]. У овом примеру алгоритам конвергира брже за for(n=6;n>0;n--) него за for(n=1;n<7;n++). Прва петља конвергира у 3, а друга у 7 пролаза. Скупови се представљају низовима бита или сортираним листама променљивих. Унија скупова се одређује ИЛИ операцијом над низовима бита или спајањем листа уз одбацивање елемената који се понављају. Помаже STL. 27

Решење за дати пример čvor use def iteracija 1 iteracija 2 iteracija 3 out in out in out in 6 c c c c 5 a c ac ac ac ac ac 4 b a ac bc ac bc ac bc 3 bc c bc bc bc bc bc bc 2 a b bc ac bc ac bc ac 1 a ac c ac c ac c 28

Сметња Једна од најважнијих примена резултата анализе животног века је обезбеђивање информације потребне за доделу ресурса (акумулатора, регистара опште намене итд.) променљивама. Проблем који онемогућава да се исти регистар додели двема променљивама назива се СМЕТЊА. Најчешћи узрок сметње је преклапање опсега животног века двеју променљивих. 29

Матрица сметњи Матрица сметњи има онолико врста и онолико колона колико има променљивих. У пресеку врста и колона за променљиве између којих постоје сметње уноси се ознака X. 30

Пример Матрице сметњи a b c a X b X c X X 31

Граф сметњи Граф сметњи је неусмерен граф, чији чворови одговарају променљивама, а два чвора графа се спајају неусмереним луком уколико постоји сметња између одговарајућих променљивих. 32

Правилo за додавање нове сметње у граф За сваку деф. промењиве a додај сметње између a и сваке промењиве живе на излазу чвора. 33

MOVE чворови графа тока (1/2) У анализи животног века, MOVE чворовима графа тока управљања се може дати посебан третман, којим се избегава утицај вештачких сметњи између изворишта и одредишта MOVE чвора. Ради илустрације, посматра се програм: t = s (копирај вредност из s у t)... x =... s... (коришћење s)... y =... t... (коришћење t) 34

MOVE чворови графа тока (2/2) Јасно је да ивица, тј. лук (t,s) није потребан, иако су s и t живе истовремено, под условом да се након копирања s у t, користи само t, пошто се уместо њега може користити s. Међутим, ако се након MOVE дефиниције променљиве t (t=s) појави нова дефиниција променљиве t инструкцијом која није MOVE (тј. која не доводи до тога да су променљиве t и s алијаси), лук (t,s) ће бити нужно додат. 35

Правила за додавање нове сметње у граф За сваку деф. промењиве a, у чвору који није MOVE, додај сметње између a и сваке промењиве живе на излазу чвора. За MOVE инструкцију a=c додај сметње између променљиве a и сваке променљиве живе на излазу чвора која није c. 36