P11.2 Izbor instrukcija, IBURG

Слични документи
Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

P9.1 Dodela resursa, Bojenje grafa

P11.3 Analiza zivotnog veka, Graf smetnji

Funkcije predavač: Nadežda Jakšić

P1.2 Projektovanje asemblera

P1.3 Projektovanje makroasemblera

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

P11.1 Izbor instrukcija, najveci zalogaj

Programski jezik C

Algoritmi i arhitekture DSP I

Microsoft PowerPoint - C-4-1

P2.1 Formalne gramatike

Tutoring System for Distance Learning of Java Programming Language

Microsoft Word - 11 Pokazivaci

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Uvod u računarstvo 2+2

Classroom Expectations

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

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

P9.2 Optimizujuci kompajler, prednji deo

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

Uvod u računarstvo 2+2

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

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

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

Inženjering informacionih sistema

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

PowerPoint Presentation

Strukture predavač: Nadežda Jakšić

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Орт колоквијум

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

P3.2 Paralelno programiranje 2

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

P2.1 Projektovanje paralelnih algoritama 1

Programski jezik C

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

Uvod u računarstvo 2+2

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

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

Logicko projektovanje racunarskih sistema I

Programski jezici i strukture podataka

08 RSA1

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

LAB PRAKTIKUM OR1 _ETR_

Повезивање са интернетом

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

Zbirka resenih zadataka iz arhitekture racunara

Uvod u računarstvo 2+2

Datoteke predavač: Nadežda Jakšić

Računarski praktikum I - Vježbe 01 - Uvod

070-ALIP2-udzbenik.indb

Microsoft PowerPoint - 10 PEK EMT Logicka simulacija 1 od 2 (2012).ppt [Compatibility Mode]

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Microsoft PowerPoint - podatkovni promet za objavu.pptx

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

PowerPoint Presentation

Орт колоквијум

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

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

Programiranje za UNIX Okruženje unix procesa

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

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

PROMENLJIVE, TIPOVI PROMENLJIVIH

Microsoft Word - 6. RAZRED INFORMATIKA.doc

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

Pojačavači

2015_k2_z12.dvi

Model podataka

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 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

Problemi zadovoljavanja ogranicenja.

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Microsoft PowerPoint - jkoren10.ppt

Technology management performance indicators in global country rankings

SEMINAR

Drveta odlucivanja - algoritmi

07_PJISP_II_Predavanja

PowerPoint Presentation

Tutoring System for Distance Learning of Java Programming Language

Техничко решење: Софтвер за симулацију стохастичког ортогоналног мерила сигнала, његовог интеграла и диференцијала Руководилац пројекта: Владимир Вуји

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

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

VEŽBE IZ OPERACIONIH ISTRAŽIVANJA

JEZGRO OPERATIVNOG SISTEMA I UPRAVLJANJE PROCESIMA 1. Šta je jezgro, a šta proces? Jezgro (nukleus ili kernel) je osnovni deo svakog operativnog siste

PowerPoint Presentation

Задатак 4: Центрифугална пумпа познате карактеристике при n = 2900 min -1 ради на инсталацији приказаној на слици и потискује воду из резервоара А у р

Модел уређаја – I2C уређај

3.Kontrlne (upravlja~ke) strukture u Javi

PowerPoint Presentation

Edukacioni racunarski sistem

Dijagrami sekvenci

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

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

Slide 1

Транскрипт:

Избор инструкција (1/2) Машинска инструкција се може приказати као део стабла међукода, који се назива шаблон стабла (енгл. tree pattern). Избор инструкција је проблем поплочавања стабла међукода минималним скупом шаблона стабла. Најбоље поплочавање стабла међукода доводи до низа инструкција са најмањим трошком. 1

Избор инструкција (2/2) Тип трошка описује жељени критеријум оптималности. Идеализовано посматрано то може бити број инструкција, ако се код оптимизује по величини, или потребно време процесора ако се код оптимизује по брзини извршења. У стварности, инструкције се не могу посматрати изоловано пошто између њих постоји интеракција, нпр. проточна обрада. 2

Динамичко програмирање Проблем тражења најјефтинијег поплочавања стабла решава се применом динамичког програмирања Технике за проналажење оптималног решења проблема тражењем оптималних решења потпроблема, односно подстабла 3

Поплочавање стабла применом Динамичког програмирања Алгоритам динамичког програмирања додељује трошак сваком чвору стабла. Трошак посматраног чвора је дефинисан као збир трошкова појединачних инструкција из најбољег низа инструкција које поплочавају подстабло чији корен је посматрани чвор. Овај алгоритам ради од доле ка горе, тј. од листова ка корену. 4

Алгоритам поплочавања За сваки шаблон t, трошка c, који се може употребити у чвору n, постоји нула или више подстабала s i. Цена c i сваког подстабла је већ позната (иде се од листова), тако да је трошак подстабла за избор шаблона t просто c+σc i. Од свих шаблона t i који се могу употребити у чвору n бира се шаблон са најмањим трошком. 5

Емитовање инструкција Након што се одреди трошак корена, започиње фаза емитовања инструкција која се обавља тако што се за сваки чвор n најпре емитују инструкције листова изабраног шаблона, а онда се емитује и инструкција која одговара изабраном шаблону. 6

IBURG Писање модула за избор инструкција је сложен задатак, који укључује моделирање одредишног процесора и реализацију алгоритма динамичког програмирања. Данас се уместо ручног писања користе генератори код генератора. За MASx процесор коришћен је генератор под називом IBURG. 7

IBURG улаз-излаз Улаз: датотека InstructionSelection.brg низ правила, са по три елемента: опис шаблона, придружен трошак и семантичка акција. Излаз: датотека Selection.cpp Це/Це++ код који реализује динамичко програмирање користећи дате шаблоне 8

IBURG спецификација (1/4) Секције: Конфигурациона секција, између '%{ и %} Садржај се преписује у Selection.h Дефинише макрое за спрегу са другим модулима компајлера; могућ је рад над различитим IR у форми стабла Дефиниције симбола, сви нетерминали и терминали Декларације шаблона, између %% и %% Reduce функција, иза друге ознаке %% 9

IBURG спецификација (2/4) Конфигурациона секција Макрои LEFT_CHILD, RIGHT_CHILD: приступ чворовима потомцима у стаблу међукода Макро OP_LABEL: приступ оператору одређеног чвора Макро STATE_LABEL: Приступ променљивој која садржи стање чвора Макро PANIC: Користи се када је откривена нека грешка 10

IBURG спецификација (3/4) Декларације шаблона Формат: naziv: opis opis има формат: definicija = identifikacija (cena) definicija користи нетерминалне и терминалне Сваком шаблону додељена: Јединствена идентификација Омогућава повезивање одређеног шаблона са одговарајућом семантичком акцијом Цена Омогућава да се, у ситуацијама када постоји више алтернатива за прекривање стабла међукода, пронађе субоптимално решење 11

IBURG спецификација (4/4) Функција Reduce Reduce на основу изабраног оптималног прекривања међукода извршава одговарајуће семантичке акције Извршавањем ових акција обично се генерише листа инструкција, било у виду: записа у одговарајућу датотеку или у облику меморијске структуре погодне за рад каснијих фаза компајлера 12

Пример IBURG спецификације (1/5) Конфигурациона секција %{ #include <stdio.h> #include <assert.h> #include <stdlib.h> #define STATE_TYPE int* typedef IRNode* NODEPTR_TYPE; #define OP_LABEL(p) ((p)->getnodeoperator()) #define LEFT_CHILD(p) ((p)->getleftnode()) #define RIGHT_CHILD(p) ((p)->getrightnode()) #define STATE_LABEL(p) ((p)->pstatelabel) #define PANIC printf %} 13

Пример IBURG спецификације (2/5) Декларације симбола и шаблона %start register %term PLUS_NO=1 SCONST_NO=107 MOVE_NO=115 TEMPD_NO=112 SLIST_NO=121EMPTY_NO=123 %% statement: SLIST_NO(MOVE_NO(TEMPD_NO(EMPTY_NO),register),statement) =31 (1); register: PLUS_NO(register,small_constant_op) = 101 (1); small_constant_op: SCONST_NO = 305 (0); %% 14

Пример IBURG спецификације (3/5) Функција Reduce за MASx компајлер (1/3) Даје значења шаблонима генерисањем инстанци класе CInstruction Ови објекти се уланчавају у листу инструкција Инструкције су праве али недовршене У њима се користе привремене променљиве уместо правих регистара Додела конкретних ресурса могућа тек након анализе животног века променљивих (наредна фаза компајлера) Не респектује се структура проточне обраде Након доделе ресурса мора обавити уметање NOP инструкција на местима где је то потребно (дистанцер) 15

Пример IBURG спецификације (4/5) Функција Reduce за MASx компајлер (2/3) CAsmOperand* InstructionSelector::Reduce(NODEPTR_TYPE p, int nonterm) { burm_kids(p, rulenumber, kids); switch(rulenumber) {... case 305:{ if(((const*)p)->getconstkind()==int_c) return new CImmediateOperand( new CValue(((Const*)p)->GetInteger())); else return new CImmediateOperand( new CValue(((Const*)p)->GetFloat())); }... } 16

Пример IBURG спецификације (3/5) Функција Reduce за MASx компајлер (1/3) case 101:{ CAsmOperand*src1,*src2,*dst,*op; instr = new CInstruction(ALU_GROUP_WITH_..._D1_INPUT_OC); instr->setcline(extractlineno((irnode*)p)); src1 = Reduce(kids[0], nts[0]); src2 = Reduce(kids[1], nts[1]); dst = new CAccOperand(((Expr*)p)->GetDestTemp()->GetName()); op = new CALUOperator(PLUS_ALU); instr->addsource(src1); instr->addsource(src2); instr->adddestination(dst); instr->addaditional(op); pinstrlst->push_back(instr); return dst; }... 17

Фаза побољшања генерисаног кода Прва техника побољшања кода се заснива на тражењу могућност примене сложенијих облика MAC машинске инструкције (CMAC, MAC, MACN, NMAC, NMACN). Друга техника побољшања генерисаног кода се односи на тражење могућности за коришћење адресних регистара. Трећа техника је избацивање сувишних машинских инструкција. 18

Примена сложених MAC У ту сврху тражи се комбинација једноставне MUL и ALU инструкције (не морају бити суседне, али MUL мора претходити ALU инструкцији), у којој се резултат множења два операнда из прве инструкције акумулира другом инструкцијом. Кад се таква комбинација пронађе, прва инструкција се замењује сложенијом MAC инструкцијом. 19

Коришћење адресних регистара Након доделе адресног регистра показивачу из полазног програма, најпре се анализирају све машинске инструкције које користе показивач ради препознавања могућности примене адресног режима самоувећања (auto increment), или самоумањења (auto decrement), адресног регистра. 20

Избацивање сувишних машинских инструкција Метода DeadCodeElimination уклања инструкције из ALU и MAC групе, уколико резултат инструкције не користи ни једна друга инструкција до краја посматраног блока. Метода RemoveUnnecessaryVarLoads уклања дефиниције променљиве која је изгубила важност новом дефиницијом (енгл. overridden). 21