P9.2 Optimizujuci kompajler, prednji deo

Слични документи
P11.3 Analiza zivotnog veka, Graf smetnji

Algoritmi i arhitekture DSP I

P1.2 Projektovanje asemblera

P9.1 Dodela resursa, Bojenje grafa

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

P1.3 Projektovanje makroasemblera

P11.2 Izbor instrukcija, IBURG

Microsoft Word - 11 Pokazivaci

P2.1 Formalne gramatike

PROMENLJIVE, TIPOVI PROMENLJIVIH

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

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

P2.1 Projektovanje paralelnih algoritama 1

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

Zbirka resenih zadataka iz arhitekture racunara

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

_sheets.dvi

Inženjering informacionih sistema

Nastavna cjelina: 1. Jezik računala Kataloška tema: 1.1. Bit 1.2. Brojevi zapisani četvorkom bitova Nastavna jedinica: 1.1. Bit   1.2. Brojevi zapisan

Pojačavači

Tutoring System for Distance Learning of Java Programming Language

Microsoft Word - CAD sistemi

3.Kontrlne (upravlja~ke) strukture u Javi

Funkcije predavač: Nadežda Jakšić

Microsoft Word - 02 Elementi programskog jezika Pascal

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

LAB PRAKTIKUM OR1 _ETR_

Uvod u računarstvo 2+2

Classroom Expectations

AR2019

Microsoft PowerPoint - Bitovi [Compatibility Mode]

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

Precesor Intel 8086

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

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

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

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

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

PowerPoint Presentation

` 1.Врсте меморије На основу начина чувања података делимо их на меморије које привремено чувају податке (док је рачунар укључен) и меморије које трај

Edukacioni racunarski sistem

Microsoft PowerPoint - C-4-1

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

РЕПУБЛИКА СРБИЈА МИНИСТАРСТВО ПРИВРЕДЕ ДИРЕКЦИЈА ЗА МЕРЕ И ДРАГОЦЕНЕ МЕТАЛЕ Београд, Мике Аласа 14, ПП: 34, ПАК: телефон: (011)

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

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

Fortran

Logicko projektovanje racunarskih sistema I

Microsoft PowerPoint - 12a PEK EMT VHDL 1 od 4 - Uvod (2011).ppt [Compatibility Mode]

Generated by Foxit PDF Creator Foxit Software For evaluation only. Operativni sistem U računarstvu, operativni sistem (OS

P1.0 Uvod

Z-16-48

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

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

ИСПИТНА ПИТАЊА (ОКВИРНИ СПИСАК) УОАР2 2018/19 ПРВИ ДЕО ГРАДИВА 1. Написати истинитоносне таблице основних логичких везника (НЕ, И, ИЛИ). 2. Написати и

KATUŠIĆ ANTONIO.pdf

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

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

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

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

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

Tutoring System for Distance Learning of Java Programming Language

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

Z-16-45

Logicko projektovanje racunarskih sistema I

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

DUBINSKA ANALIZA PODATAKA

IV Spekulativno I predikatsko izvršavanje

Tutoring System for Distance Learning of Java Programming Language

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Vezbe_AOR1_2014_V1.0

oae_10_dom

Računarski softver Da bi računarski sistem mogao da radi, pored hardvera mora biti opremljen i odgovarajućim programima koji će njime upravljati.ova k

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

PowerPoint Presentation

Microsoft PowerPoint - 13 PIK (Mentor Graphic ASIC).ppt

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Универзитет у Нишу Природно-математички факултет Увод у рачунарство Број индекса 200 II домаћи задатак 1. За прекидачку функцију ff(xx 1, xx 2, xx 3 )

Испит из Основа рачунарске технике OO /2018 ( ) Р е ш е њ е Задатак 5 Асинхрони RS флип флопреализован помоћу НИЛИ кола дат је на след

IV Spekulativno I predikatsko izvršavanje

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

untitled

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ и технолошког развоја ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ НА КРАЈУ ОСНОВН

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft Word - Projekat iz MIPS-a - simCPU.doc

Microsoft PowerPoint - Topic02 - Serbian.ppt

Београд, МАТРИЧНА АНАЛИЗА КОНСТРУКЦИЈА ЗАДАТАК 1 За носач приказан на слици: а) одредити дужине извијања свих штапова носача, ако на носач

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Microsoft Word - Novi proizvod - Sistem za komunikaciju 720 v1.doc

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc

Microsoft PowerPoint - Topic02 - Serbian.ppt

COMARC/A Format

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

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

UNIVERZITET UKSHIN HOTI PRIZREN FAKULTET RAČUNARSKIH NAUKA PROGRAM: TIT - BOS NASTAVNI PLAN-PROGRAM SYLLABUS Nivo studija Bachelor Program TIT-Bos Aka

zad_6_2.doc

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

Slide 1

Транскрипт:

ОПТИМИЗУЈУЋИ КОМПАЈЛЕР Структура компајлера Предњи део, до међукода 1

Важна својства одредишне архитектуре Подржане операције Регистри и меморија (Ресурси - операнди) Проточна структура Организација меморије Харвард архитектура Хардверске петље 2

МОДУЛИ КОМПАЈЛЕРА: Preprocesor Leksička analiza Sintaksna analiza Prevođenje u međukod Prevođenje u kanonički oblik Izbor instrukcija Mašinski zavisna optimizacija 3 Izvorni program Preprocesiran program Niz tokena Abstraktna sintaksa Stablo međukoda Stablo međukoda Pseudoasembler Pseudoasembler Postavljanje okvira Okvir Graf toka Graf smetnji Dodeljeni resursi Prilagođen kod Prenosivi objektni kod Mašinski jezik Analiza toka upravljanja Analiza toka podataka Dodela resursa Prilagođavanje koda protočnoj strukturi Generisanje koda Povezivanje

MASx фамилија ДСП-ова (у примерима MASC) Намењен за извршавање програма за обраду сигнала говора и музике (аудио). На пример, коришћен је у првом комерцијално успешном MP3 плејеру 1998. 4

Основне техничке карактеристике (1/2) Дужина бајта овог процесора је 20 бита. У бајтове се смештају подаци у облику непокретног зареза. 4 регистра опште намене, 2 акумулатора Процесор поседује један програмски адресни простор и два адресна простора података. MASC је процесор са проточном обрадом са девет фаза. 4K RAM и 6K ROM интегрисаних са процесором у једном интегрисаном колу, 5

Основне техничке карактеристике (2/2) три магистрале података: програмска (PD) и две за податке (D0 и D1), маскирање и померање података приликом преноса из меморије у ALU и обрнуто, учестаност процесорског такта од 40MHz при напајању од 4,75V-5,5V учестаност процесорског такта је под програмском контролом. 6

Аритметика у непокретном зарезу 1.000 (-1) 0.011 (3/8) Опсег података: [-1, 1) 20 бита 11.101000 << 1 1.101000 [-2048, 2048) 12 бита Акумулатор 0.5 + 0.75-0.3-0.8-0.6-0.4-0.25 + 0.5 = -0.6 0.5 + 0.75 = 1.25 0.5 + 0.75-0.3 = 0.95 0.5 + 0.75-0.3-0.8 = 0.15 0.5 + 0.75-0.3-0.8-0.6 = -0.45 0.5 + 0.75-0.3-0.8-0.6-0.4 = -0.85 0.5 + 0.75-0.3-0.8-0.6-0.4-0.25 = -1.1 0.5 + 0.75-0.3-0.8-0.6-0.4-0.25 + 0.5 = -0.6 7

Фазе проточне обраде Faza X Faza Y Faza Z Faza A Faza B Faza C Faza D Faza E Faza F 8

Пример инструкције: fc0 = dc0 + ac1 * z10 Из инструкције се види да се податак из меморије узима у фази Z (ознака z10), податак из акумулатора 1 у наредној фази A (ознака ac1), податак из акумулатора 0 у фази D (ознака dc0), а резултат се уписује у акумулатор 0 у задњој фази F (ознака fc0). 9

Фазе обраде инструкција које следе инструкцију скока у тренутку скока: Instrukcija Skok Prva iza skoka Druga iza skoka Treća iza skoka Četvrta iza skoka Peta iza skoka Šesta iza skoka Faza protočne obrade D C B A Z Y X 10

Пример уметања NOP инструкција између инструкција постављања и коришћења (очитавања) акумулатора. Посматра се тренутак кад је инструкција очитавања акумулатора у фази Y: Instrukcija CC1 = AC1 XOR AC1 NOP NOP NOP ZR0(15) = YC1 Faza protočne obrade C B A Z Y 11

Харвард архитектура Меморија Захвати Декодирај Изврши 12

Харвард архитектура Меморија Захвати Декодирај Изврши Захвати Декодирај Изврши Захвати Декодирај Изврши 13

Харвард архитектура Меморија Меморија за податке Захвати Декодирај Изврши Захвати Декодирај Изврши Захвати Декодирај Изврши c = a * b 14

Харвард архитектура Меморија Захвати Меморија за податке 1 Меморија за податке 2 Декодирај Изврши Захвати Декодирај Изврши Захвати Декодирај Изврши c = a * b 15

Физички подржане петље Провера услова Тело петље Извши се n пута Тело петље Тело петље Тело петље n пута Тело петље Петље код којих је број итерација познат већ током превођења Петље код којих је број итерација познат пре него што петља почне 16

КОМПАЈЛЕР ЗА ДИЈАЛЕКТ ЦЕА Преводи изворни програмски код у тзв. MAS-like C језику на машински језик. MAS-like C је подскуп стандардног ANSI Це језика, проширен аспектима који одражавају особине физичких компонената процесора MASx. То су пре свега два нова уграђена типа променљивих, означених са dsp20 и dsp32. 17

Лексичка анализа (Скенер) Писање лексичког анализатора (енгл. scanner) представља сложен и грешкама подложан задатак па се из тог разлога користе алати за генерисање лексичког анализатора. Један од најчешће коришћених генератора је flex (енгл. fast lexical analyzer) развијен на Беркли универзитету. 18

Синтаксни анализатор (Парсер) Задужен за проверу редоследа терминалних симбола (тзв.. лексема) у изворном коду програма. Формира стабло синтаксне анализе. За добијање синтаксног анализатора се такође користи одговарајући генератор нпр. byacc (енгл. yet another compiler compiler - yacc), који је такође развијен на Беркли универзитету. Или новији Bison 19

Табела симбола Са директним приступом појединим врстама (енгл. hash). Реализована као Це++ класа CSymbolTable Садржи информацију о свим симболима (променљиве, константе, функције, лабеле, типови података и структуре) из полазног програма. 20

Објекти у табели симбола CSymTabEntry, то је основна класа из које се изводе све класе објеката табеле симбола, CVarEntry, представља променљиву, CArrayEntry, представља вектор, CFuncEntry, преставља функцију, CTypeEntry, представља тип података, CLabelEntry, представља лабелу, CConstEntry, представља константу, CTypeDefEntry, представља дефиницију корисничког типа, и CTypeEnumEntry, представља једну могућу вредност пребројивог типа (enum). 21

Стабло синтаксне анализе Представља све исказе и изразе полазног програма. Чворови су инстанце синтаксних класа, које се још називају и класама апстрактне синтаксе. Постоје две главне групе класа апстрактне синтаксе, прва представља исказе, а друга изразе. 22

Класе апстрактне синтаксе које одговарају исказима Це језика CWhile CDoWhile CFor CEmpty CLabel ClfElse CExprStatement CLoop CGoto CReturn CStatement CSwitch CCase CDefault CContinue CBreak CStatementList CCompound 23

Класе апстрактне синтаксе које одговарају изразима Це језика Unary Binary Ternary CUnary (from Unary) CBinary (from Binary) CTernary (from Ternary) CLmul COperator CExprList CExpression CExprList CEmptyExpr CVarExpr CFieldDotAccess CFieldPtrAccess CListExpr VarAccess CArrayAccess CFuncCall 24

Класе апстрактне синтаксе које одговарају унарним изразима Це језика CDereference CReference CUnPlus CUnMinus CComplement CExp CNot CsizeOf_I CUnary CsizeOf_II CCast CPostDec CPreDec CPostInc CPreInc COffset CAbs 25

бинарни изрази CPlus CTimes CMul CComutative CEq CAnd CEor COr CLogicAnd CLogicOr CEqual CNotEqual CAssign CTimeAssign CBinary CDivAssign CShiftLeft CShiftRight CAsh CLsh CModAssign CAddAssign CShif CNotComutative CAssignment CSubAssign CLShiftAssign CComma CRShiftAssign CGreaterOrEqual CAndAssign CLessOrEqual CRelation CDiv CMod CMinus CEorAssign CGreaterThen CLessThen COrAssign 26

Одређивање типова Примарни задатак овог модула је да одреди типове свих израза из полазног програма. Секундарни задатак ове фазе компајлера је да у случају израза са константама, након што одреди тип израза, одреди и његову вредност. 27

Статичка провера семантике Провера типова свих операнада у изразима, провера броја параметара код позива функције (који мора бити једнак броју параметара у дефиницији функције). и слично. 28

Анализа показивача (1/7) Два опречна захтева Да би се избегла потреба за динамичким дереференцирањем показивача потребно је све променљиве на које показивач може показати сместити у исту меморијску зону података (било D0 или D1). У циљу добијања оптималног кода за бинарне операције потребно је податке (операнде) смештати у различите меморијске зоне. 29

Анализа показивача (2/7) Ограничења смештања Анализа показивача се обавља над стаблом синтаксне анализе. Излаз је низ ограничења за смештање променљивих. Смештање у исту (ознака =) или различите зоне (!=). Ова ограничења се користе касније у фази доделе ресурса променљивама. 30

Анализа показивача (3/7) Анализа исказа доделе вредности Анализирају се операције доделе вредности и бинарне операције. За показивач са леве стране оператора доделе вредности утврђује се његов назив и ниво индирекције: 0 нема индирекције - у показивач се уписује адреса 1 један ниво индирекције - вредност с десне стране оператора доделе вредности се уписује на адресу на коју показује показивач, итд. 31

Анализа показивача (4/7) Анализа исказа доделе вредности Затим се анализира десна страна операције доделе вредности ради одређивања назива променљиве чија адреса или вредност се додељује, као и нивоа индирекције. За сваки овакав пар се генерише по једна релација показује на. Нпр. анализа исказа (у ком су p и q тзв. доминатори): *p = *(q + 4 * i); резултује релацијом (p,1)-(q,1) 32

Анализа показивача (5/7) Анализа исказа доделе вредности За исказ p=q добија се релација (p,0)- (q,0) и означава да показивач p може показивати на све променљиве на које може показивати q (p и q су тзв. алијаси) За исказ p = &q добија се релација (p,0)-(q,-1) где ниво индирекције -1 одговара операцији узимање адресе. 33

Анализа показивача (6/7) Анализа скупова променљивих Након што се скупе све релације, утврђују се скупови променљивих на које показују поједини показивачи. За сваки такав скуп се генеришу ограничења смештања у исту зону података. Нпр. анализом релација: (p,0)-(a,-1) и (p,0)-(b,-1) закључује се да показивач p може да показује на променљиве a и b па се генерише ограничење a=b. 34

Анализа показивача (7/7) Анализа бинарних операција Овај модул компајлера обавља и анализу бинарних операција и генерише ограничење смештања променљивих, које су операнди бинарних операција, у различите зоне података. Нпр. као резултат анализе израза a + b генерише се ограничење a!=b. 35

Физички подржане петље Додатна ограничења које намеће архитектура: Дужина тела петље (код MASC 128) Количина угњеждених петљи (код MASC 1) Минимални и максимални број итерација (код MASC-а мин. 1, макс. 1024) Кашњење почетка петље Преклапање краја угњеждених петљи 36

Откривање петљи које могу бити физички подржане (1/3) Задатак ове фазе је да открије петље из полазног програма које се могу подржати тзв. физичком петљом процесора (енгл. hardware loop). Ради откривања петљи које се могу физички подржати анализирају се чворови исказа петљи (for, while, do_while) у стаблу синтаксне анализе. 37

Откривање петљи које могу бити физички подржане (2/3) Услови: познат је назив и почетна вредност индексне променљиве познат је корак итерације познат је број итерација У коду нема skip и jump инструкција (break и continue су дозвољене) У коду нема инструкција физичке петље У телу петље има мање од 128 инструкција 38

Откривање петљи које могу бити физички подржане (3/3) Ради упрошћења анализе траже се само неки облици услова извршења итерације и корака итерације. Услов извршења петље може имати облик: i < <= >= >!= [(- +] j [)] [ + - * [(- +] k [)] ] i је индекс петље, j и k су целобројне променљиве или константе Корак петље може имати облик: i[++ --] ili [++ --]i ili i [+= -=] c ili i = i [+ -] c i је индекс петље, а c је целобројна константа 39