2. Procesori, programski jezici i hardversko-softverske karakteristike embedded sistema

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "2. Procesori, programski jezici i hardversko-softverske karakteristike embedded sistema"

Transcript

1 2. Procesori, programski jezici i hardversko-softverske karakteristike embedded sistema 2. 1 Procesori kod embedded sistema Procesore koji se koriste kod embedded sistema često nazivamo embedded procesori. Izbor pogodnog procesora koji se integriše u embedded sistem uglavnom zavisi od domena aplikacije tog sistema. Neke od aplikacija su artmetičko-intenzivne, druge su upravljačko-intenzivne, treće su kritične za masovnu primenu sa tačke gledišta cene ili potrošnje energije, i td. Imajući ovo u vidu, da bi se ostvario efikasan proizvod (dizajn), u zavisnosti od tipa aplikacije, neophodno je koristiti različite klase embedded procesora, čije se arhitekture medjusobno razlikuju. Klase procesora koji se koriste kod embedded sistema su: 1. Mikrokontroleri 2. RISC procesori 3. Digitalni Signal Procesori (DSP) 4. Multimedija procesori 5. Aplikaciono Specifični Procesori (ASIP) 6. Kombinovani tipovi Mikrokontroleri Mikrokontroleri su relativno spori ali sa aspekta iskorišćenja silicijuma po površini-veomaefikasni procesori, uglavnom namenjeni za upravljačko-intenzivne aplikacije. Karakteriše ih mikroprogramska CISC bazirana arhitektura, što znači da je broj taktnih intervala za izvršenje različitih tipova instrukcija u velikoj meri promenljiv. Moć izračunavanja kao i broj memorijskih resursa je veoma ograničen, a obim reči staze-podataka relativno mali (obično 8 ili 16 bitova). Sa druge strane, kompleksnost skupa instrukcija pruža odgovarajući programski interfejs, uključujući instrukcije za množenje i deljenje kao i veći broj memorijsko adresnih načina rada. Kao rezultat se dobija veoma kompaktan kôd (programi su relativno mali). S obzirom da su mikrokontroleri namenjeni za upravljačko-orijentisani aplikacioni domen, oni poseduju bogat skup instrukcija za manipulisanje podacima na nivou-bita, kao i periferijskim komponentama kakvi su tajmeri ili serijski U/I portovi. Veoma često jednostavni procesori koji su se ranije koristili kao CPU-ovi u računarskim sistemima (kakvi su, recimo procesori iz familije Intel 8051, Motorola 6502, 6811, i dr., koji su bili popularni kao CPU-ovi u kućnim računarima) danas se ponovo koriste u nešto izmenjenoj formi kao mikrokontroleri kod embedded sistema RISC procesori RISC procesori su evoluirali od CISC arhitektura kao rezultat zapažanja da se kompleksne instrukcije kod praktičnih aplikacija izvršavaju veoma retko. Nasuprot CISC procesorima, RISC procesori poseduju veoma mali (ograničeni) skup instrukcija, koje se mogu izvršavati velikom brzinom. S obzirom da su sve instrukcije RISC-a istog obima i da za izvršenje zahtevaju isti broj taktnih intervala, izvršenje instrukcija se može učiniti protočnim čime se postiže veća propusnost u odnosu na mehanizam karakterističan za čisto sekvencijalno izvršenje. Druge osobine RISC-ova su te da su oni arhitekture tipa LOAD/STORE, i da koriste veliki broj registara-opšte-namene sa ciljem da se u programu smanji broj obraćanja memoriji. U suštini, pažljiva 1

2 dodela programsko-promenljivih registara predstavlja jedan od najvažnijih optimizacionih zadataka koje obavlja kompilator kod RISC-ova. Ipak, za fiksnu aplikaciju, obično, obim kôda (programa) RISC-a je veći od obima kôda CISC-a. Tipični predstavnici RISC procesora koji se koriste kod embedded aplikacija su ARM RISC core familija, Mips RISC familija, i dr. Recimo ARM7 core je 32-bitni RISC procesor, čiji instrukcioni format može da komutira izmedju dužina od 16 ili 32 bita. Arhitektura ARM-a je specijalno projektovana za nisku potrošnju (low-power consumption), obično reda 100 mw, što čini da ARM bude pogodan za ugradnju u prenosnim sistemima koji se napajaju baterijski Digitalni Signal Procesori (DSP) DSP-ovi su uglavnom projektovani za aritmetičko-intenzivne signal-procesne aplikacije. Saglasno tome, njihovi skupovi instrukcija su prilagodjeni za brzo izvršenje algoritama tipa digitalno filtriranje, FFT, i dr. Ove operacije su podržane od strane specijalnih hardverskih komponenata, kakvi su hardverski množači i namenske jedinice za generisanje adresa. Sa ciljem da obezbede efikasno signal procesiranje, DSP-ovi obično podržavaju odredjeni stepen ILP-a, tj. odredjene kombinacije instrukcija se mogu, u svakom instrukcionom ciklusu, paralelno izvršavati. Druga tipična karakteristika DSP-ova su registri-specijane-namene, tj. namenski akumulator registar i dr. Nasuprot registrima-opšte-namene kod RISC-ova, korišćenje registara specijane-namene, kod DSP-ova, zavisi od konteksta instrukcije: Instrukcije moraju čitati svoje operande iz odredjenih registara, a takodje i upisivati rezultate u odredjene registre. To dovodi do manjih komunikacionih kašnjenja u stazama-podataka (tj. brži rad) i zahteva manji broj bitova za kodiranje instrukcije. Pored toga, DSP-ovi mogu da rade u specijanim aritmetičkim režimima rada. Tako na primer, u režimu rada zasićenje (saturation mode), pozitivni rezultati izračunavanja koji premašuju obim reči koji se može zapamtiti u registru ne generišu premašaj, tj. ne konvertuju brojnu maksimalnu pozitivnu izračunatu vrednost u domen negativni broj, kakav je slučaj kod manipulisanja sa brojevima u prezentaciji dvojičnog komplementa. U konkretnom slučaju sve vredosti koje premašuju najveću vrednost koju možemo predstaviti se konvertuju u najveći broj koji se može predstaviti. Zbog neregularnosti arhitekture procesora, u odnosu na druge klase procesora, realizacija kompajlera za DSP-ove predstavlja težak zadatak, posebno ako se želi generisati efikasan kôd. Najpoznatiji proizvodjač DSP-ova je firma Texas Instruments (TI), koja nudi širok spektar DSP-ova za različite domene aplikacija, kakvi su audio ili video signal procesiranje. Druge kompanije koje proizvode DSP-ove su Motorola, Analog Devices, i NEC Multimedija procesori Multimedija procesori predstavljaju relativno novi proizvodi na polju tržišta procesora, a po svojoj arhitekturi najbliži su RISC-ovima i DSP-ovima. Ipak su ovi procesori namenjeni za korišćenje kod multimedija aplikacija, koje se pre svega odnose na procesiranje audio signala, procesiranje signala (statičkih) slika, kao i procesiranje video signala (dinamičkih slika). Arhitekture multimedija procesora su obično VLIW tipa. Različite FU-ove mogu paralelno da rade, a upravljaju se od strane polja specijalnih upravljačkih bitova koji su sastavni delovi instrukcija. Nasuprot superskalarnim procesorima, samo je kompilator odgovoran za eksploataciju potencijalnog paralelizma u okviru mašinskog programa. Multimedija procesori, kao VLIW mašine, karakterišu se visokim stepenom ILP-a, pa se zbog toga potencijalno karakterišu visokim performansama. U principu, multimedija arhitekture su znatno regularnije u poredjenju sa DSP-ovima. Tako na primer, postoje registri-opšte-namene isto kao i kod RISC-ova. S obzirom da su RISC mašine kao i registri-opšte-namene dobro poznati koncepti kod konstrukcije kompilatora, najveći broj postojećih kompilatorskih tehnika se može veoma uspešno iskoristiti (reused) i kod multimedija procesora. Sa druge strane, postoje osobine koje nisu svojstvene za druge klase procesora. To se pre svega odnosi na uslovne (Conditional) instrukcije koje se pre svega koriste za brzo izvršenje if-then-else iskaza, kao i SIMD instrukcije koje su pre svega namenjene za bolje 2

3 iskorišćenje resursa kod manipulisanja podacima čiji je obim reči manji od obima reči sa kojima uobičajeno manipuliše mašina. Primeri multimedija procesora su TI 6201 (izvršava do 8 paralelnih instrukcija po ciklusu) i Philips Trimedia TM 1000 (izvršava do 5 paralelnih instrukcija po ciklusu). Polje istraživanja u ovoj oblasti je široko, posebno u domenu keiranja efikasnih kompajlera Aplikaciono-specifični-procesori (ASIP) Sve klase procesora o kojima smo prethodno govoili su domen-specifični. Njihove arhitekture su prilagodjene za odredjeni domen-aplikacije, ali ne i za samu aplikaciju. Nasuprot tome ASIP (application specific instruction set processors) predstavljaju kompromis izmedju domen-specifičnih procesora i neprogaramabilnih ASIC kola. ASIP-ovi su programibilni. ali se oni uglavnom koriste samo za uzak opseg aplikacija. Ponekad se ASIP-ovi mogu parametrizirati: U konkretnom slučaju to znači da je osnovna arhitektura ASIP-a fiksna, ali se arhitektura, za datu aplikaciju, može prilagoditi putem postavljanja (definisanja) odredjenog broja različitih parametara. Tako na primer, obim reči se može prilagoditi na željenu preciznost, zatim se u zavisnosti od potreba obim RF polja može menjati, a takodje se može izabrati i broj specijalnih hardverskih komponenata koje treba ugraditi, tj. recimo, hardver koji podržava LOOP iskaze se može ili ne mora ugraditi. S obzirom da su ovi parametri u najvećem broju slučajeva ortogonalni, moguće je realizovati, pomoću jedinstvenog ASIP-a veliki broj različitih konfiguracija. Saglasno prethodnom, ASIP-ovi su veoma efikasni, ali je za njihov rad potreban veliki broj različitih kompilatora. Slika 2.1 Regularna u odnosu na retargetable kompilacija Sa ciljem da se izbegnu teškoće koje realno postoje zbog velikog broja različitih kompilatora, koriste se retargetable kompilatori, koji su u stanju da generišu kôd za bilo koju ASIP konfiguraciju. Pored izvornog kôda koga treba kompajlirati, retargetable kompajleri čitaju model ciljnog procesora kao ulaz (vidi sliku 1). Ipak tehnika retargetabilnost (preusmeravanje-cilju) nije laka za implementaciju, jer utiće na kvalitet kôda. Ova oblast istraživanja je danas u intenzivnom razvoju. Primer parametrizirajućeg ASIP-a je AMS Gepard DSP core, čiji su parametri sledeći: obim reči od 8 do 64 bita, obim programske adrese od 8 do 19 bitova, broj akumulatora od 2 do 4, i broj indeksnih registara od 8 do Druge klase procesora Napomenimo takodje da procesori koji se ugradjuju u embedded sistemima, u najvećem broju slučajeva, ne pripadaju striktno samo jednoj od pomenutih klasa. Tako na primer, postoje novi mikrokontroleri RISC tipa, zatim RISC procesori kiji veoma brzo izvršavaju DSP-ove instrukcije, a postoje i neki komercijalni DSP-ovi koji se mogu u ograničenij meri koristiti kao ASIP-ovi. 3

4 Različite klase procesora postavljaju brojne i raznorodne zahteve za korišćenjem različitih tehnika kompajliranja Zahtevi za korišćenjem viših programskih jezika Zbog zahteva za korišćenjem veoma efikasnih programa na mašinskom jeziku kao i nedostataka kompajlera koji generišu efikasne kôdove, razvojna sredstva za generisanje kôda na nivou asemblera se i dalje često koriste kod embedded sistema, posebno na polju primene DSP-a. No embedded aplikacije postaju sve složenije, a embedded procesori kompleksniji, tako da se kao nužnost nameće potreba za zamenom programiranja na asembleru sa programiranjerm na nekom od HLL-ova. Pitanje koje se sada postavlja je sledeće: Koji je jezik najpogodniji za programiranje embedded procesora? Od velikog broja dostupnih programskih jezika sledeći se najčešće koriste; C, C++, Java, i DFL Programski jezik C Programski jezik C se i dalje veoma često koristi za razvoj softvera. Razlozi su sledeći: a) široko je prihvaćen jezik, b) lako se uči, c) dostupan je za najveći broj računarskih platformi, d) postoji veliki broj programa kreiranih na C-u Sa tačke gledišta softverskog-inženjerstva glavni nedostatak C-a je taj što omogućava programiranje na vrlo niskom nivou, slično asemblerskom, a to ukazuje da je takav programski stil mašinsko-zavisan. No, sa aspekta embedded sistema, ta osobina C-a je ipak atraktivna. Osobine kakve su: direktni pristup fizičkoj memoriji korišćenjem pokazivača postinkrementiranje/postdekrementirane promenljivih dirty tipovi cast-a se veoma često koriste za razvoj sistemskog softvera na HLL-u. Pored toga koncept posebnih kompatibilnih modula na C-u omogućava lako uključenje mašinsko-specifičnih funkcija kreiranih na asemblerskom jeziku Programski jezik C++ Objektno-orijentisana varijanta jezika C razvijena je sa ciljem da se kombinuju prednosti razvoja objektno-orijentisanog softvera sa fleksibinošću koju nudi C. S obzirom da C predstavlja podskup C++, ovaj jezik postepeno zamenjuje C. C++ podstiće HLL stil imajući,pre svega, u vidu klase biblioteka koje se koriste za manipulisanje sa primitivnim strukturama podataka. Takodje, sa druge strane, ovaj jezik omogućava i višestruko korišćenje postojećeg kôda. Sa tačke gledišta embedded sistema C++ ima i neke svoje nedostatke. Osobine jezika kakav je mehanizam throw-catch koji se pre svega odnosi na manipulisanje sa izuzecima, kao i korišćenje šablona za prenos netipičnih funkcijskih parametara, su pogodnosti za programera koje pruža ovaj jezik. No treba naglasiti da ove pogodnosti uzrokuju veliko prekoračenje u generisanom obimu kôda, pa shodno tome i smanjenju performansi (tj. indirektno smanjenju brzine izvršenja programa). Imajući ovo u vidu Tehnički Komitet za Embedded C++ se složio da je bolje koristiti pojednostavljeni C++ standard nazvan EC++, koji je pogodan za razvoj embedded softvera. Razvojna sredstva koja poseduju EC++ su već dostupna na tržištu, ali kao jezik EC++ još nije postao široko prihvaćen. 4

5 JAVA Java je drugi objekto-orijentisani jezik, prvenstveno razvijen za platformsko-nezavisne aplikacije koje se mogu ivršavati preko Internet-a. Saglasno tome, Java je u potpunosti mašinsko-nezavisni jezik i ne podržava hardversko-orijentisane jezičke elemente kakvi su pokazivači (pointers). Java generiše veoma kompaktan kôd koji se obično kompajlira u bajt-kôd reprezentaciju, tj. medju-format (intermediate format) za koga se pretpostavlja da će biti interpretiran od strane Java Virtuelne Mašine bazirane na principu rada sa magacinom (stack-based Java Virtual Machine). U kontekstu projektovanja embedded sistema Java izgleda atraktivna pre svega zbog osobine jezika koje se odnose na garbage collection kao i multithreading. No treba naglasiti da, osobine Java jezika iziskuju ugradnju specijalnih sistema za izvršenje programa (kada se Java direktno kompajlira u mašinski kôd), ili pak kada se ugradnju na-čipu (on chip) bajt-kôd se interpretera kako bi se taj bajt-kôd izvršavao pomoću Java virtuelne mašine. Sa ciljem da se zadovolje zahtevi efikasnosti u pogledu brzine izvršenja i obima-kôda kod embedded sistema, razvijeni su ograničeni Java dijalekti, kakav je Embedded Java DFL Data Flow Language (DFL) razvijen je za specifikaciju DSP sistema. Sintaksa DFL-a podseća na C, ali postoje specijalne jezičke konstrukcije koje su korisne za opis DSP algoritama. Ove konstrukcije uključju specifikacije koje se odnose na sledeće osobine: a) saturacija i zaokruživanje kod aritmetičkih operacija; b) koncepata zakašnjenih signala (delayed signals) kod realizacije digitalnih filtara; i c) mogućnosti pribavljanja, u tekstualnoj formi, signal flow graph-ova, kao jednu od opštih mogućnosti za prezentaciju DSP algoritama. DFL se takodje koristi kao i komercijalno sredstvo za automatsko projektovanje. Na žalost, i pored toga što je na polju DSP-a obezbedio neke pogodnosti za lagodno projektovanje, DFL na tržištu nije doživeo neki uspeh (misli se kao sredstvo za projektovanje). Glavni razlog neuspeha predstavlja teškoća uvodjenja iskorišćavanja novih jezičkih standarda koji važe za uzak domen aplikacija Nešto kao zaključak o korišćenju jezika za embedded sisteme U principu ne postoji idealan jezik za programiranje embedded sistema, a verovatno i neće ga biti. Veliki broj tehnika za optimizaciju kôda postoji danas, ali su neke od njih ipak specifične. Mi ćemo se ograničiti na korišćenju C-a kao osnova za tehnike kompajliranja. Razlozi su sledeći: a) C je i dalje najpopularniji programski jezik, posebno na polju embedded sistema; b) razvoj C kompajlera je mnogo brži u odnosu na druge jezike; c) programiranje na C-u se danas koristi i kod DSP aplikacija kakve su kompresija signala govora, i dr. Takodje, C predstavlja značajan format za medjusobnu razmenu informacije, na sistemskom nivou, izmedju sredstava za automatsko projektovanje i razvoj. Kod velikog broja Hardware/Software Codesign sredstava (na primer Cosyma), programi na C-u se generišu kao medju-format za razvoj softverskih komponenata kod embedded sistema. To znači da, i pored toga što su sistemi specificirani na viši nivo apstrakcije u odnosu na programske jezike, dobri C kompilatori su i dalje neophodni radi efikasnog preslikavanja softvera u mašinski kôd za embedded procesore. Konačno skoriji napori sa aspekta inicijative pokrenute od strane SystemC ukazuju na neophodnost uvodjenja C++ kao platforma za modeliranje hardvera. To znači da će jezik C (zajedno sa proširenjem od C++) i pored toga što je prvobitno bio namenjen za drugi tip aplikacije, u budućnosti će se sve više koristiti kao unificirani hardversko/softverski jezik za definisanje (opis) aplikacija. 5

6 2.3 Ostale softversko hardverske karakteristike Performanse Kao što smo već ukazali važna karakteristika embedded sistema je reaktivnost, često kombinovana sa ograničenjima koja se odnose na rad-u-realnom-vremenu. To znači da se kod embedded sistema, dogadjaji iz sistemskog okruženja moraju procesirati za fiksni iznos vremena. Da bi se zadovoljila ova ograničenja, kada se koriste visoko-performansni procesori opšte-namene, u najvećem broju slučajeva, to i ne predstavlja neki problem. Ipak, efikasnost, kao osobina, nalaže projektantima da se ne implementiraju veoma specifične aplikacije na procesorima opšte namene kakav je recimo Pentium 4 koji radi na 2 GHz. Umesto toga, kod embedded aplikacija, obično se koriste domen-specifični procesori, koje ako se efikasno programiraju, sa sigurnošću će zadovoljiti postavljena ograničenja. Sa druge strane, ne postoji kompilator koji će za izvorni program proizvoljnog tipa generisati optimalni kôd. Zbog toga, glavna referenca za efikasan mašinski kôd je asemblerski kôd, ručno kreiran od strane programera eksperta. Za ovakav kôd smatramo da je skoro-blizak-optimalnom. Takodje, dobro je poznato da kompilatori u poredjenju sa ekvivalentnim asemblerskim kôdom unose prekoračenje (overhead) koje se odnosi kako na obim kôda, tako i performansi. Kada se govori o embedded sistemima, ovo prekoračenje treba da je veoma malo. Tako na primer, kod aplikacija koje su kritične sa aspekta cene, recimo aplikacija koja se može izvršavati na sistemu čiji procesor radi na 2 GHz (recimo da je to PC mašina), a program je kreiran na asemblerskom jeziku, nijedan od projektanata se neće osuditi da predje na procesor koji radi na 4 GHz samo zbog toga što će kompilator generisati kôd koji će se samo zbog povećane brzine rada CPU-a dvaput brže izvršavati. Razlog je jednostavan, treba ugraditi bržu memoriju, a često puta i brže periferale čija cena u odnosu na cenu CPU-a je obično mnogo veća Obim koda Kada je embedded sistem izveden kao SoC, programska memorija je integrisana sa drugim jezgrima (cores). To znači da, ako je površina čipa fiksna, veći obim kôda, tj. veća memorija će automatski zauzeti veći prostor na silicijumu. Zbog ovoga, prekoraćenje koje unosi kompajlirani kôd, u odnosu na asemblerski kôd, treba da bude mnogo malo. U poredjenju sa sistemima opšte-namene, kod kojih aplikacioni programeri ne vode računa o obimu kôda, ovakav pristup je radikalno drugačiji kod embedded sistema. Za optimizaciju kôda koriste se brojne tehnike. Neke od njih imaju pozitivan afekat kako na obim kôda tako i na performanse, dok kod drugih postoji kompromis izmedju ova dva optimizaciona cilja. U najvećem broju slučajeva, konkretna aplikacija je ta koja diktira prioritet optimizacionog cilja. Jedan interesantan pristup za smanjenje obima programske memorije kod embedded sistema predstavlja korišćenje tehnike za kompresiju-kôda. Ovakva ideja se sastoji u sledećem: Za poznati program izračunava se kompaktno-kodirani kôd koji zamenjuje program na-čipu sa kodiranom verzijom, dok se u toku izvršenja programa pomoću hardvera za dekodiranjeu realnom vremenu se obavlja dekompresija kôda Korektnost Kao i svadruga softverska sredstva, tako i kompajleri za embedded sisteme moraju biti korektno izvedeni. To znači da kompajlirani mašinski program treba da bude funkcionalno identičan sa izvornim programom. S obzirom da se kompilatori kao osnovna sredstva najčešće koriste i za razvoj drugog softvera, od kompilatora se očekuje da imaju što je moguće manje grešaka u odnosu na druga razvojna sredstva. Postoji veći broj načina koji se koriste za maksimiziranje korektnosti kompilatora. Jedan od načina predstavlja verifikacija. Kod ovog pristupa, kôd čiju korektnost treba verifikovati formalno se dokazuje. Ozbiljan nedostatak ovog pristupa je sledeći: Današnji kompajleri su veoma složeni, (obim 6

7 premašuje linija izvornog kôda), tako da kompletna verifikacija je nepraktična zbog izuzetno dugog vremena izvršenja. Nešto praktičniji, ali manje pouzdani, pristup validacije kompajlera je onaj koji se zasniva na simulaciji. Skoro u svim slučajevima, kompilatori za embedded procesore su tipa kros-kompajleri, što znači da oni generišu kôd za ciljnu mašinu koji je različit u odnosu na kôd host-kompilatorske-mašine. Shodno tome, simulatori su neophodni radi emulacije ciljne mašine, imajući u vidu da se instrukcije izvršavaju na host-mašini. Koristeći skup test programa kao i test podatke, moguće je identifikovati greške kompajlera putem kompajliranja i simuliranja kôda ciljne-mašine, kao i kompariranjem rezultata (izlaza) programa sa očekivanim izlazom. Jedan ozbiljan problem simulacije predstavlja brzina simulacije. Najveći broj dostupnih procesorsimulatora se zasniva na klasičnom pristupu interpretiranja, pri čemu se instrukcije ciljne mašine interpretiraju od strane instrukcija host-a na principu korak-po-korak. Pri ovome ne treba izgubiti iz vida činjenicu da je proces interpretacije veoma spor. Brzina simulacije u odnosu na realnu brzinu rada može da bude od 10 pa do puta manja Retargetabilnost Ratargetable kompajleri su veoma korisni za generisanje kôda kod ASIP-a, jer se time izbegava potreba za pisanjem različitih kompajlera za različite konfiguracije ASIP-a. Pored toga, retargetable kompajleri mogu biti od koristi i kod odredjivanja najbolje konfiguracije ASIP-a za datu aplikaciju, jer oni omogućavaju da se sagledaju efekti promene arhitekture procesora kako na performanse tako i obim generisanog kôda. Na ovaj način, u toku projektovanja sistema, moguće je učiniti dobar hardverskosoftverski kompromis. Tako na primer, Tensilica nudi www-bazirani konfiguracioni mehanizam ( koji se koristi za uskladjivanje osobina RISC-zasnovane ASIP arhitekture uz pomoć brojnih parametara. Za svaku konfiguraciju, HDL modeli za simulaciju i sintezu, kao i generisani GNU-zasnovani C++ kompajler se mogu privući sa mreže (download), i evaluirati u lokalnom režimu rada. Na ovaj način, adekvatna procesorska konfiguracija, za odredjenu aplikaciju, se može nakon nekoliko iteracija polu-automatski odrediti. Alternativno, retargetable estimacione tehnike se mogu koristiti za odredjivanje dobre aplikaciono-specifične arhitekture. Na ovaj način ne postoji više potreba za konstrukcijom (kreiranjem) kompletnih kompilatora, ali na žalost to se ostvaruje po ceni manje tačnosti. Sa ciljem da bude retargetable, kompilator mora, u odredjenom smislu, da bude mašinski-nezavisan. Kompajler se može prilagoditi odredjenoj ciljnoj mašini kreiranjem mašinsko-specifičnih kompajlerskih komponenata za datu primenu, ili da se kompajleru definiše model ciljne mašine, za koju će on generisati kôd. Na nesreću, retargetabilnost neminovno nalaže potrebu da se učini kompromis koji se odnosi na efikasnost kôda. Do ovoga dolazi zbog toga što kompajler polazi od nekih pretpostavki o ciljnoj mašini, pa se mašinskospecifične hardverske osobine u manjoj meri mogu iskoristiti u fazi generisanja efikasnog kôda. U principu, kod embedded sistema koji nisu bazirani na ASIP-ovima, nego na procesorima koji se standardno mogu kupiti na tržištu (on-the-shelf processors) optimizacija kôda je u prednosti u odnosu na retargetabilnost, pre svega što je sada cilj da se ispune zahtevi u pogledu efikasne implementacije. Ova situacija će se promeniti u budućnosti, jer će korišćenje ASIP-a biti sve veće. U suštini, retargetable kompilatori su kreirani sa ciljem da generišu prihvatljivo dobar kôd za sve tipove mašina, ali oni sa druge strane, bar za sada, podržavaju samo uzak izbor domen-specifičnih procesora. Nezavisno od svega, i mašinsko-specifične tehnike za optimizaciju kôda je neophodno da se i dalje razvijaju, u smeru koji je u skladu sa idejom o retargetabilnosti. Pri tome, sve nove optimizacione tehnike treba, što je moguće više, generalizovati, ali da se pri tome ne naruši kvalitet kôda Brzina kompilacije Od kompilatora se obično očekuje da budu veoma brzi. Tako na primer, GNU C kompajler na SunUltra-1 radnoj stanici karekteriše brzina od nekoliko hiljada linija izvornog kôda u sekundi 7

8 (uključujući pri tome i manipulacije sa U/I fajlovima), što se smatra sporom za kompajlere tipa opštenamene. Kompilatori koji se koriste kod PC mašina i radnih stanica koriste optimizacione tehnike čije vreme izvršenja ima linearno, ili polinomsku kompleksnost niskog-stepena. To su u suštini brzi kompilatori, koji za ograničeni iznos vremena izvršenja generišu najbolji mogući kôd. Ovo je razumljivo kada velike softverske pakete treba kontinualno održavati i ažurirati, i kada efikasnost kompajliranog kôda nije od primarnog značaja. No kada se govori o embedded sistemima situacija je nešto drugačija. Naime, kompilatori za embedded procesore ne treba da su projektovani za veoma brzu kompilaciju. Pre svega efikasnost embedded sistema opravdava korišćenje dužeg vremena kompilacije. Kao primer, imajmo u vidu prednosti kompilatora koji smanji obim kôda za 50%, po ceni dodatnog vremena, od jedan sat, u odnosu na program koji ima optimizirano vreme prevodjenja. Kada taj program treba ugraditi u on-chip ROM embedded proizvoda, tada je optimizacija efikasnosti višestruka. Naime, sadržaj ROM-a, u toku životnog veka embedded proizvoda, verovatno se neće nikad promeniti, što u potpunosti opravdava duži period kompajliranja. Kao drugo, projektovanje embedded sistema uključuje i vreme projektovanja hardvera. Proces projektovanja uključuje mnogo napora i vremena potrebnog da se projektuje logika, a zatim korišćenjem nekog CAD alata kako bi obavio zadatak koji se odnosi na simulaciju. Projektovanje hardvera najčešće predstavlja usko grlo dizajna embedded sistema, pa zbog toga ne postoji potreba za korišćenjem bržih kompajlera kod embedded sistema (najveći deo vremensko kritičnih zadataka se obavlja hradverski). Sa druge strane, kod softversko-dominirajućih embedded sistema, dobar kompilator može da bude od veće koristi od sredstava za sintezu hardvera, tako da se veliki broj projektanata sada odlučuje na korišćenje dužeg vremena kompilacije, po ceni ostvarivanja efikasnijeg kôda. 8

9 Dodaci D2.1 Izvori disipacije snage Postoje tri glavna izvora disipacije snage kod digitalnih CMOS kola. Imajući to u vidu potrošnja se može izraziti sledećom jednačinom P total = p t ( C L V VDD f CLK ) + I sc VDD + I leakage VDD Prvi član, p t ( CL V VDD f CLK ), se odnosi na komutiranu komponentu snage, gde je: C - komutirana kapacitivnost; f - taktna frekvencija; p - faktor aktivnosti; V - naponska promena L CLK impulsa na izlazu kola, ista kao VDD ; VDD - napon napajanja Drugi član posledica je kratkog spoja koji se javlja između PMOS i NMOS tranzistora kada su oni simultano aktivni, tj. struja protiče od napajanja ka masi kada oba tranzistora istovremeno provode. Treći član se javlja zbog struje curenja,, i zavisan je od tehnologije. I leakage Treba istaći da dominantan uticaj ima prvi član, što znači da ako želimo da minimiziramo potrošnju, a da pri tome zadržimo neophodnu funcionalnost, treba da minimiziramo p, C, V, f. (Kod CMOS digitalnih kola disipaciju snage čine dinamička (prvi član) i statičke komponente (drugi i treći član). S obzirom da je dinamička potrošnja proporcionalna sa kvadratom V, a statička proporcionalna sa V, evidentno je da smanjenje voltage ( V th V DD t -a vodi ka najefikasnijoj redukciji potrošnje energije. Skaliranjem napona napajanja, treshold ) tranzistora treba takođe da se skalira kako bi se sačuvale performanse. Na žalost, ovo skaliranje dovodi do povećanja struje curenja (leakage current) koja postaje dominantni faktor od uticaja na performanse kod low-voltage high-performance circuit designs.) U cilju efikasnijeg sagledavanja ove problematike uvešćemo proizvod power-delay koji se može interpretirati kao iznos potrošene energije pri svakom komutacionom događaju (ili prelazu). Ovaj proizvod je posebno koristan kod upoređivanja različitih stilova realizacije kola sa tačke gledišta disipacije. Pri ovome se usvaja da je kod disipacije snage važna samo prva komponenta, pa shodno tome Ptotal 2 energija _ po _ prelazu = = Cefektivno VDD f gde je C = p C. efektivno t L CLK DD t L DD DD CLK Projektovanje kola i tehnološka razmatranja Postoji veći broj opcija dostupnih kod izbora osnovnih kola i topologija za implementaciju razližitih logičkih i aritmetičkih funkcija. Odluke o izboru se donose između: statičke dinamičke implementacije pass-gate konvencionalnih CMOS logičkih stilova sinhroni asinhroni tajming. Drugi nivo izbora se odnosi na različite arhitekturno/strukturne izbore za implementaciju date logičke funkcije. Na primer za realizaciju sabirača se može koristiti jedna od sledećih topologija: a) ripple-carry; b) carry-select; c) carry-lookahead. 9

10 Arhitekturni pristupi za smanjenje potrošnje U nekoj gruboj aproksimaciji snaga koja se disipira na nekom logičkom bloku data je sledećom relacijom 2 P = C V f dis log DD CLK gde je: C log - efektivno komutirana kapacitivnost logičkog kola V DD - napajanje logičkog kola f CLK - taktna frekvencija rada kola Sa ciljlem da ukažemo kako arhitekturni pristupi utiču na potrošnju energije analiziraćemo strukturu deo staze podataka jednog mikroprocesora koju čine sabirač i komparator implementirani u 2 μm CMOS tehnologiji. Ako, u najgorem slučaju, pri naponu napajanja V DD = 5V, kašnjenje signala kroz sabirač, komparator i leč aproksimativno iznosi 25 ns, tada u najboljem slučaju, taktna frekvencija rada dela staze podataka sa Slike D2.1 može biti 40 MHz. Snagu koja se disipira u tom slučaju obeležićemo sa i ona iznosi P ref P ref = C ref V 2 ref f ref gde je u konkretnom slučaju V = 5V a f = 1/25 ns. ref ref A B L E č L E č + K O M P A R A T O R A+B= C CLK C L E č Slika D2.1 Deo staze podataka Jedan od načina da se sačuva propusnost (throughput) a da se pri tome redukuje napon napajanja je da se koristi paralelna arhitektura. Na Slici D2.2 prikazana je struktura kola koja ispunjava zahteve u pogledu propusnosti a bazira se na korišćenju paralelizma. Kao što se vidi sa Slike D2.2 koriste se dva identična sabirača i komparatora. 10

11 A L E ^ B L E ^ + KOMPARATOR A=B C CLK L E ^ MUX L E ^ Sel L E ^ + KOMPARATOR A=B L E ^ Slika D2.2 Paralelna implementacija dela staze podataka Pošto zahtevi za brzinom rada sabirača, komparatora i leča su sada smanjeni sa 25 ns na 50 ns, napon napajanja se može redukovati sa 5V na 2.9V (vidi Sliku D2.3). 4 normalizovano ka{njenje V V DD [V] Slika D2.3 Karakteristike kašnjenja logičkih CMOS kola (gruba aproksimacija) Kapacitivnost staze podataka je povećana zbog potrebe rutiranja za faktor 2.15 (idealno bi bilo za faktor 2) tako da je ukupna disipirana snaga sada 11

12 P = par = C par 2 ( 2.15 C ) ( 0.58 V ) = 0.36 P ref ref V 2 par f par ref f ref 2 Pristup koji se bazira na redukovanju napajanja koristeći paralelizam ima za posledicu povećanje površine čipa i kao rešenje je dobro kada ograničenja sa aspekta površine čipa ne postoje. U opštem slučaju paralelizam uslovljava ekstra rutiranje koje mora da se minimizira. Drugo moguće rešenje se zasniva na korišćenju protočne arhitekture, kako je to prikazano na Slici D2.4. Sa dva dodatna protočna leča, kritični put postaje max[ T, T ] i obezbeđuje da sabirač i komparator rade pri manjim brzinama. sab comp A L E ^ B L E ^ + L E ^ KOMPARATOR izlaz C L E ^ L E ^ CLK Slika D2.4 Protočna implementacija dela staze podataka U rešenju sa Slike D2.4 kašnjenja kroz sabirač i komparator su jednaka, što obezbeđuje da se napajanje redukuje sa 5V na 2.9V a da pri tome propusnost ostane nepromenjena. Ipak dodavanjem novih protočnih lečeva (u odnosu na Sliku 1) povećava se površina čipa, a kao posledica aproksimativno efektivne kapacitivnosti je za faktor Snaga koja se troši od strane protožne obrade podataka sa Slike D2.4 iznosi sada 2 P = C V f = pro pro ( 1.15 C ) ( 0.58 V ) = 0.39 P ref ref pro pro ref 2 f ref Sa ovom arhitekturom snaga se smanjuje za faktor od aproksimativno 2.5 u odnosu na Sliku D2.1, ali treba naglasiti da površina dela staze podataka nije drastično povećana. Kao logički se sada nameće zaključak do kakvih se rezultata dolazi implementacijom arhitektura koje se zasnivaju na kombinovanim korišćenjem tehnika protočnosti i paralelizma. Strateški posmatrano, protočno-paralelnu arhitekturu (udvostručeni paralelizam i udvostručena protočnost) karakteriše: redukcija kritičnog puta a time i povećanje brzine rada za faktor 4 smanjenje napona napajanja sve dok se kašnjenje ne poveća za faktor 4 (vidi Sliku D2.3). Potrošnja snage u ovom slučaju iznosiće 12

13 P = parpro 2 ( 2.5 C ) ( 0.4 V ) = 0.2 P = Cpar ref ref pro V 2 parpro ref f parpro f ref 2 Paralelno-protočna implementacija rezultira redukciji snage od 5 puta. A B C CLK SLIKA 4 M U X izlaz SLIKA 4 Sel Slika D2.5 Paralelno-protočna staza podataka Uporedni rezultati koji se odnose na različite arhitekture opisane na primeru jednostavne staze podataka koju čine sabirač i komparator su date na Slici D2.6. Tip arhitekture Napon Površina Snaga jednostavna staza podataka (Slika 1) 5V 1 1 protočna staza podataka (Slika 4) 2.9V paralelna staza podataka (Slika 2) 2.9V paralelno-protočna staza podataka (Slika 5) 2.0V Slika D2.6 Uporedni pregled karakteristika različitih staza podataka Optimalni izbor napona napajanja Već smo uočili da se iznos kašnjenja kroz digitalna kola povećava kako se smanjuje napon napajanja. Pri ovome smo naglasili da kada se napon napajanja smanjuje kompenzovanje povećanog kašnjenja kola se može uspešno rešiti korišćenjem paralelnih arhitektura. Ali treba pri ovome naglasiti da kada se napon napajanja približi threshold vrednosti kašnjenje kola se drastično povećava. Projektantima kola se sada postavlja sledeći zadatak: Kako odrediti optimalnu vrednost napona napajanja pri kojoj dodatno ugrađeni paralelizam ne daje više očekivane efekte. Da bi odredili vrednost napona koristićemo se modelom koji je definisan sledećom jednačinom: 13

14 f Power N gde je: N - broj paralelnih procesora, C - kapacitivnost jednog (single) procesora, ref ip 2 ref 2 ref 2 ( N ) = N Cref V + Cip V + C erface V f ref f N C - interprocesorski komunikacioni overhead kao rezultat uvedenog paralelizma (upravljanje i rutiranje) C int - overhead interfejsa koji se ne smanjuje sa brzinom ako se u arhitekturu uvede više paralelizma erface U opštem slučaju C i su funkcije N, a poboljšanja sa tačke gledišta potrošnje u odnosu ip C int erface na referentni slučaj (bez uvođenja paralelizma) se mogu izraziti kao ( N ) C ( N ) 2 Cip int erface 1 V P normalized = + + N Cref Cref Vref Pri malim naponima napajanja (blizu threshold-a)broj procesora (a time i overhead) obično raste 2 brže nego što član V opada što dovodi da se sa daljim smanjenjem napona napajanja potrošnja povećava. Drugo ograničenje koje se odnosi na smanjenje napona napajanja dolazi od noise-margin ograničenja, pri čemu mora biti ispunjen sledeći uslov Vnoise m arg in Voptimal Vcritical Na Slici D2.7 prikazan je dijagram disipirane snage normalizovan na 1 za = 5V u funkciji V DD -a za različita arhitekturna rešenja kod 2.0 μm CMOS tehnologije. int V DD 1 normalizovana disipirana snaga paralelno-proto~na staza podataka paralelna staza podataka IIR filtar sedmog reda 0.1 V DD [V] Slika D2.7 Optimalni napon rada Analizom Slike D2.7 se može zaključiti da je optimalni napon relativno nezavisan i za 2.0 μm CMOS tehnologiju iznosi 1.5V. Na Slici D2.8 prikazane su normalizovane vrednosti površina/snaga za različite napone napajanja arhitekture sa Slike D

15 arhitektura napon paralelna protočno-paralelna IIR filtar površina/snaga površina/snaga sedmog reda (Slika 2) (Slika 5) površina/snaga 5 1/1 1/1 1/1 2 6/ / / /0.13 7/0.12 7/ / /0.11 dostiže se rekurzivno usko grlo Slika D2.8. Normalizovana površina/disipacija za različite napone napajanja Strategija za smanjenje potrošnje U zavisnosti od tipa dgitalnih kola, sinhroni ili asinhroni, koriste se različite strategije. Logika koja se bazira na sinhronim kolima koristi registre (lečeve) koji se ubacuju između stepena koji vrše izračunavanje. Stepeni se realizuju kao kombinaciona logika a pamćenje informacije u lečevima se vrši nailaskom svakog taktnog impulsa. Da bi se smanjila potrošnja logike zasnovane na sinhronom dizajnu neophodno je minimizirati komutatorske aktivnosti. Smanjenje ovih aktivnosti se obično izvodi tako što se komutatorske aktivnosti izvršne jedinice ne izvode kada kolo ne obavlja željene aktivnosti. Ovo je važan aspekt jer logički moduli mogu komutirati i trošiti energiju čak i slučaju kada se oni aktivno ne koriste. To znači da dizajn sinhronih kola treba da se bazira na specijalnim kolima kao i rešenjima kojima se detektuje neaktivnost nekog logičkog modula a zatim uključuju power-down kola pomoću kojih se redukuje napon napajanja tog dela logike. Kod asinhronih digitalnih kola situacija je nešto drugačija jer se njihov princip rada bazira na konceptu power-down kada ta kola nisu aktivna. Skaliranje napona napajanja Energija koja se troši po prelazu, ili power-delay proizvod, kod CMOS kola proporcionalna je sa 2 V. Na Slici D2.9 prikazan je dijagram normalizovanog power-delay proizvoda za dva kola (ringoscilator i 8-bitni ripple-carry sabirač). 15

16 bitni ripple-carry sabira~ stepeni ring-oscilator kvadratna zavisnost V DD [V] 1 2 Slika D2.9 Power-delay proizvod za dva različita kola 5 Napomena: Slika D2.9 je data u log-log razmeri Kao što se vidi sa Slike D2.9 smanjenje napona napajanja kod date logičke familije ima za efekat kvadratno poboljšanje power-delay proizvoda. Na žalost, smanjenje napona napajanja ima svoju cenu. Na Slici D2.10 prikazan je efekat koji ima smanjenje V DD -a na kašnjenje za različita logička kola (složenost logičkih kola u zavisnosti od funkcije koju ona obavljaju se menja od 56 do tranzistora, ali je bitno to što sve krive ukazuju na to da postoji identična zavisnost). 16

17 7.5 7 normalizovano ka{njenje generator taktnih impulsa sabira~ 24-bitni mno`a~ 20-bitna staza podataka 1.0 V DD [V] Slika D2.10 Karakteristike kašnjenja za različita logička kola za 2.0 μm CMOS tehnologiju Napomena: Složenost kola u odnosu na broj tranzistora je sledeća - 20-bitna staza podataka ima ugrađeno tranzistora, 24-bitni množač ima tranzistora, sabirač ima 256 a generator taktnih impulsa 56 tranzistora. V DD Prosto rečeno, smanjenjem -a povećava se kašnjenje koje je drastično kada se približavamo threshold naponu. Tačna analiza kašnjenja je složena zbog nelinearne karakteristike CMOS gejta, ali za grubu aproksimaciju prvog reda važi da je CL VDD CL VDD Td = = I W μ C ( ) 2 OX VDD VT L Dok power-delay produkt za 8-bitni sabirač izveden u 2.0 μm CMOS tehnologiji za različite stilove (pass-tranzistor logic, conventional static, dynamic logic) je prikazan na Slici D

18 power-delay proizvod (pj) dynamic logic conventional static logic pass-transistor logic 5 8-bitni sabira~ 2.0 μm 3 ka{njenje (ns) Slika D2.11 Power-delay proizvod za različite stilove U fazi optimizacije arhitekture za low-power dizajn treba tretirati pri tome menjati arhitekturu tako da se održi konstantna propusnost. V DD kao promenljivu veličinu a D2.2 Baterije Podela U zavisnosti od načina upotrebe (korišćenja) baterije delimo na: primarne- namenjene da se pune jedanput, koriste se dok se ne isprazne, a nakon toga se bacaju sekundarne imaju mogućnost da se ponovo pune i prazne više puta Osobine Ukazaćemo sada na nekoliko ključnih karakteristika baterija važnih sa aspekta eksploatacije. 1. Energy density je mera koja pokazuje koliko energije baterija može da čuva u zadati volumen ili masu. Ova mera se može iskazati na sledeća dva načina: Volumetrijska energy density se obično meri u watthours per liter (Wh/L) Gravimetrijska energy density se meri u watthours per kilogram (Wh/kg) 2. Memory effect - Neke od sekundarnih baterija poseduju osobinu poznatu kao memory effect. Naime, ako se ove baterije koriste dok se u potpunosti isprazne, tada se one mogu ponovo napuniti do 18

19 njihovog početno deklarisanog kapaciteta. No ako su ove baterije delimično isprazne pre ponovnog punjenja one pokazuju osobine redukcije energetskog kapaciteta. Nakon većeg broja punjenja i pražnjenja ove baterije će postati potpuno beskorisne. 3. Cycle life ukazuje na broj ciklusa punjenja i pražnjenja koju baterija može da podnese pre nego što postane neupotrebljiva. 4. Working voltage dostupan napon od jedne čelije koji je odredjen hemijskim sastavom baterije. 5. Self discharge brzina sa kojom se baterija sama po sebi prazni kada je neiskorišćena. Tehnologija baterije U praksi obično srećemo sledeće tipove baterija: Ni-Cd najčešće korišćen oblik. Ove baterije se karakterišu high-energy current i koriste se za ugradnju u uredjajima koji mogu da pokretaju male motore. Memorijski efekat, high-selfdischarge rate, i low-energy density su loše osobine ovih baterija, što ih čini neupotrebljivim za cellular phones i notebook computers. Alkaline- imaju energy-density nešto bolju od Ni-Cd, i uglavnom se koriste kao baterije za jednokratnu upotrebu. Postoje i recharchable tip ovih baterija ali njihova energy-density brzo opada sa višestrukim punjenjem. Ni-MH Nickel Metal Hybride baterije se uobičajeno koriste kod cellular phones i notebook computers jer je njihova cena prihvatljiva, a energy-density je relativno visoka. Na žalost selfdischarching rate je visoka što ih čini neogodnim za odredjene aplikacije. Ovaj tip baterije je dugo bio most izmedju Ni-Cd i lithium ion-skih, ali je izgubio primat zbog pada cena lithium-skih baterija. Lithium-ion- karakteriše se velikim energy-density. Standardno se koriste kod cellular-nih telefona i notebook računara. Veoma su tanke (do 0.5 mm). Zadnjih godina cena im je drastično pala. Lithium polymer karakteriše se high energy density i mogu se formirati (oblikovati) u različite oblike čime se izvrsno uklapaju sa formom (oblikom) proizvoda. Photovoltaic cells- konvertuju ambijentalno svetlo u električnu energiju i mogu se koristiti za lowpower devices kakvi su kalkulatori. Fuel cells konvertuju hydro-carbon u električnu energiju i imaju veoma visoku energy density. Ponovno punjenje ovih ćelija slično je punjenju upaljača. Imaju od 3 do 5 puta bolju energy density u odnosu na lithium ion-ske baterije, ali su nepraktične za apikacije koje se odnose na prenosive elektronske uredjaje. 19

20 Kritične metrike za tehnologiju baterije Ni-Cd Ni-MH Li-ion Li-polymer radni napon (V) 1,2 1,2 3,6 3 energy density (Wh/L) energy density (Wh/kg) cycle life memorijski efekat da da ne ne cena ($/Wh) 1 1,3 2,5 2 Implementacija proizvoda Najbolja tehnologija baterije za prenosive elektronske uredjaje se odredjuje u fazi procesa analize proizvoda. Projektant mora pri tome da napravi pravi balans izmedju high energy capacity, male dimenzije baterije (small form factor), i cene, kako bi napravio uspešan proizvoodni koncept. Da bi rešenje učinio realnim, proizvodjač mora da sagleda formu (oblik) baterije, zahteve za ponovnim punjenjem /zamena, mehaničku montažu, konektore, i power management elektronikom. Postoji mnogo oblika (formi) baterija. Standardne forme su AA, AAA, C i D celije, lithium-ske button cell baterije koje se takoreči mogu kupiti u svakoj prodavnici. Ovi tipovi baterija su poželjni ako želimo da one budu lako zamenljive od strane širokog kruga korisnika. Sa druge strane, lithium ion-ske i Ni-MH su dostupne u razne forme (pravougaone, ne cilindrične, i dr.) kao i neke forme koje se prave po narudžbini. D2.3 Mikrokontroleri vs mikroprocesori Bez sumnje najvažniji faktor koji je imao dominantni uticaj na masovno korišćenje računara u industriji predstavlja razvoj mikroprocesora. Mikroprocesor je u suštini računar na čipu. Da bi obavili koristan zadatak, sistemi zasnovani na mikroprocesorima prve generacije zahtevali su ugradnju velikog broja dodatnih komponenata (oscilatore, adresne lečeve, lečeve za podatke i druga LSI kola relativno male složenosti). Kasnije, napredak na polju VLSI tehnologije doveo je do proizvodnje mikroračunarskih sistema kod kojih su sva neophodna kola bila ugradjena (embedded) u relativno mali broj pratećih integrisanih kola (tipično su to bili integrisane CPU jedinice relativno velike složenosti, kontroleri prekida, DMA kontroleri, tajmeri, UART-i, programibilni paralelni periferni interfejsi (PIA), i dr.). Kao plod dalje integracije nastaju jedno-čipni mikrokontroleri koji u sebi imaju ugradjeno analogni i digitalni ulazno-izlazni podsistem, tajmere i brojače, LCD drajvere i druge logike.time su ova kola, takoreči bez dodatnog hardvera, sada bila u stanju da obavljaju relativno složene upravljačke funkcije koje se odnose na rad sistema u realnom vremenu. Primeri ovakvih tipova mikrokontrolera su Intel 8051 i 8096, Motorola MCH 68HC11, Microchip PIC 18F1x20, i dr. Ovi čipovi su pre svega razvijeni za potrebe automobilske industrije, procesne industrije, elektromedicine, telekomunikacija, robe široke potrošnje, i td. Mikrokontrolere delimo na 4-, 8-, 16-, i 32-bitne. Ilustracije radi, 4-bitni mikrokontroleri uglavnom se koriste u automatima za igru, 8-bitni kao programatori u veš mašinama, 16-bitne srećemo u sistemima za upravljanje klimom u kolima, a 32-bitni se primenjuju da obave složene telekomunikacione funkcije u mobilnim bežičnim uredjajima. Osnovne karakteristika mikrokontrolera su: 20

21 1. usadjeni (built-in) ROM- najčešće kapaciteta 4 kb na samom čipu u kome se čuva upravljački program, 2. usadjeni RAM- najčešće kapaciteta 128 B, koji se koristi za čuvanje privremeno promenljivih, 3. CPU koji je, zbog efikasnijeg korišćenja ograničene programske memorije, u stanju da izvršava instrukcije koje manipulišu sa jediničnim bitovima, 4. veliki broj mikrokontrolera ima usadjeno koprocesor Boole-ovog tipa. Ovaj koprocesor zajedno sa CPU-om ima mogućnost da pojednostavljeno implementira Boole-ove izraze koji se veoma često javljaju u upravljačkim aplikacijama, 5. mikrokontroleri imaju usadjene ulazno-izlazne portove koji se koriste za efikasno upravljanje, kao i jednostavnu i laku interakciju sa spoljnim uredjajima. U daljem tekstu ukazaćemo na osnovne karakteristike mikrokontrolera bez ulaženja u detalje koji se odnose na specifičnosti njihovih realizacija. Šta su mikrokontroleri? Svi današnji računari su realizovani od istih gradivnih blokova. To su centralni procesor ili CPU, memorijski podsistem, ulazno-izlazni podsistem, generatora taktne pobude, i sistemska magistrala koja medjusobno povezuje pomenute gradivne blokove. Sistemska magistrala se sastoji od adresne magistrale, magistrale podataka, i upravljačke magistrale. Najveći broj standardnih računara, kakav je na primer PC mašina, se smešta u jedistveno kučište. Periferije kakvi su štampač, displej, skener, tastatura, miš, i druge se povezuju na računarski sistem preko konektora koji su montirani na kučištu. Druge sistemske komponente kakvi su diskovi, memorije proširenja, mrežne kartice i dr., su locirane u samom kučištu ili pak na osnovnoj ploči (motherboard) računara. Mikroprocesor je integrisano kolo ili čip lociran na osnovnoj ploči koje u suštini predstavlja CPU računarskog sistema. Uglavnom svet PC mašina je taj koji je bio glavni pokretač razvoja sistema baziranih na mikroprocesorima. Imajući u vidu ovakve zahteve za mikroprocesore kažemo da su u novije vreme postali relativno specijalozovane komponente, posebno pogodne (prilagodjene) za veoma brzo manipulisanje podacima. No kod odredjenih aplikacija veoma često je neophodno ugraditi odredjeni iznos lokalnog procesiranja na licu mesta procesa. Tako na primer, automat za izdavanje karata na autobuskim stanicama treba da ima odredjeni nivo autonomnosti u radu (pameti) tako da za unete podatke preko lokalne tastature sam izračuna cenu karte i izda je. Zbog ovakvog načina rada računarske mašine opšte namene ne predstavljaju dobro rešenje (izbor) za ovakav tip aplikacije, prvenstveno zbog velikog gabarita (dimenzije) mašine, a takodje i zbog visoke cene. Upravo su ovo idealne aplikacije za mikrokontrolere. Nasuprot mikroprocesorima, mikrokontroleri su više orijentisani ka postizanju superiornijih performansi kod aplikacija namemjenih upravljanju, bezbednosti i pouzdanosti u radu. Imajući u vidu da je cena uredjaja baziranih na mikrokontrolerima od izuzetne važnosti za krajnjeg korisnika, mikrokontroleri su integrisali na čipu veliki broj standardnih periferala, kontrolere raznih tipova uredjaja, kao i memoriju. Na osnovu prethodnog mogli bi da kažemo sledeće: Mikrokontroler je računar na čipu. On sadrži skoro sve osnovne gradivne blokove računarskog sistema (CPU, ROM, RAM, U/I periferije tipa AD i DA konvertore, serijske komunikacione interfejse (UART), paralelne interfejs portove (PIA), tajmere/brojače, LCD drajvere, i dr.) koje se mogu integrisati na jedinstvenom čipu. Danas su mikrokontroleri najviše prodavan tip procesora. Ne bez razloga projektanti sistema relativno male složenosti kažu da su to čipovi upravo projektovani po njihovoj meri, tj. čipove o kojima sanjaju. Nasuprot mikroprocesorima, cena mikrokontrolera je veoma niska (do nekoliko dolara u odnosu na cenu od stotinu dolara kakva je cena mikroprocesora). Za odredjene aplikacije niska cena mikrokontrolera je idealno rešenje. Taktna frekvencija na kojoj rade, obim adresibilne memorije, i obim podataka sa kojima manipulišu varira od jednog mikrokontrolera do drugog, šta više i kod jednog istog proizvodjača, tako da je posao projektanta da izabere najbolji mikrokontroler za datu aplikaciju. 21

22 Drugi važan razlog korišćenja mikrokontrolera, u odnosu na PC mašinu, predstavlja njegova kompaktnost koja se može iskazati konstatacijom: Računar na jednom čipu. Svi mikrokontroleri imaju usadjenu memoriju na čipu kao i veći broj ulazno-izlaznih interfejs linija. Veliki broj mikrokontrolera poseduje AD i DA konvertore, impulsno-širinski modulisane (PWM) generatore, sofisticirani sistem prekida, veći broj seriskih i paralelnih ulazno-izlaznih portova, fleksibilni sistem tajmer-brojač dogadjaja, LCD drajver, i dr. Mikrokontroleri se danas koriste u embedded sistemima za upravljanje raznim funkcijama koje sistem treba da obavi. Na primer, u današnjim automobilima ugradjuje se veliki broj (reda 100) mikrokontrolera koji se koriste za upravljanje radom kočionog sistema, ubrizgavanjem goriva, klima sistemom za grejanje-hladjenje, prikazom informacije na pokaznoj tabli, i td. Drugim rečima, jedno-čipni računar omogućava projektantima da ugrade računar u bilo kom uredjaju koji postavlja makar i minimalne zahteve za odredjenim iznosom izračunavanja. Mikrokontroleri se veoma često koriste i u situacijama kada treba da se veoma brzo reaguje na spoljne signale- posebno ako se takvi sistemi koriste za rad u realnom vremenu- pa zbog toga koriste procesiranje bazirano na obradu prekida. Mikrokontroleri mogu takodje da rade po nadzorom operativnih sistema za rad u realnom vremenu (RTOS) čiji je obim manji, pri čemu ovakvi sistemi bolje reaguju (za kreće vreme) na odzive sistema koji se odnose na rad u realnom vremenu, nego što je to slučaj sa operativnim sistemima opšte namene koji se instaliraju na večim mašinama kakve su recimo PC mašine. Mikrokontroleri: tipovi arhitektura i blok šema Arhitekture mikrokontrolera se mogu podeliti na sledeća dva tipa: 1. Harvard tip- karakteriše se razdvojenim memorijama za program i podatke. Svaki tip memorije ima svoj sopstveni fizički adresni prostor i koristi sopstvenu internu adresnu magistralu. Prednost ove arhitekture je ta što se pristup programskoj memoriji i memoriji za podatke ostvaruje konkurentno. Obvakvim pristupom se skraćuje ukupno vreme izvršenja programa. Proizvodjači mikrokontrolera Microchip, Zilog, National Semiconductor i Cypress zasnivaju svoje proizvode na Harvard arhitekturi, mada postoje neke neznatne ali važne razlike u pristupima kako ove kompanije implementiraju arhitekturu. Arhitekture ovih mikrokontrolera su tipične za RISC pristup. 2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti adresni prostor. To znači da se instrukcioni kôd može izvršavati kako iz programske tako i iz memorije za podatke. Poznati proizvodjači ovih tipova mikrokontrolera su Intel, Atmel, Motorola i dr. Ključna osobina ovih proizvoda je povećan broj instrukcija i adresnih načina rada koji u kombinaciji sa relokatibilnim softverskim magacinom (stack) omogućavaju efikasno korišćenje programskog jezika visokog nivoa C. Arhitekture ovih mikrokontrolera su tipične za CISC pristup. Mikrokontroleri i digitalni signal procesori (DSP) su poznati tipovi aplikaciono integrisanih procesora (ASIP). U suštini mikrokontroler je mikroprocesor koji je optimiziran za embedded upravljačke aplikacije. Kod ovakvih aplikacija se obično nadgledaju (monitorišu) i postavljaju brojni jedno-bitni upravljački (control) signali, a pri tome se ne obavlja neko intenzivno izračunavanje nad podacima. Zbog ovoga mikrokontroleri imaju jednostavne staze podataka (datapaths) koje su prilagodjene za brzo izvršenje operacija na nivou-bita (bit manipulation) kao i operacija čitanja i upis sadržaja bitova sa spoljnih pinova čipa. Pored jednostavne CPU, na istom čipu, mikrokontroleri imaju inkorporirano nekoliko periferalnih komponenata tipične za upravljačke aplikacije, kakve su serijske komunikacione periferije, tajmere/brojače dogadjaja, PWM generatore, AD i DA konvertore, i dr. Pored ostalog programska memorija i memorija za podatke su takodje inkorporirane na samom čipu. 22

23 Inkorporiranjem periferala i memorije na istom integrisanom kolu smanjuje se broj dodatnih integrisanih kola koje treba ugraditi u sistem, što rezultira kompaktijoj implementaciji i globalno posmatrano smanjenoj potrošnji, tj rešenje postaje tipa low-power. Činjenica da se programskim putem može direktno pristupati spoljnim pinovima čipa omogućava da program može lako da monitoriše stanje senzora, postavlja u definisano stanje aktuatore, i vrši prenos podataka ka/iz drugih uredjaja. Veliki broj proizvodjača naziva mikrokontrolere embedded procesore. Razlika izmedju embedded procesora i mikrokontrolera često nije jasna, mada se u stručnoj literaturi termin embedded procesor najčešće koristi za veće (32-bitne) procesore, a termin mikrokontroler za manje (4-, 8-, i 16-bitne) procesore. Opšti blok dijagram mikrokontrolera je prikazan na slici D2.12. memorijski sistem RAM bajt-adresibilni ROM Fleš EEPROM centralna procesorska jedinica -CPU - sistem za analognodigitalnu konverziju sistem za analognodigitalnu konverziju Unapredene karakteristike: sistem distribuiranog procesiranja impulsno širinska modulacija Dodatne karakteristike: DA i AD konvertori sat realnog vremena LCD interfejs... sistem za serijsku komunikaciju sistem za proširenje port A port B port X... Mikrokontroleri u odnosu na mikroprocesore Slika D2.12 Blok dijagram mikrokontrolera Da bi ukazali na to kakva razlika postoji izmedju mikroprocesora i mikrokontrolera analiziraćemo sliku D2.13 koja predstavlja jedan detaljan blok dijagram mikroracunarskog sistema. Dok je mikroprocesor (CPU) integrisana komponenta na jedinstvenom čipu, sam mikrokontroler,na jedinstvenom cipu ima integrisano CPU, RAM i ROM memoriju i ostale ulazno- 23

24 izlazno orijentisane gradivne blokove (paralelni i serijski interfejsi, tajmeri, logika za prihvatanje prekida, A/D i D/A konvertore i dr.). Struktura mikroprocesora Slika D2.13. Detaljni blok dijagram mikroračunarskog sistema Na slici D2.14 prikazan je blok dijagram mikroprocesora.cpu čine sledeći blokovi:alu, PC, SP, odredjeni broj radnih registara, kola za taktovanje i sinhronizaciju i kola koja se koriste za prihvatanje zahteva za prekid. Slika D2.14: Blok dijagram mikroprocesora(cpu-a) 24

25 Da bi se kompletirao mikroračunarski sistem pored mikroprocesora potrebno je dodati ROM, RAM memorijske dekodere, oscilator, odredjeni broj ulazno-izlaznih uredjaja kakvi su paralelni i serijski portovi za podatke, A/D i D/A konvertore i drugo. Pored ulazno-izlaznih uredjaja specijalne namene, često se javlja i potreba da se ugrade i kontroleri prekida, DMA kontroleri, kao i brojaci/tajmeri čiji je zadatak da oslobode CPU-a od obavljanja U/I aktivnosti. Kada se u sistem instaliraju i uredjaji za masovno memorisanje (hard disk, CD drajver), kao i tastatura, mis i CRT displej, tada se taj ''mali racunar'' moze koristiti za razlicite aplikacije opste namene. Osnovna namena CPU-a je da pribavlja podatke, obavlja izračunavanja nad podacima i memorise rezultate izračunavanja na disku, kao i da za potrebe korisnika prikaže te rezultate na displeju (CRT, TFT, LED i dr.). Programi koje koristi mikroprocesor memorisani su na disku odakle se čitaju i smeštaju u RAM. Deo programa, najčešće malog obima, se obično smešta i u ROM-u. Struktura mikrokontrolera Blok dijagram mikrokontrolera prikazan je na slici D2.15. Mikrokontroler je u suštini pravi ''mali računar'' na čipu, koji sadrzi sve gradivne blokove CPU-a (ALU, PC, SP, registre i dr.), ali takodje i RAM, ROM, paralelne i serijske U/I portove, generatore takta i dr. Kao i mikroprocesor, i mikrokontroler je uredjaj opšte namene, koji pribavlja podatke, obavlja ograničenu obradu nad tim podacima, i upravlja svojim okruženjem na osnovu rezultata izračunavanja. Mikrokontroler u toku svog rada koristi fiksni program koji je smešten u ROM-u i koji se ne menja u toku životnog veka sistema. Slika D2.15. Blok dijagram mikrokontrolera Mikrokontroler koristi ograničen skup jedno- ili dvo-bajtnih instrukcija koje se koriste za pribavljanje programa i podataka iz interne memorije. Veliki broj ulazno-izlaznih pinova mikrokontrolera se može koristiti za više namena, što se softverski definiše. 25

26 Mikrokontroler komunicira sa spoljnim svetom (pribavlja i predaje podatke) preko svojih pinova, pri čemu je arihitektura i skup instrukcija projektovan za manipulisanje sa podacima obima bajt ili bit. Razlike izmedju mikroprocesora i mikrokontrolera Razlike su brojne ali one koje su najvaznije su sledeće: 1. Mikroprocesori najcešće CISC tipa za kopiranje podataka iz spoljne memorije u CPU koriste veći broj op-kôdova, dok mikrokontroleri jedan ili dva. 2. Za manipulisanje sa podacima tipa bit mikroprocesori koriste jedan ili dva tipa instrukcija, dok kod mikrokontrolera taj broj je veći. 3. Mikroprocesori su projektovani za brzi prenos podataka iz programa sa spoljno adresiranih lokacija u čip, dok se kod mikrokontrolera brzi prenos bitova obavlja u okviru čipa. 4. Mikrokontroler moze da funkcioniše kao računar bez dodataka spoljnih gradivnih blokova (memorije i U/I uredjaja), dok operativnost mikroprocesora bez spoljne memorije i U/I podsistema nije moguća. D2.4 Tajmeri i brojači kao gradivni blokovi mikroproceosra i mikrokontrolera Tajmer-kolo je periferno kolo koje je u stanju da meri vremenske intervale. Ovakvo kolo se može koristiti da: a) generiše dogadjaje u specifičnim vremenskim trenucima. Tipične aplikacije su one koje se odnose na uključenje crvenog/žutog/zelenog svetla na semaforu za specificirani vremenski period, recimo crveno svetlo traje 20 s, žuto 3 s, a crveno 15 s. b) odredi vreme trajanja izmedju dva spoljašnja dogadjaja. Obično aplikacije ovakvog tipa srećemo kod merenja brzine kretanja vozila, tj., meri se vremenski interval koji je potreban da bi limuzina prešla izmedju dva senzora na putu, pri čemu su senzori razmaknuti za poznato rastojanje. U principu treba praviti razliku izmedju pojmova tajmer i brojač, a ona se sastoji u sledećem: 1. Tajmer je kolo koje meri vreme putem odbrojavanja taktnih impulsa poznate periode koji se dovode na ulazu ovog kola. Tako na primer, ako je perioda pobudnog taknog impulsa 1 μs, a izbrojano je 5000 pobudnih taktnih impulsa, to znači da je prošlo vreme od 5 ms. 2. Brojač predstavlja generalnija verzija tajmera. Naime, umesto da odbrojava taktne impulse generisani od strane internog oscilatora CPU-a, brojač broji impulse koji su generisani od strane nekog drugog, obično spoljneg, generatora signala. Tako na primer, brojač se može koristiti za brojanje broja vozila koja prolaze na nekoj deonici autoputa, pri čemu je svaki prolaz detektovan od strane odgovarajučeg senzora. Brojač se takodje može koristiti i za brojanje ljudi koji ulaze ili izlaze u/iz neke prostorije. Veoma često u cilju merenja brzine okretanja nekog tela moguće je kombinovati korišćenje brojača i tajmera. Tako na primer, kod merenja brzine kojom se okreče rotor neke mašine tajmer se može koristiti za generisanje referentnog vremenskog intervala merenja, recimo 1 s, a brojač za merenje broja impulsa koji odgovaraju ukupnom broju okretaja rotora u trajanju od 1 s. Kada projektant hoće da koristi tajmer-kolo neophodno je prvo da programer konfiguriše njegove ulaze, a zatim da nadgleda njegove izlaze, tj. da ga konfiguriše kao tajmer ili brojač. Da bi se obavio ovaj zadatak potrebno je poznavati internu strukturu tajmer-kola, koja može u značajnoj meri da varira od jednog do drugog proizvodjača. Standardne strukture koje se odnose na izvodjenje tajmer-kola prikazane su na slici D

27 Slika D2.16. Strukture tajmer-kola: (a) osnovni tajmer; (b) tajmer/brojač dogadjaja; (c) tajmer sa krajem brojanja: (d) 16/32-bitni tajmer; (e) tajmer sa preskalerom Napomena: CLK- ulaz taktnog signala (impulsi generisani od strane strane internog oscilatora CPU-a); kb- izlaz kraj brojanja; br_ul- brojački impulsi generisani od strane spoljneg izvora; mode- režim rada; = - komparator; MUXmultiplekser Struktura jednostavnog tajmera je prikazana na slici D2.16 a). Tajmer se sastoji od jedan 16-bitni brojač koji inkrementira svoju vrednost nakon nailaska svakog taktnog impulsa. Izlazna vrednost brojača izl odgovara broju pobudnih impulsa CLK nakon što je brojač zadnjeg puta bio resetovan na nulu. Da bi interpretirali ovaj broj kao vremenski interval neophodno je da znamo frekvenciju ili periodu taktnog pobudnog signala CLK. Tajmer sa slike D2.16 a) ima jedan dodatni ulaz kb. Trenutak generisanja impulsa kb na ovom izlazu ukazuje da je brojač dostigao svoju vršnu vrednost brojanja, alternativno nazvana premašaj. Nakon ovog trenutka brojač prelazi u stanje kada je izl postavljen na nuli, a nailaskom narednih pobudnih impulsa CLK produžava sa brojanjem. Obično se izlaz kb dovodi na ulazni pin INTR CPU-a. U tom slučaju uslužna rutina za obradu prekida odbrojava broj puta za koji je ta rutina pozvana, čime se na jedan indirektan način procenjuje protekli vremenski period. Veliki broj mikrokontrolera ima usadjeno tajmere u svoju strukturu, a takodje i specijalne INTR linije za tajmere koje se razlikuju od spoljnih INTR linija. Sa aspekta korišćenja tajmera neophodno je da projektant razume korišćenje sledeća dva parametra. Prvi se odnosi na opseg (range), koji predstavlja maksimalni vremenski interval koga tajmer može da odbroji, a drugi rezolucija, to je minimalni interval koga tajmer može da odbroji. Ilustracije radi, neka je frekvencija signala CLK 10 MHz, to znači da je perioda ovog signala 100 ns, i ako izlaz tajmera u trenutku kada smo njegovu vrednost pročitali iznosi izl = 40000, to znači da je od početka reseta do tog trenutka prošlo 40*10 3 *100*10-9 = 4 ms. S obzirom da je brojač sa slike 1 a) 16- bitni, on može da broji od vrednosti 0 do Za konkretan slučaj merni opseg se kreće od 0 do 65535*100 ns = 6,5535 ms sa rezolucijom od 100 ns. Struktura sa slike D2.16 b) predstavlja nešto unapredjeniju verziju tajmera koji se takodje može konfigurisati kao brojač. Izlaz jedno-bitnog registra mode (postavlja se softverski) se dovodi na ulaz multipleksera MUX. Multiplekser bira tkatnu pobudu za 16-bitni brojač. Kada je selektovan interni ulazni signal CLK struktura sa slike D2.16 b) se ponaša kao tajmer, a za slučaj da je selektovan spoljni signal 27

28 br_ul struktura se ponaša kao brojač odbrojavajući pri tome pojavu impulsa na ulazu br_ul. Signal na ulazu br_ul se obično dovodi od nekog spoljneg izvora, pri čemu nailazak impulsa na ovom ulazu se obično dešava u vremenskim neodredjenim (nedefinisanim) intervalima (kakav je recimo izlaz detektora prolaska vozila na autoputu). To znači da u konkretnom slučaju nije moguće meriti vremenski interval kada se broje impulsi na ulazu br_ul ako njihova perioda nije poznata. Struktura tajmera sa slike D2.16 c) se koristi da informiše sitem kada je istekao pojedini vremenski interval. Registar kraj-brojanja (postavlja se softverski) čuva vrednost broja koja odgovara željenom vremenskom intervalu. Na primer, ako je perioda podudnog signala jednaka 100 ns, a želimo da generišemo trajanje od 4 ms, tada treba da odbrojimo impulsa. Sastavni deo struktura sa slike D2.16 c) je kolo komparatorkoje generiše impuls kb. Impuls kb se koristi da resetuje brojač na nuli i informiše korisnika tajmera da je istekao željeni vremenski interval. Izlaz kb se najčešće vezuje na ulaz INTR CPU-a. prekidna rutina u tom slučaju peuzima odgovarajuće akcije koje se odnose na istek specificiranog vremenskog intervala. Sa ciljem da se poveća efikasnost strukture sa slike D2.16 c), umesto da tajmer broji naviše od vrednosti 0 pa do specificirane (softverski definisane) vrednosti u registar kraj-brojanja se upisuje specificirana vrednost pa se sada umesto tehnike brojanja unapred koristi tehnika brojanja unazad. To znači da se nakon reseta brojač postavlja na specificiranu vrednost odbrojavanja. U konkretnom slučaju broj odbrojavanja se detektuje kada vrednost brojača dostigne vrednost nula. Hardver za detekciju nule se realizuje kao 16-bitno (ulazno) NOR kolo (ili kombinaciona mreža koja obavlja istu funkciju) koje je sa aspekta površine na Silicujumu i potrošnje-energije znatno efikasnije rešenje u odnosu na 16-bitni komparator. Struktura sa slike D2.16 d) obezbedjuje da se tajmer moče konfigurisati kao 16- ili 32-bitni tajmer. Tajmer koristi izlaz kb1 sa svog prvog 16-bitnog brojača naviše kao taktni ulaz za drgi 16-bitni brojač. Ova veza se naziva kaskadna veza vrojača. Na slici D2.16 e) prikazan je tajmer koji u svoju strukturu ima ugradjeno i preskaler. Preskaler je u suštini konfigurabilno kolo koje deli taktni pobudni signal CLK. U zavisnosti od softverski postavljene vrednost u registru mode moduo deljenja preskalera može biti 1, 2, 4, 8, i td. Na ovaj način preskaler se koristi da proširi opseg tajmera po ceni redukcije rezolucije. Tako na primer, ako je frekvencija impulsa CLK jednaka 10 MHz, što odgovara rezoluciji od 100 ns, a moduo deljenja preskalera je 8, to znači da će tajmer biti u stanju da meri vremenski interval u opsegu od 0 do 52,427 ms sa rezolucijom od 800 ns. Strukture tajmera kod različitih mikrokontrolera mogu da variraju. Uglavnom se modifikacije odnose naugradnju dodatnih konfigurabilnih osobina )karakteristika). Jedna od tih osobina se odnosi na ugradnju dodatnog mode-bit flip-flopa koji dozvoljava ili zabranjuje brojanje. Drugakarakteristika se tiče ugradnje flip-flopa koji dozvoljava ili brani generisanje prekida kada brojač dostigne kraj brojanja. D2.5 Multi-core: brojne opcije za poboljšanje performansi Iz teorije je poznato da računar sa dva ili većeg broja jezgara (multi-core) na jedinstvenom čipu može da ima superiornije performanse u odnosu na računar sa jednim jezgrom (single-core). Osnovni moto uvodjenja koncepta baziranog na paralelnoj obradi je taj da se disipacija čipa značajno ne poveća. Pri tome, operativni sistem i tip aplikacije moraju biti uskladjene sa zahtevima i izazovima koji se postavljaju pred projektantima, ako se želi da brojne opcije koje se nude od strane multi-core-a budu efikasno iskorišćene. Normalno, sada se postavlja sledeće pitanje: Koji tip multi-core procesiranja je najpogodniji za datu aplikaciju. U ovom vremenskom trenutku, prva decenija 21-og veka, kada je taktna frekvencija čipova, čini se sa tačke gledišta tehnologije, dostigla neku svoju krajnju vrednost (granicu) logično se postavlja sledeće pitanje: Koja je nova faza u evoluciji na polju procesorske tehnologije. Zahvaljujući konceptu paralelizma, poznat još iz vremena razvoja skupih paralelnih računara, dual-core procesori kao kandidat arhitekture čine moguću distribuciju zadataka na dve računarske jedinice, što u globali ukazuje na dupliciranje performansi. Disipacija snage (potrošnja energije) kod dual-core procesora u principu ostaje takoreči ista kao i kod jedno-procesorskih sistema. U odnosu na single-core, računar tipa dual-core deli 28

29 posao na dva dela, pa zbog toga dual-core potencijalno nudi značajne beneficije sa aspekta performansi/watt-u, kao i bolju iskorišćenost hardverskih resursa. Multi-threading Na polju multi-core procesiranja pravi se jasna razlika izmedju sledeće dve tehnologije: maltitasking- mogućnost da se istovremeno izvršava veći broj aplikacija, multithreading- mogućnost da se zadaci podele na veći broj pod-oblasti (sub-areas), a zatim da se te pod-oblasti distribuiraju različitim CPU-ovima. Teoretski posmatrano, idealna situacija postoji kada imamo multithread & multitasking kombinacije koje se izvršavaju na multiprocesorskim ili multi-core sistemima. Na žalost suviše multiple-a često puta u značajnoj meri dovodi čitaoca i projektanta do konfuzije. Zbog toga, analizirajmo ovaj problem tako što ćemo posmatrati sistem u jednom vremenskom koraku: To obično znači da softver koji je zasnovan na korišćenju multithreading tehnike procesiranja po automatizmu se brže izvršava jer ima pristup većem broju procesora ili core-ova iz prostog razloga što koristi paralelizam. Projektanti pojedinih aplikacija od kojih se zahteva visoka-računarska propusnost moraju da prilagode softver za multithreading procesiranje čime se obezbedjuje da multi-core sistemi budu optimalno iskorišćeni. Ovakvi slučajevi se najčešće javljaju kod sistema od kojih se zahtevaju visoke-komunikacione performanse, ili kod složenih medijalno/procesnih primena (multimedijalne i grafički bazirane aplikacije). Multitasking Postoje brojne aplikacije koje se ne mogu izvršavati na nekom jedno-procesorskom sistemu iz prostog razloga što izvršenje jednog zadatka blokira izvršenje drugog. Ovakav slučaj posebno postaje kritičan kod aplikacija koje se odnose na rad sistema u realnom vremenu, tj, kod onih primena koje koriste usluge browser-a ili firewall-a. Multitasking sistem može paralelno i bez konflikta da izvršava veći broj zadataka koji pripadaju različitim programima. Ovakvi sistemi sa aspekta cene instaliranog hardvera su jevtiniji u odnosu na klasične paralelne sisteme. U ovom trenutku, idealno rešenje, bez sumnje, predstavlja kombinacija dveju tehnika kave su multi-threading i multitasking koje se mogu uspešno implementirati na multi-core sistemu. Kada se projektuje odgovarajuće multi-core procesiranje, sledeđa dva osnovna modela (u saglasnosti sa zahtevima) predstavljaju dobar izbor za multi-threaded i multitasking aplikacije: simetrično multi-procesiranje, asimetrično multi-procesiranje. Simetrično multiprocesiranje Kod simetričnog multi-procesiranja (SMP- symmetric multi-processing) postoji jedinstvena instalacija operativnog sistema koja se ravnopravno izvršava od strane svih core-ova, a takođe sve aplikacije se mogu izvršavati od strane bilo kog core-a. Na slici D2.17 prikazano je simetrično multiprocesiranje na dual-core sistemu. 29

30 Slika D2.17. Model simetričnog multiprocesiranja Simetrično multiprocesiranje (vidi sliku D2.17) tipično se sreče kod server aplikacija, gde realno postoje potrebe za istovremeno korišćenje tehnike rada bazirane na multi-threading i multi-tasking konceptima. Kao što se vidi sa slike 1 postoji jedinstveni operativni system, koji dodeljuje resurse pojedinim aplikacijama kada je to potrebno, čime se ostvaruje najbolja moguća iskorišćenost hardvera. Sredstva za trasiranje rada na nivou sistema (planeri) mogu da planiraju redosled izvršenja threade-ova i vode računa o operativnim statistikama (opteretljivost core-ova) kao i o interakcijama u aplikaciji za ceo multi-core čip, čime se olakšava proces debagiranja i optimizira aplikacija. Sinhronizacija aplikacija je jednostavna, umesto složene inter-procesorske komunikacije (IPC Inter Processor Communication) koriste se standardne funkcije operativnog sistema. SMP predstavlja najjednostavniji oblik multiprocesiranja, pa prvenstveno zbog svoje jednostavnosti on se veoma često koristi kod velikog broja aplikacija. U slučajevima kada se zahteva procesiranje signala u realnom vremenu, kao i složena vizuelizacija rezultata procesa, SMP ne predstavlja dobar izbor. Asimetrično multi-core procesiranje Asimetrično multi-core procesiranje (ASMP Asymmetric Miltiprocessing) se koristi kod onih aplikacija koje se ne mogu izvršavati na single embedded sistemima (vidi sliku D2.18). Slika D2.18. Model asimetričnog multiprocesiranja 30

31 Kod ASMP-a, poseban operativni sistem ili posebna instalacija istog operativnog sistema se izvršava na svakom procesorskom core-u. Kod asimetričnog multi-core procesiranja moguće je unapred odrediti kako će se između individualnih core-ova izvršiti alokacija (dodela) hardverskih resursa. Za specifični hardver se unapred određuje kakvog će tipa biti i kog će tipa biti, i statički se u toku faze projektovanja, dodeljuje odredjenom core-u. Dodela memorije procesorima se vrši na fizičkom nivou, na primer od lokacije X do lokacije Y dodeljuje se core-u 1, od lokacije Y do lokacije Z core-u 2 itd. Sličan pristup alokacije važi i za periferije kao i obradu prekida, tj. koji će se prekid prihvatati i obrađivati od strane kog core-a. U slučaju kada se dodela resursa vrši dinamički koristi se IPC-ov koncept sinhronizacije između core-ova, što u suštini usložnjava projektovanje sistema. Kod ASMP sistema, jedan zadatak se uvek procesira od strane istog core-a, šta više i u slučaju kada je drugi core slobodan. Pored toga, može da se desi da su određeni core-ovi u potpunosti iskorišćeni (over-utilised), a drugi slabo iskorišćeni (under-utilised), no aplikacije će se uvek izvršavati sigurno (bez grešaka) i nezavisno jedna od druge. Ovaj oblik multiprocesiranja obezbeđuje uštedu hardvera kada se ovakvi sistemi koriste u industrijskim aplikacijama gde formalno, zbog heterogenosti procesora nije moguće bilo koji od procesora generiše rezultat kojim se vrši odredjeni tip upravljanja. Na primer, aplikacija obrade signala u realnom vremenu i sve aktivnosti koje se odnose se mogu izvršavati na jednom core-u, a vizuelizacija na drugom core-u. I pored toga što ovaj tip rešenja normalno ne daje optimalno rešenje sa aspekta ukupnih performansi, ono što je važno je sledeće: Kritična činjenica je ta da asimetrične procedure omogućavaju (dozvoljavaju) da se obavi procesiranje tipa 2-u-1 na jedan siguran i efikasan način. U budućnosti, napredkom tehnologije, pažnja istraživača će se sve više usmeravati sa implementacije dual-core procesora na multi-core procesore, tako da će procesiranje 4-u-1 ili 8-u-1 biti moguće. Debata oko toga da li su kod dual-core oba core-a u potpunosti iskorišćena ili nisu nije od presudne važnosti. Asimetrična procedura omogućava aplikaciji da direktno pristupi kako jednom tako i drugom core-u, a implikacije koje pri tome slede su sledeće: na primer, uz pomoć virtuelizacione tehnologije, ako su dostupna dva jezgra, oba jezgra je moguće integrisati u jedinstveno abstraktno jezgro. Na ovaj način aplikacija za rad u realnom vremenu koristiće sada usluge oba core-a na ravnopravan način, što je od izuzetne važnosti kod projektovanja kompleksnih sistema upravljanja, jer u tom slučaju ne treba voditi računa o alokaciji zadataka core-ovima. Asimetrična procedura je jedina kod koje se dva različita operativna sistema mogu paralelno izvršavati (koordinirati). Zbog ovoga, ona se često koristi kod operativnih sistema namenjenih za rad u realnom vremenu. Kako se pri tome broj dostupnih core-ova povećava, neophodno je integrisati virtuelizacionu tehnologiju kod koje je jedino moguće na efikasan način distribuirati homogene aplikacije na multiple core-ove. U budućnosti će kombinacija asimetrične i simetrične procedure obezbeđivati korisnu alternative kada su dostupna više od dva core-a. Virtuelizaciona tehnologija Virtuelizaciona tehnologija je elemenat dual-core tehnologije i predstavlja ključnu oblast koja je različita u odnosu na poznate tehnologije. Ona pojednostavljuje upravljanje hardverom, oslobađajući projektante aplikacija od manipulisanja sa IPC-ovima. Šta više, Intel, implementira virtuelizacionu tehnologiju (VT Virtualisation Technology) kao standard na sve svoje nove platforme. VT omogućava većem broju operativnih sistema i aplikacija da se u nezavisnim particijama izvršavaju na jednoj platformi kao virtuelne mašine. Ove particije se mogu, u zavisnosti od zahteva, dodeljivati aplikacijama radi izvršenja, šta više i u toku rada (dinamički), a ne samo statički. Visok nivo abstrakcije takođe dozvoljava aplikacijama da budu premošćene sa jednog servera na drugi, mogućnost koja je bila do skoro nezamisliva za realizaciju, a predstavlja ključnu beneficiju kod embedded IT upravljanja. Konačno, virtuelizacija takođe nudi opciju integrisanja operativnih sistema koji formalno rade u stand-alone režimu rada (tipični ovakvi predstavnici su kontrolni sistemi, firewall-ovi, ili data serveri) u jedinstveni sistem, ali u potpunosti izolovani od drugih rešenja. Ovakav pristup u rešavanju problema enormno doprinosi uštedi u ceni proizvoda. 31

32 Opšti principi za primenu svih metoda Nezavisno od izabranog metoda, projektanti dual-core sistema, na primer, značajno redukuju obim zadataka (koda) ili threade-ova kada koriste paralelno programiranje. Na ovaj način maksimizira se granularnost strukture i ostvaruje optimalna iskorišćenost dostupnih resursa. Sa druge strane, zadaci po svojoj prirodi mogu da se izvršavaju nezavisno, ali da bi se generisao korektan rezultat neophodno je da postoji razmena informacije između zadataka. Da bi se rešio problem saradnje-između-zadataka moraju se definisati pravila za njihovu komunikaciju. Ovo je od posebne važnosti u slučajevima kada jedan zadatak čeka od drugog da mu preda podatke kako bi on nastavio sa svojim radom, a da pri tome ne dođe do potpune međusobne blokade, tj. deadlock-a (i drugi čeka od prvog da mu preda podatke). Ključna stvar, u ovom slučaju, predstavlja integritet distribuiranih akcija. Imajući u vidu da paralelno programiranje može da ubrza aplikaciju ili pak da dovede do zastoja u radu, investicije na polju obuke projektanata sa ciljem da oni postanu eksperti u ovoj oblasti, je bez sumnje od izuzetne važnosti, jer to ima direktni uticaj na uspeh proizvoda, u ovom trenutku baziranog na dual-core, a u budućnosti bez sumnje na multi-core konceptu. U principu projektanti OEM (Original Equipement Manufacturing) sistema svoju glavnu pažnju treba da usmere na prednosti koje se nude ovakvim pristupom, a ne toliko na činjenice da li je procesor X bolji od procesora Y. Izbor procesora (core-a) je uglavnom diktiran od toga šta proizvođači OEM sistema nude u datom trenutku na tržištu, a ne od toga šta je optimalno potrebno. D2.6 Multiprocesorski sistemi na čipu Može se slobodno reći da, danas, početkom 21 veka, multiprocesorski sistemi na čipu (MultiProcessor Systems-on-Chips- MPSoCs) predstavljaju zadnje dostignuće VLSI tehnologije. Trenutno, jedinstveno integrisano kolo (integrated circuit- IC) može da čini do 100 miliona tranzistora. Organizacija kakva je International Technology Roadmap for Semiconductor, koja istražuje nove mogućnosti tehnologija i izazova u proizvodnji IC-ova, predvidja da će se čip od milijardu tranzistora proizvesti u skoroj budućnosti. Upregnuti svu sirovu moć izračunavanja, koju mogu da pruže udružene snage od milijardu tranzistora, zahteva sada od projektanata da premoste granice logičkog projektovanja i da se usmere ka principima koji su danas aktuelni kod projektovanja računarskih arhitektura. Zahtevi, koji se od strane aplikacija, postavljaju za realizaciju ovakvih čipova, iziskiju od projektanata da se suoče sa novim problemima koji su, takoreći, do juče bili neuobičajeni i za projektante tradicionalnih arhitektura računara, a to su: krajnji rokovi izvršenja zadataka u realnom vremenu, mikropotrošnja, i td. Ove mogućnosti i izazovi čine da MPSoC dizajn predstavlja jedno izuzetno važno polje istraživanja. Šta su to MPSoC-ovi Kao prvo, definisaćemo pojam sistem-na-čipu (System-on-Chip: SoC). SoC je IC koje implementira najveći broj, ili sve funkcije kompletnog elektronskog sistema. Osnovna karakteristika SoCa je njegova kompleksnost. Ilustracije radi, memorijski čip može da ima mnogo tranzistora, ali ga njegova regularna struktura čini da to bude komponenta, a ne sistem. U suštini koje će se komponente asemblirati u SoC zavisi od tipa aplikacije. Najveći broj SoC-ova sadrži analogna i mixed-signal kola koja su deo U/I podsistema, no postoji i veliki broj SoC-ova koji su čisto digitalni. U principu SoC sadrži memoriju, jedan ili veći broj CPU-ova, specijalizovanu logiku, magistrale, i druga kola koja obavljaju specijalizovane digitalne funkcije. U opštem slučaju arhitektura SoC-a, za razliku od sistema opšte namene, je prilagodjena aplikaciji. Na SoC-ovima je baziran veliki broj kategorija proizvoda počev od uredjaja široke potrošnje pa sve do industrijskih sistema. Tako na primer: 32

33 Celularni telefoni koriste nekoliko programibilnih procesora koji se u okviru telefonije primenjuju za obavljanje zadataka tipa signal procesiranje i manipulisanje podacima u saglasnosti sa zahtevima protokola. Imajući u vidu da su ovakvi uredjaji, u najvećem broju slučajeva prenosivi, mobilni, i da se baterijski napajaju, imperativ je da ovakve arhitekture budu tipa micro-power. U telekomunikacijama i umrežavanju koriste se specijalizovani SoC-ovi, kakvi su mrežni procesori, koji manipulišu sa velikim brzinama u toku prenosa podataka. Digitalna televizija koristi sofisticirane multiprocesorske sisteme koji obavljaju dekodiranje signala slike i govora u realnom vremenu, a takodje i reaktivno izvršavaju funkcije interfejsa prema korisniku. Televizijski proizvodi koriste SoC-ove radi kodiranja video informacije. Za kodiranje video visoke-rezolucije zahteva se ekstremno brzo procesirsnje u realnom vremenu. Video igre koriste po nekoliko složene paralelne mašine da bi u realnom vremenu mogle da obave procesiranje tipa rendering, animaciju, i dr. Sve nabrojane aplikacije ne koriste računarske arhitekture opšte-namene iz prostog razloga što mašine opšte namene nisu jevtine i što ne mogu da postignu (ostvare) potrebne (željnene) performanse. Cena uredjaja opšte namene treba da je ekstremno niska. Tako na primer, digitalni video disc (DVD) plejer se prodaje po ceni od 45 eura, a to znači da je zarada od ovog proizvoda relativno niska. Sa druge strane, mašine opšte namene ne mogu zadovoljiti zahteve za brzinim procesiranjem koji se postavljaju od strane video- i mrežne-opreme. Šta je u suštini MPSoC)? To je jednostavno SoC kolo koji sadrži veći broj CPU-ova. U praksi, najveći broj SoC-ova su MPSoC-ovi, iz razloga što je veoma teško projektovati kompleksan SoC bez korišćenja većeg broja CPU-ova. Ukazaćemo u daljem tekstu na racionalnost korišćenja multiprocesora. Prvo pitanje koje se postavlja projektantima sistema je sledeće: Zbog čega su performanse važne? U suštini kod najvećeg broja primena SoC-ova performanse su precizno definisane. Kod tradicionalnih računarskih sistema prvenstveno se vodi računa o brzini, a ne o krajnjim rokovima. Sa druge strane, upravljački sistemi, protokoli, i najveći broj realnih sistema ne vode računa o prosečnim performansama nego o krajnjim rokovima. Najveći broj SoC-ova se upravo koristi u aplikacijama koje se odnose na rad u realnom-vremenu, tj. sistema kod kojih treba da se ispune zahtevi u pogledu krajnjih rokova. Pored toga od projektanti hardvera se zahteva da ispune zahteve u pogledu sinhronizacije kao i broja taktnih intervala za koji odredjeni zadatak treba da se izvrši. Ponovo pitanje: Zbog čega mora da se vodi računa o potrošnji energije? Kod baterijski napajanih uredjaja, cilj je da se produži životni vek baterije. Kod ne-baterijski napajanih uredjaja projektanti mora i dalje da vode računa o potrošnji energije jer ona direktno utiće na cenu. Ako uredjaj troši mnogo energije tada se on dosta i zagreva. Iznad odredjene radne temperature, čip mora da bude izveden na keramičkom pakovanju. Keramička pakovanja su znatno skuplja u odnosu na plastična. Činjenica da je MPSoC multiprocesor znači da projektovanje softvera predstavlja nerazdvojni deo ukupnog dizajna čipa. Ovakva rešenja predstavljaju veliku šansu i za one projektante čipa koji se suočavaju sa hardverskim rešenjima. Kod MPSoC-a, kako hardver tako i softver se može uspešno iskoristiti za rešavanje problema. Važno je da rešenje zadovolji zahteve u pogledu performansi, potrošnje, i vremena potrebnog da se projektuje kolo. Projektovanje softvera za MPSoC predstavlja bez sumnje velika šansa za projektante softvera. Softver mora da bude tako projektovan da ispuni veliki broj projektanskih ograničenja koja su obično rezervisana za hardver, kakva su stroga (hard) vremenska ograničenja i ograničenja koja su u vezi sa potrošnjom energije. Mešanje hardversko softverskih disciplina je jedno od najinteresantnijih izazova kod projektovanja MPSoC-ova. 33

34 D2.7 Paralelizam na nivou instrukcija Uvod Paralelizam na nivou instrukcija (Instruction Level Paralelellism ILP) definiše se kao jedinstvo izmedju hardverskog dizajna procesora sa jedne strane, i softverskih tehnika, koje se odnose na dizajn kompilatora, sa druge strane. Jedinstvo ima za cilj da ostvari paralelno izvršenje većeg broja individualnih mašinskih operacija kakve su recimo memorijske operacije tipa Load i Store, operacije za manipulisanje sa celobrojnim vrednostima kakve su Add, Mul, Div, operacije za manipulisanje sa brojevima u pokretnom zarezu Addf, Mulf, Divf, i druge. Jedan klasičan ILP procesor karakteriše se istim tipom izvršnog hardvera kao i standardna protočno organizovana RISC mašina. Razlike izimedju mašina koje iimaju implementirano ILP i one koje nemaju sastoji se u sledećem: ILP procesor umesto jedne funkcionalne jedinice koja se koristi za manipulisanje sa celobrojnim-vrednostima / brojevima-upokretnom-zarezu / adresiranje-memorije / upravljanje-tokom-programa, ima ugradjeno veći broj takvih funkcionalnih jedinica. Osnovna karakteristika ovog tipa paralelizma ogleda se u činjenici da kod ILP procesora nije potrebno koristi neki poseban stil programiranje nego je kriranje programa identično kao i kod sekvencijalnih/skalarnih procesora. Nasuprot tradicionalnom multiprocesorskom paralelizmu i masivnom paralelnom procesiranju, kod kojih je pisanje programa eksplicitno podredjeno paralelizmu, kod ILP procesora kreiranje programa je transparentno u odnosu na arhitekturu i identično je kao i kod svih sekvencijalnih/skalarnih mašina. Ilustracije radi, VLIW i superskalarni procesori su tipični reprezenti procesora koji izvlače korist od ILP-a, dok softverska protočnost i tehnika ''race sehedulling'' su softrverske tehnike koje u prvi plan stavljaju paralelizam koga procesori mogu da koriste. Primer 1: Na Slici D2.19a) (sa isprekidanim linijama) prikazan je hardver-izvršenja jednog jednostavnog ILP procesora koga čine četiri funkcionalne jedinice i jedinica Branch povezanih na zajedničko poljeregistara (register file RF). Standardno, hardver-izvršenja ILP procesora sa Slike D2.19a) je tako realizovan da obezbedjuje protočno izvršenje operacije u više-ciklusa (Slika D2.19b), a da je, pri tome, u svakom ciklusu moguće inicirati po četiri nezavisne operacije. Ako se u svakom ciklusu iniciraju-radiizvršenja instrukcije čija je latencija najduža, tada hardver sa Slike D2.19a podržava jednovremeno izvršenje od 10 operacija. U odnosu na sekvencijalni procesor sa sličnim hardverom-za-izvršenje, maksimalno moguće ubrzanje koje se dobija u ovom slučaju iznosi 10, a dobija se kao zbir =

35 Integer jedinica 1 dekodirane instrukcije iniciranje izvr{enja instrukcija - instruction issue - izdavanje instrukcija Integer jedinica 2 / Branch jedinica Floating point jedinica 1 zavr{etak & kompletiranje instrukcija RF polje Floating point jedinica 2 hardver - izvr{enja 1. deo hardvera-izvršenja kod jednog ILP procesora funkcionalna jedinica operacije koje se obavljaju latencija Integer jedinica 1 Integer ALU operacije 1 Integer množenje 2 Load 2 Store Integer jedinica2/ Integer ALU operacije 1 Branch jednica Integer množenje 2 Load 2 Store 1 Test-and-Branch Floating-point Floating-point operacije 3 Jedinica 1 Floating-point Floating-point operacija 3 Jedinica karakteristike hardvera-izvršenja Slika D2.19. Hardver-izvršenja: struktura i karakteristike Analizom Slike D2.19 uočavamo da je čak i kod jednog jednostavnog procesora moguće ostvariti znatno veliki nivo paralelizma u radu. U kokretnom slučaju (koji je u ovom slučaju bio idealan slučaj), faktor ubrzanja iznosi 10. No realno, sada se postavlja sledeće pitanje: Da li u okviru programa postoji dovoljan iznos ILP-a. Ako postoji, tada, šta, sa jedne strane kompilator, a šta sa druge strane hardver, mora da urade da bi se uspešno eksploatisale mogućnosti paralelnog izvodjenja operacija koje se nude. O ovim problemima kao i o načinima njihovog rešavanja govorićemo u narednim sekcijama ovog poglavlja. 35

36 Primer 2 ILP procesori koriste osobinu programa da najveći broj instrukcija u sekvencijalnom programu ne zavisi od instrukcija koje im u programskoj sekvenci neposredno prethode. Ilustracije radi, neka je data programska sekvenca prikazana na Slici D2.20a. Poredjenja radi, analiziraćemo vreme izvršenja sekvence sa Slike D2.20a, prvo na jednom sekvencijalnom procesoru (Slika D2.20b), a zatim na jednom ILP procesoru (Slika D2.20c). Karakteristike funkcionalne jedinice, sa Slika D2.20b i D2.20c, su prikazane na Slici D2.20c. 1: Lw r1, 0(r2) 2: Add r5, r6, r7 3: Sub r4, r1, r4 4: Mul r8, r9, r10 5: Sw 0(r11), r4 a) programska sekvenca FU2 dekodirane instrukcije logika za iniciranje izvr{enja instrukcija FU1 funkcionalna jedinica izvr{enja 1 RF polje dekodirane instrukcije logika za iniciranje izvr{enja instrukcija funkcionalna jedinica izvr{enja 2 FU1 funkcionalna jedinica izvr{enja 1 RF polje b) deo strukture sekvencijalnog procesora c) deo strukture ILP procesora funkcionalna jedinica 1(2) operacija koja se obavlja latencija FU1(FU2) Integer ALU operacija 1 Integer množenje 2 Load 2 Store 1 Nop d) karakteristike hardvera izvršenja Slika D2.20 Programska sekvenca, struktura sekvencijalnog ILP procesora, karakteristike funkcionalnih jedinica izvršenja Napomena: Strukture funkcionalnih jedinica prikazanih na Slici D2.20b i D2.20c su identične. 36

37 Kada se programska sekvenca sa Slike D2.20a) izvršava na sekvencijalnom procesoru (Slika D2.20b), tada je samo za izvršenje sekvence (nije uzeto u obzir vreme pribavljanja instrukcija, vreme dekodiranja, i dr.) potrebno 7 ciklusa (vidi Sliku D2.21) t 1. Lw r1,(r2) 2. Add r5,r6,r7 3. Sub r4,r1,r4 4. Mul r8,r9,r10 5. Sw (r11),r4 Slika D2.21. Strogo-sekvencijalno izvršenje sekvence Kada se programska sekvenca sa Slike D2.21a) izvršava na ILP procesoru sa Slike D2.21c) tada je samo za izvršenje sekvence (nije uzeto u obzir vreme pribavljanja instrukcija, vreme dekodiranja, i dr.) potrebno 4 ciklusa (vidi Sliku D2.22). ciklus 1 : ciklus 2 : ciklus 3 : FU 1 FU 2 Lw r1,0(r2) Add r5,r6,r7 Mul r8,r9,r10 Sub r4,r1,r4 ciklus 4 : Sw 0(r11),r4 Nop Faktor ubrzanja iznosi : 7 ciklusa/4 ciklusa = 1,75 puta. Slika D2.22. Paralelizam na nivou instrukcija Navedeni primer jasno ilustruje kako prednosti tako i nedostatke ILP-a. Naime ILP procesori mogu ostvariti značajno ubrzanje za veliki broj programa na taj način što će instrukcije izvršavati paralelno, ali su njihova maksimalna performansna poboljšanja ograničena zavisnošću izmedju instrukcija. ILP arhitekture Krajnji cilj koga treba ostvariti kod paralelnog izvršenja na nivou-instrukcija ogleda se u istovremenom izvršenju većeg broja operacija, a to se postiže zahvaljujući egzistenciji i korišćenju sledećih efekata: a) simultanom iniciranju-izvršenja većeg broja instrukcija po ciklusi, i b) različitim vremenima izvršenja operacija, koje u principu mogu biti duže od trajanja vremenskog intervala potrebnog za iniciranje-izvršenja sukcesivnih operacija (pri ovome treba imati u vidu da 37

38 su funkcionalne jedinice protočno organizovane i da zbog raznorodnosti obrade koju obavljaju imaju različitu latenciju) Odluke koje se za ispunjenje postavljenog cilja odnose tiču se sledećih strategija: i) kada operaciju treba izvršiti; i ii) da li operaciju treba spekulativno izvršiti. Pomenute odluke se mogu donositi kako na nivou kompilatora, tako i na nivou hardvera. Arhitektura računara na jedan direktan način ukazuje na vezu koja postoji izmedju klase programa napisanih za tu arhitekturu, i skupa različitih procesora pomoću kojih se ta arhitetkura može implementirati. Obično ovo ukazivanje je u jakoj sprezi sa formatom instrukcija, i inerpretacijom bitova koji čine tu instrukciju. Kod ILP procesora ovaj pogled treba dodatno proširiti i sa informacijom koja se ugradjuje u program. To obično znači da se u okviru programa, u što većem iznosu, detaljno sagleda, održi, i iskoristi dostupni paralelizam koji realno postoji izmedju instrukcija ili operacija. Imajući u vidu ovu konstataciju ILP arhitekture možemo klasifikovati na sledeći način. 1. sekvencijalne arhitekture: to su arhitekture kod kojih se od programa ne očekuje da istakne na eksplicitan način informaciju koja se odnosi na paralelizam. Superskalarni procesori su tipični predstavnici ove klase ILP procesora. 2. zavisne arhitetkure: kod ovih arhitektura program eksplicitno ukazuje na zavisnosti koje postoje izmedju instrukcija. Dataflow procesori su tipični reprezenti ove klase ILP arhitektura. 3. nezavisne arhitekture: kod ovih arhitektura program daje (pruža) informaciju o tome koje operacije su medjusobno nezavisne. Tipični predstavnici ove klase arhitektura su VLIW procesori. Za slučaj da je potrebno ostvariti ILP, funkcije koje treba da obavi kompilator (u fazi prevodjenja programa) i hardver (u fazi izvršenja programa) su sledeće: a1) odredjuju se zavisnosti izmedju operacija, a2) odredjuju se one operacije koje su nezavisne od bilo kojih operacija čije je izvršenje u fazi EX započelo, ali zbog duže latentnosti još nisu završile (kompletirale) sa svojim izvršenjem, i a3) svaka od nezavisnih operacija se može planirati radi izvršenja u nekom odredjenom vremenskom trenutku, na nekoj od raspoloživih specifičnih funkcionalnih jedinica, a takodje joj se može dodelilti i registar u kome će se čuvati rezultat te instrukcije. Na Slici D2.23a), za sve tri klase arhitektura, prikazan je način kako se može raspodeliti odgovornost kompilatora i hardvera kada se uzmu u obzir sve tri prethodno pomenute funkcije (zadaci), a na Slici 5 b) prikazane su ključne karakteristike za sva tri tipa ILP arhitektura. 38

39 a) Podela odgovornosti kod sve tri klase arhitektura sekvencijalna arhitektura zavisna arhitektura nezavisna arhitektura dodatna informacija koja je potrebna da postoji u programu nije kompletna specifikacija zavisnosti između operacija minimalno, delimična lista o nezavisnostima,obično, potrebna je kompletna specifikacija o tome kada i gde će se svaka operacija izvršavati tip ILP procesora superskalarni dataflow VLIW analiza zavisnosti između operacija obavlja se od strane hardvera obavlja se od strane kompajlera obavlja se od strane kompajlera analiza nezavisnosti između operacija obavlja se od strane hardvera obavlja se od strane hardvera obavlja se od strane kompajlera konačno planiranje izvršenja operacija obavlja se od strane hardvera obavlja se od strane hardvera tipično, se obavlja od strane kompajlera uloga kompajlera da preuredi kod i da učini analizu planiranja izvršenja koju obavlja hardver što uspešnijom preuzima neke analize koje obavlja hardver virtuelno preuzima sve analize i planiranja izvršenja od strane hardvera b) Uporedne karakteristike sva tri tipa arhitektura Slika D2.23. Podela odgovornosti izmedju kompilatora kod sve tri klase arhitektura a) i ; hardvera kod sve tri klase arhitektura b) 39

40 Zavisne arhitekture i dataflow procesori Kod zavisnih arhitektura kompilator ili programer su oni koji identifikuju paralelizam u programu i saopštavaju hardveru u formi izvršivog kôda preko zavisnosti koje postoje izmedju instrukcija. Hardver, u toku izvršenja programa, odredjuje kada će se odredjena nezavisna operacija izvršiti. Osnovni princip rada dataflow procesora se svodi na sledeće: Svaku instrukciju izvršiti što je moguće ranije i to od onog trenutka kada budu postali dostupni njeni ulazni operandi i funkcionalna jedinica na kojoj će se ta operacija izvršavati. Program je kreiran na sledeći način. Svaku instrukciju prati listu naslednika. Za jednu instrukciju kažemo da je naslednik druge instrukcije ako ona kao jedan od svojih ulaznih operanada koristi rezultat prethodne instrukcije. Onog trenutka kada su svi ulazni operandi instrukcije dostupni hardver pribavlja instrukciju. Instrukcija specificira operaciju koju treba obaviti i listu instrukcija tipa naslednik. Instrukcija se zatim izvršava onog trenutka kada odgovarajuća funkcionalna jedinica postane dostupna. Na osnovu osobine, da je dostupnost podataka ta koja inicira pribavljanje i izvršenje instrukcije, ovi procesori su dobili svoje ime. To znači da ulazni operandi specificiraju instrukciju. Ako u svakom trenutku, za svaku od funkcionalnih jedinica postoji bar najmanje po jedna instrukcija, dataflow procesor će ostvariti vršne performanse. Na žalost, danas na tržištu,takoreći i da, ne postoje komercijalni proizvodi koji su zasnovani na dataflow arhitekturi, pa zbog toga ove arhitekture na dalje nećemo izučavati. Nezavisne arhitekture i VLIW procesori Kod nezavisnih arhitektura kompilator je taj koji identifikuje programski paralelizam i saopštava ga hardveru specificiranjem koje su od operacija nezavisne. Ovakva informacija je od direktne koristi hardveru jer on ne treba sada dodatno da proverava koju od operacija može u istom ciklusu da izvrši. Na žalost, za bilo koju operaciju, broj operacija sa kojim je ova operacija nezavisna je znatno veći od broja sa kojim je ona zavisna. Zbog toga, nepraktično je specificirati sve nezavisnosti. Umesto toga, za svaku operaciju, specificiraju se nezavisnosti nad samo malim podskupom od svih nezavisnih operacija (tj. one za koje kompilator smatra da su najbolji kandidati za konkurentno izvršenje). Listanjem (nabrajanjem) operacija koje se mogu konkurentno izvršavati, program kod mašina sa nezavisnom-arhitekturom postoje veoma sličan zapisu-izvršenja koji se generiše implementacijom te arhitekture. U slučaju kada arhitektura dodatno zahteva od programa da specificira na kojoj će se funkcionalnoj jedinici (misli se gde) i u kom ciklusu (misli se kada) te operacije izvršavati, rezultira rešenju da hardver u toku izvršenja programa ne treba da donosi nikakve odluke iz prostog razloga što je program identičan zapisu-izvršenja. Upravo program VLIW procesora je taj koji tačno specificira na kojoj će se funkcionalnoj jedinici svaka od operacija izvršavati, kao i u kom trenutku će se ta operacija izvršavati, vodeći pri tome računa da ta operacija bude nezavisna od svih operacija koje su u datom trenutku inicirane radi izvršenja. Kod VLIW procesora veoma je važno praviti razliku izmedju instrukcije i operacije. Pojam operacija se odnosi na jediničnu meru izračunavanja kakve su sabiranje (Add), punjenje (Load), grananje (Branch) i dr., koje kao aktivnosti, u kontekstu sekvencijalnih arhitektura, nazivamo instrukcije. VLIW instrukcija predstavlja skup operacija koje mogu biti istovremeno inicirane radi izivršenja. Kompilator ima zadatak da odredi koje operacije treba da pridruži svakoj od instrukcija. Ovaj proces se naziva planiranje izvršenja (scheduling). Konceptualno posmatrano kompilator VLIW mašina obavlja sledeće: Prvo, polazi od toga da ima na raspolaganju dataflow procesor sa identičnim hardverom kao i VLIW procesor. Drugo, u fazi kompilacije, postupkom emulacije, planira izvršenje instrukcija (instruction scheduling), i proverava koje se od operacija mogu istovrermeno izvršavati. Sve operacije koje mogu početi istovremeno pakuju se u jedinstvenu VLIW instrukciju. Broj operacija u okviru instrukcije specificiran (odredjen) je brojem funkcionalnih jedinica na kojima će se ta operacija izvršavati. Danas VLIW koncept izračunavanja koristi veliki broj komercijalnih procesora, kakvi su skoro svi digitalni signal procesori (DSP), procesori na bazi koncepta IA-64 i dr. 40

41 Hardverske i softverske tehnike za ILP Nezavisno od toga koja se od ILP arhitektura razmatra, ako želimo da se sekvencijalni program izvršava na ILP način, tada treba obaviti sledeće aktivnosti: 1) analizirati program i odrediti zavisnosti, 2) odrediti vremenski trenutak u toku koga je neka operacija nezavisna od svih operacija čije je izvršenje započelo a još nije kompletirano, 3) isplanirati dodelu (alokaciju) registara (u koji registar će se koja promenljiva čuvati), 4) često se zahteva spekulativno izvršenje operacija, a to znači da je noephodno obaviti predikciju grananja. Sve oprethodno nabrojane funkcije je neophodno obaviti. Izbor, prvo, da li će se ove aktivnosti obavljati od strane kompilatora, u fazi prevodjenja, ili hardvera, u fazi izvršenja programa, a drugo, koja će se od specifičnih tehnika koristiti za rešavanje problema, zavisi od projektanta. O mogućim alternativama ukazaćemo u daljem tekstu sa nešto više detalja. D2.8 Superskalarni i VLIW procesori - osnovne karakteristike Paralelizam na nivou instrukcija-ilp Već smo uočili da je protočnost važna tehnika za povećanje performansi računara. Ova tehnika se bazira na preklapanje izivršenja većeg broja instrukcija. Kao efekat ostvaruje se povećanje brzine sa kojom se instrukcije izvršavaju. No treba odmah naglasiti da postoje ograničenja koja prate protočnu obradu. Ograničenja u vezi su sa hazardima i dovode do pojave zastoja u radu protočnog sistema. Da bi uspešno rešili i ove probleme arhitekti računara se sve više odlučuju na uvodjenje paralelizma u obradi. U principu paralelni računari se mogu izvesti u sledeća dva oblika: a) multiprocesori -kod ovih sistema zadaci relativno velikog obima, kakve su procedure ili iterativne petlje, se izvršavaju paralelno; b) paralelni procesori na nivou instrukcija u konkretnom slučaju individualne instrukcije se izvršavaju paralelno. Procesori koji koriste paralelizam na nivou instrukcija (Instruction Level Parallelism processors ILP procesori) su daleko uspešniji u odnosu na multiprocesore, posebno na polju širokog tržišta radnih stanica i PC mašina, jer obezbedjuju značajno povećanje performansi kod izvršenja konvencionalnih programa. Naime, superskalarni procesori, kao tipični predstavnici ILP-procesora, ostvaruju relativno veliko ubrzanje u toku izvršenja programa, koji su kompajlirani za izvršenje na sekvencijalnim procesorima, bez da se izvrši njihova rekompilacija, tj. prevodjenje programa iznova. Blok dijagram procesora koji koristi paralelizam na nivou instrukcija ( Instruction-Level Parallel Processor- ILP-P) prikazan je na Slici D2.24. ILP-procesor poseduje veći broj funkcionalnih jedinica za izvršenje instrukcija, pri čemu svaka od njih čita svoje operande i upisuje svoje rezultate u jedinstveno, centralizovano RF polje(register File). Kada operacija upiše rezultat u RF polje, taj rezultat, u narednom ciklusu, postoje vidljiv svim izvršnim jedinicama. Ovim se obezbedjuje da se operacije izvršavaju na različitim funkcionalnim jedinicama. Ovakvi procesori veoma često imaju ugradjeno složen hardver za premošćavanje (hardware for results bypass), koji sa ciljem da smanji kašnjenje izmedju zavisnih instrukcija, prosledjuje rezultate svake instrukcije svim izvršnim (funkcionalnim) jedinicama odmah nakon izračunavanja rezultata te instrukcije, tj odmah nakon faze EX. 41

42 instruction issue logic instructions instructions Ex-unit Ex-unit Ex-unit Ex-unit register file Slika D2.24. ILP-P, Procesor koji koristi paralelizam na nivou instrukcija Programskim instrukcijama manipuliše logika za iniciranje izvršenja instrukcija (Instruction Issue Logic-IIL), koja u jednom taktnom ciklusu može prema izvršnim jedinicama (EX-U) paralelno da inicira izvršenje većeg broja instrukcija. Na ovaj način obezbedjeno je da se promene toka upravljanja programom, kakve su recimo Branch, jave istovremeno u svim EX-U-jedinicama čime se olakšava kreiranje programa za ILP-procosore. Na Slici D2.24 sve EX-U-jedinice su prikazane kao identični moduli. U suštini, kod najvećeg broja ILP-procoesora, neke ili sve EX-U-jedinice su u stanju da izvršavaju podskup instrukcija procesora. Najčešća podela je na integer i floating-point jedinice, a razlog ovakvom pristupu je taj što se u suštini za izvršenje ovih operacija zahteva ugradnja raznorodnog hardvera. Implementacijom ova dva hardverska skupa kao posebne EX-U-jedinice povećava se broj instrukcija koje ILP-procesor može istovremeno da izvršava, ali bez da se pri tome značajno poveća obim hardver sistema. Kod drugih procesora postoji veći broj integer EX-U-jedinica koje su specijaliizovane za izvršenje samo neke od najčešće korišćenih operacija procesora kakve su EX-U-MUL, EX-U-DIV, EX-U-ALU, i druge. Šta je to paralelizam na nivou instrukcija ILP-procesori koriste činjenicu da najveći broj instrukcija u sekvencijalnom programu ne zavisi od instrukcija koje im u programskoj sekvenci neposredno prethode. Ilustracije radi analizirajmo program prikazan na levoj strani slike D Ldd r1, (r2) 2. Add r5, r6, r7 ciklus 1: Ld, r1, (r2) Add r5, r6, r7 3. Sub r4, r1, r4 ciklus 2: Sub r4, r1, r4 Mul r8, r9,r10 4. Mul r8, r9, r10 ciklus 3: St (r11), r4 5. St r11), r4 Slika D2.25. Primer paralelizma na nivou instrukcija Instrukcije 1, 3 i 5 su medjusobno zavisne. Instrukcija 1 generiše rezultat koji koristi instrukcija 3, a instrukcija 3 generiše rezultat za instrukciju 5. Instrukcije 2 i 4 ne koriste rezultate bilo koje instrukcije u datoj programskoj sekvenci, a takodje i rezultate koje one generišu ne koristi nijedna od instrukcija u sekvenci. Uočene zavisnosti izmedju instrukcija nalažu da se instrukcije 1, 3 i 5, sa ciljem da se generiše 42

43 korektni rezultat, moraju da izvrše po redosledu, dok se instrukcije 2 i 4 mogu izvršavati pre, posle, ili paralelno sa bilo kojom drugom instrukcijom, bez opasnosti da se promeni rezultat programske sekvence. Ako usvojimo da je procesor u stanju da izvršava po dve instrukcije istovremeno i da je latencija svake od instrukcija jedan ciklus programska sekvenca sa slike 2 levo izvršiće se za tri ciklusa (slika 2 desno). S obzirom da su instrukcije 1,3 i 5 medjusobno zavisne nije dalje moguće redukovati vreme izvršenja programske sekvence putem povećanja broja instrukcija koje procesor može paralelno, tj istovrmeno, da izvršava. Navedeni primer ilustruje kako prednosti tako i nedostatke ILP-a. Naime, ILP-procesori mogu ostvariti značajno ubrzanje za veliki broj programa na taj način što će instrukcije izvršavati paralelno, ali su njihova maksimalna performansna poboljšanja ograničena zavisnošću izmedju instrukcija. U principu, ugradnjom novih EX-U-jedinica povećavaju se performanse, no kada se njihov broj poveća na 4, 8 ili više, najveći broj EX-U-jedinica postaje pasivan jer kompilatori nisu u stanju, prvenstveno zbog osobine programa, da izvlače značajan paralelizam u radu programa. Ograničenja ILP-a Performanse ILP-procesora su ograničene iznosom ILP-a koje kompilator i hardver mogu da lociraju u programu. ILP ograničavaju sledeća nekoliko faktora: zavisnosti po podacima (RAW hazardi), zavisnosti po imenu (WAR i WAW hazardi), i grananja. Pored toga sposobnost procesora da koristi ILP može biti ograničena kako brojem tako i tipom EX-U-jedinica ugradjenih u procesor, kao i restrikcijama programa koje se odnose na lociranje (identifikaciju) operacija koje se mogu izvršavati paralelno. RAW zavisnosti ograničavaju performanse na taj način što zahtevaju da se instrukcije izvršavaju sekvencijalno, kako bi se generisali korektni rezultati. U suštini RAW zavisnosti predstavljaju fundamentalno ograničenje koje se odnosi na izvlačenje maksimalnog iznosa ILP-a u dostupnim programima. Instrukcije izmedju kojih postoje WAW zavisnosti moraju se, u principu, takodje inicirati sekvencijalno, kako bi se na kraju programske sekvence ipak obezbedilo da u odredišni registar bude upisana korektna vrednost. Instrukcije izmedju kojih postoje WAR zavisnosti mogu da se iniciraju u istom ciklusu, ali ne van redosleda, jer instrukcije čitaju svoje izvorišne oprande iz RF poja pre nego što se vrši njihovo iniciranje izvršenja. To znači da instrukcija koja čita sadržaj izvorišnog registra može da se inicira radi izvršenja u istom ciklusu kao i instrukcija koja upisuje rezultat svog izračunavanja u odredišni registar ali se javlja kasnije programu. Naime, instrukcija koja obavlja čitanje pročitaće ulazni registar (izvorišni operand) pre nego instrukcija koja vrši upis generiše novu vrednost i smesti je u odredišni registar. Nešto kasnije ukazaćemo na tehniku preimenovanja registara (register renaming), koja je u suštini hardverska tehnika, a obezbedjuje nam da se instrukcije izmedju kojih postoje WAR i WAW zavisnosti mogu izvršavati van redosleda bez opasnosti da dodje do promene rezultata u programu. Instrukcije tipa Branch takodje ograničavaju ILP jer procesor ne zna koje će se instrukcije izvršiti nakon instrukcije Branch sve dok se dileme oko Branch-a ne razreše. Ovo zahteva od procesora da čeka sve dok instrukcija Branch ne završi sa izvršenjem, kako bi bio u stanju da izvršava instrukciju koja sledi nakon instrukcije Branch. Veliki broj procesora ima ugradjeno hardver za predikciju grananja sa ciljem da smanji uticaj instrukcije grananja na vreme izvršenja. Naime ova logika vrši predikciju odredišne adrese pe nego što se instrukcija Branch izvrši. Primer1 a) Analizirajmo sledeći programski segment 43

44 Add Ld Sub Mul Sub St Or r1, r2, r3 r4, (r5) r7, r1, r9 r5, r4, r4 r1, r12, r10 (r13), r14 r15, r14, r12 Koliko dugo traje iniciranje izvršenja instrukcija na procesoru koji može da izvršava po dve instrukcije istovremeno? b) Kakva je situacija sa procesorom koji može da izvršava po četiri instrukcije istovremeno? Napomena: Pretpostavimo da procesor može da izvršava instrukcije u bilo kom redosledu, a da pri tome ne naruši zavisnosti po podacima, da sve instrukcije imaju latentnost od jednog ciklusa, i da sve EX_U jedinice procesora mogu da izvrše bilo koju od instrukcija u programskom segmentu. Odgovor Na procesoru koji omogućava da se po dve instrukcije izvršavaju istovremeno, iniciranje izvršenje programa trajaće četiri ciklusa. Jedna od sekvenci, napomenimo da ih ima veći broj, je oblika: Ciklus 1: Add r1, r2, r3 Ld r4, (r5) Ciklus 2: Sub r7, r1, r9 Mul r5, r4, r4 Ciklus 3: Sub r1, r12, r10 St (r13), r14 Ciklus 4: Or r15, r14, r12 U slučaju da procesor može da izvršava po četiri instrukcije istovremeno, iniciranje izvršenja programa se može obaviti u dva ciklusa na sledeći način: Ciklus 1: Add r1,r2,r3 Ld r4,(r5) St (r13),r14 Or r15,r14,r12 Ciklus 2: Sub r7,r1,r9 Mul r5,r4,r4 Sub r1,r12,r10 Naglasimo da nezavisno od broja instrukcija koje procesor može istovremeno da izvršava, nije moguće inicirati izvršenje ove programske sekvence u jednom ciklusu, iz prostog razloga što postoje RAW zavisnosti izmedju instrukcija Add r1,r2,r3 i Sub r7,r1,r9, kao i izmedju inststrukcija Ld r4,(r5) i Mul r5,r4,r4. Takodje ukažimo da izmedju instrukcija Sub r7,r1,r9 i Sub r1,r12,r10 postoji WAR zavisnost, ali se obe instrukcije iniciraju radi izvršenja u istom ciklusu Superskalarni procesori Za izvlačenje ILP-a iz sekvencijalnih programa superskalarni procesori koriste hardver. U toku svakog ciklusa, logika superskalarnog procesora za iniciranje izvršenja instrukcija ispituje instrukcije sekvencijalnog programa kako bi odredila za koju instrukciju iniciranje izvrešenja u tom ciklusu može da počne. Ako u okviru programa postoji dovoljan ILP, superskalarni procesor može da izvršava po jednu instrukciju u ciklusu u svakoj od EX_U jedinica, čak i u slučaju da je program bio kompajliran za izvršenje na procesoru koji može da izvršava samo jednu instrukciju po ciklusu. Ova mogućnost predstavlja suštinska prednost superskalarnog procesora i tu treba tražiti razlog zbog čega su skoro svi CPU-ovi radnih stanica kao i PC mašine izvedeni sa superskalarnim procesorima. 44

45 Superskalarni procesori mogu da izvršavaju programe koji su prvensteno kompajlirani za sekvencijalne procesore, ali pri tome mogu postići bolje performanse u toku izvršenja ovih programa od onih procesora koji nisu u stanju da iz programa izvlače ILP. Na ovaj način, korisnici koji kupuju sisteme sa ugradjenim superskalrnim CPU-ima mogu da instaliraju na ovakvim sistemima svoje stare programe i da u toku njihovog izvršenja ostvare bolje performanse u odnosu na stare sisteme. Mogućnost superskalarnih procesora da eksploatišu ILP sekvencijalnih programa ne ukazuje automatski da su kompajleri ti koji su jedino irelevantni za postizanje boljih performansi. Organizacija hardvera mašine je isto tako važna. No treba ipak istaći da su dobri kompilatori najkritičniji sa aspekta performansi superskalarnih procesora, u odnosu na procesore sa strogim sekvencijalnim izvršenjem. Superskalani procesori, u datom trenutku izvršenja programa ispituju samo jedan mali deo prozora instrukcija sa ciljem da odrede koje od instrukcija mogu da se izvršavaju paralelno. Ako je kompilator u stanju da u okviru prozora isplanira izvršenje velikog broja instrukcija tada superskalarni procesor može da postigne dobre performanse. U slučaju kada, u datom trenutku u okviru prozora izmedju instrukcija postoje medjusobne zavisnosti, superskalarni procesor neće biti u stanju da izvrši program znatno brže u odnosu na sekvencijalni procesor. Nešto kasnije, ukazaćemo na tehnike koje kompilator koristi radi poboljšanja performansi programa kod superskalarnih procesora. Redosledno u odnosu na van-redosledno izvršenja Jedan od najvažnijih kompromisa koji se tiče odnosa složenost / performansi, a treba da se donese i reši u toku faze projektovanja superskalarnog procesora odnosi se na sledeću činjenicu: Da li se od procesora zahteva da izvršava instrukcije po redosledu kako se one pojavljuju u programu (in-order execution), ili se zahteva da procesor može da izvršava instrukcije u bilo kom redosledu (tj. vanredosleda), ali da pri tome ne promeni kranji rezultat programa (ovakav redosled se naziva out-of-order execution). U principu van-redoslednim izvršenjem, u odnosu na izvršenje-po-redosledu, mogu se ostvariti znatno bolje performanse, ali po ceni povećanja kompleksnosti implementiranog hardvera. Predikcija izvršenja instrukcija kod in-order procesora Vreme izvršenja programa kod klasičnih protočnih procesora (tzv. skalarni procesori) se odredjuju na osnovu sledeće relacije: Vreme_izvršenja (u ciklusima) = = protočna_latentnost + vreme_iniciranja_izvršenja_instrukcija 1 tj. T EX = T PL + T IS - 1 gde je: T EX - vreme izvršenja; T PL - protočna latentnost; T IS - vreme iniciranja izvršenja instrukcija instrukcija Kod protočnih ILP procesora vreme T EX se odredjuje na isti način kao i kod klasičnih protočnih procesora, sa tom razlikom što izračunavanje T IS postaje znatno složenije jer procesor može da inicira izvršenje većeg broja instrukcija u jednom ciklusu. Sa druge strane, vreme T PL,od jednog programa do drugog se ne menja značajno pa zbog toga celokupnu našu dalju pažnju usmerićemo ka odredjivanju T IS kod ILP procesrora. Kod in-order superskalarnih procesora vreme T IS se može odrediti sekvenciranjem programskog kada na principu korak-po-korak i odredjivanjem trenutka kada svaka instrukcija može da započne sa izvršenjem, slično tehnici koja se koristi kod protočnih procesora koji izvršavaju jednu instrukciju po taktnom ciklusu, tj. skalarnih procesora. Ključna razlika izmedju in-order superskalarnih i skalarnih procesora je ta što superskalarni procesor može da inicira izvršenje većeg broja instrukcija po 45

46 taktnom ciklusu, pod uslovom da zavisnosti po podacima to dozvoljavaju i da broj instrukcija ne premaši broj raspoloživih EX-U jedinica. Primer 2 In-order procesor ima dve EX-U jedinice pri čemu svaka može da izvši bilo koju instrukciju. Odrediti vreme izvršenja sledeće sekvence u ciklusima Ld Add Sub Mul r1, (r2) r3, r1, r4 r5, r6, r7 r8, r9, r10 Neka vreme latencije instrukcije Ld iznosi dva ciklusa, a latentnost svih ostalih operacija je jedan ciklus. Usvojiti da je protočni sistem dubine pet, i da ga čine sledeći stepeni, FI, DI, RR, EX i WB. Odgovor T LP ovog procesora iznosi 5T CLK, gde je T CLK vreme procesorskog ciklusa. Usvojimo da se iniciranje izvršenja instrukcije Ld vrši u ciklusu n, i da se izvršenje instrukcije Add ne može izvršiti pre ciklusa n+2, jer Add zavisi od Ld. Iinstrukcija Sub ne zavisi od Add i Ld pa se njeno izvršenje može vršiti u ciklusu n+2. (Izvršenje instrukcije Sub se ne može vršiti u ciklusu n ili n+1 jer procesor mora da inicira izvršenje instrukcija po redosledu). Instrukcija Mul ne zavisi od prethodnih instrukcija, ali na iniciranje izvršenja mora da čeka do ciklusa n+3, jer procesor može u jednom taktnom ciklusu da inicira izvršenje samo po dve instrukcije. Zbog čega, potrebna su četiri ciklusa za iniciranje izvršenja svih instrukcija u programu, tako da je ukupno vreme izvrešenja T EX = = 8 ciklusa Predikcija vremena izvršenja kod out-of-order procesora Odredjivanje T IS, za sekvencu instrukcija, kod out-of-order procesora je znatno teže od odredjivanja T IS kod in-order procesora jer postoji veći broj potencijalnih redosleda po kojima se instrukcije mogu izvršavati. U opštem slučaju, najbolji pristup je onaj koji počinje sa analizom sekvence instrukcija i lociranjem zavisnosti koje postoje izmedju njih. Nakon što su zavisnosti izmedju instrukcija identifikovane instrukcije se dodeljuju ciklusima za iniciranje izvršenja sa ciljem da se minimizira kašnjenje izmedju prve i zadnje instrukcije u sekvenci. Napori koji se čine da se odredi najbolji mogući redosled skupa instrukcija esponencijalno se povećava sa brojem instrukcija u skupu, jer je potrebno razmatrati sve moguće potencijalne reoslede izvršenja. Sa ciljem da se smanji složenost logike za iniciranje izvršenja instrukcije postavljaju se neka ograničenja. Ograničenja se pre svega odnose na to da logika inicira izvršenje instrukcija po redosledu. Pretpostavku koju činimo je sledeća: Procesor inicira izvršenje instrukcije odmah (sa prvim ciklusom) kada zavisnosti u okviru programa to dozvole. Ako je u okviru ciklusa moguće inicirati izvršenje većeg broja instrukcija i procesor poseduje dovoljan broj EX-U jedinica, procesor koristi gramžljiv (greedy) pristup i inicira izvršenje onih instrukcija koje se u programu javljaju ranije. U suštini kompilator razmatra (analizira) sve moguće redoslede izvršenja instrukcija i odredjuje redosled čije je vreme izvršenja najkraće (kompilator je u stanju da posveti mnogo više pažnje i napora kako bi obavio analizu planiranja izvršenja instrukcija u odnosu na logiku za iniciranje izvršenja instrukcija). Koristeći gramžljivi (pohlepan) pristup u postupku iniciranju izvršenja sekvence instrukcija kod out-of-order 46

47 procesora mnogo je lakše odrediti vrreme T IS. Naime, počinje se prvom instrukcijom u sekvenci, zatim se ide na naredne, pri čemu se svaka instrukcija ako ima dostupne sve svoje operande dodeljuje na izvršenje odmah u narednom ciklusu. Broj instrukcija koje se u tekućem ciklusu dodeljuju radi izvršenja treba: (a) da je manji ili jednak broju instrukcija čije izvršenje procesor može istovremeno da inicira; (b) broj instrukcija koje se iniciraju ne sme da premaši broj dostupnih EX-U jedinica procesora. Ponavljajući ovaj proces za sve instrukcije u sekvenci moguće je odrediti T IS. Primer 3 Odrediti T IS sledeće programske sekvence kod out-of-order procesora koji ima dve EX-U jedinice. Svaka EX-U jedinica može da izvrši bilo koju od operacija. Latencija operacije Ld je dva ciklusa, a ostalih operacija jedan ciklus. Ld Add Sub Mul r1, (r2) r3, r1, r4 r5, r6, r7 r8, r9, r10 Odgovor Sekvenca je identična kao ona u Primeru 2 koji se odnosi na procesor koji ima in-order iniciranje izvršenja instrukcija. Jedina zavisnost u ovoj sekvenci (RAW zavisnost) postoji izmedju instrukcija Ld i Add. Zbog ove zavisnosti instrukcija Add mora da se inicira radi izvršenja najmanje dva ciklusa nakon Ld. Obe instrukcije, Sub i Mul, moguće je inicirati u istom ciklusu kao i Ld. Koristeći gramžljiv (pohlepan) pristup, u ciklusu n se iniciraju Sub i Ld, u ciklusu n+1 se inicira Mul, dok se Add inicira u ciklusu n+2. To znači da je ukupno potrebno vreme od tri ciklusa za iniciranje, dok je vreme izvršenja T EX = T LP + T IS -1 = = 7 ciklusa Implementacija iniciranja izvršenja kod out-of-order procesora Kod in-order procesora, instrukcioni prozor (broj instrukcija koje procesor ispituje kako bi selektovao koju od instrukcija da inicira radi izvršenja u svakom ciklusu) može biti relativno mali, jer se procesoru ne dozvoljava da inicira izvršenje instrukcije sve dok se ne iniciraju sve prethodne koje se javljaju ranije u programu. Za procesor sa n EX-U jedinica, samo n narednih programskih instrukcija je moguće inicirati u narednom ciklusu, tako da je instrukcioni prozor dužine n, u opštem slučaju, dovoljan. Out-of-order procesori zahtevaju znatno veći instrukcioni prozor u odnosu na in-order procesore. Veći instrukcioni prozor pruža znatno veću mogućnost kod odredjivanja koju će od instrukcija inicirati u datom ciklusu. Ipak treba naglasiti da se logika prozora usložnjava sa kvadratom broja instrukcija koje se čuvaju u instrukcionom prozoru. Naime, svaka instrukcija u prozoru mora da se uporedjuje sa svim ostalim instrukcijama kako bi se odredile zavisnosti izmedju njih. Ovo čini da implementacija instrukcijonog prozora, sa aspekta iznosa ugradjenog hardvera, bude skupa. Proceduru na koju smo već ukazali, a odnosi se na odredjivanje vremena izvršenja instrukcione sekvence kod out-oforder procesora, predpostavlja da je instrukcioni prozor procesora dovoljno veliki i da obezbedjuje procesoru mogućnost da istovremeno ispita sve instrukcije u sekvenci. Ako ovo nije slučaj, predikcija 47

48 vremena izvršenja postaje veoma teška, jer postaje neophodno potrebno čuvati trag o tome koje se od instrukcija u datom ciklusu nalaze u instrukcionom prozoru, a selektovati radi izvršenja samo one instrukcije koje pripadaju tom skupu. Obrada prekida i programskih izuzetaka unosi dodatnu implementacionu teškoću kod out-of-order procesora. Ako se instrukcije mogu izvršavati van redosleda, veoma je teško tačno odrediti koju od instrukcija treba izvršiti kada se u toku izvršenja instrukcije javi izuzetak ili prekid. Šta više ova situacija predstavlja teškoću čak i za programera kada on treba da odredi uzrok generisanja izuzetka. Takodje ovo predstavlja i problem sistemu jer je sada potrebno da se sistem ponovo vrati na izvršenje osnovnog (prekinutog) programa nakon završetka rutine za obradu prekida. Da bi izašli na kraj sa ovim problemom, skoro svi out-of-order procesori koriste tehniku nazvanu povlačenje-po-redosledu (in-order retirement). Kada instrukcija generiše rezultat, rezultat će se upisati u RF polje samo ako su u programu završene sve prethodne instrukcije. Inače, rezultat se pamti (čuva) sve dok sve instrukcije koje prethode ne završe, pa se tek nakon toga rezultati upisuju u RF polje. S obzirom da se rezultati u RF polje upisuju po redosledu, hardver može na veoma jednostavan način da izbaci (obriše) sve rezultate koji čekaju na upis u RF polje, u slučaju kada se javi izuzetak ili generiše prekid. Na ovaj način se stiče iluzija da se instrukcije izvršavaju po redosledu, a to omogućava programeru na relativno lak način da otkloni greške u programu, i obezbedi nastavak programa od naredne instrukcije u slučaju kada završi rutina za obradu prekida. Procesori koji koriste ovu tehniku, u opštem slučaju, imaju ugradjenu logiku za premošćavanje (bypassing logic), ili nekih drugih tehnika za prosledjivanje rezultata instrukcije unapred (forwarding the result of instruction) zavisnim instrukcijama pre nego što se rezultat upiše u RF polje. Na ovaj način zavisnim instrukcijama je obezbedjeno iniciranje izvršenja odmah nakon što instrukcija generiše rezultat, bez da se čeka da se rezultat instrukcije upiše u RF polje u protočnoj fazi obrade Write-Back (WB). Preimenovanje registara WAR i WAW zavisnosti često se alternativno nazivaju name dependencies. Ove zavisnosti rezultat su činjenice da su programi veoma često prisiljeni da intenzivno koriste registre. Imajući u vidu da je broj registara u RF polju ograničen, često se za jedan kratak period jedan te isti registar koristi za više namena. WAR i WAW zavisnosti mogu kod superskalarnih procesora da ograniče ILP, jer je potrebno obezbediti da sve instrukcije koje čitaju sadržaj registra završe sa operacijom čitanja (aktivnost u protočnom stepenu RR) pre nego što bilo koja druga instrukcija upiše novu (overwrites) vrednost u taj registar. Preimenovanje registara (register renaming) je tehnika kojom se smanjuje uticaj WAR i WAW zavisnosti na ostvarivanje paralelizma u toku rada, putem dinamičke dodele svake programski generisane vrednosti novom registru, otklanjajući na taj način uticaj WAR i WAW zavisnosti. Tehnika preimenovanja registra je prikazana na slici D2.26. Svaki skup instrukcija poseduje svoje arhitekturno RF polje, koje predstavlja skup registara koje taj skup instrukcija koristi. Sve instrukcije specificiraju svoje ulaze i izlaze van arhitekturnog RF polja. Kada je u pitanju procesor, obimnije RF polje, poznato kao hardversko RF polje, implemenntira se umesto arhitkturnog RF polja. Logika za primenovanje prati preslikavanje izmedju registara arhitekturnog i registara hardverskog RF polja. Uvek kada instrukcija čita registar arhitekturnog RF polja, identifikator (ID) registra se predaje preko logike za preimenovanje kako bi se odredilo kom se od registara hardverskog RF polja pristupa. Kada instrukcija upisuje u arhitekturno RF polje, logika za preimenovanje kreira novo preslikavanje izmedju arhitekturnog registra u kome se upisuje i registra koji pripada hardverskom RF polju. Instrukcije koje kao naredne slede u programu i čitaju arhitekturni registar pristupaju novom hardverskom registru i vide rezultat te instrukcije. 48

49 Slika D2.26. Preimenovanje registara Na slici D2.27 prikazano je na koji način tehnika za preimenovanje registara može da poboljša performanse. U početnom (pre preimenovanja) programu, postoji WAR zavisnost izmedju instrukcija Ld r7,(r3) i Sub r3,r12,r11. Kombinacija od RAW i WAR zavisnosti koje postoje u programu prisiljavaju program sa slike 4 da potroši najmanje tri ciklusa na iniciranje izvršenja instrukcija, jer Ld mora da se inicira nakon Add, dok se Sub ne može inicirati pre Ld, a St se ne može inicirati sve dok ne završi Sub. pre preimenovanja nakon preimenovanja Add r3, r4, r5 Add hw3, hw4, hw5 Ld r7, (r3) Ld hw7, (hw3) Sub r3, r12, r11 Sub hw20, hw12, hw11 St (r15), r3 St hw15, hw10 Slika D2.27. Primer primenovanja registara Preimenovanjem registara, prvi upis u r3 se preslikava u hardverski registar hw3, dok se drugi upis preslikava u hw20. Ovakvim preslikavanjem konvertuje se početno zadati četvoro-instrukcijski lanac (leva strana slike D2.27) u dvo-instrukcijski lanac (desna strana slike D2.27), koji se može izvršavati paralelno ako procesor dozvoljava out-of-order izvršenje. U opštem slučaju, preimenovanje registra kao tehnika je od veće koristi za out-of-order nego za in-order procesore, jer procesoru tipa out-of-order mogu da preurede redosled izvršenja instrukcija nakon što se tehnikom preimeovanja registara razbiju name dependencies (WAR i WAW zavisnosti). Primer 4 Za out-of-order superskalarni procesor sa 8 EX-U jedinica odrediti vreme izvršenja sledeće programske sekvence sa i bez preimenovanja registara, ako bilo koja od EX-U jedinica može da izvrši bilo koju instrukciju, a latentnost svih instrukcija je jedan ciklus. Usvojiti da hardversko RF polje sadrži dovoljan broj registara za preslikavanje svakog odredišnog registra u različiti hardverski registar, i da je protočni sistem dubine Ld r7, (r8) 49

50 Mul Sub Add Ld Div r1, r7, r2 r7, r4, r5 r9, r7, r8 r8, (r12) r10, r8, r10 Odgovor U konkretnom slučaju, WAR zavisnosti predstavljaju obziljno ograničenje koje se odnosi na paralelizam, prisiljavajući instrukciju Div da se inicira radi izvršenja tri ciklusa nakon prve Ld, tako da je ukupno vreme izvršenja 8 ciklusa (instrukcije Mul i Sub mogu da se izvršavaju paralelno, kakav je slučaj sa Add i drugom Ld). Nakon preimenovanja registara, oblik programa je sedeći: Ld Mul Sub Add Ld Div hw7, (hw8) hw1, hw7 hw2 hw17, hw4, hw5 hw9, hw17, hw8 hw18, (hw12) hw10, hw18, hw10 Korišćenjem tehnike preimenovanja registra, program se razbija na tri skupa sa po dve zavisne instrukcije (Ld i Mul, Sub i Add, i Ld i Div). Instrukcija Sub i druga Ld mogu sada da se iniciraju radi izvršenja u istom ciklusu kao i prva Ld. Instrukcije Mul, Add i Div mogu da se iniciraju radi izvršenja u narednom ciklusu, što rezultuje ukupnom vremenu izvršenja od 6 ciklusa. Implementacijom tehnike preimenovanja registara u principu se ostvaruju manja poboljšanja u odnosu na slučaj kada bi se promenila ISA i učinilo da novi registri budu sastavni deo arhitekturnih registara, iz prostog razloga što kompilator ne može da korosti nove registre za memorisanje privremenih vrednosti u programu (hardverski registri jesu sastavni deo procesora ali nisu vidljivi kompilatoru, tj. kompilatoru su vidljivi samo arhitekutrni a ne i hardverski registri). Ipak, tehnika preimenovanje registara omogućava novim procesorima da sačuvaju kompatibilnost sa programima kompajliranim za starije verzije procesora jer ova thenika ne zahteva promenu ISA. Pri ovome treba odmah naglasiti da se sa povećanjem broja arhitekturnih registara u procesoru povećava i broj bitova potreban svakoj instrukciji za kodiranje registra, tj. potreban je sada veći broj bitova za kodiranje kako izvorišnih operanada tako i odredišnog registra. VLIW procesori Superskalarni procesori o kojima smo do sada diskutovali koriste hardver za eksploataciju ILP-a. Ovi procesori lociraju instrukcije koje se u sekvencijalnim programima mogu paralelno izvršavati. Mogućnost da ostvare performansna poboljšanja nad starim programima i očuvaju kompatibilnost izmedju različitih verzija procesora u okviru iste familije, učinila je superskalarne procesore, sa ekonomske tačke gledišta, veoma uspešne. Ipak, dalje povećanje performansi superskalarnih procesora zahteva značajno usložnjavanje hardvera. Sa druge strane VLIW (Very Long Instrucition Word) procesori eksploatišu ILP na jedan drugačiji način u odnosu na superskalarne procesore. Naime, ovi procesori se oslanjaju na pomoć kompilatora, koji odredjuje koja se od instrukcija može izvršavati paralelno i predajom te informacije hardveru. Kod VLIW procesora, svaka instrukcija specificira nekoliko nezavisnih operacija koje se paralelno izvršavaju od strane hardvera, kako je to prikazano na slikama D2.28 i D

51 operation 1 operation 2 operation 3 operation 4 Slika D2.28. Jedan od formata VLIW instrukcije from memory operation 1 operation 2 operation 3 operation 4 VLIW instruction instruction logic operation 1 operation 2 operation 3 operation 4 VLIW instruction Execution unit Execution unit Execution unit Execution unit Register file Slika D2.29. Klasična arhitektura VLIW procesora Svaka operacija kod VLIW instrukcije ekvivalentna je jednoj instrukciji kod superskalarnog ili procesora sa strogim sekvencijalnim izvršenjem instrukcija (skalarnog procesora). Broj operacija kod VLIW instrukcije jednak je broju izvršnih jedinica procesora. Svaka od operacija specificira instrukciju koja će se izvršiti na odgovarajućoj EX-U jedinici, u ciklusu u kome se inicira izvršenje VLIW instrukcije. Ne postoji potreba za ugradnjom hardvera koji ispituje koja se od instrukcija može izvršavati paralelno, jer je kompilator taj koji je zadužen da obezbedi da se sve operacije u instrukciji mogu izvršavati simultano. Imiajući u vidu ovu činjenicu, logika za iniciranje izvršenja instrukcija kod VLIW procesora je značajno jednostavnija u odnosu na logiku koja obavlja istu funkciju kod superskalarnog procesora sa istim brojem EX-U jedinica. Najveći broj VLIW procesora u svojim RF poljima nema ugradjeno scoreboard-ove. Umesto toga, kompilator je taj koji je odgovoran i obezbedjuje da se iniciranje izvršenja instrukcije neće obaviti sve dok operandi instrukcije ne budu spremni. U toku svakog ciklusa, instrukciona logika pribavlja VLIW instrukciju iz memorije i inicira izvršenje aktiviranjem EX-U jedinica. U suštini, kompilator može da predvidi koliko tačno ciklusa je potrebno da prodje izmedju izvršenja dve operacije u programskoj sekvenci, putem brojanja broja VLIW instrukcija izmedju te dve operacije. Pored toga, kompilator može da planira van-redosledno izvršenje instrukcija izmedju kojih postoji WAR zavisnost onoliko dugo sve 51

52 dok instrukcija koja obavlja čitanje registra završi pre instrukcije koja upisuje u registar, tj. preko stare vrednosti koja se čuva u registar se ne dopisuje nova vrednost sve dok se ne završi instrukcija koja prethodno treba da obavi operaciju upis. Tako na primer kod VLIW procesora kod koga je latencija usled punjenja (load) dva-ciklusa, sekvenca Add r1,r2,r3 i Ld r2,(r4) biće planirana radi izvršenja tako da se operacija Add javi u instrukciji nakon operacije, punjenja (load), s obzirom da punjenje neće dopisati novu vrednost u r2 sve dok ne protektnu dva ciklusa. Za i protiv VLIW Glavne prednosti VLIW arhitekture su sledeće: a) jednostavnost instrukcione logike koja, u odnosu na superskalarne procesore, omogućava rad pri višim frekvencijama; i b) kompilator je taj koji ima potpunu kontrolu nad izvršenjem operacija. U opštem slučaju, kompilator ima širi i bolji pregled programa nad izvršenjem operacija u odnosu na pogled koji ima instrukciona logika kod superskalarnog procesora. Imajući u vidu ovu činjenicu efikasnost pronalaženja operacija koje se mogu izvršavati paralelno kod VLIW procesora je bolja. Jednostavnija instrukciona logika VLIW procesora doztvoljava da se na istoj površini silicijuma ugradi veći broj EX-U jedinica, u poredjenju sa superskalarnim procesorom. Najznačajniji nedostatak VLIW procesora je taj da VLIW programi isključivo rade korektno samo kada se izvršavaju na procesoru sa istim brojem EX-U jedinica i istom instrukcionom latentnošću kao i na procesoru za koga je vršena kompilacija, što čini takoreći nemoguće da se očuva kompatibilnost izmedju generacija procesora u familiji. Kada se broj EX-U jedinica kod naredne generacije procesora iz iste familije poveća, novi proceosr će pokušati da kombinuje u istom ciklusu operacije od većeg broja instrukcija, potencijalno uzrokujući da se zavisne instrukcije izvršavaju u istom ciklusu. Razlike u instrukcionim latentnostima koje postoje izmedju generacija procesora iz iste familije uzrokuju da se operacije izvršavaju pre nego što su njihovi ulazi dostupni (spremni) ili se preko ulaznih vrednosti upisuju nove vrednosti (overwrite), što rezultira nekorektnom ponašanju programa. Pored ostalog, kada kompilator ne može da pronadje dovoljno paralelnih operacija kako bi popunio slotove u instrukciji, on mora eksplicitno da popuni odgovarajuće slotove operacija operacijama tipa Nop. Ovo ima za posledicu da VLIW programi zauzimaju znatno veći prostor u memoriji u odnosu na ekvivalentne programe koji se izvršavaju na superskalarnim procesorima. Imajući u vidu nabrojane prednosti i nedostatke, VLIW procesori češće se koriste kod aplikacija tipa DSP, gde su visoke performanse i niska cena imperativ. Danas se, VLIW procesori sa znatno manje uspeha koriste kod procesora opšte namene kakve su radne stanice i PC mašine, jer za korisnika je od vitalne važnosti očuvanje kompatibilnost softvera izmedju generacija procesora. Primer 5 Dati odgovor na sledeća pitanja: a) VLIW je arhitekturna ideja kojom se efikasno eksploatiše kôd (program) kod koga je korektno od strane kompilatora obavljeno planiranje-izvršenja-instrukcija (instruction scheduling)? b) Kod VLIW arhitekture postoji nekoliko izvršnih jedinica koje mogu raditi konkurentno? c) Instrukcionu reč VLIW arhitekture čine operacije za svaku od izvršnih funkcionalnih jedinica pri čemu se operacije u okviru instrukcije mogu konkurentno pasporedjivati radi izvršenja (dispatched)? d) kod VLIW arhitektura kompilator ima zadatak da garantuje da će se sve operacije u okviru jedinstvene instrukcije istovremeno izvršavati? e) Kod VLIW arhitektura svi operandi, za sve operacije u okviru instrukcije u trenutku kada se instrukcije rasporedjuju radi izvršenja, treba da su dostupni u registrima. 52

53 f) Kod prave VLIW implementacije, kompilator planira izvršenje instrukcija kako bi ostvario zahteve definisane pod stavkom e), dok hardver treba da obavi sledeće zadatke: (1) odredi koje operacije se mogu rasporedjivati radi konkurentnog izvršenja; (2) zabrani rasporedjivanje izvršenja sve dok svi operandi nisu dostupni u registrima. g) Jedan od problema na koje se nailazi kod VLIW mašina odnosi se na nekompatibilnost kôda (programa) kako naviše tako i naniže, za različite verzije VLIW arhitekture. h) Tokom vremena VLIW arhitektura može da se usavršava. Tako na primer, da se ugradi veći broj funkcionalnih izvršnih jedinica čime se stvaraju mogućnosti da se paralelno izvršava veći broj instrukcija. Da li su objektni kôdovi stare mašine i nove identični? i) Neka je kod VLIW arhitekture, za specificirani iznos latencije funkcionalnih jedinica kod odredjenih implementacija kôd (program) perfektno isplaniran za izvršenje. Da li je kod neke druge nove implementacijevliw mašine zbog promene latencije funkcionalnih jedinica potrebno izvršiti rekompilaciju kôda (programa) stare VLIW mašine kako bi se isti korektno izvršio i na novoj mašini. j) Kôd (program) VLIW arhitekture zavisi od broja funkcionalnih jedinica u implementaciji. Da li je kod napisan za VLIW sa četiri integer funkcionalne jedinice identičan kao i kod za VLIW arhitekturu sa osam integer funkcionalnih jedinica? k) Kod VLIW arhitekture ne ugradjuje se složen hardver koji podržava van-redosledno izvršenje instruikcija koji je tipičan za superskalarne procesore, ali se nudi bilji potencijal za efikasniju podršku paralelizma na nivou izvršenja instrukcija? l) Glavna teškoća koja se javlja kod korišćenja VLIW arhitekture je sledeća: Korišćenje jedinstvenog objektnog koda na nekoliko generacija iste arhitekture je nemoguće, a to čini da ova arhitektura ne bude tako atraktivna i široko prihvaćena? Napomena: Odgovor na svako od postavljenih pitanja dati u formi tvrdnja je tačna, netačna ili delimično tačna. Za slučaj da je odgovor netačan ili delimično tačan formulisati tačan. Primer 6 Pokazati na koji način će kompilator planirati izvršenje sledeće sekvence operacija kada se ona izvršava na VLIW procesoru sa tri EX-U jedinice. Smatrati da sve operacije imaju latentnost od dva ciklusa, i da svaka EX-U jedinica može da izivrši bilo koju operaciju. Add Sub Ld Ld Mul Add Sub r1, r2, r3 r16, r14, r7 r2, (r4) r14, (r15) r5, r1, r9 r9, r10, r11 r12, r2, r14 Odgovor Plan izvršenja operacija oblika je Instrukcija 1 Add r1,r2,r3 Ld r2,(r4) Ld r14,(r15) Instrukcija 2 Sub r16,r14,r7 Add r9,r10,r11 Nop Instrukcija 3 Mul r5,r1,r9 Sub r12,r2,r14 Nop 53

54 Uočimo da se operacija Ld r14,(r15) planira za izvršenje u Instrukciji 1, tj. pre operacije Sub r16,r14,r7 (pripada Instrukciji 2) uprkos činjenici da se Sub r16,r14,r7 u početno zadatom programu javlja pre Ld r14,(r15), i čita sadržaj odredišnog registra operacije Ld r14,(r15). S obzirom da VLIW operacije ne upisuju vrednosti u registar sve dok ne završe, prethodna vrednost u r14 je dostupna još dva ciklusa nakon iniciranja Instrukcije 1, a to omogućava operaciji Sub da pročita staru vrednost iz r14 i generiše korektan rezultat. Van-redosledno planiranje izvršenja ovih operacija omogućava programu da isplanira izvršenje u nekoliko instrukcija (konkretno 3). Na sličan način operacija Add r9,r10,r11 se planira radi izvršenja pre operacije Mul r5,r1,r9, i pored toga što se ove operacije mogu smestiti u istu instrukciju, bez da se poveća broj instrukcija u programu. Kompilatorske tehnike za ILP Kompilator koristi veliki izibor tehnika za povećavanje performansi kompajliranih programa, uključujući konstantnu propagaciju, eliminaciju nepotrebnog koda, i dodela registara. Opšta teorija o konstrukciji kompilatora izučava se u predmetu ''Programski jezici i prevodioci'' pa zbog toga se na izučavanje ove teorije nećemo zadržavati. Na ovom mestu ukazaćemo samo na sledeće dve značajne tehnike: a) odmotavanje petlje optimizacija koja značajno povećava ILP; i b) softverska protočnost Odmotavanje petlje Individualne iteracije kod petlji poseduju relativno nizak nivo ILP jer: i) u najvećem broju slučajeva čine ih lanci zavisnih instrukcija; i ii) izmedju grananja postoji relativno mali broj instrukcija, tj. telo petlje čini mali broj instrukcija. Odmotavanje petlje (loop unrolling), kao jedna od tehnika, sa odredjenim uspehom izlazi na kraj sa ovim ograničenjima, na taj način što transformiše petlju od N interacija na petlju sa N/M iteracija, gde svaka iteracija nove petlje obavlja posao od M iteracija stare petlje. Na ovaj način povećava se broj instrukcija izmedju grananja, a to obezbedjuje kompilatoru i hardveru bolju mogućšnost da poveća ILP. U slučaju kada su iteracije kod početno zadate petlje nezavisne ili sadrže samo mali broj zavisnih izračunavanja, odmotgavanje petlje može da kreira veći broj lanaca sa zavisnim instrukcijama. Treba pri tome imati u vidu da je pre odmotavanja postojao samo jedan lanac, a sada ih je više čime se stvaraju uslovi za efikasnije iskorišćenje ILP-a. Na slici D2.30 prikazano je kako se vrši odmotavanje petlje za slučaj da je kod napisan na višem programskom jeziku C. Kod prvobitne petlje u toku jedne iteracije manipuliše se sa po jednim elementom od svakog vektora, izračunavaju se sume odgovarajućih elemenata izvornih vektora i smešta rezultat u odredišni vektor. Kod odmotane petlje u toku svake iteracije manipuliše se sa po dva elementa od oba vektora, i obavlja se posao koji odgovara dveju iteracija prvobitne petlje. U konkretnom slučaju (slika D2.30 desna strana) petlja je odmotana dva puta. Prvobitna petlja se može odmotati četiri puta dodavanjem 4 vrednosti indeksa petlje i u toku svake iteracije i izvršavanjem posla od četiri iteracija prvobitno zadate petlje u svakoj iteraciji odmotane petlje. Prvobitna petlja Odmotana petlja for (i = 0; i < 100; i ++){ for i = 0; i < 100; i += 2; { 54

55 a[i] = b[i] + c[i] ; a[i] = b[i] + c[i]; } a[i + 1] = b[i + 1] + c[i + 1] ; } Slika D2.30. Primer odmotavanja petlje Ovaj primer jasno ukazuje na jednu važnu prednost koja se nudi odmotavanjem petlje, a to je smanjenje režijskog vremena petlje (loop overhead). Odmotavanjem prvobitne petlje za dva puta, smanjuje se broj iteracija u petljii sa 100 na 50. Na ovaj način prepolovljuje se broj uslovnih instrukcija grananja koje treba izvršavati na kraju svake iteracije u petlji. Time se smanjuje ukupan broj instrukcija koje sistem treba da izvrši u toku ovih iteracija u petlji, a što je značajnije povećava se iznos dostupnog ILP-a. Treba istaći da je odmotavanje petlje od koristi i kod strogo sekvencijalnih procesora, ali se ipak značajnija poboljšanja ostvaruju kod ILP procesora. Na slici D2.31 prikazano je kako se na asemblerskom jeziku može implementirati petlja sa slike D2.30, i na koji način kompilator može da odmota petlju i planira izvršenje petlje na superskalarnom procesoru koji manipuliše sa 32-bitnim poodacima. Čak i u prvobitnoj petlji, treba uočiti da je kompilator isplanirao izvršenje tako što je potencirao što je moguće veći iznos ILP-a, tako taj što je postavio obe inicijalne Ld instrukcije ispred instrukcije Add koja inkrementira pokazivač i obavljanjem inkrementiranja pokazivača ispred Add koja implementira a[i] = b[i] + c[i]. Uredjenjem instrukcija na takav način da su nezavisne instrukcije u programu medjusobno blizu stvaraju se uslovi da hardver superskalarnog procesora lakše locira ILP, dok postavljanjem instrukcije za inkrementiranje pokazivača izmedju Ld i instrukcije za izračunavanje a[i] povećava se broj operacija koje se nalaze izmedju Ld i korišćenjem njihovih rezultata, a to čini više verovatno da instrukcije Ld završe pre nego što su im rezultati potrebni. Odmotana petlja počinje sa tri instrukcije Add koje postavljaju pokazivače na a[i+1], b[i+1] i c[i+1]. Izdvajanjem ovih pokazivača u posebne registre u odnosu na pokazivače na a[i], b[i] i c[i] omogućava se da se operacije Load i Store koje se odnose na i-ti i (i+1)-vi elemenat svakog vektora izvode paralelno, umesto da se vrši inkrementiranje svakog od pokazivača izmedju operacija obraćanja memoriji. Odmotana petlja Mov r31, #0 Add r8, #4, r2 ; /*r8 je pokazivač na b[ i+1] */ Add r10, #4, r4; /*r10 je pokazivač na c [i+1] */ Add r13, #4, r6; /*r13 je pokazivač na a [i+1] */ Neodmotana petlja loop: Ld r1, (r2) Mov r31, #0; /*inicijalizacija i*/ Ld r9, (r8); loop: Ld r1, (r2) /*r2 je pokazivač na b[ i] */ Ld r3, (r4); Ld r3, (r4) /*r4 je pokazivač na c[ i ]*/ Ld r11, (r10) Add r2, #4, r2; /*inkrement b[ i+1 ]*/ Add r2, #8, r2; /*inkrement za 2*32 bita*/ Add r4, #4, r4; /* inkrement c[ i+1 ]*/ Add r4, #8, r4; Add r6, r1, r3; Add r8, #8, r8; St (r7), r7; /* r7 je pokazivač na a[ i ]*/ Add r10, #8, r10; Add r7, #4, r7; /* inkrement a[ i+1] * / Add r6, r1, r3; Add r31, #1, r31; /*inkrement i */ Add r12, r9, r11; Bne loop, r31, #100; /*go to naredna*/ St (r7), r6; /*iteracija*/ St (r13), r12; Add r7, #8, r7; Add r13, #8, r13; Add r31, #2, r31; /*r31 se inkrementira za 2*/ /*umesto za 1*/ Bne loop, r31, #100; Slika D2.31. Primer odmotane petlje na asemblerskom jeziku 55

56 Inicijalni blok koji se odnosi na instrukcije za postavljanje (početno definisanje) vrednosti kod odmotane petlje naziva se preambula petlje. U okviru tela petlje, kompilator je smestio sva punjenja u jedan blok, nakon toga slede inkrementi pokazivača, zatim se izvode izračunavanja a[i], a[i + 1], i konačno smeštanje rezultata i grananje na početak petlje. Na ovaj način maksimizira se kako paralelizam tako i vreme za koje punjenje (load) treba da se završi. U primeru koga smo razmatrali, predpostavili smo da je broj iteracija prvobitne petlje bez ostatka deljiv sa stepenom odmotavanja petlje, što čini odmotavanje petlje jednostavnim. Kod velikog broja slučajeva, na žalost, broj iteracija u petlji nije deljiv sa stepenom odmotavanja, ili pak nije poznat u trenutku kompajliranja, što otežava postupak odmotavanja. Tako na primer, neka kompilator želi da odmota petlju sa slike D2.30 osam puta, ili neka broj iteracija bude ulazni parametar za proceduru koja sadrži petlju. Kod ovakvih situacija kompilator generiše dve petlje. Prva petlja predstavlja razmotanu verziju početne petlje, i izvršava se sve dok je broj preostalih iteracija manji od stepena odmotavanja petlje. Druga petlja zatim izvršava ostale iteracije. Kod petlji gde broj iteracija na početku petlje nije poznat, kakve su petlje kod kojih se vrši analiza niza u cilju nalaženja karaktera end-of-string, postaje teže izvršiti odmotavanje petlje pa se zbog toga koriste prefinjenije (sofisticiranije) tehnike. Na slici D2.32 prikzano je kako se petlja sa slike D2.30 može odmotati D2.31 puta. Prva petlja prelazi kroz 8 iteracija odjednom sve dok se ne detektuje uslov i + 8 >= 100. Druga petlja počinje narednom iteracijom i prolazi kroz ostale iterativne korake. S obzirom da je i integer promenljiva, izračunavanje i = ((100 / 8) * 8) ne postavlja i na 100. Integer izračunavanje 100 / 8 generiše samo integer deo količnika (zanemarujući ostatak), pa množenjem rezultata sa 8 daje najveći multipl od 8 koji je manji od 100, a to je 96, što je i tačka gde druga petlja počinje sa svojim iteracijama. Odmotana petlja for (i=0; i <100; i+=8){ a[ i ] = b[ i ]+ c[ i ] ; Prvobitna petlja a[i+1] = b[i+1] + c[i+1] ; for (i = 0; i < 100; i++){ a[i+2] = b[i+2] + c[i+1] ; a[ i ]= b[ i ]+ c[i] ; } a[i+3] = b[i+3] + c[i+3] ; a[i+4] = b[i+4] + c[i+4] ; a[i+5] = b[i+5] + c[i+5] ; a[i+6] = b[i+6] + c[i+6] ; a[i+7] = b[i+7] + c[i+7] ; } for i = ((100/8)*8); i< 100; i++){ a [i ]= b[ i ]+ c [i] ;} Slika D2.32. Odmotavanje petlje sa ostatkom iteracija Softrverska protočnost Tehnika odmotavanje petlje poboljšava performanse sistema putem povećanja broja nezavisnih operacija koje se nalaze u okviru iteracije petlje. Jedna druga optimizacija, nazvana softverska protočnost (software pipelining) poboljšava performanse sistema u toku izvršenja programa putem raspodele svake iteracije prvobitne petlje na veći broj iteracija protočne petlje, tako da svaka iteracija nove petlje obavlja neki posao koji pripada više- strukim iteracijama prvobitne petlje. Tako na primer, petlja koja pribavlja i b[i] i c[i] iz memorije, zatim vrši sabiranje elemenata vektora da bi se dobio elemenat a[i], i na kraju vrši upis elementa a[i] u memoriju, se može tako transformirati da svaka iteracija upisuje prvo u memoriju a[i-1], zatim izračunava a[i] na osnovu vrednosti b[i] i c[i] koje su pribavljene u toku zadnje iteracije, i konačno pribavlja iz memorije b[i+1] i c[i+1] da bi pripremila te vrednosti za narednu iteraciju. Na ovaj način posao izračunavanja elementa vektora a se distribuira kroz tri iteracije nove petlje. Preplitanjem (interleaving) delova različitih iteracija petlji povećava se ILP, na isti način kao 56

57 i kod tehnike odmotavanja petlji. Veliki broj kompilatora kombinuje tehnike odmotavanje petlji i softversku protočnost sa ciljem da poveća iznos ILP-a. D2.9 Interleaving Ako je glavna memorija računara struktuirana kao skup fizički izdvojenih modula, svaki sa svojim sopstvenim adresnim baferskim registrom, ABR, i baferskim registrom za podatke, DBR, tada operacije tipa pristup memoriji mogu istovremeno da se obavljaju nad većim brojem memorjskih modula. Način distribucije adresa po modulima ključan je kod odredjivanja prosečnog broja aktivnih modula u toku iziračunavanja. Dva karakteristična načina organizacije adresa prikazana su na slici D2.33. U prvom slučaju, memorijske adrese generisane od strane CPU-a se dekodiraju kako je to prikazano na slici D2.33a). MS k bitova adresiraju n modula, dok LS m-bitova pojedinu reč u okviru tog modula. Ovaj metod pristupa naziva se high-order interleaving. Tipično za ovaj metod je sledeće: Kada se pristupa uzastopnim lokacijama, kakav je slučaj kada se blok podataka prenosi ka/iz keša, samo jedan modul učestvuje u prenosu. Istovremeno, ipak, drugi uredjaji mogu koristeći DMA mogućnosti prenosa pristupati informaciji u drugim modulima. Drugi, znatno efikasniji način adresiranja modula prikazan je na slici D2.33b). Ovaj metod se naziva low-order interleaving (ili tzv. memory interleaving). LS k bitova memorijske adrese se koriste za selekciju modula, dok se pomoću MS m-bitova adresira lokacija u okviru modula. Kod ovog rešenja redosledne adrese su locirane u sukcesivnim modulima. Shodno ovome, bilo koja komponenta sistema koja generiše zahteve za pristup redoslednim memorijskim lokacijama aktivira (okupira) istovremeno po nekoliko modula. Kao rezultat imamo, brži pristup bloku podataka i u celini veće prosečno iskorišćenje memorije. Da bi se implementirala interleaved-struktura, mora da postoje 2 k modula, inače će postojati praznina zbog nepostojećih lokacija u memorijskom prostoru. k-bitova m-bitova modul adresa u okviru modula adresa glavne memorije ABR modul 0 DBR... ABR modul i DBR... ABR modul n-1 DBR a) high-order interleaving uzastopne reči u modulu m-bitova adresa u okviru modula k-bitova modul adresa glavne memorije ABR modul 0 DBR... ABR modul i DBR... ABR modul n-1 DBR b) low-order interleaving uzastopne reči u uzastopne module Slika D2.33. Adresiranje memorijskih modula 57

58 Efekat interleaving-a je značajan. Analizirajmo sada koliko je vremena potrebno za prenos bloka podataka iz glavne memorije u keš kada se javi promašaj kod operacije čitanja. Usvojimo da se koristi keš sa 8 reči po bloku. Kod promašaja u toku čitanja, blok koji sadrži željenu reč mora da se kopira iz memorije u keš. Neka hardver poseduje sledeće osobine. Jedan taktni interval je potreban da se preda adresa glavnoj memoriji. Neka je memorija realizovana od DRAM čipova koja dozvoljava da se prvoj reči pristupi nakon 8 taktnih intervala, a susednim rečima bloka se pristupa za 4 taktna intervala po reči. (Prisetimo se da kada se sukcesivnim lokacijama DRAM-a u vrsti ćelija pristupa radi čitanja, adresa vrste se dekoduje samo jedanput. Adrese uzastopnih kolona polja se zatim dovode kako bi se pristupilo željenim rečima, a ta vremena su jednaka samo polovini početnog vremena pristupa ). Naglasimo da je na kraju potreban jedan taktni interval da bi se predala reč keđ memoriji. U slučaju kada se koristi jedinstveni memorijski modul, vreme potrebno da se napuni željeni blok u kešu iznosi ( 7 4) + 1 = 38 taktnih int ervala Usvojimo sada da je memorija realizovana od četiri interleaved modula a koristi način povezivanja kao na slici D2.33b). Kada se početna adresa bloka dovede do memorije, kod sva četiri modula počinje pristup željenim podacima, koristeći MS-bitove adrese. Nakon 8 taktnih intervala svaki modul ima upisanu jednu reč podataka u svom registru DBR. Ove reči se prenose u keš, jednu po jednu u toku naredna 4 taktna intervala. U toku ovog vremena pristupa se narednoj reči u svakom modulu. Zatim su potrebna još četiri taktna intervala da bi se prenele ove reči u keš. Shodno prethodnom, ukupno vreme koje je potrebno da bi se blok podataka iz interleaved memorije napunio u keš iznosi = 17 taktnih int ervala To znači da interleaving smanjuje vreme potrebno da se izvrši prenos jednog bloka podataka iz glavne memorije u keš za faktor koji je veći od 2. D2.10 Izbor prave arhitekture za digitalno procesiranje signala u realnom vremenu Procesiranje signala u realnom vremenu i aplikacije koje koriste ovaj način obrade zadnjih desetak godina u značajnoj meri su promenili tržiste elektronike. Proizvodi su postali sve manji, brži, jeftiniji, a po performansama sve bolji i bolji. Projektanti se suočavaju sa problemom da za što kraće vreme projektuju i realizuju nov proizvod koji po svojim performansama je daleko složeniji i bolji u odnosu na proizvod iz prethodne generacije. Sa druge strane oni se suočavaju sa novim tehnologijama u proizvodnji poluprovodničkih komponenata koje, globalno gledano, sve više i više usložnjavaju arhitekture procesnih elemenata kao sastavnih delova integrisanih kola. Danas na tržištu se mogu identifikovati sledeće signalno-procesne arhitekture: - ASIC Application Specific Integrated Circuit - ASSP - Application Specific Standard Product - konfigurabilni procesori Configurable Processor - DSP Digital Signal Processor - FPGA Field Programmable Gate Array - MCU - Microcontroller - RISC/GPP Reduced Instruction Set Computer / General Purpose Processor Kriterijumi i merenja Kriterijumi koji se koriste za procenu mogućnosti procesnih elemenata su sledeći: 58

59 - Vremenski period od trenutka kada se proizvod zamisli do trenutka kada se proizvede (Time to market) veoma važno - Performanse (Performance) vrlo važne - Cena (Price) vrlo važna - Sredstva za projektovanje koja su a raspolaganju (Development Ease) - vrlo važna - Potrošnja (Power) srednje važnosti - Fleksibilnost karakteristika (Feature Flexibility) nisu od velike važnosti U Tabeli D2.1 prikazani su kriterijumi koji se odnose na pogodnost primene date arhitekture kod procesiranja signala u realnom vremenu. Tabela D2.1. Kriterijumi za procenu pogodnosti primene date arhitekture kod procesiranja signala u realnom vremenu D2.11 Digitalni signal procesori : Arhitekture Kompleksnost savremenih elektronskih sistema i uređaja, kakvi su recimo oni koji se koriste u mobilnoj telefoniji, navigacionim sistemima itd., sa aspekta usluga koje pružaju povećava se izuzetno brzo, ili kako se to popularno kaže koracima od sedam milja. Da bi ispunili zahtave projektanata, ovako složeni sistemi ne bi mogli korektno da funkcionišu bez dobro izrađene kombinacije hardvera i softvera, što drugim rečima kazano to znači da su ona uglavnom konstruisana od programibilnih VLSI komponenata. Za aplikacije u odgovarajućem domenu (komunikacije, elektromedicina, procesne industrije itd.), željeno ponašanje ovih VLSI kola i sistema, koje se pre svega odnose na dinamičko prilagođavanje uslovima za rad u realnom vremenu, karakteriše je izvršenje složenih algoritama i zadataka. Globalno posmatrano, sa tačke gledišta programibilnosti i sposobnosti izvršenja specijalizovanih zadataka VLSI kola koja se ugrađuju kod ovakvih sistema, kao što je prikazano na slici D2.34, dele se na: ASIC - application specific integrated circuit ASPP - application specific programmable processor ASIP - application specific instruction processor DSP - digital signal processor MPU - microprocessor unit 59

60 ASIC ASSP ASIP DSP MPU Izvr{ava izvr{ava izvr{ava izvr{ava sve mo`e da izvr{i Jedinstveni nekoliko specijalizovanu klase zadataka sve mogu}e Zadatak specifi~nih klasu zadataka za digitalno tipove Zadataka za digitalno procesiranje signala zadataka Procesiranje signala Porast programibilnosti Slika D2.34. Tipovi programibilnih VLSI kola ASIC - specifično projektovana kola koja izvršavaju jedinstveni zadatak. Kod ovih kola u kasnijoj fazi projektovanja je veoma teško izvršiti izmene. Upravljačka jedinica je obično tipa hard-wired. ASPP - programibilna arhitektura (odnosi se na stazu podataka) koja je u stanju da izvršava veći broj različitih zadataka ( aktivnosti ). Upravljačka jedinica je mikroprogramski zasnovana. Postoji nekoliko programa upisanih u mikroprogramskoj memoriji pri čemu se svaki program odnosi na jedan zadatak. ASIP - takođe poseduje programibilnu stazu podataka koja se sa aspekta fleksibilnosti nalazi negde između ASPP-a i DSP-a. u ovom slučaju staza podataka je nešto uopštenije strukture jer kao i kod standardnih procesora sadrži RF polje (registarsko polje) i ALU. U odnosu na DSP se razlikuje po tome što je skup instrukcija dosta ograničen (restriktivan je) a takođe i broj internih magistrala nije tako veliki. Primena ASIP-a je ograničena na specifične aplikacije koje se mogu brzo izvršavati. DSP - procesori za obradu digitalnih signala, na sličan način kao i mikrokontrolerske jedinice ( kakve su popularne Intel 80C51 ili Motorola MC 68HC11 ) su zaokružene računarske mašine sa interno ugrađenim U/I kanalima i memorijom ali sa znatno superiornijim mogućnostima za matematičkom manipulacijom kao i arhitekturom koja je bolje prilagođena obradi tipovima podataka (pre svega nizovima) tipičnih za digitalno procesiranje signala. Danas DSP-ovi su postale ključne VLSI komponente koje se ugrađuju u komunikacionim, medicinskim, vojnim, industrijskim i raznim drugim proizvodima široke potrošnje. Istraživači i projktanti ih često sa opravdanjem smatraju kao klasa mikroprocesora koja je optimizirana za digitalnu obradu signala. I konačno, MPU su procesorske jedinice opšte namene koje su u stanju, po ceni redukovane brzine izvršenja, da izvršavaju, bez ograničenja, zadatke bilo kog tipa. Uticaj algoritma na arhitekturu Za nas je od interesa da u ovom članku ukažemo na osnovne strukturne karakteristike DSP-ova. Verovatno najbolji način da se sagledaju osobenosti DSP-ova je da se uoče tipični algoritmi koje ovi procesori izvršavaju i identifikuju kako njihovi zahtevi za izračunavanje utiču na arhitekturu DSP-ova. Brzi množači Neka je odziv FIR filtra (finite impulse response filter) dat kao L 1 y( n) = c( k) x( n k) k = 0 (1) 60

61 gde je 0 n < M, x(n) i y(n) su ulazna i izlazna sekvenca podataka, respektivno, a c(n) su koeficijenti filtra. Filtar ima L sekcija, a signal je dužine M uzoraka. Ključna komponenta algoritma FIR filtra je izračunavanje tipa: pomnoži i saberi, pomnoži i saberi,,. No, treba naglasiti da ove operacije nisu svojstvene samo za FIR algoritme, nego i svakoj digitalnoj obradi signala koja intenzivno koristi operaciju tipa pomnoži i saberi kakve su one koje srećemo kod konvolucije, IIR (infinite impuls response) filtriranja, Fourier-ove transformacije, itd. Ovo je glavni razlog zbog čega najveći broj savremenih DSP procesora (vidi sliku D2.35) ima ugrađeno u svoju arhitekturu najmanje po jedan brzi množač ili kombinaciju množačko-akumulatorske jedinice (MAC - multiply-accumulate) c(k) x(n-k) c(k)*x(n-k) Brzi mno`a~i k 1 k = 0 c ( k) x( n ( k 1)) k k = 0 c( k) x( n k) sabira~ registar takt MAC jedinica Slika D2.35. Množač sa akumulatorom Veći broj izvršnih jedinica Skoro kod svih DSP aplikacija postoje zahtevi za veoma obimna i brza izračunavanja. (Tipično je to za FIR filtriranje u realnom vremenu i to kod signala koji se uzorkuju frekvencijom od 1MHz ili višom,). Da bi se ispunili zahtevi za brzi rad DSP procesori mora da imaju ugrađeno po nekoliko nezavisnih izvršnih jedinica koje rade u paraleli. Tako na primer pored MAC jedinice oni sadrže ALU i pomerač (vidi sliku D2.36). 61

62 Magistrala A MAC jedinica MAC registri ALU Barrel Pomera~ ALU registri Magistrala B Slika D2.36. Veći broj izvršnih jedinica Brzi pristup memoriji Da bi se obavio jedan korak definisan sa (1) neophodno je iz memorije u jednom taktnom intervalu pribaviti MAC instrukciju, uzorak podatka i koeficijent filtra. Shodno ovome da bi se ostvarile dobre DSP performanse neophodna je velika propusnost memorije, znatno veća u poređenju sa standardnim MPU-ovima. Uobičajeno se ovaj problem rešava ugradnjom dve ili veći broj memorijskih banaka. Pri ovome, svaka banka je povezana na posebnu magistralu, a pristup banci radi čitanja ili upisa se vrši za jedan taktni interval (vidi sliku D2.37). Memorija za program i podatke magistrala Jezgro Procesora Op{te namene Programska memorija Memorija podataka magistrala magistrala Jezgro DSP procesora a) b) Slika D2.37. Razlika u memorijskim arhitekturama kod standardnih MPU-ova I DSP procesora Zahtevi za visokom propusnosću kod DSP-ova često se kombinuju sa numeričkim hardverom za izračunaavanje memorijskih adresa. Najčešće se javlja potreba za registarsko-indirektnim adresiranjem sa post-inkrementiranjem koje se koristi za automatsko inkrementiranje pokazivača adresa kod onih algoritama gde se zahtevi za izračunavanjem obavljaju nad nizom podataka sekvencijalno zapamćenih u memoriji. Tipičan način sprezanja generatora adresa sa memorijskim bankama prikazan je na slici D2.38. Pored toga veliki broj procesora podržava i cirkularno adresiranje koje omogućava procesoru da pristupi podacima na sekvencijalan način, a zatim se automatski (vrteći u krug) vraća na početnu adresu. Cirkularno adresiranje je veoma korisno za implementaciju FIFO bafera. 62

63 generator adresa registri generatora adresa programska adresna magistrala programski RAM/ROM magistrala podataka 1 Memorijska banka podataka - 1 magistrala podataka - 2 Memorijska banka podataka - 2 Slika D2.38. Generator adresa i pristup memoriji kod DSP-ova Format podataka Najveći broj DSP procesora manipuliše sa numeričkim podacima u fiksnom a ne u pokretnom zarezu (pokretni zarez je format koji se uobičajeno koristi u naučnim aplikacijama). Razlog za ovakav izbor treba svakako tražiti u većoj brzini rada i manjoj složenosti hardvera. Uobičajeno DSP procesori manipulišu sa rečima dužine 16 bitova koje su zadovoljavajućeg obima za najveći broj aplikacija. Ipak da bi se obezbedio zadovoljavajući kvalitet signala, DSP procesori imaju ugrađen specijalan hardver koji obezbeđuje programerima da ne naruše numerički korektnost rezultata u toku niza izračunavanja. Na primer, veliki broj DSP procesora ima ugrađene registre tipa akumulator koji se koriste za privremeno čuvanje sume koja se dobija nakon nekoliko operacija tipa množenje-sa-sabiranjem. Registri tipa akumulator su obično većeg obima od ostalih registara, i sadrže dodatne bitove nazvane guard, bitove koji se koriste da prošire opseg vrednosti koje se mogu predstaviti i na taj način izbeći premašaji i očuvati numerička tačnost izračunavanja. Efikasno izvršavanje programskih petlji Najveći deo vremena kod DSP algoritama troši se na respektivno izvršenje relativno malih programskih sekvenci koje se nazivaju petlje. Imajući ovo u vidu, DSP procesori imaju implementirano specijalne instrukcije koje u jednom taktnom intervalu ažuriraju i testiranju brojača petlje i granaju se na vrh petlje. Ova mogućnost se naziva zero-overhead looping. 63

64 Organizacija U/I-a Efikasnost DSP-a u velikoj meri zavisi od organizacije U/I podsistema. Kod najvećeg broja DSPova ugrađen je jedan ili veći broj paralelnih ili serijskih interfejsa i mehanizmi za manipulisanje sa prekidima i DMA prenosom koji skoro da ne zahtevaju intervenciju procesorskih funkcionalnih jedinica (vidi sliku D2.39). Interna magistrala DMA koprocesor Kanal 0 : : Razdvojni stepen Kanal ::;lljhrbfjbjrburegfiuergug n Komunikacioni port 0 U/ I interna ure aji U/ I magistrala Komunikacioni port n Slika D2.39. Tipična organizacija U/ I -a kod DSP-ova Skup instrukcija Skup instrukcija DSP procesora je tako projektovan da ispuni sledeća dva cilja: (1) da maksimalno iskoristi raspoloživi hardver procesora. Da bi se ostvario ovaj cilj, skup instrukcija DSP-ova omogućava programeru da speificira po nekoliko paralelnih operacija u okviru jedinstvene instrukcije, obično se to odnosi na pribavljanje po jedan ili dva podatka iz memorije uz istovremeno ažuriranje pokazivača adresa paralelno sa aritmetičkom operacijom. (2) Minimizira iznos memorijskog prostora neophodnog za čuvanje DSP-ovih programa. Ovim se značajno smanjuje cena koštanja sistema, s obzirom da iznos ugrađene memorije ima veliki udeo u formiranju ukupne cene. Danas najveći broj programera piše softvere za klasične PC mašine, tipične su one zasnovane na CPU-ovima tipa Pentium, na nekom od viših programskih jezika kakvi su C ili C++, čime se programeri oslobađaju svih detalja vezanih za instrukcije procesora. Na žalost stvari nisu tako jednostavne kada se programiraju DSP procesori jer se u glavnom aplikacioni programi pišu na asemblerskom jeziku. Za ovakav pristup postoje dva razloga. Prvi je da, najčešće korišćeni viši programski jezici, kakav je recimo C, nisu najpogodniji za opisivanje tipičnih DSP algoritama. Drugi je da DSP arhitekture, koje se karakterišu većim brojem memorijskih prostora, većim brojem magistrala, neregularnim skupom naredbi, i izrazito specijalizovanim hardverom, je veoma teško efikasno iskoristiti pomoću kompilatora. Moguća je i varijanta da se DSP aplikacije pišu na C-u, ali da bi se dobio efikasan kod, programer je taj koji treba ručno-da-optimizuje kritične sekcije programa na asemblerskom jeziku. 64

65 Tipovi arhitektura DSP procesora U zavisnosti od strukture i načina kada arhitekture DSP procesora možemo podeliti u sledeće četiri grupe: (1) konvencionalni; (2) poboljšani konvencionalni; (3) ILP (Instruction Level Parallelism) DSP-ovi; i (4) SIMD(single instruction stream multiple data stream) DSP-ovi. Ukažimo sada u kratkim crtama na osnovne karakteristike ove četiri klase procesora. Konvencionalni DSP-ovi Grubo posmatrano ovu klasu DSP-ova možemo podeliti na dve podgrupe, jednostavne i umereno složene arhitekture. DSP-ovi jednostavne arhitekture iniciraju i izvršavaju jednu instrukciju po taktnom intervalu. Imaju ugrađeno jedan množač ili MAC jedinicu i ALU, i nekoliko drugih funkcionalnih jedinica (A/D konvertore, tajmere, pwm modulatore i dr.). Rade na frekvencijama od MHz, a karakteriše ih relativno mala disipacija. Obično se ugrađuju u telekomunikacionim uređajima i proizvodima široke potrošnje gde zahtevi za DSP obradom nisu tako izraziti, ali postoje stroga ograničenja koja se odnose na cenu i potrošnju energije, kakvi su recimo disk drajveri i digitalni telefoni. Tipični procesori iz ove podgrupe su DSP-ovi iz familije Analog Devices ADSP-21xx, Texas Instruments TMS 320C2xx i Motorola DSP560xx. Jedna tipična aplikacija DSP-ova iz ove podgrupe TMS 320C240 prikazana je na slici D2.40. ulazni napon Ulazni filtar Ispravlja~ Pomo}no napajanje invertor DSP TMS 320C240 Tah/ motor Enk. tahometar ili enkoder (opciono) komunikacije sa spoljnim svetom Slika D2.40. Blok šema sistema za upravljanje rada motorom zasnovana na DSP-u firme Texas Instrunents TMS 320C240 DSP-ovi umereno-složene arhitekture, kakvi su Motorola DSP 563xx i Texas Instruments TMS 320C54x rade na frekvencijama MHz, imaju ugrađen dodatni hardver (arhitekturna poboljšanja su inkrementalna a ne tako drastična), kao što je barrel pomerač i instrukcioni keš, a koriste nešto dublju protočnost u obradi u odnosu na DSP-ove jednostavne arhitekture. Procesori ove podgrupe se obično koriste kod aplikacija bežične telefonije i brzih modema, tj. u onim situacijama gde postoje zahtevi za obimnijim izračunavanjima, a da pri tome procesor troši relativno malo energije. Na slici D2.41 prikazana je jedna tipična aplikacija DSP-a firme Texas Instruments tipa TMS 320C545 koji se ugrađuje u digitalni celularni telefon. 65

66 analogna sekcija za procesiranje signala u osnovnom opsegu antena Audio interfejs zvu~nik mikrofon DSP TMS 320C545 kodiranje/dekodiranje signala govora korekcija gre{aka kodiranje i dekodiranje kanala ekvilizacija demodulacija enkripcija RF interfejs RF predajnik i prijemnik mikrokontroler interfejs ~ k& {i Digitalna sekcija za procesiranje signala u osnovnom opsegu displej tastatura SIM kartica Poboljšani konvecionalni DSP-ovi Slika D2.41. Tipična aplikacija DSP-a tipa TMS 320C545 kod digitalnog celularnog telefona Standardni način da se poboljšaju performanse konvencionalnih DSP arhitektura sastoji se u ugradnji paralelnih izvršnih jedinica. Obično su to drugi množač i sabirač. Hardverska poboljšanja kombinovana sa proširenim skupom naradbi obezbeđuje izvršenje više instrukcija po taktnom intervalu. Tipični reprezent ove grupe procesora je DSP 16xx proizvod firme Lucenr Technologies (vidi sliku D2.42). magistrala podataka A (16 bitova) magistrala podataka B (16 bitova) magistrala podataka B (32 bita) magistrala podataka A (32 bita) mno`a~ 16*16 a) mno`a~ mno`a~ b) 16*16 16*16 ALU Jedinica za manipulisanje bitovima (opciono) ALU sabira~ Jedinica za manipulisanje bitovima (opciono) dva akumulatora osam akumulatora Slika D2.42. Konvencionalni (a) u odnosu na poboljšani konvencionalni DSP (b) 66

67 Kao što se može videti sa slike D2.42 osnovna karakteristika ovih procesora je da imaju udrađene magistrale većeg obima (32-bitne umesto 16-bitne) što obezbeđuje pribavljanje po jednom taktnom intervalu dva umesto jednog podatka. Ipak treba naglasiti da je ozbiljan njihov nedostatak viša cena i povećana disipacija što ih čini nepogodnim za ugradnju u prenosivim uređajima koji se napajaju baterijski. ILP DSP-ovi Pre nego što ukažemo na osnovne karakteristike ILP DSP procesora objasnićemo pojam paralelizam. Paralelizam je davno poznata tehnika koja se standardno koristi za poboljšanje performansi računarskih sistema, a primenjuje se na svakom nivou u hijerarhijskoj organizaciji računara. Grubo posmatrano, u zavisnosti od nivoa na kome se ova tehnika primenjuje identifikuju se sledeći tipovi paralelizama: (a) paralelizam na nivou niti (thread) ili procesa (process)- zahvaljujući relativnoj nezavisnosti između zadataka moguće je paralelno izvršavati delove različitih procesa. Koordinacija paralelizma na nivou niti standardno se ostvaruje od strane operativnog sistema ili u skorije vreme od strane arhitektura koje direktno podržavaju multithreadind režim rada. (b) Paralelizam na nivou instrukcija (instruction level paralelism - ILP) - koristi se za paralelno izvršenje instrukcija jedinstvenog procesa koje su međusobno nezavisne. Koordinacija paralelizma se može ostvariti na jedan od sledeća dva načina: (i) dinamički u toku izvršenja programa, tipično je to za rad superskalarnih procesora; i (ii) statički u toku kompajliranja programa, tipično je to za rad VLIW procesora. (c) Paralelizam na nivou podataka - koristi prednosti unutarnjeg paralelizma koji postoji kod obrade podataka a može se primeniti kad god postoji regularno, repetitivno izračunavanje. (d) Paralelizam na nivou bita - to je najniži oblik paralelizma a prisutan je takoreći svuda, kao na primer kod izvršenja logičkih i aritmetičkih operacija itd. Kao što smo već naglasili kod poboljšanih DSP procesora moguće je u okviru svake instrukcije kodirati veći broj operacija. Ali, imajući u vidu da ovi procesori koriste specijalizovani hardver i kompleksne instrukcije, veoma je teško pisati efikasne programe za ove mašine kako na asemblerskom tako i na nekom višem programskom jeziku. Sa ciljem da se efikasno premosti ovaj ozbiljan problem, a što je važnije ostvare bolje performanse, novije arhitekture DSP-ova baziraju svoj rad na ILP-u. Često, u literaturi, ove arhitekture alternativno se nazivaju multi-issne arhitekture. ILP procesori koriste veoma jednostavne instrukcije pomoću kojih se obično kodiraju jednostavne operacije. Visok nivo paralelizma u obradi kod ovih procesora postiže se istovremenim iniciranjem i izvršenjem većeg broja instrukcija u grupama. (Naglasimo da se iniciranje i izvršenje instrukcija kod konvencionalnih procesora jednostavne arhitekture vrši serijski po jedna u svakom taktnom intervalu). Korišćenjem jednostavnih instrukcija pojednostavljuje se proces dekodiranja i izvršenja, čime se indirektno obezbeđuju uslovi da ILP DSP-ovi rade na višim taktnim frekvencijama. Razlikujemo dve klase ILP DSP procesora. Prva se naziva VLIW (Very Long Instruction Word) a druga superskalarna. Obe arhitekture su u principu slične, ali se razlikuju u odnosu na to kako se vrši grupisanje instrukcija radi paralelnog izvršenja. Kod VLIW i superskalarnih arhitektura se ugrađuje veći broj izvršnih jedinica pri čemu svaka od njih izvršava svoju sopstvenu instrukciju. 67

68 programska memorija ugra ena na ~ipu 32*8=256 bitova (8 instrukcija) dispe~er jedinica L1 S1 M1 D1 L1 S1 M1 D1 registarsko polje A registarsko polje B L: ALU S: pomera~&alu ke{ memorija podataka ugra ena u ~ip M: mno`a~ D: generator adresa Slika D2.43. Organizacija izvršnih jedinica memorije (program & podatke) kod TMS 320C62xx Na slici D2.43 prikazana je globalna organizacija DSP procesora TMS 320C62xx koja sadrži osam nezavisnih izvršnih jedinica. Obično VLIW DSP-ovi iniciraju izvršenje od 4 do 8 instrukcija po taktnom intervalu, pri čemu se instrukcije pribavljaju i iniciraju radi izvršenja kao deo jedinstvene dugesuper-instrukcije (od ovoga je izvedeno ime very long instruction word). Nasuprot tome, superskalarni procesori obično iniciraju i izvršavaju nekoliko (od 2 do 4) nezavisnih instrukcija po taktnom intervalu (instrukcije nisu grupisane). Kod VLIW arhitektura, programer na asemblerskom jeziku je taj koji specificira koje će se instrukcije paralelno izvršavati. To znači da se instrukcije grupišu u trenutku kada se program asemblira, pri čemu je važno istaći da se grupisanje ne menja u toku izvršenja programa. Nasuprot tome, kod superskalarnih procesora u zavisnosti od raspoloživosti resursa i zavisnosti po podacima između redoslednih instrukcija dispečer jedinica je ta koja u toku izvršenja programa (dinamički) određuje koje od raspoloživih kandidat instrukcija mogu da se izvršavaju paralelno. To znači da procesor može isti skup instrukcija da grupiše na različiti način u različitim trenucima. Tako na primer, kod izvršenja programskih petlji procesor može u toku prve iteracije da grupiše instrukcije na jedan način, a u toku narednih na drugi način. Da bi podržali izvršenje većeg broja paralelnih instrukcija, VLIW i superskalarni procesori mora da imaju ugrađeno veći broj dekodera instrukcija, magistrala, registara i memorija. Tipičan predstavnik VLIW DSP-a su procesori TMS 320C62xx koji manipulišu sa brojevima u fiksnom zarezu i TMS 320C67x koji manipulišu sa brojevima u pokretnom zarezu. S obzirom na svoju arhitekturu koja se bazira na paralelnom radu većeg broja izvršnih jedinica u okviru procesora VLIW/ superskalarni DSP procesori imaju daleko superiornije performanse u odnosu na prethodno opisane grupe DSP procesora, ali se taj efekat postiže po ceni povećane disipacije i složenijeg programiranja. 68

69 SIMD DSP procesori SIMD (single-instruction multiple-data) je arhitekturna tehnika koja se koristi za poboljšanje performansi nekih algoritama koja omogućava da veći broj procesora izvršava istu operaciju nad različitim podacima. Na primer, SIMD instrukcija za množenje može da obavi dva ili veći broj peralelnih operacija množenja nad različitim skupovima ulaznih operanada u jednom taktnom intervalu. Ovom tehnikom može značajno da se poveća brzina izračunavanja kod nekih vektorskih operacija koje standardno srećemo kod multimedia i nekih aplikacija u signal procesiranju. Tipičan predstavnik ove grupe DSP procesora je TigerSHARC DSP proizvod firme Analog Device. Na slici D2.44 prikazan je jedan detalj kod ovog procesora koji koristi princip sub-rečnog paralelizma dva 62- bitna ulaza procesiraju se kao osam 16-bitnih brojeva SWP - sabira~ registar Slika D2.44. Princip rada 64 - bitnog sabirača podeljen na četiri 16- bitne sub-reči. Napomena: SWP sabirač je standardni sabirač kod koga prenos na granicama sub-reči nije dozvoljen. Zaključci u vezi arhitektura Arhitekture DSP procesora su značajno evolvirale zadnjih dvadesetak godina. Promene koje su bile izvedene su bile usmerene ka tome da poveća brzina rada, smanji potrošnja energije, smanji cena, ali da se pri tome što je moguće više zadovolje zahtevi koje postavljaju projektanti DSP aplikacija. Trenutno od najvećeg interesa je razvoj novih arhitektura koje će efikasnije podržavati DSP aplikacije napisane prvenstveno na nekom od viših programskih jezika. Saglasno ovome realno je očekivati u skorije vreme i dalju evoluciju DSP procesorskih arhitektura. D2.12 Digitalni signal procesori - performansne karakteristike Digitalni signal procesori su ključne komponente kod velikog broja komercijalnih, komunikacionih, medicinskih, industrijskih i vojnih uredjaja. Specijalizovani hardver i skup instrukcija čini ih efikasnim kod izvršenja matematičkih izračunavanja koja se koriste kod procesiranja digitalnih signala. Na primer, pošto se kod digitalnog signal procesiranja koriste repetitivna množenja, DSP procesori imaju ugradjeno brže hardveske množače, eksplicitne instrukcije za množenje, i veći broj magistrala koje se koriste za istovremeno izbavljanje iz memorije veći broj podataka. Na slici D2.45 prikazane su četiri dosadašnje generacije DSP procesora 69

70 treca. be`i~na generacija mobilnih telefona TMS 320C MHz Audio procesiranje BDTI TMS MHz 4 DSP MHz TMS 320C54xx 50MHz druga be`i~na generacija mobilnih telefona Govor Slika D2.45. Performanse DSP procesora sve četiri generacije Napomena: BDUT- je performansna mera (na Slici 1 ova mera je data u logaritamskoj razmeri) Koliko instrukcija po taktnom intervalu Jedna od važnijih mera na osnovu koje se ocenjuje arhitektura proceora je: Broj instrukcija koje procesor može da inicira i izvršava po taktnom intervalu. Broj instrukcija koje se paralelno izvršavaju kao i obim posla koji svaka od instrukcija obavlja, u direktnoj je vezi sa nivoom paralelizma u samom procesoru, a to u krajnjoj liniji ipak ima uticaj na brzinu rada i performanse procesora. Istorijski posmatrano DSP procesori su inicirali izvršenje od jedne instrukcije po taktnom intervalu a ostvarivali su paralelizam zahvaljujući pakovanju od nekoliko operacija po svakoj instrukciji. Na primer, jedna tipična instrukcija kod DSP procesora može istovremeno da obavi sledeće operacije: množenje-sa-akumulacijom (MAC), punjenje dva operanda u registre, i inkrementiranje pokazivača adresa. Nasuprot tome, visoko-performansni procesori opšte namene, kakvi su recimo Intel-ov Pentium i Motorola Power PC, obično ostvaruju paralelizam iniciranjem i izvršenjem po nekoliko jednostavnih instrukcija po taktnom intervalu. Glavni razlog zbog čega postoje razlike u arhitekturi je sledeći: DSP procesori su uglavnom bili projektovani za aplikacije koje se karakterišu niskom cenom, malom potrošnjom, i njihovom ugradnjom na štampanim pločama malih gabarita. Svi DSP procesori su inicirali izvršenje od samo jedne instrukcije po taktnom intervalu, a to ih čini jednostavnijim od arhitektura koje iniciraju više od jedne instrukcije po taktnom intervalu. Zbog ovoga površina ovih čipova na silicijumu je manja, a karakterišu se i manjom potrošnjom. Kako proširiti instrukciju Imajući u vidu da iznos memorije potreban za smeštaj softvera ima direktni uticaj na cenu, obim i potrošnju energije, skup instrukcija DSP-ova je prvenstveno projektovan tako da obezbedi gusto pakovanje programa. Zbog ovoga konvencionalni DSP procesori kod kodiranja svake svoje instrukcije, koja je tipa multi-operacija, koriste relativno kratke instrukcije (obima 16 ili 24 bita). Ovakvim pristupom postiže se efikasno iskorišćenje programske memorije, ali postoji i nekoliko nedostataka. Kao prvo, 70

71 pakovanjem većeg broja paralelnih operacija u jedinstvenu instrukciju sužava se obim instrukcione reči. To znači da su skupovi instrukcija jako ograničeni, a instrukcije kodirane uz pomoć velikog broja specijalnih slučajeva, izuzetaka i ograničenja. Kao drugo, često postoje i ograničenja sledećeg ripa: Koji se od registara može koristiti sa kojom operacijom i koje se operacije mogu kombinovati u jednu instrukciju. U suštini u okviru instrukcione reči ne postoji dovoljan broj bitova koji podržava veći broj različitih kombinacija registara i operacija. Kao treće, kompleksni skupovi instrukcija čine pisanje kompilatora veoma teško. Kao posledica, veliki broj programera piše DSP aplikacije na asemblerskom jeziku a ne na nekom od HLL-ova, što znači da je efikasnost programera veoma niska, programi se treže testiraju i ispravljaju greške ( debagiraju), programe je teško razumeti, i dr. Ovo su glavni nedostaci konvencionalnih DSP-ova, posebno kada se oni porede sa procesorima opšte namene za koje postoji veći broj HLL prevodioca, tj. kompilatora. Alternativa pakovanju većeg broja operacija u jedinstvenu instrukciju, (rešenje tipično za DSP arhitekture), je tehnika izvodjenja jedne operacije po instrukciji a nakon toga paralelno iniciranje izvršenja grupe instrukcija (karakteristično za superskalarne RISC procecore opšte namene). Ovakav pristup se naziva multi-issue (višestruko iniciranje izivršenja instrukcija). To znači da prethodno pomenutu multi-operacijsku-instrukciju možemo podeliti na sledećih pet jedno-operacijskih instrukcija: jednu MAC, dve tipa Move i dve koje se odnose na ažuriranje stanja pokazivača adresa. Svaka od individualnih instrukcija je jednostavna, ali istovremenim izvršenjem tih instrukcija, procesor obezbedjuje isti nivo paralelizma, kao u slučaju kada single-issue procesor (kakav je DSP) i izvršava sve pet pomenute operacije kao deo jedinstvene instrukcije. Multi-issue pristup po ceni usložnjavanja arhitekture, nudi sledeće dve prednosti: Povećanu brzinu rada i kompatibilnost. Povećanje brzine rada je posledica pojednostavljenog dekodiranja i izvršenja jednostavnih instrukcija. Pri ovome multi-issue procesori rade na višim taktnim frekvencijama (obično tri put višlje) u odnosu na single-issue DSP procesore, a da pri tome zadržavaju isti (ili viši) nivo paralelizma u toku izvršenja operacija. Ovakav način kodiranja skupa instrukcija obezbedjuje kreiranje efikasnijih kompilatora, jer su obično takvi kompilatori u stanju da «bolje razumeju i koriste» jednostavne instrukcije. Šta više, implementacija multi-issue arhitekture može biti atraktivna jer se ona može koristiti kao tehnika za ažuriranje performansi postojećih arhitektura a da se pri tome očuva softverska kompatibilnost na binarnom nivou. Tako na primer, procesor Pentium izvršava softver napisan za arhitekturu 486, ali inicira izvršenje i izvršava dve a ne jednu instrukciju po taktnom intervalu (kada je to moguće). Saglasno ovome korisnici mogu da poboljšaju performanse sistema bez da rekompajliraju softver. Za implementaciju dela sotvera multi-issue procesori zahtevaju veći broj instrukcija, tj. ugradnju memorije većeg kapaciteta. U odnosu na konvencionalne DSP procesore svaka instrukcija kod multi-issue procesore je jednostavnija, a to znači da je za izvršenje jednog istog posla kod multi-issue procesora potreban znatno veći broj instrukcija. Pored toga u odnosu na DSP procesore, multi-issue procesori koriste instrukcije većeg obima (32-bitne a ne 16-bitne instrukcije). Povećanim obimom prvenstveno se rešavaju problemi tipa: Koji se od registara može koristiti sa kojom od instrukcija. Što je obim instrukcija veći moguć je veći broj kombinacija operacija i registara. Važno je pri ovome istaći da se eliminaciom ograničenja lakše kreiraju kompilatori za taj procesor. No ne treba izgubiti iz vida da što se manje memorije ugradjuje u sistem to je niža cena, potrošnja i gabarit tog uredjaja. Ovo je glavni razlog zbog čega se multi-issue arhitekture redje koriste u prenosnim uredjajima. Do skoro je važilo sledeće pravilo: Ako se od sistema iziskuju superiornije performanse svrsishodnije je ugraditi multi-issue procesor, a kada je imperativ niža cena, manji gabarit i manja protrošnja, opravdanije je ugraditi DSP procesor. No kako se obim programa DSP aplikacija u skorije vreme povećao sa nekoliko stotina na desetinu hiljada linija pogodnosti programiranja na nekom od HLLova su postali nužni i izazovni faktor za migraciju konvencionalnih DSP procesora ka multi-issue arhitektura. Ipak treba naglasisti da postoji jedna ključna razlika koja se odnosi pre svega na to kako se kod multi-issue arhitektura i multi-issue DSP procesora implementira pristup multi-issue. Multi-issue DSP-ovi koriste tip arhitekture nazvane VLIW. Tako na primer VLIW baziran DSP TMS 320 C6xxx, proizvod firme Texas Instruments, može da izvršava do osam 32-bitnih instrukcija koje su deo jedne 256-bitne VLIW reči. 71

72 U principu postoje dva tipa multi-issue arhitektura. Prvi tip se naziva superskalarni (koristi se kod procesora opšte namene) a drugi je VLIW. U suštini ova dva pristupa razlikuju se u tome kako se za potrebe paralelnog izvršenja vrši grupisanje instrukcija. Kod VLIW arhitektura, programer na asemblerskom jeziku ili kompilator je taj koji specificira šta će se u datom trenutku paralelno izvršavati.nasuprot tome, kod superskalarnih arhitektura, specijalni hardver, u okviru procesora, je taj koji odredjuje koje će se od instrukcija izvršavati paralelno. Odluke koje donosi hardver se zasnivaju na broju raspoloživih resursa (kao što su registri), zavisnosti po podacima izmedju instrukcija, i dr. Ove odluke se donose u toku izvršenja programa. To znači da superskalarni procesori odgovornost o planiranju izvršenja instrukcija prepuštaju hardveru procesora a ne programeru ili kompilatoru kakav je to slučaj kod VLIW pristupa. Pogled programera na procesor VLIW procesore je iziuzetno teško programirati na asemblerskom jeziku jer programer, kao prvo, mora da vodi računa o većem broju izvršnih jedinica ugradjenih na čipu, a kao drugo, da planira paralelno izvršenje većeg broja instrukcija. Danas kompanije koje nude VLIW DSP-ove, kakva je Texas Instruments, nude kompilatore koji obezbedjuju kreiranje programa ne nekom od HLL-ova. Ipak, i pored asistencije kompilatora utisak vičnih programera je takav da generisani softver nije tako efikasan kao ručno pisani program na asemblerskom jeziku. Superskalarnim pristupom obezbedjeni su uslovi za egzistenicju binarne kompatibilnosti izmedju različitih generacija procesorskih arhitektura. Nasuprot ovome, različite generacije VLIW arhitektura nisu obično binarno kompatibilne, jer informacija koja se odnosi na grupisanje instrukcija je sastavni deo binarnog koda. To znači da, nadgradnja VLIW procesora kao bi procesor podržao veći broj instrukcija koje bi se paralelno izvršavale iziskuje rekompilaciju softvera za svaku novu arhitekturnu generaciju. Pristalice superskalarnog pristupa ukazuju da ova tehnika oslobadja programera, i onog ko razvija kompilator, od detalja koji se odnose na to «kako odrediti koje instrukcije mogu paralelno da se izvršavaju», pa zbog toga smanjuje kompleksnost programiranja i poboljšava efikasnost kompilatora. Sa ciljem da se kod superskalarnih procesora postignu bolje performanse često se zahteva preuredjenje redosleda instrukcija. Preuredjenje redosleda pomaže procesoru da efikasnije izvrši grupisanje. U krajnjem slučaju, programer ili kompilator je taj koji je odgovoran za grupisanje instrukcija Predvidljivost u toku izvršenja programa Ozbiljan nedostatak superskalarnog pristupa za DSP aplikacije je taj što programer ne može tačno unapred da zna koje će instrukcije, radi paralelnog izvršenja, procesor grupisati zajedno. Zbog ovoga programer neće biti u stanju da egzaktno predvidi za koliko će se taktova dati kodni segment izvršiti. Procesor može u različitim trenucima izvšenja programa isti skup instrukcija grupisati na različite načine. Na primer, on može grupisati instrukcije na jedan način u toku prve iteracije petlje, a na drugi način u toku narednih iteracija. Nesposobnost da se tačno predvidi vremenski trenutak izvršenja programa (misli se na to kada će se odredjeni skup ili grupa naredbi u programu izvršiti) može da predstavlja ozbiljan nedostatak kod sistema za rad u realnom vremenu sa rigidnim ogrnaičenjima (hard real time systems). U principu programer može da usvoji pristup tajminga za najgori slučaj (worst case) i tako uskladi potrebe za vremenskom sinhronizacijom, ali tada potencijal procesora ostaje naiskorišćen. Nepredvidljivost vremena izivršenja programa stvara teškoće koje se odnose na optimizaciju softvera. Kod DSP aplikacija koje se karakterišpu obimnim izračunavanjima i strogim ograničenjima sa aspekta obima ugradjene memorije i potrošnje energije, optimizacija softvera predstavlja ozbiljan problem. Programer koji ne može lako da predvidi efekat softverske izmene na tajming programa u dilemi je da li se uvedenom optimizacijom povećavaju performanse. U principu softverska optimizacija je proces tipa probaj-pa-ako-zadovolji-je-dobro, ali je u suštini ovakvo rešenje daleko od optimalnog. 72

73 Kako poboljšati koncept Zadnjih nekoliko godina u cilju boljeg iskorišćenja memorije, VLIW arhitekture koriste skupove instrukcija koje podržavaju rad 16- i 32-bitnim instrukcijama. Konkretnije, procesor koristi kratke instrukcije kada ne koristi ceo opseg instrukcije, a duže instrukcije kada treba da iskoristi punu arhitekturnu snagu. 32-bitni registar 32-bitni registar 16-bitna ulazna re~ podatka 16-bitna ulazna re~ podatka 16-bitna ulazna re~ podatka 16-bitna ulazna re~ podatka Izvr{na jedinica 32-bitni registar 16-bitna ulazna re~ podatka 16-bitna ulazna re~ podatka Slika D2.46. Paralelno procesiranje nezavisnih instrukcija Paralelizam se može povećati korišćenjem arhitektura tipa SIMD (vidi sliku D2.46). Ove arhitekture su postale popularne zadnjih desetak godina jer su pogodne za primenu kod aplikacija koje koriste vektorske operacije a koriste se veoma često kod multimedija i signal-procesiranja. Na žalost SIMD arhitekture imaju svoja ograničenja. Da li će podrška za SIMD biti izrazita ili umerena u mnogome zavisi od toga da li se podaci procesiraju paralelno ili ne. Kod algoritama koji su strogo serijski (oni koji koriste rezultat jedne operacije kao ulaz za drugu) SIMD pristup nije od velike koristi. Keš memorije kod DSP procesora Uobičajeno je da se keš memorije veoma često koriste kod procesora opšte namene ( kakvi su RISC i CISC arhitekture ) ali ne kod DSP-ova jer one unose neodredjenost u vremenu izvršenja programa (posebno kod keš promašaja). Ali sagledavajući poboljšanja performansi koje se postižu ugradnjom keš memorija, sve veći broj projektanata arhitektura DSP-ova nalazi načine da prilagodi keš DSP aplikaciji. Keš memorije kod današnjih DSP proceosra prilagodjeni su DSP zahtevima. 73

74 D2.12 Operativni sistemi, procesi, thread-ovi i konkurentnost Napomena: Deo o operativnim sistemima i procesima uzeti iz knjige. Thread-ovi I pored toga što proces zamišljamo kao programsku sekvencu koja ima jedinstveni tok upravljanja, kod savremenih računarskih sistema proces u suštini čini veći broj celina (jedinki) koje se izvršavaju, nazvane thread-ovi (niti), pri čemu se svaki thread izvršava u kontekstu procesa i deli sa njim isti kod i globalne podatke. Thread-ovi su izuzetno važni programski modeli iz sledećih razloga: a) postavljaju zahtev za konkurentnim radom, b) lakše je deliti podatke između većeg broja thread-ova nego između većeg broja procesa, i c) thread-ovi su obično mnogo efikasniji od procesa. Šta je konkurentnost Za dva događaja (events) kažemo da su konkurentna ako se oni jave u okviru istog vremenskog intervala. Ako se u toku istog vrvemenskog intervala izvršava dva ili veći broj zadataka tada kažemo da se ovi zadaci izvršavaju konkurentno. Mi ćemo smatrati da se konkurentnost ne odnosi na tačno isti vremenski trenutak. Tako na primer, dva zadatka mogu da se dese (pojave) konkurentno u istoj sekundi, ali da se svaki od njih izvršava u okviru različitig dela (frakcije) te sekunde. Prvi zadatak može da se izvršava prvih 100 ms, a zatim pauzira, narednih 100 ms da se izvršava drugi zadatak, a zatim i on da pauzira, nakon toga za sldećih 100 ms se ponovo izvršava prvi zadatak, a zatim i on pauzira, i td. Pri ovome, svaki zadatak alternativno prelazi iz stanja izvršenja u stanje pauza, zatim iz pauze u izvršenje, i td. Imajući u vidu da je period od 1 s suviše kratak korisniku to prividno izgleda kao da se zadaci izvršavaju simultano. Ovakav način izvršenja se može produžiti i na duže intervale. Dva programa koja izvršavaju isti zadatak u okviru istog časa (sata) kontinualno čine progres koji se odnosi na izvršenje tog zadatka u okviru tog sata, mada se oni mogu izvršavati i u istim vremmenskim trenucima. Za taj sat, za oba programa kažemo da se izvršavaju konkurentno. Konkurentni zadaci se mogu izvršavati na jednoprocesorskom ili multi-procesorskom sistemu. Kod jedno-procesorskog okruženja, konkurentni zadaci se mogu pomoću kontekst-komutacije (context switching) izvršavati u okviru istog vremenskog perioda. Kod multi-procesorskog okruženja, ako postoji dovoljan broj slob odnih procesora, konkurentni zadaci se mogu izvršavati istovremeno u okviru istog vremenskog perioda. Konkurentne tehnike omogućavaju računarskim programima da obave veći posao za isti vremenski period, ili veći posao u okviru istog vremenskog intervala. Pri tome, umesto da se kreira program koji će obavljati samo jedan zadatak u datom trenutku, program se deli (razbija) na takav način da se neki od zadataka mogu izvršavati konkurentno. Dva osnovna pristupa da se postigne konkurentnost Paralelno programiranje i distribuirano programiranje su dva odsnovna pristupa pomoću kojih se, sa istim softverom, ostvaruje konkurentnost. U suštini postoje sledeće dve različite programske paradigme koje se međusobno prepliću: a) Paralelne programske tehnike - dodeljuju posao (work), koji treba da se obavi od strane programa, dvama ili većem broju procesora koji mogu biti locirani u okviru jedinstvenog fizičkog ili jedinstvenog virtuelnog računara. b) Distribuirane programske tehnike - dodeljuju posao, koji treba da se obavi od strane programa, dvama ili većem broju procesa, pri čemu procesi mogu, ali ne moraju egzistirati u okviru istog računara. Ovo znači da se delovi distribuiranog programa često izvršavaju na različitim računarima povezanih u mrežu, ili u najmanju ruku na različitim procesima. Sa druge strane, program koji sadrži paralelizam se izvršava na istom fizičkom ili virtuelnom računaru. Paralelizam u okviru programa se 74

75 može podeliti na procese i thread-ove. Mi ćemo smatrati da se distribuirani programi mogu podeliti samo na procese. To znači da je, obično, multithreading ograničen samo na paralelizam. No, sa aspekta tehničke realizacije, paralelni programi se mogu ponekad distribuirati kao što je to slučaj sa PVM (Parallel Virtual Machine) programiranjem, a takođe i distribuirano programiranje može ponekad da implementira paralelizam, kakav je slučaj sa MPI (Message Passing Interface) programiranjem. Na slici D2.47 prikazana je tipična arhitektura paralelnog i distribuiranog programa. Slika D2.47. Tipična arhitektura paralelnog i distribuiranog programa Paralelnu aplikaciju sa slike D2.47 čini jedan program podeljen na četiri zadatka (tasks). Svaki zadatak se izvršava na posebnom procesoru, pa zbog toga, svaki zadatak može da sse izvršava simultano. Zadaci se mogu implementirati pomoću procesa ili thread-ova. Sa druge strane, distribuiranu aplikaciju sa slike 1 čine tri različita programa, pri čemu se svaki izvršava na posebnom računaru. Program 3 čine dva posebna dela koja se izvršavaju na istom računaru. I pored toga što su zadaci A i D, programa 3, locirani na istom računaru, oni su distribuirani iz razloga što se implementiraju kao dva posebna procesa. Zadaci u okviru paralelnog programa su u čvrstoj-sprezi (tightly coupled) u odnosu na zadatke kod distribuiranog programa. U opštem slučaju, procesori koji izvršavaju distribuirane programe locirani su u okviru različitih računara, dok procesori koji izvršavaju paralelne programe nalaze se u okviru istog računara. Naravno da postoje i hibridni programi, koji su istovremeno i paralelni i distribuirani. Na slici D2.48 prikazana su tri nivoa paralelizma koja su moguća u okviru jedinstvenog računarskog programa. 75

76 Slika D2.48 Tri nivoa paralelizma koja su moguća u okviru jedinstvenog računarskog programa Na slici D2.49 ilustrovano je kako se tri nivoa paralelizma mogu kombinovati u okviru osnovnih paralelnih procesorskih konfiguracija. 76

77 Slika D2.49. Tri nivoa paralelizma kombinovanih u okviru osnovnih paralelnih procesorskih konfiguracija D2.13 Akceleratori Koprocesori Najveći broj mikroprocesora je danas projektovan kao čip opšte namene koji se može primeniti za veliki broj različitih aplikacija. Saglasno nameni mikroprocesori imaju ugrađen skup instrukcija opšteg tipa (namene). Dizajn mikroprocesora je ograničen površinom silicijuma na kojoj je on fabrikovan, pa bi uvođenje novih instrukcija u njegov skup zadržavajući istu površinu zahtevalo preprojektovanje čipa. Preprojektovanje je skup i dugotrajan proces i ne mora da znači da će preduzeti korak biti uspešan, tj. da ćemo zadržavajući istu površinu čipa uspeti da uvedemo nove funkcije. Da bi se rešio ovaj problem na zadovoljavajući način, uvode se koprocesori. Ugradnjom koprocesora u sistem se povećava skup naredbi 77

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Goran Stančić SIGNALI I SISTEMI Zbirka zadataka NIŠ, 014. Sadržaj 1 Konvolucija Literatura 11 Indeks pojmova 11 3 4 Sadržaj 1 Konvolucija Zadatak 1. Odrediti konvoluciju

Διαβάστε περισσότερα

3.1 Granična vrednost funkcije u tački

3.1 Granična vrednost funkcije u tački 3 Granična vrednost i neprekidnost funkcija 2 3 Granična vrednost i neprekidnost funkcija 3. Granična vrednost funkcije u tački Neka je funkcija f(x) definisana u tačkama x za koje je 0 < x x 0 < r, ili

Διαβάστε περισσότερα

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI) IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI) Izračunavanje pokazatelja načina rada OTVORENOG RM RASPOLOŽIVO RADNO

Διαβάστε περισσότερα

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti). PRAVA Prava je kao i ravan osnovni geometrijski ojam i ne definiše se. Prava je u rostoru određena jednom svojom tačkom i vektorom aralelnim sa tom ravom ( vektor aralelnosti). M ( x, y, z ) 3 Posmatrajmo

Διαβάστε περισσότερα

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović Novi Sad April 17, 2018 1 / 22 Teorija grafova April 17, 2018 2 / 22 Definicija Graf je ure dena trojka G = (V, G, ψ), gde je (i) V konačan skup čvorova,

Διαβάστε περισσότερα

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju RAČUN OSTATAKA 1 1 Prsten celih brojeva Z := N + {} N + = {, 3, 2, 1,, 1, 2, 3,...} Osnovni primer. (Z, +,,,, 1) je komutativan prsten sa jedinicom: sabiranje (S1) asocijativnost x + (y + z) = (x + y)

Διαβάστε περισσότερα

RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) IV deo. Miloš Marjanović

RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) IV deo. Miloš Marjanović Univerzitet u Nišu Elektronski fakultet RAČUNSKE VEŽBE IZ PREDMETA (IV semestar modul EKM) IV deo Miloš Marjanović MOSFET TRANZISTORI ZADATAK 35. NMOS tranzistor ima napon praga V T =2V i kroz njega protiče

Διαβάστε περισσότερα

IZVODI ZADACI (I deo)

IZVODI ZADACI (I deo) IZVODI ZADACI (I deo) Najpre da se podsetimo tablice i osnovnih pravila:. C`=0. `=. ( )`= 4. ( n )`=n n-. (a )`=a lna 6. (e )`=e 7. (log a )`= 8. (ln)`= ` ln a (>0) 9. = ( 0) 0. `= (>0) (ovde je >0 i a

Διαβάστε περισσότερα

SISTEMI NELINEARNIH JEDNAČINA

SISTEMI NELINEARNIH JEDNAČINA SISTEMI NELINEARNIH JEDNAČINA April, 2013 Razni zapisi sistema Skalarni oblik: Vektorski oblik: F = f 1 f n f 1 (x 1,, x n ) = 0 f n (x 1,, x n ) = 0, x = (1) F(x) = 0, (2) x 1 0, 0 = x n 0 Definicije

Διαβάστε περισσότερα

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012 Iskazna logika 3 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia novembar 2012 Deduktivni sistemi 1 Definicija Deduktivni sistem (ili formalna teorija)

Διαβάστε περισσότερα

Računarska grafika. Rasterizacija linije

Računarska grafika. Rasterizacija linije Računarska grafika Osnovni inkrementalni algoritam Drugi naziv u literaturi digitalni diferencijalni analizator (DDA) Pretpostavke (privremena ograničenja koja se mogu otkloniti jednostavnim uopštavanjem

Διαβάστε περισσότερα

Osnovne teoreme diferencijalnog računa

Osnovne teoreme diferencijalnog računa Osnovne teoreme diferencijalnog računa Teorema Rolova) Neka je funkcija f definisana na [a, b], pri čemu važi f je neprekidna na [a, b], f je diferencijabilna na a, b) i fa) fb). Tada postoji ξ a, b) tako

Διαβάστε περισσότερα

Ispitivanje toka i skiciranje grafika funkcija

Ispitivanje toka i skiciranje grafika funkcija Ispitivanje toka i skiciranje grafika funkcija Za skiciranje grafika funkcije potrebno je ispitati svako od sledećih svojstava: Oblast definisanosti: D f = { R f R}. Parnost, neparnost, periodičnost. 3

Διαβάστε περισσότερα

nvt 1) ukoliko su poznate struje dioda. Struja diode D 1 je I 1 = I I 2 = 8mA. Sada je = 1,2mA.

nvt 1) ukoliko su poznate struje dioda. Struja diode D 1 je I 1 = I I 2 = 8mA. Sada je = 1,2mA. IOAE Dioda 8/9 I U kolu sa slike, diode D su identične Poznato je I=mA, I =ma, I S =fa na 7 o C i parametar n= a) Odrediti napon V I Kolika treba da bude struja I da bi izlazni napon V I iznosio 5mV? b)

Διαβάστε περισσότερα

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo IZVODI ZADACI ( IV deo) LOGARITAMSKI IZVOD Logariamskim izvodom funkcije f(), gde je >0 i, nazivamo izvod logarima e funkcije, o jes: (ln ) f ( ) f ( ) Primer. Nadji izvod funkcije Najpre ćemo logarimovai

Διαβάστε περισσότερα

FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA

FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA : MAKSIMALNA BRZINA Maksimalna brzina kretanja F O (N) F OI i m =i I i m =i II F Oid Princip određivanja v MAX : Drugi Njutnov zakon Dokle god je: F O > ΣF otp vozilo ubrzava Kada postane: F O = ΣF otp

Διαβάστε περισσότερα

numeričkih deskriptivnih mera.

numeričkih deskriptivnih mera. DESKRIPTIVNA STATISTIKA Numeričku seriju podataka opisujemo pomoću Numeričku seriju podataka opisujemo pomoću numeričkih deskriptivnih mera. Pokazatelji centralne tendencije Aritmetička sredina, Medijana,

Διαβάστε περισσότερα

Teorijske osnove informatike 1

Teorijske osnove informatike 1 Teorijske osnove informatike 1 9. oktobar 2014. () Teorijske osnove informatike 1 9. oktobar 2014. 1 / 17 Funkcije Veze me du skupovima uspostavljamo skupovima koje nazivamo funkcijama. Neformalno, funkcija

Διαβάστε περισσότερα

VJEŽBE 3 BIPOLARNI TRANZISTORI. Slika 1. Postoje npn i pnp bipolarni tranziostori i njihovi simboli su dati na slici 2 i to npn lijevo i pnp desno.

VJEŽBE 3 BIPOLARNI TRANZISTORI. Slika 1. Postoje npn i pnp bipolarni tranziostori i njihovi simboli su dati na slici 2 i to npn lijevo i pnp desno. JŽ 3 POLAN TANZSTO ipolarni tranzistor se sastoji od dva pn spoja kod kojih je jedna oblast zajednička za oba i naziva se baza, slika 1 Slika 1 ipolarni tranzistor ima 3 izvoda: emitor (), kolektor (K)

Διαβάστε περισσότερα

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je, PARCIJALNI IZVODI I DIFERENCIJALI Sama definicija parcijalnog ivoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je, naravno, naučiti onako kako vaš profesor ahteva. Mi ćemo probati

Διαβάστε περισσότερα

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A Ime i prezime: 1. Prikazane su tačke A, B i C i prave a,b i c. Upiši simbole Î, Ï, Ì ili Ë tako da dobijeni iskazi

Διαβάστε περισσότερα

III VEŽBA: FURIJEOVI REDOVI

III VEŽBA: FURIJEOVI REDOVI III VEŽBA: URIJEOVI REDOVI 3.1. eorijska osnova Posmatrajmo neki vremenski kontinualan signal x(t) na intervalu definisati: t + t t. ada se može X [ k ] = 1 t + t x ( t ) e j 2 π kf t dt, gde je f = 1/.

Διαβάστε περισσότερα

STATIČKE KARAKTERISTIKE DIODA I TRANZISTORA

STATIČKE KARAKTERISTIKE DIODA I TRANZISTORA Katedra za elektroniku Elementi elektronike Laboratorijske vežbe Vežba br. 2 STATIČKE KARAKTERISTIKE DIODA I TRANZISTORA Datum: Vreme: Studenti: 1. grupa 2. grupa Dežurni: Ocena: Elementi elektronike -

Διαβάστε περισσότερα

Računarska grafika. Rasterizacija linije

Računarska grafika. Rasterizacija linije Računarska grafika Osnovni inkrementalni algoritam Drugi naziv u literaturi digitalni diferencijalni analizator (DDA) Pretpostavke (privremena ograničenja koja se mogu otkloniti jednostavnim uopštavanjem

Διαβάστε περισσότερα

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15 MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15 Matrice - osnovni pojmovi (Matrice i determinante) 2 / 15 (Matrice i determinante) 2 / 15 Matrice - osnovni pojmovi Matrica reda

Διαβάστε περισσότερα

Obrada signala

Obrada signala Obrada signala 1 18.1.17. Greška kvantizacije Pretpostavka je da greška kvantizacije ima uniformnu raspodelu 7 6 5 4 -X m p x 1,, za x druge vrednosti x 3 x X m 1 X m = 3 x Greška kvantizacije x x x p

Διαβάστε περισσότερα

Konstruisanje. Dobro došli na... SREDNJA MAŠINSKA ŠKOLA NOVI SAD DEPARTMAN ZA PROJEKTOVANJE I KONSTRUISANJE

Konstruisanje. Dobro došli na... SREDNJA MAŠINSKA ŠKOLA NOVI SAD DEPARTMAN ZA PROJEKTOVANJE I KONSTRUISANJE Dobro došli na... Konstruisanje GRANIČNI I KRITIČNI NAPON slajd 2 Kritični naponi Izazivaju kritične promene oblika Delovi ne mogu ispravno da vrše funkciju Izazivaju plastične deformacije Može doći i

Διαβάστε περισσότερα

Elektrotehnički fakultet univerziteta u Beogradu 17.maj Odsek za Softversko inžinjerstvo

Elektrotehnički fakultet univerziteta u Beogradu 17.maj Odsek za Softversko inžinjerstvo Elektrotehnički fakultet univerziteta u Beogradu 7.maj 009. Odsek za Softversko inžinjerstvo Performanse računarskih sistema Drugi kolokvijum Predmetni nastavnik: dr Jelica Protić (35) a) (0) Posmatra

Διαβάστε περισσότερα

Elementi spektralne teorije matrica

Elementi spektralne teorije matrica Elementi spektralne teorije matrica Neka je X konačno dimenzionalan vektorski prostor nad poljem K i neka je A : X X linearni operator. Definicija. Skalar λ K i nenula vektor u X se nazivaju sopstvena

Διαβάστε περισσότερα

Prevod iz časopisa IEEE Journal of Solid State Circuits, Vol. 27, No. 4, April 1992, pp LOW POWER CMOS DIGITAL DESIGN

Prevod iz časopisa IEEE Journal of Solid State Circuits, Vol. 27, No. 4, April 1992, pp LOW POWER CMOS DIGITAL DESIGN Prevod iz časopisa IEEE Journal of Solid State Circuits, Vol. 7, No. 4, April 199, pp 475-483 LOW POWER CMOS DIGITAL DESIGN I. UVOD Chandrakasan A., Sheng S., Brodersen R. -Projektovanje kola sa malom

Διαβάστε περισσότερα

OSNOVI ELEKTRONIKE VEŽBA BROJ 1 OSNOVNA KOLA SA DIODAMA

OSNOVI ELEKTRONIKE VEŽBA BROJ 1 OSNOVNA KOLA SA DIODAMA ELEKTROTEHNIČKI FAKULTET U BEOGRADU KATEDRA ZA ELEKTRONIKU OSNOVI ELEKTRONIKE SVI ODSECI OSIM ODSEKA ZA ELEKTRONIKU LABORATORIJSKE VEŽBE VEŽBA BROJ 1 OSNOVNA KOLA SA DIODAMA Autori: Goran Savić i Milan

Διαβάστε περισσότερα

Operacije s matricama

Operacije s matricama Linearna algebra I Operacije s matricama Korolar 3.1.5. Množenje matrica u vektorskom prostoru M n (F) ima sljedeća svojstva: (1) A(B + C) = AB + AC, A, B, C M n (F); (2) (A + B)C = AC + BC, A, B, C M

Διαβάστε περισσότερα

APROKSIMACIJA FUNKCIJA

APROKSIMACIJA FUNKCIJA APROKSIMACIJA FUNKCIJA Osnovni koncepti Gradimir V. Milovanović MF, Beograd, 14. mart 2011. APROKSIMACIJA FUNKCIJA p.1/46 Osnovni problem u TA Kako za datu funkciju f iz velikog prostora X naći jednostavnu

Διαβάστε περισσότερα

41. Jednačine koje se svode na kvadratne

41. Jednačine koje se svode na kvadratne . Jednačine koje se svode na kvadrane Simerične recipročne) jednačine Jednačine oblika a n b n c n... c b a nazivamo simerične jednačine, zbog simeričnosi koeficijenaa koeficijeni uz jednaki). k i n k

Διαβάστε περισσότερα

ELEKTROTEHNIČKI ODJEL

ELEKTROTEHNIČKI ODJEL MATEMATIKA. Neka je S skup svih živućih državljana Republike Hrvatske..04., a f preslikavanje koje svakom elementu skupa S pridružuje njegov horoskopski znak (bez podznaka). a) Pokažite da je f funkcija,

Διαβάστε περισσότερα

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1. Pismeni ispit iz matematike 0 008 GRUPA A Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: λ + z = Ispitati funkciju i nacrtati njen grafik: + ( λ ) + z = e Izračunati

Διαβάστε περισσότερα

Mašinsko učenje. Regresija.

Mašinsko učenje. Regresija. Mašinsko učenje. Regresija. Danijela Petrović May 17, 2016 Uvod Problem predviđanja vrednosti neprekidnog atributa neke instance na osnovu vrednosti njenih drugih atributa. Uvod Problem predviđanja vrednosti

Διαβάστε περισσότερα

INTELIGENTNO UPRAVLJANJE

INTELIGENTNO UPRAVLJANJE INTELIGENTNO UPRAVLJANJE Fuzzy sistemi zaključivanja Vanr.prof. Dr. Lejla Banjanović-Mehmedović Mehmedović 1 Osnovni elementi fuzzy sistema zaključivanja Fazifikacija Baza znanja Baze podataka Baze pravila

Διαβάστε περισσότερα

EuroCons Group. Karika koja povezuje Konsalting, Projektovanje, Inženjering, Zastupanje

EuroCons Group. Karika koja povezuje Konsalting, Projektovanje, Inženjering, Zastupanje EuroCons Group Karika koja povezuje Filtracija vazduha Obrok vazduha 24kg DNEVNO Većina ljudi ima razvijenu svest šta jede i pije, ali jesmo li svesni šta udišemo? Obrok hrane 1kg DNEVNO Obrok tečnosti

Διαβάστε περισσότερα

I.13. Koliki je napon između neke tačke A čiji je potencijal 5 V i referentne tačke u odnosu na koju se taj potencijal računa?

I.13. Koliki je napon između neke tačke A čiji je potencijal 5 V i referentne tačke u odnosu na koju se taj potencijal računa? TET I.1. Šta je Kulonova sila? elektrostatička sila magnetna sila c) gravitaciona sila I.. Šta je elektrostatička sila? sila kojom međusobno eluju naelektrisanja u mirovanju sila kojom eluju naelektrisanja

Διαβάστε περισσότερα

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama. Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama. a b Verovatno a da sluqajna promenljiva X uzima vrednost iz intervala

Διαβάστε περισσότερα

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola. KVADRATNA FUNKCIJA Kvadratna funkcija je oblika: = a + b + c Gde je R, a 0 i a, b i c su realni brojevi. Kriva u ravni koja predstavlja grafik funkcije = a + b + c je parabola. Najpre ćemo naučiti kako

Διαβάστε περισσότερα

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log = ( > 0, 0)!" # > 0 je najčešći uslov koji postavljamo a još je,, > 0 se zove numerus (aritmand), je osnova (baza). 0.. ( ) +... 7.. 8. Za prelazak na neku novu bazu c: 9. Ako je baza (osnova) 0 takvi se

Διαβάστε περισσότερα

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f 2. Nule i znak funkcije; presek sa y-osom IspitivaƬe

Διαβάστε περισσότερα

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost M086 LA 1 M106 GRP Tema: CSB nejednakost. 19. 10. 2017. predavač: Rudolf Scitovski, Darija Marković asistent: Darija Brajković, Katarina Vincetić P 1 www.fizika.unios.hr/grpua/ 1 Baza vektorskog prostora.

Διαβάστε περισσότερα

Komponente digitalnih sistema. Kombinacione komponente Sekvencijalne komponente Konačni automati Memorijske komponente Staza podataka

Komponente digitalnih sistema. Kombinacione komponente Sekvencijalne komponente Konačni automati Memorijske komponente Staza podataka Komponente digitalnih sistema Kombinacione komponente Sekvencijalne komponente Konačni automati Memorijske komponente Staza podataka Standardne digitalne komponente (moduli) Obavljaju funkcije za koje

Διαβάστε περισσότερα

IZVODI ZADACI (I deo)

IZVODI ZADACI (I deo) IZVODI ZADACI (I deo Najpre da se podsetimo tablice i osnovnih pravila:. C0.. (. ( n n n-. (a a lna 6. (e e 7. (log a 8. (ln ln a (>0 9. ( 0 0. (>0 (ovde je >0 i a >0. (cos. (cos - π. (tg kπ cos. (ctg

Διαβάστε περισσότερα

Kaskadna kompenzacija SAU

Kaskadna kompenzacija SAU Kaskadna kompenzacija SAU U inženjerskoj praksi, naročito u sistemima regulacije elektromotornih pogona i tehnoloških procesa, veoma često se primenjuje metoda kaskadne kompenzacije, u čijoj osnovi su

Διαβάστε περισσότερα

18. listopada listopada / 13

18. listopada listopada / 13 18. listopada 2016. 18. listopada 2016. 1 / 13 Neprekidne funkcije Važnu klasu funkcija tvore neprekidne funkcije. To su funkcije f kod kojih mala promjena u nezavisnoj varijabli x uzrokuje malu promjenu

Διαβάστε περισσότερα

Zavrxni ispit iz Matematiqke analize 1

Zavrxni ispit iz Matematiqke analize 1 Građevinski fakultet Univerziteta u Beogradu 3.2.2016. Zavrxni ispit iz Matematiqke analize 1 Prezime i ime: Broj indeksa: 1. Definisati Koxijev niz. Dati primer niza koji nije Koxijev. 2. Dat je red n=1

Διαβάστε περισσότερα

( , 2. kolokvij)

( , 2. kolokvij) A MATEMATIKA (0..20., 2. kolokvij). Zadana je funkcija y = cos 3 () 2e 2. (a) Odredite dy. (b) Koliki je nagib grafa te funkcije za = 0. (a) zadanu implicitno s 3 + 2 y = sin y, (b) zadanu parametarski

Διαβάστε περισσότερα

ZBIRKA POTPUNO RIJEŠENIH ZADATAKA

ZBIRKA POTPUNO RIJEŠENIH ZADATAKA **** IVANA SRAGA **** 1992.-2011. ZBIRKA POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE POTPUNO RIJEŠENI ZADACI PO ŽUTOJ ZBIRCI INTERNA SKRIPTA CENTRA ZA PODUKU α M.I.M.-Sraga - 1992.-2011.

Διαβάστε περισσότερα

Osnove mikroelektronike

Osnove mikroelektronike Osnove mikroelektronike Z. Prijić T. Pešić Elektronski fakultet Niš Katedra za mikroelektroniku Predavanja 2006. Sadržaj 1 MOSFET - model za male signale 2 Struja kroz i disipacija snage Model za male

Διαβάστε περισσότερα

FAKULTET PROMETNIH ZNANOSTI

FAKULTET PROMETNIH ZNANOSTI SVUČILIŠT U ZAGU FAKULTT POMTNIH ZNANOSTI predmet: Nastavnik: Prof. dr. sc. Zvonko Kavran zvonko.kavran@fpz.hr * Autorizirana predavanja 2016. 1 Pojačala - Pojačavaju ulazni signal - Zahtjev linearnost

Διαβάστε περισσότερα

OSNOVI ELEKTRONIKE. Vežbe (2 časa nedeljno): mr Goran Savić

OSNOVI ELEKTRONIKE. Vežbe (2 časa nedeljno): mr Goran Savić OSNOVI ELEKTRONIKE Vežbe (2 časa nedeljno): mr Goran Savić savic@el.etf.rs http://tnt.etf.rs/~si1oe Termin za konsultacije: četvrtak u 12h, kabinet 102 Referentni smerovi i polariteti 1. Odrediti vrednosti

Διαβάστε περισσότερα

Protočnost 1. PROTOČNOST. 1.1 Osnovne tehnike za eksploataciju paralelizma

Protočnost 1. PROTOČNOST. 1.1 Osnovne tehnike za eksploataciju paralelizma SADRŽAJ 1. PROTOČNOST...2 1.1 Osnovne tehnike za eksploataciju paralelizma...2 1.2 Protočna obrada na nivou instrukcije osnovni koncepti...3 1.3 Performansne mere... 1.4 Tehnika projektovanja protočnog

Διαβάστε περισσότερα

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla XI dvoqas veжbi dr Vladimir Balti 4. Stabla Teorijski uvod Teorijski uvod Definicija 5.7.1. Stablo je povezan graf bez kontura. Definicija 5.7.1. Stablo je povezan graf bez kontura. Primer 5.7.1. Sva stabla

Διαβάστε περισσότερα

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori MATEMATIKA 2 Prvi pismeni kolokvijum, 14.4.2016 Grupa 1 Rexea zadataka Dragan ori Zadaci i rexea 1. unkcija f : R 2 R definisana je sa xy 2 f(x, y) = x2 + y sin 3 2 x 2, (x, y) (0, 0) + y2 0, (x, y) =

Διαβάστε περισσότερα

Hardverska struktura plc-a

Hardverska struktura plc-a Hardverska struktura plc-a 2.1 Hardverska struktura PLC-a 2.2 Procesorski modul 2.3 Memorija 2.4 Ulazno-izlazni (I/O) moduli 2.5 Specijalni, funkcijski i tehnološki moduli 2.6 Komunikacioni interfejs 2.7

Διαβάστε περισσότερα

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011. INTEGRALNI RAČUN Teorije, metodike i povijest infinitezimalnih računa Lucija Mijić lucija@ktf-split.hr 17. veljače 2011. Pogledajmo Predstavimo gornju sumu sa Dodamo još jedan Dobivamo pravokutnik sa Odnosno

Διαβάστε περισσότερα

Verovatnoća i Statistika I deo Teorija verovatnoće (zadaci) Beleške dr Bobana Marinkovića

Verovatnoća i Statistika I deo Teorija verovatnoće (zadaci) Beleške dr Bobana Marinkovića Verovatnoća i Statistika I deo Teorija verovatnoće zadaci Beleške dr Bobana Marinkovića Iz skupa, 2,, 00} bira se na slučajan način 5 brojeva Odrediti skup elementarnih dogadjaja ako se brojevi biraju

Διαβάστε περισσότερα

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA. KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI NEUTRALNI ELEMENT GRUPOIDA 1 Grupoid (G, ) je asocijativa akko važi ( x, y, z G) x (y z) = (x y) z Grupoid (G, ) je komutativa akko važi ( x, y G) x y = y x Asocijativa

Διαβάστε περισσότερα

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A. 3 Infimum i supremum Definicija. Neka je A R. Kažemo da je M R supremum skupa A ako je (i) M gornja meda skupa A, tj. a M a A. (ii) M najmanja gornja meda skupa A, tj. ( ε > 0)( a A) takav da je a > M

Διαβάστε περισσότερα

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1 Strukture podataka i algoritmi 1. kolokvij Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter. Predajete samo papire koje ste dobili. Rezultati i uvid u kolokvije: ponedjeljak,

Διαβάστε περισσότερα

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET Riješiti jednačine: a) 5 = b) ( ) 3 = c) + 3+ = 7 log3 č) = 8 + 5 ć) sin cos = d) 5cos 6cos + 3 = dž) = đ) + = 3 e) 6 log + log + log = 7 f) ( ) ( ) g) ( ) log

Διαβάστε περισσότερα

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z. Pismeni ispit iz matematike 06 007 Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj z = + i, zatim naći z Ispitati funkciju i nacrtati grafik : = ( ) y e + 6 Izračunati integral:

Διαβάστε περισσότερα

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x Zadatak (Darjan, medicinska škola) Izračunaj vrijednosti trigonometrijskih funkcija broja ako je 6 sin =,,. 6 Rješenje Ponovimo trigonometrijske funkcije dvostrukog kuta! Za argument vrijede sljedeće formule:

Διαβάστε περισσότερα

PARNA POSTROJENJA ZA KOMBINIRANU PROIZVODNJU ELEKTRIČNE I TOPLINSKE ENERGIJE (ENERGANE)

PARNA POSTROJENJA ZA KOMBINIRANU PROIZVODNJU ELEKTRIČNE I TOPLINSKE ENERGIJE (ENERGANE) (Enegane) List: PARNA POSTROJENJA ZA KOMBINIRANU PROIZVODNJU ELEKTRIČNE I TOPLINSKE ENERGIJE (ENERGANE) Na mjestima gdje se istovremeno troši električna i toplinska energija, ekonomičan način opskrbe energijom

Διαβάστε περισσότερα

FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA

FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA : MAKSIMALNA BRZINA Maksimalna brzina kretanja F O (N) F OI i m =i I i m =i II F Oid Princip određivanja v MAX : Drugi Njutnov zakon Dokle god je: F O > ΣF otp vozilo ubrzava Kada postane: F O = ΣF otp

Διαβάστε περισσότερα

Iskazna logika 1. Matematička logika. Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia.

Iskazna logika 1. Matematička logika. Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia. Matematička logika Department of Mathematics and Informatics, Faculty of Science,, Serbia oktobar 2012 Iskazi, istinitost, veznici Intuitivno, iskaz je rečenica koja je ima tačno jednu jednu istinitosnu

Διαβάστε περισσότερα

Unipolarni tranzistori - MOSFET

Unipolarni tranzistori - MOSFET nipolarni tranzistori - MOSFET ZT.. Prijenosna karakteristika MOSFET-a u području zasićenja prikazana je na slici. oboaćeni ili osiromašeni i obrazložiti. b olika je struja u točki, [m] 0,5 0,5,5, [V]

Διαβάστε περισσότερα

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011. Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika Monotonost i ekstremi Katica Jurasić Rijeka, 2011. Ishodi učenja - predavanja Na kraju ovog predavanja moći ćete:,

Διαβάστε περισσότερα

Antene. Srednja snaga EM zračenja se dobija na osnovu intenziteta fluksa Pointingovog vektora kroz sferu. Gustina snage EM zračenja:

Antene. Srednja snaga EM zračenja se dobija na osnovu intenziteta fluksa Pointingovog vektora kroz sferu. Gustina snage EM zračenja: Anene Transformacija EM alasa u elekrični signal i obrnuo Osnovne karakerisike anena su: dijagram zračenja, dobiak (Gain), radna učesanos, ulazna impedansa,, polarizacija, efikasnos, masa i veličina, opornos

Διαβάστε περισσότερα

7 Algebarske jednadžbe

7 Algebarske jednadžbe 7 Algebarske jednadžbe 7.1 Nultočke polinoma Skup svih polinoma nad skupom kompleksnih brojeva označavamo sa C[x]. Definicija. Nultočka polinoma f C[x] je svaki kompleksni broj α takav da je f(α) = 0.

Διαβάστε περισσότερα

Eliminacijski zadatak iz Matematike 1 za kemičare

Eliminacijski zadatak iz Matematike 1 za kemičare Za mnoge reakcije vrijedi Arrheniusova jednadžba, koja opisuje vezu koeficijenta brzine reakcije i temperature: K = Ae Ea/(RT ). - T termodinamička temperatura (u K), - R = 8, 3145 J K 1 mol 1 opća plinska

Διαβάστε περισσότερα

5. Karakteristične funkcije

5. Karakteristične funkcije 5. Karakteristične funkcije Profesor Milan Merkle emerkle@etf.rs milanmerkle.etf.rs Verovatnoća i Statistika-proleće 2018 Milan Merkle Karakteristične funkcije ETF Beograd 1 / 10 Definicija Karakteristična

Διαβάστε περισσότερα

Korektivno održavanje

Korektivno održavanje Održavanje mreže Korektivno održavanje Uzroci otkaza mogu biti: loši radni uslovi (temperatura, loše održavanje čistoće...), operativne promene (promene konfiguracije, neadekvatno manipulisanje...) i nedostaci

Διαβάστε περισσότερα

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta.

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta. auchyjev teorem Neka je f-ja f (z) analitička u jednostruko (prosto) povezanoj oblasti G, i neka je zatvorena kontura koja čitava leži u toj oblasti. Tada je f (z)dz = 0. Postoji više dokaza ovog teorema,

Διαβάστε περισσότερα

FORMALNI SISTEMI KAO OSNOVA ZA PROJEKTOVANJE KOMPAJLERA

FORMALNI SISTEMI KAO OSNOVA ZA PROJEKTOVANJE KOMPAJLERA FORMALNI SISTEMI KAO OSNOVA ZA PROJEKTOVANJE KOMPAJLERA Definicije Sintaksa, Semantika Projektovanje kompajlera kompajlera. 1 Kompajler, Procedura, Algoritam: KOMPAJLER: prevodioc sa višeg programskog

Διαβάστε περισσότερα

Dvanaesti praktikum iz Analize 1

Dvanaesti praktikum iz Analize 1 Dvaaesti praktikum iz Aalize Zlatko Lazovi 20. decembar 206.. Dokazati da fukcija f = 5 l tg + 5 ima bar jedu realu ulu. Ree e. Oblast defiisaosti fukcije je D f = k Z da postoji ula fukcije a 0, π 2.

Διαβάστε περισσότερα

ASIMPTOTE FUNKCIJA. Dakle: Asimptota je prava kojoj se funkcija približava u beskonačno dalekoj tački. Postoje tri vrste asimptota:

ASIMPTOTE FUNKCIJA. Dakle: Asimptota je prava kojoj se funkcija približava u beskonačno dalekoj tački. Postoje tri vrste asimptota: ASIMPTOTE FUNKCIJA Naš savet je da najpre dobro proučite granične vrednosti funkcija Neki profesori vole da asimptote funkcija ispituju kao ponašanje funkcije na krajevima oblasti definisanosti, pa kako

Διαβάστε περισσότερα

OBRTNA TELA. Vladimir Marinkov OBRTNA TELA VALJAK

OBRTNA TELA. Vladimir Marinkov OBRTNA TELA VALJAK OBRTNA TELA VALJAK P = 2B + M B = r 2 π M = 2rπH V = BH 1. Zapremina pravog valjka je 240π, a njegova visina 15. Izračunati površinu valjka. Rešenje: P = 152π 2. Površina valjka je 112π, a odnos poluprečnika

Διαβάστε περισσότερα

RIJEŠENI ZADACI I TEORIJA IZ

RIJEŠENI ZADACI I TEORIJA IZ RIJEŠENI ZADACI I TEORIJA IZ LOGARITAMSKA FUNKCIJA SVOJSTVA LOGARITAMSKE FUNKCIJE OSNOVE TRIGONOMETRIJE PRAVOKUTNOG TROKUTA - DEFINICIJA TRIGONOMETRIJSKIH FUNKCIJA - VRIJEDNOSTI TRIGONOMETRIJSKIH FUNKCIJA

Διαβάστε περισσότερα

1 UPUTSTVO ZA IZRADU GRAFIČKOG RADA IZ MEHANIKE II

1 UPUTSTVO ZA IZRADU GRAFIČKOG RADA IZ MEHANIKE II 1 UPUTSTVO ZA IZRADU GRAFIČKOG RADA IZ MEHANIKE II Zadatak: Klipni mehanizam se sastoji iz krivaje (ekscentarske poluge) OA dužine R, klipne poluge AB dužine =3R i klipa kompresora B (ukrsne glave). Krivaja

Διαβάστε περισσότερα

10. STABILNOST KOSINA

10. STABILNOST KOSINA MEHANIKA TLA: Stabilnot koina 101 10. STABILNOST KOSINA 10.1 Metode proračuna koina Problem analize tabilnoti zemljanih maa vodi e na određivanje odnoa između rapoložive mičuće čvrtoće i proečnog mičućeg

Διαβάστε περισσότερα

5 Ispitivanje funkcija

5 Ispitivanje funkcija 5 Ispitivanje funkcija 3 5 Ispitivanje funkcija Ispitivanje funkcije pretodi crtanju grafika funkcije. Opšti postupak ispitivanja funkcija koje su definisane eksplicitno y = f() sadrži sledeće elemente:

Διαβάστε περισσότερα

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu Trigonometrijske jednačine i nejednačine. Zadaci koji se rade bez upotrebe trigonometrijskih formula. 00. FF cos x sin x

Διαβάστε περισσότερα

Algoritmi zadaci za kontrolni

Algoritmi zadaci za kontrolni Algoritmi zadaci za kontrolni 1. Nacrtati algoritam za sabiranje ulaznih brojeva a i b Strana 1 . Nacrtati algoritam za izračunavanje sledeće funkcije: x y x 1 1 x x ako ako je : je : x x 1 x x 1 Strana

Διαβάστε περισσότερα

Funkcija prenosa. Funkcija prenosa se definiše kao količnik z transformacija odziva i pobude. Za LTI sistem: y n h k x n k.

Funkcija prenosa. Funkcija prenosa se definiše kao količnik z transformacija odziva i pobude. Za LTI sistem: y n h k x n k. OT3OS1 7.11.217. Definicije Funkcija prenosa Funkcija prenosa se definiše kao količnik z transformacija odziva i pobude. Za LTI sistem: y n h k x n k Y z X z k Z y n Z h n Z x n Y z H z X z H z H z n h

Διαβάστε περισσότερα

Pravilo 1. Svaki tip entiteta ER modela postaje relaciona šema sa istim imenom.

Pravilo 1. Svaki tip entiteta ER modela postaje relaciona šema sa istim imenom. 1 Pravilo 1. Svaki tip entiteta ER modela postaje relaciona šema sa istim imenom. Pravilo 2. Svaki atribut entiteta postaje atribut relacione šeme pod istim imenom. Pravilo 3. Primarni ključ entiteta postaje

Διαβάστε περισσότερα

Linearna algebra 2 prvi kolokvij,

Linearna algebra 2 prvi kolokvij, Linearna algebra 2 prvi kolokvij, 27.. 20.. Za koji cijeli broj t je funkcija f : R 4 R 4 R definirana s f(x, y) = x y (t + )x 2 y 2 + x y (t 2 + t)x 4 y 4, x = (x, x 2, x, x 4 ), y = (y, y 2, y, y 4 )

Διαβάστε περισσότερα

4 Numeričko diferenciranje

4 Numeričko diferenciranje 4 Numeričko diferenciranje 7. Funkcija fx) je zadata tabelom: x 0 4 6 8 fx).17 1.5167 1.7044 3.385 5.09 7.814 Koristeći konačne razlike, zaključno sa trećim redom, odrediti tačku x minimuma funkcije fx)

Διαβάστε περισσότερα

Matematička analiza 1 dodatni zadaci

Matematička analiza 1 dodatni zadaci Matematička analiza 1 dodatni zadaci 1. Ispitajte je li funkcija f() := 4 4 5 injekcija na intervalu I, te ako jest odredite joj sliku i inverz, ako je (a) I = [, 3), (b) I = [1, ], (c) I = ( 1, 0].. Neka

Διαβάστε περισσότερα

Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri

Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri 1 1 Zadatak 1b Čisto savijanje - vezano dimenzionisanje Odrediti potrebnu površinu armature za presek poznatih dimenzija, pravougaonog

Διαβάστε περισσότερα

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto Trigonometrija Adicijske formule Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto Razumijevanje postupka izrade složenijeg matematičkog problema iz osnova trigonometrije

Διαβάστε περισσότερα

S t r a n a 1. 1.Povezati jonsku jačinu rastvora: a) MgCl 2 b) Al 2 (SO 4 ) 3 sa njihovim molalitetima, m. za so tipa: M p X q. pa je jonska jačina:

S t r a n a 1. 1.Povezati jonsku jačinu rastvora: a) MgCl 2 b) Al 2 (SO 4 ) 3 sa njihovim molalitetima, m. za so tipa: M p X q. pa je jonska jačina: S t r a n a 1 1.Povezati jonsku jačinu rastvora: a MgCl b Al (SO 4 3 sa njihovim molalitetima, m za so tipa: M p X q pa je jonska jačina:. Izračunati mase; akno 3 bba(no 3 koje bi trebalo dodati, 0,110

Διαβάστε περισσότερα

Standardne digitalne komponente (moduli)

Standardne digitalne komponente (moduli) Sabirači/oduzimači, množači, Aritmetički komparatori, ALU Vanr.prof.dr.Lejla Banjanović- Mehmedović Standardne digitalne komponente (moduli) Složeni digitalni sistemi razlaganje funkcije na podfunkcije

Διαβάστε περισσότερα

RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) II deo. Miloš Marjanović

RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) II deo. Miloš Marjanović Univerzitet u Nišu Elektronski fakultet RAČUNSKE VEŽBE IZ PREDMETA (IV semestar modul EKM) II deo Miloš Marjanović Bipolarni tranzistor kao prekidač BIPOLARNI TRANZISTORI ZADATAK 16. U kolu sa slike bipolarni

Διαβάστε περισσότερα

Tranzistori s efektom polja. Postupak. Spoj zajedničkog uvoda. Shema pokusa

Tranzistori s efektom polja. Postupak. Spoj zajedničkog uvoda. Shema pokusa Tranzistori s efektom polja Spoj zajedničkog uvoda U ovoj vježbi ispitujemo pojačanje signala uz pomoć FET-a u spoju zajedničkog uvoda. Shema pokusa Postupak Popis spojeva 1. Spojite pokusni uređaj na

Διαβάστε περισσότερα

Linearna algebra 2 prvi kolokvij,

Linearna algebra 2 prvi kolokvij, 1 2 3 4 5 Σ jmbag smjer studija Linearna algebra 2 prvi kolokvij, 7. 11. 2012. 1. (10 bodova) Neka je dano preslikavanje s : R 2 R 2 R, s (x, y) = (Ax y), pri čemu je A: R 2 R 2 linearan operator oblika

Διαβάστε περισσότερα