Professional Documents
Culture Documents
Embedded 1, Procesori, Programiranje, Znanost
Embedded 1, Procesori, Programiranje, Znanost
koprocesor
mikroprocesor
magistrala
memorija
Slika 1. Uobiajena organizacija embedded sistema: mikroprocesor sa aplikaciono specifinim hardverom
Obuhvatnija organizacija embedded sistema, od one prikazane na Slici 1, koja ukljuuje etiri
klase aplikaciono specifinog hardvera, pri emu se svaka klasa razlikuje od druge u odnosu na nain
sprege hardvera i mikroprocesora, prikazana je na Slici 2.
VLIW ili
superskalarni
klasa 1
koprocesor
klasa 2
MIMD deljiva
memorija
klasa 3
MIMD slabo
spregnuti
klasa 4
registri
ke{
memorija
hijerarhija memorije
kod mikroprocesora
klase aplikaciono
specifi~nog hardvera
klasa _1: ako aplikaciono specifini hardver (ASH) moe da pristupa registrima mikroprocesora tada
rezultantni sistem nazivamo VLIW ili superskalarni procesor.
klasa _2: ako ASH pristupa ke memoriji procesora tada kaemo da je rezultantni sistem koprocesorski
sistem
klasa _3: ako ASH moe da pristupa samo glavnoj memoriji tada kao rezultat imamo MIMD sistem sa
deljivom memorijom.
klasa _4: u ovom sluaju komunikacija se ostvaruje preko namenskih komunikacionih modula a ne
itanjem i upisom u deljivi memorijski prostor.
Uobiajeno, u praksi, projektanti sistema termin koprocesor koriste za identifikaciju hardvera iz
klase_2 kao i klase_3 pod uslovom da hardver klase _3 nema svoju sopstvenu programsku memoriju ali,
postoji jasna diferencijacija u odnosu na pristup masterslave koji postoji izmedju mikroprocesora i
hardvera klase _3.
Komunikacioni metodi
Kada se program izvrava od strane mikroprocesoru tada prenos upravljanja ka ASH-u mora da se
ostvari sa dosta predostronosti kako bi se efikasno pristupalo podacima koji se procesiraju. Pitanje koje
se sada postavlja je sledee: Koliko je, sa jedne strane, potrebno vremena koprocesoru da proita podatke,
Tr,cop, a sa druge strane, koliko je vremena potrebno mikroprocesoru da proita te iste podatke Tr, mp. Na
slian nain ovo pitanje se moe odnositi i na to koliko izinosi potrebno vreme da koprocesor ili
mikroprocesor upie konani rezultat u odredite. Tw,cop i Tw,mp, respektivno. Pri ovome, da bi koprocesor
bio efikasan, neophodno je da on mora da obavi svoj zadatak najmanje Tr,cop + Tw,cop - Tr,mp - Tw,mp
sekundi bre u odnosu na mikroprocesor.
Ukazaemo sada na razliite eme komuniciranja koje postoje izmedju mikroprocesora i koprocesora.
Svi savremeni mikroprocesori poseduju skupove instrukcija koje manipuliu nad podacima koji su
smeteni u on-chip registarskom polju (RF-Register File). Koprocesor ne moe pristupati RF-u. Zbog
ovoga, komunikacija izimedju hardvera koprocesora i programa koji se izvrava na mikroprocesoru
moe da se ostvari na jedan od sledea dva naina:
1. komuniciranje preko deljive memorije o ovom nainu komuniciranja smo ve govorili (vidi
Sliku 1 i 2). Treba ipak naglasiti da kod ovog pristupa postoje sledea tri nedostatka:
a) pristup memoriju kod savremenih mikroprocesora je za red veliine sporiji u odnosu na
pristup RF-u ili ke memoriji
b) ke koprocesora mora da ima ugradjen hardver koji podrava ke koherenciju i
implementira bus-snooping protokol
c) koprocesor mora da ima ugradjeno memorijski interfejs koji generie memorijske adrese
kao i da obavlja operacije mem_read i mem_write.
2. komunikacija tipa master-slave program koji se izvrava na mikroprocesoru vri direktno upis,
preko magistrale, u registre koprocesora. Kada koprocesor zavri svoje izraunavanje, program
ita rezultate iz registara koprocesora. Kao i kod komuniciranja preko deljive memorije, ovaj
pristup zahteva da koprocesor poseduje bus-interface logiku ali koja je u konkretnom sluaju
znatno jednostavnija jer koprocesor kao bus-slave jedinica nikad ne inicira prenos podataka. Ako
se podaci koji su potrebni koprocesoru nalaze u RF-u illi keu tada vreme potrebno da se oni
dobave u koprocesor je znatno krae u odnosu na pristup kod deljive memorije. U principu vreme
upisa podataka u koprocesorski registar je znatno krae u poredjenju sa vremenom pristupa
memorijskoj lokaciji. Sa druge strane, brzina sa kojom koprocesor pribavlja podatke iz glavne
memorije je sporija kod ovog pristupa u odnosu na komuniciranje preko deljive memorije.
Na projektantu je da odlui koji e komunikacioni pristup da koristi. U konanom rezultati simulacije
treba da pokau, ako se uzme u obzir i cena, da li treba odabrati bre ali skuplje komuniciranje preko
deljive memorije ili jevtinije ali sporije zasnovano na master-slave konceptu.
Redukcija komunikacija
Razmotriemo sada naine na osnovu kojih se moe smanjiti komunikacija izmedju koprocesora i
programa koji se izvrava na mikroprocesoru.
Sa ciljem da se minimizira komunikacioni overhead, neophodno je podeliti algoritam na deo koji
obavlja hardver i deo koji obavlja softver, ali pri tome deoba treba da bude takva da prenos podataka na
granici hardver/softver bude minimalan. Kao primer, razmotriemo programski segment pomou koga se
izraunava operacija oper ( ), za sve elemente vektora.
void func (vec,n)
{
i = n-1;
while (i >= 0)
{
vec [i] = oper (vec [i]);
i = i-1;
}
}
Ako je koprocesor izveden tako da izraunava oper( ) bre u odnosu na mikroprocesor, tada
particija koja rezultira tome da koprocesor bude to je mogue jednostavniji se izvodi na sledei nain. U
toku svake od n iteracija, mikroprocesor puni vrednost vec[i] u koprocesor, a zatim ita rzultat
oper(vec[i]). Ako usvojimo da cena komuniciranja iznosi h ciklusa po broju (elementu vektora),
tada e ukupni komunikacioni overhead iznositi 2nh ciklusa. Alternativno reenje se bazira na
implementaicji celokupne while petlje u formi func( ) koju e obavljati hardver koprocesora.
Komunikacioni overhead se sada redukuje na 2h ciklusa, pri emu se h ciklusa koristi za prenos adrese
vektora vec, a h ciklusa za prenos prema koprocesoru inicijalne indeksne vrednosti n-1.
Naalost, pomenuta particija takodje zahteva da se operacije i=0 i i=i-1 implementiraju od strane
hardvera koprocesora, a takodje da se implementiraju i operacije tipa izraunavanje adrese vec[i] kao i
Load i Store. Treba pri tome biti svestan da je mala verovatnoa da ove operacije koprocesor moe
efikasnije da izvrava u odnosu na mikroprocesor.
Ovaj zakljuak ukazuje da particija koja se karakterie najmanjim komunikacionim overhead-om
uslovljava projektanta da duplicira hardver mikroprocesora koji se ugradjuje u koprocesor. Ovakvim
poristupom poveava se cena koprocesora, kao i potronja sistema, a sistem je podloniji otkazima i
grekama.
Performanse koprocesora
Implicitno se podrazumeva da ASH znaajno bre radi od softverske implementacije. No da bi
potvrdili ovu predpostavku potrebno je tano proceniti koliko je to bre.
Kao prvo treba da se zna maksimalno vreme koje koprocesor moe da koristi da bi obavio
izraunavanje. Ovo vreme emo oznaiti kao Tmac,cop. Dalje je neophodno znati oekivano vreme ciklusa
koprocesora Tcycle,cop. Na osnovu ova dva vremena odredjuje se maksimalan broj ciklusa koja su
koprocesoru potrebni da bi obavio izraunavanje.
Nmax,cop = Tmax,cop / Tcycle,cop
Izbor Tcycle,cop je ogranien vremenskim specifikacijama komponenata koji su projektantu raspolo`ivi
iz hardverske biblioteke koje on koristi za implementaciju koprocesora. Vreme ciklusa je u principu
funcion
select
status
wr rd1 rd2
Register
File - RF
write
result
read1
operand1
read2
operand2
Funtional
Unit - FU
...................................................................(2)
.................................................................(5)
FU1
FU2
...
FUn
kontroler (FSM)
Umesto da izvrna FU radi sekvencijalno (Slika 3), mogu}e je da se operacije izvravaju paralelno
(Slika 4). U tom slu~aju u jednani (1) vrednost Ninstr,cop se smanjuje jer jer u toku jednog upravljakog
koraka FSM-a aktivan vei broj FU-a. Sada se ponovo postavlja sledee pitanje: Da li projektant moe da
povea Gaincop onoliko koliko eli? Odgovor na ovo pitanje je ne, iz razloga to za svaki algoritam postoji
maksimalna vrednost Gaincop koja se ne moe poveati dodavanjem veeg broja FU-a. Postoje slede}a
dva razloga koji dovode do toga da dodje do pojave saturacionog efekta.
1. Postoji maksimalan iznos paralelizma koji je dostupan za svaki algoritam. Tako na primer, ako se
rezultat operacije op1 koristi kao operand za operaciju op2 tada je jasno da se op1 i op2 ne
mogu izvravati u istom koprocesorskom ciklusu, nezavisno od toga koliko je FU-ova dostupno
za izvrenje op1 i op2. Naime kaemo da postoji zavisnost po podacima izmedju operacija: op2
zavisi od op1.
2. Neki hardverski rezursi se ne mogu duplicirati. Dobar primer takvog resursa je magistrala sa Slike
1. Ako algoritam obavlja operacije Load i Store tada je ukupno potrebno m ciklusa magistrale, pri
emu je Ninstr,cop m, nezavisno od broja FU-a.
Konano, kod ovakvog pristupa, neophodno je odrediti Gaincop u funkciji broja Nfu,cop. Na alost
odgovor na ovo pitanje je teko precizno dati. U najboljem sluaju broj upravljakih koraka Ninst,cop
potreban da se izvri algoritam koprocesora deli se na Nfu,cop, ali zbog prethodno nabrojanih razloga ovo
je najbolji mogui sluaj. Ako sada definiemo Gainmulfu kao
Gainmulfu = ( [Ninstr,cop] koprocesor sa 1 FU-om)/ ([Ninstr,cop] koprocesor sa Nfu,cop FU-a
Tada se jed. (1) moe proiriti i definisati Gainmcop, tj pojaanje koje se dobija zbog korienja veeg
broja FU-a umesto korienja softverskog progrrama koji se izvrava na skalarnom RISC procesoru
Gainmcop = (Ninstr,mp NCPI,mp Tcycle,mp + Tr,mp + Tw,mp)/
/ ( Gain-lmulfu Ninstr,cop NCPI,cop Tcycle,cop + Tr,cop + Tw,cop ) .........................................(6)
Kada analiiziramo algoritam, radi nalaenja potencijalnog paralelizma, tada zakljuujemo da svi
delovi algoritma nisu pogodni za paralelizaciju. Definisaemo Dseq kao deo operacija koje se ne mogu
paralelizovati. U najoptimistinijem sluaju imaemo da je Qpar = 1-Qseq. Na alost ovo nije tano iz
razloga to se sve operacije u Qpar ne mogu izvravati paralelno iz nabrojanih razloga zavisnosti-popodacima i ogranienog broja resursa.
Amdahl-ov zakon kae da paralelno operativne FU-e ne mogu nikad da poboljaju performanse za
faktor vei od 1/Qseq. Imajui ovo u vidu moemo izraziti Gainmulfu u funkciji Qpar i broja FU-a Nfu,cop, na
sledei nain
Gainmulfu 1 / ( 1- Qpar + ( Qpar / Nfu,cop)) . ...........................................(7)
Kombinovanjem jednaina (6), (7), (2) i (3), ignoriui pri tome komunikacioni overhead, dobijamo
pojednostavljenu formulu za izraunavanje Gainmcop
Gainmulfu (1 + PbranchNbrpen) / (( (1 - Pbranch)(1- Qpar + (Qpar/Nfu,cop))) ......................................(8)
Akceleracija softvera
Alternativni pristup u odnosu na korienju koprocesorskog hardvera kojim se postie ubrzanje
algoritma ogleda se u ubrzanju softverske implementacije tog algoritma. U principu se mogu koristiti dve
komplementarne strategije. Kod prve, primenom tehnike za optimizaciju softvera mogue je poboljati
performanse, a kod druge sa brim mikroprocesorima mogue je za krae vreme izvravati program.
Tehnike za optimizaciju softvera su brojne ali se najee koriste sledee:
1. loop unrolling smanjuje overhead u toku izvrenja za najmanje jedne branch instrukcije po
iteraciji petlje
2. branch prediction dozvoljava da kompilator redukuje cenu koja se plaa zbog grananja
3. software pipelining redukuje broj ciklusa na koje mikroprocesor eka da bi FU zavrila pre
nego to se pone sa izvrenjem nove operacije (tzv. zastoji, tj. stalls).
4. trace scheduling poveava paralelizam na nivou instrukcija (ILP) preuredjenjem redosleda
instrukcija koje se nalaze izimedju dve instrukcije tipa branch, na taj nain to se ove spekulativno
izvravaju. Na ovaj nain obezbedjuje se bolje popunjavanje branch slotova kao i load delay
slotova.
Sve nabrojane tehnike se obavljaju od strane kompilatora. Drugi metod za ubrzavanje softvera bazira
se na kreiranje novog izvornog koda (programer pie kod koji poseduje bolji paralelizam).
Kada softverske optimizacije u dovoljnoj meri ne rezultiraju poveanju performansi koriste se bri
mikroprocesori i bre memorije. Brzina memorije se moe poveati ugradnjom brih memoriskih ipova
illi korienjem ke memorije veeg obima.