Professional Documents
Culture Documents
High Level Synthesys
High Level Synthesys
Poglavlje 1 5
1.1 VLSI tehnologija: Uvod u sintezu na visokom nivou ......................................................... 5
1.2 Opisivanje ulaza kod sinteze visokog nivoa.........................................................................6
1.3 Interna prezentacija............................................................................................................... 7
1.4 Model sinteze na visokom nivou ...........................................................................................9
1.5 Zadaci kod sinteze................................................................................................................ 13
1.5.1 Alokacija ....................................................................................................................... 14
1.5.2 Planiranje izvršenja....................................................................................................... 15
1.5.3 Povezivanje ................................................................................................................... 16
Poglavlje 2 20
2.1 Uvod ...................................................................................................................................... 20
2.2 Specifikacija isistema kod kojih se upravlja potrošnjom-energije (power-management
systems) ......................................................................................................................................... 20
2.2.1 Tehnološki trendovi ...................................................................................................... 21
2.2.2 Arhitekturni trendovi .................................................................................................... 21
2.3 Izvori disipacije snage.......................................................................................................... 22
2.4 Projektovanje kola i tehnološka razmatranja...................................................................22
2.4.1 Arhitekturni pristupi za smanjenje potrošnje................................................................ 23
2.5 Optimalni izbor napona napajanja .................................................................................... 26
2.6 Strategija za smanjenje potrošnje ......................................................................................28
2.6.1 Skaliranje napona napajanja .........................................................................................29
2.7 Odnos između strukturnog i fizičkog dizajna ...................................................................31
2.8 Mera kvaliteta koja se odnosi na površinu ........................................................................ 32
2.8.1 Staza podataka (Datapath) ............................................................................................33
2.8.2 Upravljačka jedinica .....................................................................................................36
2.9 Performansne mere..............................................................................................................40
2.9.1 Električni modeli...........................................................................................................41
2.9.2 Kašnjenje kombinacionih kola......................................................................................41
2.9.3 Kašnjenje kod memorijskih elemenata .........................................................................42
2.9.4 Vreme trajanja sistemskog takta ...................................................................................43
2.10 Druge mere ........................................................................................................................... 46
Poglavlje 3 48
3.1 Uvod u HDL.......................................................................................................................... 48
3.2 Jezički modeli u odnosu na arhitekturne stilove............................................................... 49
3.3 Osobine programskih jezika za HDL-ove.......................................................................... 50
3.3.1 Tipovi podataka ............................................................................................................ 51
3.3.2 Operatori i iskazi za dodelu ..........................................................................................51
3.3.3 Control konstrukcije ..................................................................................................... 51
3.3.4 Redolsed izvršenja ........................................................................................................ 52
3.4 Hardversko specifične HDL osobine .................................................................................. 52
3.4.1 Deklaracija interfejsa .................................................................................................... 52
3.4.2 Strukturne deklaracije ...................................................................................................53
1
3.4.3 RT i logički operatori .................................................................................................... 53
3.4.4 Asinhronost ................................................................................................................... 53
3.4.5 Hijerarhija ..................................................................................................................... 54
3.4.6 Interprocesne komunikacije ..........................................................................................55
3.4.7 Ograničenja ...................................................................................................................56
3.4.8 Alokacija korisnika i povezivanje.................................................................................57
3.5 HDL formati ......................................................................................................................... 57
3.5.1 Tekstualni HDL-ovi ...................................................................................................... 58
3.5.2 Grafički HDL-ovi.......................................................................................................... 58
3.5.3 Tabelarni HDL-ovi........................................................................................................ 58
3.5.4 HDL-ovi zasnovani na talasnim oblicima..................................................................... 59
Poglavlje 4 61
4.1 Uvod ...................................................................................................................................... 61
4.2 Tok dizajna kod HLS-a: Primer.........................................................................................62
4.3 HDL kompilacija.................................................................................................................. 67
4.4 Predstavljanje HDL behavior-a .......................................................................................... 68
4.4.1 Control-flow reprezentacija ..........................................................................................68
4.4.2 Prezentacija sekvenciranja i tajming.............................................................................69
4.4.3 Razdvojene Data flow i Control flow prezentacije ...................................................... 72
4.4.4 Hibridno upravljanje i data flow prezentacija..............................................................73
4.4.5 Prezentacija tipa rasčlanjena stabla...............................................................................74
4.5 Prezentacija HLS izlaza.......................................................................................................74
4.5.1 Strukturni VHDL opis potpunog sabirača ..................................................................... 74
4.5.2 Projektantski pogledi i kompletne prezentacione šeme za HLS ................................... 75
4.6 Transformacije..................................................................................................................... 79
4.6.1 Kompajler transformacija .............................................................................................79
4.6.2 Transformacija Flow-Graph-a ...................................................................................... 81
4.6.3 Hardversko specifične transformacije...........................................................................83
Poglavlje 5 86
5.1 Behavioral sinteza ................................................................................................................ 86
5.2 Identifikacija osnovnih zadataka kod postupka sinteze na visokom nivou.................... 87
5.2.1 Modeliranje ponašanja .................................................................................................. 87
5.3 Osnovni koncept planiranja izvršenja ...............................................................................88
5.4 Algoritmi o planiranju izvršenja ........................................................................................ 90
5.4.1 ASAP i ALAP planiranje izvršenja .............................................................................. 91
5.4.2 List scheduling (LS)...................................................................................................... 92
5.4.3 Planiranje-izvršenja po kritičnom putu (CPS) .............................................................. 93
5.4.4 Planiranje tipa usmeravanje-na-silu.............................................................................. 93
5.4.5 Planiranje zasnovano na izboru puta............................................................................. 94
5.5 Vreme života promenljive ...................................................................................................97
5.6 Dodela resursa...................................................................................................................... 99
5.6.1 Osnovni koncept ........................................................................................................... 99
Poglavlje 6 102
6.1 Uvod .................................................................................................................................... 102
6.2 Osnovni metodi za particiju..............................................................................................102
6.2.1 Formulacija problema ................................................................................................. 102
6.2.2 Slučajan izbor.............................................................................................................. 105
2
6.2.3 Rast grupe ................................................................................................................... 105
6.2.4 Hijerarhijsko grupisanje.............................................................................................. 106
6.2.5 Particija: minimalni presek .........................................................................................110
6.2.6 Simulirano očvršćavanje............................................................................................. 113
6.3 Particija kod HLS-a ........................................................................................................... 114
6.3.1 Selekcija-jedinica radi planiranja izvršenja i povezivanja.......................................... 115
6.3.2 Čip particionisanje ...................................................................................................... 119
Poglavlje 7 123
7.1 Definicija problema ...........................................................................................................123
7.2 Osnovni algoritmi za planiranje izvršenja ......................................................................123
7.2.1 Vremensko ograničeno ScH........................................................................................ 128
7.2.2 ScH ograničeno po resursima......................................................................................137
7.3 ScH-ovanje sa relaksiranim pretpostavkama .................................................................141
7.3.1 Funkcionalne jedinice sa promenljivim kašnjenjem...................................................141
7.3.2 Multifunkcionalne jedinice .........................................................................................142
7.3.3 Realističniji opisi dizajna............................................................................................ 143
7.4 Druge ScH formulacije ...................................................................................................... 146
7.4.1 Simulirano očvršćavanje............................................................................................. 146
7.4.2 Path-Based ScH .......................................................................................................... 148
7.4.3 DFG restruktuiranje ....................................................................................................149
7.5 Zaključci i novi smerovi razvoja ...................................................................................... 151
Poglavlje 8 152
8.1 Definicija problema ...........................................................................................................152
8.2 Datapath arhitekture..........................................................................................................153
8.3 Zadaci alokacije ................................................................................................................. 158
8.3.1 Selekcija jedinice ........................................................................................................ 158
8.3.2 Povezivanje FU-e........................................................................................................ 158
8.3.3 Povezivanje memorije................................................................................................. 158
8.3.4 Povezivanje sprege...................................................................................................... 159
8.3.5 Međuzavisnost i uređenje ...........................................................................................159
8.4 Gramzivo (greedy) konstruktivni pristup ........................................................................160
8.5 Pristupi dekompozicija......................................................................................................163
8.5.1 Clique partitioning ...................................................................................................... 163
8.5.2 Left-Edge algoritam .................................................................................................... 167
8.5.3 Ponderisani bipartit-ni matching algoritam ................................................................ 170
8.6 Iterativni pristup refinement............................................................................................. 173
Poglavlje 9 175
9.1 Uvod .................................................................................................................................... 175
9.2 Taksonomija modela.......................................................................................................... 177
9.3 Modeli orijentisani stanju .................................................................................................178
9.3.1 FSM sa stazom podataka ............................................................................................179
9.3.2 Petri mreže .................................................................................................................. 180
9.3.3 Hijerarhijski konkurentni FSM-ovi.............................................................................182
9.4 Activity-oriented modeli....................................................................................................183
9.4.1 Data Flow Graph (DFG) .............................................................................................183
9.4.2 Dijagrami toka ............................................................................................................ 184
9.5 Strukturno orijentisani modeli .........................................................................................185
3
9.5.1 Dijagram povezivanja komponenata...........................................................................185
9.6 Data-oriented modeli .........................................................................................................187
9.6.1 Entity relationship dijagram (ERD) ............................................................................187
9.6.2 Džeksonov dijagram ................................................................................................... 187
9.7 Heterogeni modeli ..............................................................................................................188
9.7.1 Control/Data Flow graf (CDFG)................................................................................. 188
9.7.2 Strukturni dijagram .....................................................................................................190
9.7.3 Paradigme programskih jezika....................................................................................191
9.7.4 Objektno orjentisani model......................................................................................... 192
9.7.5 Program-state mašina (PSM) ......................................................................................193
9.7.6 Model čekanja.............................................................................................................194
9.8 Arhitekturne taksonomije ................................................................................................. 195
9.9 Aplikaciono specifične arhitekture...................................................................................196
9.9.1 Kontroler arhitekture...................................................................................................196
9.9.2 Datapath arhitekture.................................................................................................... 196
9.9.3 FSM sa datapath.......................................................................................................... 198
9.10 Procesori ............................................................................................................................. 198
Poglavlje 10 199
10.1 Uvod .................................................................................................................................... 199
10.2 Razrada promenljivih i grupisanje .................................................................................. 199
10.2.1 Usklađivanje promenljivih..........................................................................................199
10.2.2 Prevođenje memorijske adrese ................................................................................... 200
10.3 Razrada kanala .................................................................................................................. 201
10.3.1 Karaktrerizacija kanala i magistrala............................................................................202
10.3.2 Definicija problema .................................................................................................... 202
10.3.3 Generisanje magistrale................................................................................................203
4
Poglavlje 1
Opšti oblik strukture sistema za sintezu ASIC kola na visokom nivou (high level synthesis)
prikazan je na slici 1.1.
Bihevioralni Ograničenja
opis dizajna
Kompajler
simulaciono okruženje
Sinteza
Unutrašnje visokog
predstavljanje nivoa
Netlister
RTL
RTL netlista
biblioteka
Slika 1.1: Opšti oblik sistema za sintezu ASI kola na visokom nivou .
Kompilator vrši konverziju opisa na nivou ponašanja (behavioral level) u internu prezentaciju.
RTL biblioteka sadrži fizičke i simulacione modele komponenata koji se koriste u toku sinteze.
Netlister generiše konačnu RTL strukturu, koju čini netlista RTL komponenata i simulacioni model
5
za svaku komponentu. Da bi verifikovali korektnost sintetizovanog dizajna, projektant može prvo,
da zada i simulira opis-na-ulazu, zatim da generiše netlistu pomoću simulacionog okruženja, i na
kraju da je pridoda sistemu za sintezu visokog-nivoa.
Glavne prednosti sinteze visokog-nivoa su poboljšana produktivnost i bolja efikasnost u
procesu projektovanja (projektovanje se vrši na abstraktnijem nivou, gde projektanti mogu da
specificiraju, modeliraju, verifikuju, sintetizuju, i otklanjaju greške u dizajnu za kraće vreme).
Opis-ulaza (odnosi se na formu unosa dizajna) specificira namenu dizajna. Opis se obično
zadaje u algoritamskoj formi i ne sadrži strukturnu intofmaciju o tome koji se tipovi komponenata
koriste i na koji način se te komponente međusobno povezuju. Ne postoji i informacija koja ukazuje
na strukturu kola, kao što je to koliko se protočnih stepeni koristi i druge detalje. Projeketanti
obično kreiraju ulazni-opis na nekom od specijalizovanih HDL jezika kakvi su VHDL, Verilog i dr.
VHDL je svakako najšire korišćeni jezik za opis hardvera. Ovaj jezik podržava sekvencijalne i
konkurentne iskaze, uslovne instrukcije, petlje, procedure i funkcije. Ipak treba naglasiti da on
eksplicitno ne podržava hardversku protočnost, prekide i hijerarhijsko ponašanje.
Na slici 1.2 prikazan je jedan VHDL opis. Opis čini port i deklaracija promenljivih, a zatim
jedan proces kojim se zaokružuje ponašanje dizajna. Proces ima pet lokalno promenljivih: C, D, E,
F i Tajmer. Proces čeka sve dok eksterni ulaz X ne postane 1 a zatim izvršava niz iskaza dodele ako
je vrednost Tajmer različita od 0.
6
Slika 1.2: Jednostavan VHDL opis
Sistemi za sintezu integrisanih kola na visokom nivou kompajliraju (prevode) opis ponašanja u
internu prezentaciju. Svi zadaci koji se u daljem toku obrade (vidi sliku 1.1) odnose na sintezu za
polaznu osnovu uzimaju ovu prezentaciju. Postoji više tipova internih prezentacija. Najbolja je ona
kojom se najskladnije ipisuje problem. Tako na primer za probleme digitalnog procesiranja signala
najbolja prezentacija je DFG (Data Flow Graph). DFG čini skup čvorova, pri čemu svaki čvor
odgovara jednoj operaciji u početnom opisu (u konkretnom slučaju VHDL opisu). Dva čvora Oi i
Oj se povezuju pomoću potega ako između njih poostoji zavisnost po podacima. (To znači da je
rezultat operacije Oi ulaz za operaciju Oj). Drugim rečima, poteg zavisnosti koji povezuje Oi i Oj
ukazuje da se operacija Oj ne može izvršiti pre operacije Oi. S obzirom da se DFG prezentacija
zasniva isključivo na zavisnosti po podacima, njen opis najbolje odgovara paralelnoj prezentaciji.
Na slici 1.3 prikazan je DFG za izraz Y=max((Ashr1)+(B-(Bshr3)),B).
7
1 B 3
A
O1
shr shr O2
C
D
-
E O3
+ O4
F
max O5
Y
Slika 1.3: DFG prezentacija
8
wait until X=1
if (Timer!=0)
1 B 3
A
O1
shr shr O2
Timer 1
C
D
- O6
-
E O3
Timer
+ O4
F
max O5
Y
Osnovni blok
if -end
gde je: S -skup stanja; I-skup ulaznih vrednosti; O-skup izlaznih vrednosti; f i h-su funkcije
naredno-stanje i izlaz koje preslikavaju unakrsni proizvod od S i I u S i O, respektivno.
Funkcije f i h se mogu specificirati Boole-ovim jednačinama, tabelama stanja, ili dijagramima
stanja. FSM model je efikasan kada je broj stanja do reda nekoliko stotina. Nakon toga model
postaje nerazumljiv za projektante. Šta više i komponente manje složenosti kakvi su U/I interfejsi ili
kontroleri magistrale, kada se broje svi memorijski elementi (vrednosti zapamćenih u memoriji),
mogu imati po nekoliko stotinu stanja. Sa ciljem da se FSM model prilagodi kompleksnim
rešenjima, uvodi se skup celobrojnih i FP (floating point) promenljivih koje se čuvaju (memorišu) u
9
registrima, registarskim poljima, i memorijama. Tako na primer promenljivom tipa 16-bitna
celobrojna vrednost (integer) može se predstaviti 216 ili 65 536 različitih stanja, što znači da se
uvođenjem 16-bitne promenljive kod FSM modela broj stanja redukuje za 65 536. Korišćenje
promenljivih ukazuje na to da se FSM model proširuje na FSMD, tj. FSM sa stazom podataka (FSM
with the datapath).
Formalno FSMD se definiše na sledeći način: Skup memorijsko promenljivih VAR, skup izraza
EXP = {f(x,y,z,...) | x,y,z,..., ∈EVAR}, i skup upisa (dodela) u memoriju A = {x ⇐ e | X ∈EVAR,
e ∈ EXP} . Definiše se još i skup statusnih signala kao logički odnos između dva izraza iz skupa
EXP, kao STAT = { Rel (a,b) | a,b ∈ EXP} . Na osnovu ovih defnicija FSMD se definiše kao
petorka
U ovom slučaju skup stanja S je proširen na skup ulaznih vrednosti koji sadrži izraze na osnovu
kojih se određuje status, kao i izlazni skup koji uključuje dodele vrednosti memorijskim
elementima. Funkcije f i h se definišu kao funkcije preslikavanja na sledeći način, S x ( I x STAT )
→S i S x ( I x STAT ) →( O x A ), respektivno.Na ovaj način, naredno stanje i izlaz FSMD-a ne
zavisi samo od tekućeg stanja i spoljnih signala nego takođe i od internih statusnih signala koji
ukazuju da li je relacija između veličine staze podataka istinita (true) ili lažna (false).
FSMD izračunava (određuje) nove vrednosti promenljivima koje se čuvaju u memorijskim
elementima staze podataka, ali takođe FSMD dodeljuje vrednosti spoljnim signalima. Ovo je
prikazano na delu (odsečku) dijagrama stanja sa slike 1.5, gde u izrazu L1 učestvuju promenljive
tipa spoljna i status, a L2 sadrži promenljive tipa dodela.
11
12
Slika 1.6: Protočni FSMD model; (a) protočnost na nivou komponenata; (b) protočnost na nivou
upravljanja; i (c) protočnost na nivou staze podataka
Sinteza integrisanih kola na visokom nivou preslikava opis ponašanja u FSMD model pri čemu
staza-podataka obavlja aktivnosti koje su u vezi sa dodelom promenljivih dok upravljlačka jedinica
implementira upravljačke konstrukcije. S obzirom da FSMD model određuje iznos izračunavanja u
svakom stanju, neophodno je prvo odrediti broj i tip resursa (memorijske jedinice, funkcionalne
jedinice, i jedinice za međusobno povezivanje) koje će se koristiti u okviru staze podataka.
Alokacija (dodela) je zadatak kojim se definišu potrebni resursi za data ograničenja dizajna.
Naredni zadatak kod preslikavanja opisa ponašanja u FSMD model se odnosi na particiju
(podelu) opisa ponašanja u stanja (ili upravljačkih koraka) tako da alocirani resursi mogu da
izračunaju (izvrše) sve dodele promenljivih u svakom stanju. Proces particije ponašanja u
vremenske intervale se naziva planiranje-izvršenja (scheduling). I pored toga što se planiranjem-
izvršenja svaka operacija dodeljuje pojedinom stanju, ona se ne dodeljuje određenoj komponenti.
Da bi se ostvarila korektna implementacija neophodno je svakoj promenljivoj dodeliti memorijsku
jedinicu, svakoj operaciji funkcionalnu jedinicu, a svakom prenosu sa U/I portova ka jedinicama i
između jedinica odgovarajuću jedinicu za međusobnu spregu (interconnection unit). Ovaj zadatak
se naziva povezivanje (binding), ili deoba resursa (resource sharing). Povezivanjem se definiše
struktura staze podataka alil ne i struktura upravljačke jedinice. Konačni zadatak se odnosni na
sintezu upravljanja, a on se sastoji u redukciji broja kodiranih stanja i projektovanju logika mreže
(bloka) kojim se definiše naredno-stanje kao i logike bloka upravljačka-logika koja definiše sve
upravljačke signale u okviru upravljačke jedinice (vidi sliku 1.5). Postupak sinteze upravljanja
zasniva se na poznatim tehnikama o logičkoj sintezi (optimizaciji, minimizaciji) i FSM sintezi
(teoriji automata).
13
1.5.1 Alokacija
Kao zadatak alokacija određuje koji će se tip (vrsta) i iznos (broj) resursa koristiti u okviru
arhitekture čipa. Alokacijom se takođe određuje šema taktovanja, memorijska hijerarhija, i stil
protočne obrade.
Cilj alokacije je da učini odgovarajući kompromis između cene dizajna i performansi. Ako
početno zadati opis sadrži ugrađeni paralelizam, alokacijom većeg broja hardverskih resursa
povećava se površina čipa i cena, ali se takođe stvaraju veće mogućnosti za paralelni rad ili pristup
memoriji, tako da se dizajn karakteriše boljim performansama. Sa druge strane, alokacijom manjeg
broja hardverskih resursa smanjuje se površina čipa i cena, pri čemu se forsira sekvencijalno
izvršenje operacija, tako da za posledicu imamo lošije performanse.
Da bi se ostvario dobar kompromis, postupkom alokacije mora se odrediti tačna površina čipa
kao i numerička vrednost performansi. Grubom aproksimacijom odnosa cena-performansi određuje
se broj funkcionalnih jedinica i broj upravljačkih koraka, respektivno. Da bi imali pouzdaniju
procenu odnosa cena-performansi moramo koristiti fizičke modele koji se čuvaju u RTL biblioteci.
Na slici 1.7 prikazane su tri komponente: dve ALU implementacije (ALU-F i ALU-S), koje
obavljaju operacije tipa Shift, Add i Subtract, i jedna jedinica MAX koja obavlja operaciju Maximal.
Jedinica ALU-F je brza i obavlja sve operacije za 20ns, dok je jedinici ALU-S potrebno 70 ns da
obavi operaciju ali je zbog toga ova jedinica manja i jevtinija.
Koristeći ovu biblioteku, za konkretno analizirani primer, možemo naći kompromis između
površine i performansi. Na slici 1.8, za primer sa slike 1.3, prikazanoje pet alokacija
Jednostavna procena površine za svaku alokaciju čini zbir površina individualnih komponenti
biblioteke. Moguće je takođe, kao što je prikazano na slici 1.9, proceniti performanse za svaku
alokaciju. Kao što se može videti sa slike 1.9, za alokaciju A potrebna je najmanja površina ali su
performanse najgore. Kod alokacije E performanse su najbolje ali je dizajn najskuplji. Naš izbor za
dalju sintezu jedne od pet alokacija zavisiće od kritičnosti aplikacije (vreme potrebno da se izvrši
aplikacija).
14
procenjene performanse (ns)
600
500
400
300
200
Moguće je nacrtati slične krive na osnovu kojih se određuje kompromis između performansi i
broja memorijskih jedinica, broja portova kod svake memorijske jedinice, i broja jedinica za
sprezanje ( povezivanje) elemenata. Odabiranjem odgovarajućih tačaka kod ovih krivih, projektant
određuje optimalan broj resursa za svaki tip. Današnja savremena CAD sredstva za alokaciju
resursa u značajnoj meri pomažu projektantu da napravi pravi izbor dizajna. Ova sredstva raspolažu
metrikama koje veoma pouzdano određuju površinu, performanse, taktnu frekvenciju, i
iskorišćenost resursa.
A 1 B 3
stepen 1
50 ns
O1 O2
shr shr
C
D
stepen 2
50 ns
-
E O3
+ O4
stepen 4 stepen 3
50 ns
O5
max
50 ns
Y
Kao što se vidi sa slike 1.10 operacije O3 i O4 se planiraju radi uizvršenja u istom stanju i pored
toga što između ta dva čvora postoji zavisnost. Ovakvo planiranje je izvodljivo samo ako je
dostupan dovoljan broj komponenata a propagaciono kašnjenje signala kroz komponente je kraće
od periode taktnog signala. U konkretnom slučaju alocirani ALU-ovi imaju kašnjenje od 20ns,
dostupne su dve ALU jedinice, pa je moguće ulančati operacije Add u Subtract u okviru taktnog
perioda od 50ns.
Suprotan efekat se javlja kada je propagaciono kašnjenje signala kroz funkcionalnu jedinicu
duže od periode taktnog signala. U takvim situacijama planer mora da obezbedi nekoliko stanja
kako bi operacija završila. U konretnom slučaju komponenta MAX ima propagaciono kašnjenje od
80ns dok je trajanje taktnog intervala 50ns. To znači da je za izvršenje operacije O5 potreban period
od dva taktna intervala. Planiranje izvršenja operacija čije izvršenje traje više od jedan taktni
interval naziva se više-taktno izvršenje (multicycling).
Kada kod algoritama za planiranje-izvršenja postoji ograničenja sa aspekta vremena (time-
constrained schedulling) ide se na soluciju da se fiksira maksimalan broj upravljačkih koraka za
date operacije. Na osnovu ovog performansnog ograničenja (vreme izvršenja) kao i ograničenja
usled zavisnosti između čvorova (prvo mora da se izvrše prethodnici) moguće je odrediti
vremensko najraniji upravljački korak ei kao i vremensko najkasniji upravljački korak li tako da u
okviru tog intervala je moguće planirati izvršenje čvora Oi. Koristeći ei i li za sve čvorove moguće
je proceniti (odrediti) maksimalan broj funkconalnih jedinica ili cenu dizajna. Algoritmi za
planiranje-izvršenja kod kojih postoje ograničenja sa aspekta vremena izvršenja selektuju čvor Oi i
u svakom upravljačkom koraku između trenutaka ei i li procenjuju njegovu cenu, a zatim selektuju
stanje Si za koje je cena najniža. Važan cilj je da se u svakom koraku minimizira broj funkcionalnih
jedinica.
1.5.3 Povezivanje
Povezivanje (binding), kao zadatak, ima za cilj da u okviru svakog taktnog intervala dodeli
operacije i memorijske pristupe dostupnim hardverskim jedinicama. Resursi kakvi su funkconalna
16
jedinica, memorijska jedinica ili jedinica za povezivanje (sprežna) mogu biti deljive od strane
različitih operacija radi izvršenja, (deljive radi) pristupa podacima, ili prenosa podataka za slučaj da
su sve ove aktivnosti uzajamno isključive. Na primer, dve operacije dodeljene dvaju različitim
upravljačkim koracima su uzajamno isključive, jer se one nikad ne izvršavaju simultano, pa se zbog
toga mogu povezati na istu hardversku jedinicu.
U zavisnosti od tipa jedinice proces povezivanja čine sledeća tri tipa podzadataka:
I pored toga što su navedena izdvojeno, sva tri podzadatka su uzajamno isprepletena (zavisna)
tako da ako želimo da dobijemo optimalne rezultate, podzadaci mora da se izvršavaju
konkurentno.
Za primer planiranja-izvršenja sa slike 1.10 ilustriraćemo proces povezivanja. Da bi (po)vezali
promenljive za registre moramo sve promenljive iz opisa da podelimo na kompatibilne skupove.
Skup promenljivih je kompatibilan ako sve promenljive skupa nisu istovremeno u životu. Da bi
odredili kompatibilne skupove, moramo odrediti vremena života promenljivima, kako je to
prikazano na slici 1.11(a). Na osnovu vremena života kreira se kompatibilni graf kod koga svaki
čvor predstavlja promenljivu, a svaki poteg povezuje dve promenljive koje imaju uzajamno
isključiva vremena života. U konretnom primeru, promenljive C i D se ažuriraju (vrši se upis) u
stanju 1 a čitaju u stanju 2, dok se promenljive E ažurira i čita u stanju 2, a promenljiva F ažurira u
stanju 2 a čita u stanju 3. Na slici 1.11(b) prikazan je graf kompatibilnosti za ove promenljive.
Nakon ovoga graf kompatibilnosti mora da se podeli na klike (cliques). Klika je potpuno
povezani podgraf, drugim rečima, podgraf koga čini nekoliko čvorova, pri čemu je svaki čvor
povezan sa svim svojim susednim čvorovima. Klika ukazuje na skup uzajamno isključivih čvorova
koji se uzajamno mogu povezati preko istog resursa.
Kod analiziranog primera, particija grafa kompatibilnosti na klike rezultira tome da postoje dva
moguća rešenja (vidi sliku 1.11(c)). Kod oba rešenja za čuvanje promenljivih potrebna su po dva
registra. Prvo rešenje koristi registar R1 za čuvanje promenljivih C i F a registar R2 za čuvanje
promenljive D. Promenljivu E ne treba memorisati jer njen život ne prelazi granice između stanja i
može se implementirati pomoću linija (žica).
17
C D E F
Stanje 1
Stanje 2
Stanje 3
Stanje 4
a)
C
C D
b) F
R1:C,F
R2:D
c) R1:D,F
R2:C
Slika 1.11: Povezivanje kod memorisanja; (a) vreme života promenljivih; (b) graf kompatibilnosti;
(c) moguća rešenja
18
A B
1 C, F D 3
R1 R2
O1 O2
a) ALU ALU
A B
1 C, F D 3
R1 R2
O1, O3 O2, O4
b)
izbor 1
A B
1 C, E, F D 3
R1 R2
O1, O4 O2, O3
c) ALU1 ALU2
izbor 2
Slika 1.12: Povezivanje funkcionalne jedinice: (a) parcijalni dizajn nakon povezivanja
operacija u stanju 1; (b) stanje 2, izbor 1; i (c) stanje 2, izbor 2
19
Poglavlje 2
Merila kvaliteta
2.1 Uvod
HLS generiše strukturni dizajn koji implementira dati behavioral i zadovoljava projektantska
ograničenja koja se odnose na površinu, performanse, potrošnju energije, pakovanje, testiranje i
druge kriterijume. Merila o kvalitetu su neohodna da bi podržali HLS na dva načina. Kao prvo
neophodne su tačne mere na na osnovu kojih se određuje kvalitet konačnog sinntetizovanog
dizajna. Merilo o kvalitetu konačnog dizajna omogućava nam da obavimo poređenje sa aspekta
postavljenih ograničenja, a zatim da identifikujemo kritične tačke u metodologiji dizajna, CAD
sredstvima ili upravaljanje strukturom. Na primer ukupna površina čipa određuje njegtovu cenu. Sa
druge strane veliki odnos kod ožičavanja metal1 prema metal2 ukazuje na inferiorni razmeštaj
algoritama za rutiranje. Sa druge strane dobre procene kvaliteta dizajna su neophodne da bi se
izabrala odgovarajuća HLS sredstva i da se izabere odgovarajući dizajn stil, kako ciljne arhitekture
tako i drugih arhitekturnih osobina. Na primer, ako je taktni period suviše dug ne-protočni množač
mora da se zameni sa protočnim množačem. Na sličan način, dizajn sa tri magistrale zahteva veću
površinu u odnosu na dizajn sa dve magistrale. Zbog toga u toku procesa particije, ScH-ovanja, i
alokacije koriste se različite mere kvaliteta sa ciljem da se proceni kvalitet različitih dizajn
alternativa.
Obično postoje tri glavne mere koje se koriste za donošenje odluka o kavlitetu dizajna:
površina, performanse, i potrošnja. Površina se odnosi na fizički obim dizajna. Performansne mere
se tiču vremena propagacije signala kroz dizajn kao i ukupno vreme izvršenja. Mere u potrošnji se
odnose na disipaciju snage dizajna i ukazuju na vruće tačke implementacije. Postoje i druge mere
koje se koriste za procenu kvaliteta dizajna, a one se odnose na sposobnosti za verifikaciju,
testiranje, pouzdanost, i izvodljivost fabrikacije. S obzirom da dizajn odluke zavise od ovih mera
njihova tačnost i pouzdanost su ključne za generisanje visoko kvalitettnih dizajna.
Ukazaćemo sada na neke jednostavne mere kvaliteta koje se odnose na površinu i performanse.
20
zbog toga, oni mogu da rade u režimu rada sa smanjenim performansama, sa ciljem da bi uštedeli
energiju. Ako je deo sistema, ili neka od njegovih komponenata, kompletno pasivan (pasivna), tada
delovi sistema koji čekaju na neki zahtev za uslugom mogu biti isključeni (shut-down). Imajući ovo
u vidu power-management strategije (politike) su postale neminovnost. Sistemski projektanti su
suočeni danas sa novom krizom-potrošnje (power crisis), pa je zbog toga power-management
strategija postala najefikasnije sredstvo kao rešenje na te izazove.
21
2.3 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
Prvi član, pt ∗ (C L ∗ V ∗ VDD ∗ f CLK ) , se odnosi na komutiranu komponentu snage, gde je:
C L - komutirana kapacitivnost; f CLK - taktna frekvencija; pt - faktor aktivnosti; V - naponska
promena impulsa na izlazu kola, ista kao V DD ; V DD - 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 leakage , i zavisan je od tehnologije.
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 pt , C L , V DD ,
f CLK . (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 DD , a statička
proporcionalna sa V DD , evidentno je da smanjenje V DD -a vodi ka najefikasnijoj redukciji potrošnje energije.
Skaliranjem napona napajanja, treshold voltage ( Vth ) 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
energija _ po _ prelazu = = C efektivno ∗ VDD
2
(2.2)
f CLK
gde je C efektivno = pt ∗ C L .
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.
22
2.4.1 Arhitekturni pristupi za smanjenje potrošnje
U nekoj gruboj aproksimaciji snaga koja se disipira na nekom logičkom bloku data je sledećom
relacijom
Pdis = C log ∗ V DD
2
∗ f CLK (2.3)
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 2.1 može biti 40 MHz. Snagu koja se disipira u tom
slučaju obeležićemo sa Pref i ona iznosi
A
L
E
^ KO
+ MP
AR A+B= C
B
L AT
E OR
^
C L
CLK E
^
23
A
L
E
^
KOMPARATOR
+
A=B
B
L
E
^
C
L
E
MUX
^
CLK
L Sel
E
^
KOMPARATOR
+
A=B
L
E
^
L
E
^
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 2.3).
4
normalizovano ka{njenje
3.5
3
2.5
1.5
1
2.9V
1 2 3 4 5 6 VDD [V]
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:
24
2 ⎛ f ⎞
Ppar = C par ∗ V par
2
∗ f par = (2.15 ⋅ Cref )∗ (0.58 ⋅ Vref ) ∗ ⎜⎜ ref ⎟⎟ = 0.36 ⋅ Pref (2.5)
⎝ 2 ⎠
A
L
E
^
+ L
KOMPARATOR
B E izla
L ^
E
^
C L
L
E
E
^
^
CLK
U rešenju sa slike 2.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 2.1) povećava se površina čipa, a kao posledica
aproksimativno efektivne kapacitivnosti je za faktor 1.15. Snaga koja se troši od strane protožne
obrade podataka sa slike 2.4 iznosi sada
∗ f pro = (1.15 ⋅ C ref ) ∗ (0.58 ⋅ Vref )
2
Ppro = C pro ∗ V pro
2
∗ f ref = 0.39 ⋅ Pref (2.6)
25
Paralelno-protočna implementacija rezultira redukciji snage od 5 puta.
A
B
C SLIKA 4
CLK
M izlaz
U
X
SLIKA 4
Sel
Uporedni rezultati koji se odnose na različite arhitekture opisane na primeru jednostavne staze
podataka koju čine sabirač i komparator su date na slici 2.6.
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:
26
f ref f ref
Power ( N ) = N ⋅ C ref ⋅ V 2 ⋅ + C ip ⋅ V 2 ⋅ + C int erface ⋅ V 2 ⋅ f ref (2.8)
N N
gde je:
N - broj paralelnih procesora,
C ref - kapacitivnost jednog (single) procesora,
C ip - interprocesorski komunikacioni overhead kao rezultat uvedenog paralelizma (upravljanje i
rutiranje)
C int erface - overhead interfejsa koji se ne smanjuje sa brzinom ako se u arhitekturu uvede više
paralelizma
U opštem slučaju C ip i C int erface su funkcije N , a poboljšanja sa tačke gledišta potrošnje u
odnosu na referentni slučaj (bez uvođenja paralelizma) se mogu izraziti kao
C ip ( N ) C int erface ( N ) ⎞⎛ V
2
⎛ ⎞
Pnormalized = ⎜1 + + ⎟⎜ ⎟ (2.9)
⎜ N ⋅ C C ⎟⎜ V ⎟
⎝ ref ref ⎠⎝ ref ⎠
Pri malim naponima napajanja (blizu threshold-a)broj procesora (a time i overhead) obično
raste brže nego što član V 2 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
0.6
paralelno-proto~na
0.5 staza podataka
0.4
0.3
0.2
0.1
VDD [V]
27
Analizom slike 2.7 se može zaključiti da je optimalni napon relativno nezavisan i za 2.0 μm CMOS
tehnologiju iznosi 1.5V.
Na slici 2.8 prikazane su normalizovane vrednosti površina/snaga za različite napone napajanja
arhitekture sa slike 2.7.
Arhitektura
paralelna protočno-paralelna IIR filtar
napon
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.19 3.7/0.2 2.6/0.23
1.5 11/0.13 7/0.12 7/0.14
dostiže se
1.4 15/0.14 10/0.11
rekurzivno usko grlo
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.
28
2.6.1 Skaliranje napona napajanja
Energija koja se troši po prelazu, ili power-delay proizvod, kod CMOS kola proporcionalna je
sa V 2 . Na slici 2.9 prikazan je dijagram normalizovanog power-delay proizvoda za dva kola (ring-
oscilator i 8-bitni ripple-carry sabirač).
1.5
0.7
8-bitni ripple-carry
0.5 sabira~
0.2 51-stepeni
ring-oscilator kvadratna
zavisnost
0.1
0.05
1 2 5
Kao što se vidi sa slike 2.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 2.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 44000 tranzistora, ali je bitno to što sve krive
ukazuju na to da postoji identična zavisnost).
29
7.
5
7
6.
5 generator taktnih
6. i l
0
5. sabir
5
5.
0 24-bitni
4. `
normalizovano
5
4. 20-bitna staza
0
k { j j
3.
5
3.
0
2.
5
2.
0
1.
1.
0 V DD [V]
2. 4. 6.
Slika 2.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 44802 tranzistora, 24-bitni množač ima 20432 tranzistora, sabirač ima 256 a generator
taktnih impulsa 56 tranzistora.
C L ∗ VDD C L ∗ VDD
Td = = (2.11)
I ⎛W ⎞
μ ⋅ COX ⋅ ⎜ ⎟ ⋅ (VDD − VT )
2
⎝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 2.11.
30
100
dynamic logic
70
conventional static logic
power-delay proizvod (pJ)
50
pass-transistor logic
20
10
8-bitni sabira~
5
2.0 μm
3 ka{njenje (ns)
10 30 100
HLS transformiše ulazni behavioral opis u strukturni dizajn koga čini netlist datapath-a i
upravljačka (control unit) jedinica. Obično datapath netlist-a se sastoji od skupa generic register-
transfer (RT) kommponenata (tj. FU-ova, sprežne jedinice i memorijske jedinice). Upravljačka
jedinica specificira upravljake signale pomoću kojih u svako stanje se obavlja registarski prenos, a
takođe vrši sekvenciranje koje se odnosi na naredno stanje dizajna. (slika 2.12).
Proces generisanja podataka proizvođača koji se odnose na custom i semicustom tehnologije na
osnovu strukturnog dizajna sastoji se od nekoliko koraka. (slika 2.12), uključujući tehnološko
preslikavanje (technology mapping), generisanje modula, razmeštaj komponentata po površini čipa
(floorplanning), razmeštaj i rutiranje. Tehnološko presllikavanje dodeljuje realne komponente, iz
fizičke biblioteke, generičkim komponentama u strukturnom dizajnu. Iza ove aktivnosti obično
slede neke procedure za optimizaciju koje imaju za cilj da redukuju ukupnu površinu i kašnjenje
dizajna. Mi usvajamo da tehnološki preslikavač (mapper) selektuje različite layout stilove za
različite delove dizajna. Na primer, regularno struktuirane jedinice, kakvi su sabirači, oduzimači,
ALU-ovi , multiplekseri i registri se mogu preslikati u bit-slice celine, koje nazivamo ćelije ili
standardne ćelije. Takođe, tabela upravljanja (control state table) se može preslikati u PLA ili
standardne ćelije, dok memorijske jedinice kakvi su ROM-ovi, RAM-ovi i RF polja, kao i FU-ovi,
kakvi su multiplekseri, se preslikavaju u makro ćelije. Dizajn može da sadrži mešavanu bit-slice
celina proizviljnih veličina kakve su ćelije, makroi i standardne blok ćelije, koje ćemo nadalje
nazivati moduli. Generatori modula obavljaju floorplanning i rutiranje za svaki modul nezavisno.
Floorplanner čipa određuje pozicije i sprege modula, a zatim generiše layout čipa.
31
Ukupna površina dizajna se dobija kao suma površina svih modula, I/O pad-ova i pad drajvera,
površine rutiranja u čipu kao i druge izgubljene površine (neiskorišćene, vidi sliku ). S obzirom da
su makroi unapred definisani njihova površina i oblici se direktno dobijaju iz biblioteke
komnponenata. Za ostale komponente kao datapath tako i kontrolnih modula, s obzirom da se
preslikavanje vrši na principu bit-slice-a, kako površinu tako i layout arhitekture je unapred teško
odrediti.
Mux Mux
FU
General Bit-sliced
PLA Std. cells Std. cells
cells stack
PLA Bit-sliced
stack
Tradicionalne mere o kvalitetu površine dele fizički dizajn na površinu koju zauzimaju aktivne
jedinice i površinu koju zauzimaju sprege. Aktivne jedinice su FU-ovi, kakvi su ALU, sabirači,
množači, memorijske jedinice, kakvi su registri, RF polja, ROM-ovi, RAM-ovi itd. Sprežne jedinice
predstavljaju multiplekseri, magistrale i veze.
Različiti metodi su do sada korišćeni za merenje površine aktivne jedinice. Jedna od metoda
koristi broj AND, OR, NOT operatora u Boolean-ovim izrazima pomoću kojih se opisuje FU.
32
Druga mera aproksimira površinu aktivne jedinice kao zbir površina ćelija pri čemu svaka ćelija
omplementira po jedan simbol u šematskom dijagramu. Površina ćelije se dobija na osnovu
bibliotečkog kataloga koga daje proizvođač. Površina se takođe može aproksimirati brojem
tranzistora pomnožen sa koeficijentom gustina tranzistora u um2/tranzistoru koja se dobija
uprosečavanjem layout površine po tranzitoru za ssve dostupne ćelije u biblioteci, ili
uprosečavanjem u donosu na neki jednostavni dizajn.
U odnosu na površinu sprege, najveći broj metrika pretpostavlja da je layout površine direktno
proporcionalan broju i veličini nekih sprežnih jednica. Saglasno tome, broj multipleksera ili
ekvivalent multipleksera tipa 2-u-1 je standardna mera za procenu površine sprege kod algoritama
za alokaciju datapath-a. Na sličan način broj multiplekserskih ulaza i broj veza se standardno
koristi za određivanje mere o površini rutiranja.
Slika 2.13: Dve layout datapath arhitekture koje koriste: (a) custom cells; (b) standard cells
33
Wdp
LSB Wbit Abit MSB
Unit 1
Unit 2
Hdp
Unit n
Dodatna oblast
(a) Kanal za
za rutiranje rutiranje
Data
Power Ground
Ground
Ground
Ground
Over-the-cell
staza za
rutiranje
Power
Ground
Ground
Diffusion
Slika 2.14: Layout modeli: (a) datapath stack, (b) custom cell arhitektura, (c) standard cell
arhitektura.
Kod prve layout arhitekture slika 2.14(b) difuzione vrste (strips) za P i N tranzistore se
postavljaju horizontalno. Veze za napajanje i masu se postavljaju horizontalno u prvom metalnom
sloju. Upravljačke linije koje su zajedničke za različite bit-slice-ove u svakoj jedinici u porvom
metalnom sloju se izvode horizontalno. U drugom metalnom sloju linije podataka koje povezuju
različite jedinice u svakom bit-slice-u se izvode kao vertikalne. Kod druge layout arhitekture (slika
2.14 (c)), bit-slice svake jedinice se sastoji od jedne ili većeg broja standardnih ćelija. P i N
34
difuzione vrste se smeštaju vertikalno. Veze za napajanje i mase idu vertikalno u prvom metalnom
sloju. Uparavaljačke linije koje prolaze kroz standardne ćelije se nalaze u drugom metalnom sloju.
Linija podataka se smeštaju u kanalu za rutiranje i vertikalno se izvode u prvom metalnom ili poli-
silicijumskom sloju. Sprege između standardnih ćelija unutar svake bit-slice se takođe smeštaju u
kanalu za rutiranje. Da bi izračunali visinu (Hdp) bit-slice (slika 2.14 (a)), mi smatramo da je Hdp
proporcionalan broju tranzistora u bit-slice-u. Svaki bit-slice u jedinici sa slike 2.14 (c) sastoji se
difuzionih vrsta koje su međusobno izdvojene prazninama (gap). Tranzistori kod svake difuzione
vrste se izdvajaju pomoću metal-difuzionih kontakata ili smeštanjem u minimalni poly-to-poly
prostor. Na ovaj način širina Unit (Wunit) sa slike 2.14 (c) se izračunava kao proizvod broja
tranzistora (tr(unit)) i tranzistor-pitch koeficijenta (α) u um/tranzistor. Pri ovome α se dobija
uprosečavanjem odnosa širine ćelije i broja tranzistora po ćeliji u svim jedinicama koji su sastavni
deo biblioteke. Na ovaj način:
n
⎛ n ⎞
H dp = ∑ Wuniti = α × ⎜ ∑ tr (unit i ) ⎟. (2.13)
i =1 ⎝ i =1 ⎠
Jednačina (2.13) važi za standard cells arhitekturu čak i kada se svaki bit-slice implememntira
sa dve ili veći broj vrsta.Nešto konkretnije drugačiji koeficijent α' se mora koristiti u ovom slučaju.
Sada visina bit-slice magacina koga čine n jedinica i m vrsta se implementira sa:
⎛ n ⎞
H dp = α ′ × ⎜ ∑ tr (unit i ) ⎟ / m (2.14)
⎝ i =1 ⎠
Slične pretpostavke se mogu učiniti i za custom cell arhitekturu koja je prikazana na slici 2.14
(b). I pored toga što se P i N vrste smeštaju horizontalno, nekoliko vrsta, Wunit se može izračunati na
osnovu jednačine (2.13) koristeći različiti transitor-pitch koeficijent α''. Ova pretpostavka važi jer
visina jedinične ćelije (Hcell) je konstantna, a jedinična širina Wunit mora da ukaže obim ćelije sa
aspekta broja tranzistora.
Širina Wbit bit-slice-a jednaka je sumi visina jedinične ćelije Hcell i visine kanala rutiranja Hch.
Za obe layout arhitekture Hcell je konstanta, s obzirom da su sve jedinične ćelije unapred
projektovane da budu iste visine. Hch se izračunava kao proizvod wire-pitch (β) i razlike između
broja procenjenih ruting traka (Trkest) koji je potreban da se kompletira povezivanje svih net-ova u
jedan bit-slice i broj dostupnih traka za rutiranje (Trktop). Na ovaj način:
gde Trktop kod standard-cell arhitekture iznosi 0, a koeficijent β jednak je zbiru minimalnih
veza sa minimalnim rastojanjem između dve metalne veze.
Procena ztahtevanog broja traka u svakom bit-slice-ui se može dobiti nakon što se odredi
pozicija svake jedinice u bit-slice-u. Jedan od algoritama koji se koristi za ovu namenu, nazvan min-
cut algoritam predstavlja brzi algoritam koji ima pseudolinearno vreme kompleksnosti. Zahtevani
broj traka se može proceniti na osnovu maksimalne gustine koja se deiniše kaoi maksimalan broj
veza duž bilo koji poprečni presek na kanal. Bolja procena se dobija korišćenjem nekog
jednastavnog algoritma kakav je left-edge algoritam koji ima kompleksnost O(nlogn) gde je n broj
35
net-ova. Na obaj način površuine datapath-a (Adp) se uzračunava kao proizvod broja bitova (bw) i
površine jednog bit-slice-a.
Jednačina (2.16) daje gornju granicu površine datapath-a. Granica je proporcionalna proizvodu
broja tranzistora i broju traka za rutiranje. Broj tranzistora se može aproksimativno odrediti na
osnovu Boolean izraza pomoću kojih se opisuje rad te jedinice ili brojanjem tranzistora u šemi. Broj
traka se može aproksimirati gustinom traka nakon linearnog razmeštaja. Bolje procene se mogu
dobiti ako algoritmi imaju veći kompleksnost. S obzirom da je broj komponenata u datapath-u
mali, tačnija izračunavanja ne mora da budu računsko intenzivna (da se troši mnogo vremena na
izračunavanje).
36
Slika 2.15: Opis CU-a: (a) state table; (b) Boolean jednačine za izlazne signale; (c) dvonivovska
AND-OR implementacija; (d) dvonivovska NAND-NAND implementacija; (e) layout stil kod
standard cell
Standard-Cell Implementacija
Da bi pojednostavili procenu površine kod Standard-Cell (SC) implementacije uvešćemo
brojne pretpostavke. Pretpostavićemo da član tipa proizvod u SOP izrazu za svaki izlazni signal
sadrži signal tekuće-stanje i (u najgorem slučaju) signal tipa uslov/status; pri čemu ovi ulazi u SOP
izrazu mogu biti komplementirani. Mi ćemo takođe usvojiti da se svaki član tipa proizvod
implementira pomoću AND kola a da se suma proizvoda implementira pomoću OR kola, kako je to
prikazano na slici 2.15 (c) za izlaz O1. Jasno je da je moguće izvršiti zamenu AND-OR
implementacije pomoću ekvivalentne NAND-NAND implementacije kao je to prikazano na slici
2.15 (d).
Usvojićemo da su svi gejtovi za implementaciju CU-a smešteni u jednistvenoj vrsti ćelija, da se
ulazi javljaju na vrhu, a izlazi na dnu trake kako je to prikazano na slici 2.15(e). Usvojićemo dalje
da su svi potrebni gejtovi za implementaciju izlaznog signala grupisani (cluster-i) zajedno kako je
to prikazano za signal o1 na slici 2.15 (e). Ovaj zahtev koji se odnosi na strogo grupisanje ne
dozvoljava deobu AND kola između dva izraza sa istim produktnim članom. Layout površine CU-a
koja koristi SC implementaciju (Asc) jednaka je proizvodu širine Wsc i visine Hsc, i izračunava se
kao
37
Asc = Wsc × H sc , (2.17)
gde je Wsc proporcionalno broju tranzistora, Hsc je proporcionalno broju traka za rutiranje.
Broj tranzistora se može izračunati na osnovu SOP izraza za svaki izlazni signal.
Kod CMOS tehnologije, svako n-ulazno AND ili OR kolo ima 2n+2 tranzistora.
Naglasimo da n-ulazni NAND i NOR gejtovi imaju samo 2n tranziatora. S obnzirom da svaki
produktni član u SOP izrazu se implementira sa jednim AND gejtom i jednim OR gejtom (vidi sliku
2.15 (c)), mi možemo da izračunamo potreban broj tranzistora. Svaki literal u članu tipa proizvod
ima doprinos od 2 tranzistora, a svaki član tipa proizvod ima doprinos od dva tranzistora kod AND
gejta i dva tranzistora kod OR gejta, pri čemu OR gejt ima doprinos od dodatna dva tranzistora.
Neka occur(Oi) i term(Oi) odgovaraju broju pojavljivanja literala i broju članova u SOP
izrazu za signal Oi, respektivno. Neka tr(Reg) predstavlja broj tranzistora u jednobitnom state
registru. To znači da za AND-OR implementaciju CU-a širina CU-a se izračunava kao
log 2 m
Wsc = α × (( ∑ (2term(Oi )occur (Oi ) + 4term(Oi ) + 2)) + ( ⎡log 2 m ⎤ × tr (Re g ))), (2.18)
i =1
38
Slika 2.16: Različit odnos dužine i širine kontrolne logike: (a)implementacija u jednom redu,
(b)implementacija u tri reda
Ova jednostavna ograničenja mogu biti ne adekvatna kada su potrebne tačnije procene. Bolje
procene se dobijaju generisanjem tačnijih net lista za CL kao i tačnijim algoritmima za modeliranje
razmeštaja i rutiranja.
Mi možemo generisati obimniju net listu za CS tabelu i da obavimo ograničeno tehnološko
preslikavanje dekompozicijom svakog AND ili OR gejta u niz gejtova iz date biblioteke.
Razmeštaj se može modelirati distribucijom probabilističkog tipa koja se tiče kako pozicije pinova
tako i dužina veza. Sa druge strane ruting algoritmi se aproksimiraju izračunavanjem gustine
rutiranja po svakom od kanala.
Da bi dobili bolje procene neophodno je da se koriste tačniji modeli za razmeštaj i algoritmi za
rutiranje.
PLA
PLA se često koristi za implementaciju kombinnacione i sekvencijalne logike, a posebno,
CU FSMD-a. PLA čine AND i OR polja čiji se rad podržava od strane ulaznih i izlanih bafera,
ulaznih i izlaznih lečeva i bafera koji formiraju članove tipa proizvod, kako je to prikazano na slici
2.17. Ulazni baferi su potrebni za pobudu AND polja, baferi tipa člana proizvod za pobudu OR
polja, a izlazni baferi za pobudu spoljne logike. Za realizaciju sekvencijalne logike koriste se ulazni
i izlazni lečevi.
Širina PLA modula (WPLA) predstavlja sumu širina ulaznog AND polja (Win), širine bafera
tipa člana proizvoda (Wp), i širine OR polja (Wout) (vidi sliku 2.17 (b)). Win jednako je broju ulaza
(n) pomnožen sa maksimalnom širinom leča (lw) i širnom bafera (bw). Na sličan nalin, Wout
jednako je proizvodu MAX(lw,bw) i broja izlaza (m).
Visina PLA (HPLA) se izračunava kao zbir leč visine (lh), bafer visine (bh), i visine AND-
OR ravni. Visina AND-OR ravni određena je od strane proizvoda broja različitih članova tipa
proizvod (p), i transistor row pitch (r). Ukupna površina PLA se određuje kao
39
Slika 2.17: PLA layout model: (a) logičko preslikavanje; (b) layout model
U daljem tekstu opisaćemo električni model kašnjenja i iskoristićemo njega da bi izveli modele
kašnjenja za kombinaciona i sekvencijalna kola. Na kraju opisaćemo određivanje taktne periode
kod FSMD arhitekture.
40
2.9.1 Električni modeli
RC model sa raspodeljenim parametrima nazvan Elmore-ov model kašnjenja obično se koristi
za izračunavanje kašnjenja. Kod RC modela sa raspodeljenim parametrima, propagaciono kašnjenje
na putu od početne do krajnje tačke, (tp(start,end)), izračunava se kao proizvod svih raspodeljenih
otportnosti Rj i kapacitivnosti Ck na putu, tj. kao
Mi možemo korisitizi jed. 10 da bi dobili kašnjenja veza između dve komponente kako je to
prikazano na slici 2.18 (a). U CMOS tehnologiji, mi modeliramo komponentu pomoću njene ulazne
kapacitivnosti (Cin) i njene izlazne otpornosti (Rout), kako je to prikazano na slici 2.18 (b). Za veze
koje ostvaruju povezivanje koristimo dobro poznati π-model kod koga je ulazna kapacitivnost
(Cw/2), otpornost veze (Rw), i izlazna kapacitivnost (Cw/2). S obzirom da veza predstavlja tanku
žicu metala fiksne debljine koja je definisana u toku proceasa fabrikacije i predstavlja pravougaoni
segment, otpornost veze (žice) jednaka je otpornosti parčeta metala (Rs) u Ohm/m2 i odnosa dužine
veze (Lw) i širine veze (Ww), tj.
⎛L ⎞
Rw = Rs ⎜⎜ w ⎟⎟. (2.22)
⎝ Ww ⎠
Otpornost veze (Cw) jednaka je proizvodu površine veze i odnosa dielektrične konstante (ξ) i
debljine žice (veze), tj.
⎛ε ⎞
C w = ( LwWw )⎜ ⎟. (2.23)
⎝t ⎠
Koristeći jednačine (2.22) i (2.23) moguće je odrediti propagaciono kašnjenje (tp(netk)) žice za
mrežu netk koja koristi komponentu (compi) da pobudi komponente opterećenja (compj, 1 ≤ j ≤ n )
kao
n
t p (net k ) = ( Rout (compi ) + Rw )(C w + ∑ C load (comp j )). (2.24)
j =1
t p ( I , O) = ∑
compi ∈COMP ( I ,O )
t p (compi ) + ∑t p (net j ).
net j ∈CONN ( I ,O )
(2.25)
41
Slika 2.19: Kritični put kod kombinacionog kola
Sa ciljem da obezbedimo korektni rad leča, mi mora da uvedemo sledeća dva tajming
ograničenja: setup time (tsetup) i hold time (thold). Setupi hold vremena specificiraju vremenske
intervale pre i nakon promene (tranzicije) takta u toku koje ulazni signal podatka mora da bude
42
stabilan kako bi se obezbedio korektni rad leča (vidi sliku 2.20 (b)). Jasno se uočava sa slike 2.20
da: tDQ=tsetup+tCQ.
Master-slave (MS) i ivično okidani (edge triggered-ET) flip-flopovi odazivaju se na promenu
taktnog signala. Kod MS flip-flopa master leč je aktivan kada je taktni signal na visoko, dok slave
leč je aktivan kada je taktni signal na niskom nivou (vidi sliku 2.21 (a)). Izlaz MS flip-flpa menja se
nakon prelaza takta sa visoko-na-nisko i vremenu koje odgovara propagacionom kašnjenju (tCQ)
slave leča. Zbog toga propagaciono kašnjenje MS flip-flopa odgovara tCQ slave leča. Pošto signal
podataka mora da prođe kroz master lač pre prelaska takta sa visoko-na-nisko kao i da zadovolji
tsetup slave leča, to mora da t setup ( MSFF ) = t DQ ( Master latch) + t setup ( Slave latch). Naglasimo da
master leč (a shodno tome i MSFF) nije osetljiv na promene podataka na ulazu kada je takt na
nisko. Na primer, glitch (kratkotrajna smetnja), na ulazu D dok je takt na nisko nema uticaj na izlaz
Q MSFF-a (vidi sliku 2.21 (b)). Zbog toga hold time MSFF-a jednako je thold-u master leča. Moguće
je formulisati slične definicije koje će važiti i za ET flip-flop kod koga se podaci propagiraju kada
taktni signal prelazi sa nisko-na-visoko.
Slika 2.21: Master-slave flip-flop (MSFF): (a) D leč implementacija; (b) kašnjenja i ograničenja
Slika 2.23: Modeli sistemskog taktovanja: (a) ne-protočno upravljanje; (b) jednostepeno
protočno upravljanje; (c) dvostepeno protočno upravljanje
Kada se taktni period kod FSMD-a izraćunava on mora da sadrži i kašnjenje upravljačke
jedinice pored kašnjenja u stazi podataka. Jedna tipična FSMD struktura je prikazana na slici
44
2.23(a). Postoji jedan kritični put (Path1) koji polazi od State registara, i prolazi kroz Control logic,
Reg.file, FU, Next state logike i ponovo se vraća u State register. To znači da taktna perioda
predstavlja zbir kašnjenja kroz svih jedinica kao i net kašanjenja, pa je jednaka:
Taktna perioda izračunata na osnovu jednačine (2.27) može biti isuviše dugačka za veliki broj
aplikacija. U principu dizajn mora da se učini protočnim kako bi se redukovao taktni period putem
insertovanja Status register-a (vidi sliku 2.23 (b)). Taktna perioda se sada izračunava na osnovu
dužeg od dvaju puteva Path1 i Path2. Path1 počinje od State register-a i prolazi kroz Control
logic-e, Reg. file-a, FU-a i završava sa status register-om, dok Path2 počinje sa Status register-om,
prolazi kroz Next-state logike i završava sa State register-om. Shodno prethodnom taktna perioda
iznosi:
Dizajn se može dalje uprotočiti uvođenjem Control register-a kako je to prikazano na slici 2.23
(c). Taktna perioda se zatim određuje na osnovu najdužeg od triju puteva Path1, Path2 i Path3, i
iznosi
t clock = MAX (
(t p ( State register ) + t p (Control logic ) + t setup (Control register ) + ∑t
i =1,12
p (ni )),
(2.29)
(t p (Control register ) + t p ( Reg. file) + t p ( FU ) + t setup ( Status register ) + ∑t
i = 2 , 3, 4
p (ni )),
Kao što smo već ranije naglasili FU u stazi podataka se može dalje uprotočiti što dovodi do
toga da taktni period bude kraći. Taktni period se može proceniti na osnovu jednačina (2.27),
(2.28) i (2.29). Kašnjenje registara, RF-polja i FU-ova su poznata na osnovu zadate bibliotetke RT
komponenata ili na osnovu kašnjenja osnovnih kola koji su sastavni delovi FU-ova. Kašnjenje
Control unit-a zavisi od izabranog layout stila. Koristeći implementaciju sa standardnim ćelijama,
propagaciono kašnjenje narednog stanja i Control logic-e se može izračunati koristeći jednačinu
(2.25) kod određivanja SOP implementacije. PLA implementacija koristi dvo-fazni takt kako je to
prikazano na slici 2.17. Ulaz se lečuje i AND polje se unapred pobuđuje u toku prve faze taktnog
impulsa, dok se izlaz lečuje u toku druge faze taktnog impulsa. Na osnovu prethodnog,
propagaciono kašnjenje PLA se određuje kao zbir propagacionog kašnjenja ulaznog leča,
propagacionog kašnjenja AND-OR polja, i setup time i propagacionog kašnjenja izlaznog leča.
Koristeći NOR-NOR implemenatciju za AND-OR polje, propagaciono kašnjenje se može
aproksimirati pomoću propagacionih kašnjenja dva NOR kola.
Propagaciono kašnjenje pojedinih net-ova se može odrediti na osnovu dužine veza i ulaznih
kapacitivnosti komponenata koje se pobuđuju. Gornja granica dužine veza dobija se korišćenjem
layou modela kojeg smo prethodno opisali. Usvojićemo da net n4 koji povezuje RF i FU na slici
45
2.23 zauzima jednu vertikalnu traku u model layout-a staze podataka prikazan na slici 2.14. To
znači da dužina net n4 je manja ili jednaka visini staze podataka Hdp. Na sličan način control net n2
i status net n3 sa slike 2.23 su postavljene horizontalno u modelu staze podataka na slici 2.14.
Dužine net n2 i n3 nije veća od širine staze podataka Wdp. Uočimo da kontrolne linije i linije za
podatke koje prolaze u metal1 i metal2 slojevima se ne ukrštaju. Dužina net-ova n1, n9, n10, n11 i
n12 je manja od pola perimetra Control Unit-a, HSC +WSC kod implementacije sa standardnim
ćelijama, ili HPLA +WPLA za PLA implementaciju. Na ovaj način, koristeći jednačine (2.27), (2.28) i
(2.29) mi možemo da izraččunamo taktni period za zadati FSMD strukturni opis. Taktna perioda se
može koristiti za izbor najbolje implemenatcije date FSMD strukture, kao i skupa RT komponenata
u toku alokacije registara, jedinica ili veza kod HLS-a. Proizvod taktnog perioda i broja
upravaljačkih koraka se kortisti za izbor najboljeg ScH-a za dati behavioral opis i skupa RT
komponenata u toku ScH-a. Broj upravljačkih koraka ne mora da bude lak za procenu u slučaju
kada behavioral opis zavisi od podataka. U ovom slučaju mi mora da dodelimo verovatnoće
različitim control paths (tj. različitim grananjima kod if iskaza) u opisu.
Ukazali smo na izračunavanje taktnog perioda za proizvoljne FSMD arhitekture. Kada se čip
sastoji od nekoliko FSMD-ova koji međusobno komuniciraju mi mora da uzmemo u obzir i
kašnjenja zbog kominikacije. Ako dve FSMD komuniciraju asinhrono kako je to prikazano na slici
(Figure 2.13: Communication between FSMDs) tada se izračunavanje takta za svaku FSMD
određuje ne zavisno jedno od drugog. Sa druge strane, vreme komunikacije mora da se uzme u
obzir kada se određuje vreme izvršenja datog behavioral opisa. Ako nekoliko FSMD-ova koristi
zajednički takt tada mora da se uzmu u obzir i kašnjenja tipa registar-u-registar koja postoje između
FSMD-ova kmoji međusobno komuniciraju. Ako, u svakom upravljačkom koraku, registarski
prenosi između dva FSMD-a nisu neophodni, komunikacija između dva FSMD-a može da se ostvari
u nekoliko taktnih intervala, a da pri tome trajanje taktnog intervala nema uticaj. U ostalim
slučajevima, mi mora da procenimo uticaj dužine ožičavanja između dva FSMD-a. Ovakva jedna
procena zahteva da se poznaje floorplane celog čipa ili da se poznaje procena floorplane. Ako se
dva FSMD-a nalaze na različitim čipovima, na multičip modulima (MCM) ili štampanim pločama
(PCB), neophodno je proceniti kapacitivnost pinova i kašnjenja veza na čipu, MCM-u i PCB-u.
PDP = Pd × t p (2.30)
Jedinice u kojima se PDP izražava su (watt)(secconds) = Joules i ona se može posmatrati kao
energija koja se potroši kod svake logičke odluke (prelaz sa 0-na-1, i obratno).
Dizajn za testabilnost je zadatak koji generiše dizajn sa minimalnom cenom testiranja pri čemu
u fazi sinteze uzima u obzir cenu hardvera za testiranje kao i cenu testiranja. Dizajn za testabilnost
je ograničena od strane sledećih triju faktora: broja dostupnih pinova za testabilnost, on-chip kola za
testiranje i performansnim ograničenjima. Broj pinova koji je potreban za testiranje je važan faktor
koji učestvuje u ceni fabrikacije čipa zbog toga što je cena čipa koji ima veće pakovanje veća, a
takođe i vreme asembliranja tih čipova je duže. Pored toga test pinovi zahtevaju veću površinu čipa
i veću disipaciju iz razloga što je neophodno ugraditi test kola kao i ulazno/izlaznih drajvera. Sa
druge strane, povećana kompleksnost kola utiče na smanjenje prinosa. Uvođenjem test kola
46
smanjuje se cena testiranja, ali ona povećava cenu proizvodnje. Pored toga, uvođenjem test kola
povećavaju se kapacitivna opterećenja i uvode dodatna kašnjenja koja degradiraju performanse
dizajna.
Glavni cilj dizajna za testabilnost treba da bude povećanje kontrolabilnosti i opservabilnosti
internih stanja dizajna kao i minimizaciju dodatno ugrađenog hardvera. Kontrolabilnost definiše
sposobnost inicijalizacije (postavljanje) interne logike na specifična stanja koja se mogu kontrolisati
(nadgledati). Opservabilnost definiše mogućnost da se eksterno izmere interna logička stanja
dizajna.
Verifikacijom se obezbeđuje da su dizajni kompletni i konzistentni u odnosu na zadatu
specifikaciju. Zadnjih godina, veliki broj metoda za formalnu verifikaciju je predložen pomoću
kojih se dokazuje da dizajn ispunjava specifikacije na fizičkim i logičkim nivoima.
Pouzdanost se odnosi na verovatnoću ispravnog rada dizajna u toku njegovog vremena života.
Fabrička realizljivost se odnosi na evaluaciju ukupne fabričke cene uključujući, cene dizajna,
fabrikacije, pakovanja, testiranja i rada. Dizajn za pouzdanost i dizajn za fabričku realizljivost nisu
na adekvatan način dobro definisani na HLS nivou.
47
Poglavlje 3
Ulaz u HLS je obično behavioral opis napisan na HDL-u. HDL-ovi omogućavaju da korisnik
specificira izlaze dizajna u funkciji ulaza u toku vremena koristeći apstraktne podatke i jezičke
operatore. Na prvi pogled ovaj jezik može biti veoma sličan HLL-u kakav je C ili PASCAL u kojem
su programi napisani koristeći sekvence iskaza sa izrazima koji dodeljuju vrednosti promenljivima.
Ipak, semantike behavior-a specificirane u HDL-u ukazuju da dizajn hardvera treba da se
implementira (ugradi), a ne kao behavior da se izvršava na nekoj mašini. Šta više, HDL-ovi imaju
dodatne konstrukcije koje sagledavaju osobine hardvera kao što su one koje se odnose na taktovanje
i asinhronost u radu.
Često se pitamo zašto postoji potreba za HDL i kako se hardver dizajna može adekvatno
specificirati koristeći strukturni jezik koji specificira hardverske komponente i njihovo
povezivanje. U suštini tekuće dizajn metodologije koje se odnose na projektovanje hardvera koriste
i schematic capture kao i simulacije kako je to prikazano na slici 3.1. Dizajn inicijalno postoji kao
specifikacija često na nivou jezičkog opisa (srpski, engleski itd.) koristeći flowchart-ove, grafove
stanja, tajming dijagrame i blok strukture. Kod capture i simulate metodologije, projektant
manuelno unosi specifikaciju dodavajući dizajn informaciju sve dok se ne dobije kompletni RT
dizajn. U toku ovog procesa projektant se uvek ne drži originalne specifikacije ili konzistentnog
dizajn opisa koji je u skladu sa originalnom specifikacijom. Ovaj nedostatak formalizovanog opisa
čini da zadaci simulacije i verifikacije budu teški jer dizajn nije određen eksplicitno već je pre svega
u ''glavi'' projektanta. Zbog nedostatka dokumentacije u toku dizajn procesa održavanje dizajna,
preusmeravanje dizajna, inkorporiranje sredstva za sintezu, simulaciju i verifikaciju čini da proces
projektovanja bude težak.
48
Slika 3.1: Put projektovanja specifikacija-implementacija
Mnogo beneficija postoje ako se program kreira i odražava početno zadatu specifikaciju na
HDL-u. Ovaj formalizovani ulaz se može koristiti za dokumentaciju, simulaciju, verifikaciju i
sintezu. Opis dizajna se takođe koristi kao dobar medijum za razmenu informacija između različitih
korisnika, kao i između korisnika i sredstava za projektovanje. Konačno kako dizajni postaju
kompleksni, HDL-ovi obezbeđuju pogodnije mehanizme za podizanje nivoa apstrakcije kojim se na
neki način rešava problem povećanja kompleksnosti dizajna.
Standardizacija jezika i pored toga što je ozbiljan cilj teško ga je ostvariti. Korisnici na
različitim nivoima dizajn procesa imaju različita iskustva sa HDL-ima kao i različite teoretske
osnove za rad. Šta više HDL se može koristiti za različite dizajn aplikacije (kao što je DSP i
upravljanje u reallnom vremenu), za različite dizajn aspekte (kakve su simulacija i sinteza) i za
različite ciljne arhitekture (kakvi su FSM-ovi i sistemi). Ove razlike postavljaju širok dijapazon
različitih zahteva kako bi se HDL koristio efikasno. Na primer, DSP aplikacija se obično izražava u
funkciji signal flow grafova, bus interface se obično opisuje pomoću tajming dijagrama,
simulacijama su potrebne informacije o vremenu, opisi za sintezu treba da poseduju HDL
konstrukcije koje se mogu sintetizovati, FSM bazirani dizajn treba da poseduje informaciju o
stanjima koji su ugrađeni u HDL-u, a opisu sistema potrebne su konstrukcije za izražavanje
hijerarhije i komunikacionih protokola. Shodno tome dizajnerima su potrebni različiti tipovi opisa
kakvi su tabele, grafici i tekstovi sa ciljem da bi ih uneli u osnovni deo dizajna, kao i informaciju o
tipovima dizajn aplikacija i infomraciju o različitim aspektima ciljne arhitekture.Sa ciljem da se
HDL-ovi koriste efikasno neophodno je da se poznaju neki elementi HDL specifikacije koji se
odnose na neke modele ciljne arhitekture. U nastavku ovog poglavlja ukazaćemo na razlike između
HDL modela i modela ciljne arhitekture i koristiti primere prezentovane u nekoliko HDL-ova kako
bi ilustrovali jezičke osobine potrebne za sintezu.
Već smo diskutovali o nekim osnovnim arhitekturnim dizajn stilovima i njihovom utacaju na
sintezu. Dizajni su obično usmereni ka pojedinim arhitekturnim stilovima, dok se jezici koji
sekoriste za opis ovih dizajna na višim nivoima poseduju svoje posebne semantičke modele.
49
Saglasno tome svaka konstrukcija u HDL-u ima pojedinu interpretaciju zasnovanu na semantikama
korošćenog jezika.
Na primer, VHDL je jezik baziran na simulacionim semantikama. Signali i promenljive u
VHDL-u predtsavljaju nosioce podataka kojima se dodelljuju vrednosti u diskretnim vremenskim
trenucima u saglasnosti sa ScH-om definisanim od strane simulatora. Simulator prolazi kroz event-
driven simulacioni ciklus u toku koga evaluira izraze tekućeg vremena simulacije, ScH-uje
događaje za naredni trenutak, i advansira simulacioni takt na naredni diskretni trenutak koji ima
aktivnost baziran na ScH-ovanim događajima. Behavioral VHDL iskaz:
HDL-ovi su tradicionalno evoluirali iz programskih jezika, pa shodno tome najveći broj HDL-
ova poseduje osobine koje su iste kao i za imperativne jezike, kakvi su mehanizmi za apstrakciju
podataka (korišćenje tipova podataka i promenljivih), behavioral operatori koji se korisate za
transformisanje podataka, iskazi dodele namenjeni za promenu vrednosti promenljivih, i
upravljačko i izvršeno uređenje konstrukcija koje odražavaju conditional i repetitivni behavior.
50
3.3.1 Tipovi podataka
Tipovi podataka u sistemu karakterišu se formatima (tj. brojem bitova) tipovima (Boolean,
integer i floating point-FP) prezentacijom podataka (tj. označeni ili neoznačeni brojevi, dvojični
komplement) svih promenljivih u behavioral opisu. Mogućnost da se podaci karakterišu tipom
obezbeđuje moćan i koncizan mehanizam za razumljivost opisa. Takođe razumljivost omogućava
kompajleru da detektuje semantičke greške u delovima opisa, kao na primer greška tipa
dodeljivanje 16-to bitne vrednosti 8-o bitnom registru. Striktno naznačavanje tipa podatka
obezbeđuje konzistentnu proveru u toku procesa sinteze (ovaj proces testiranja je nevidljiv za
korisnika). Minimalno, tipovi podataka predstavljaju promenljive koje se karaterišu obimom bitova,
pri čemu sistemi za sintezu usvajaju da su to po definiciji bit-vector-i i da se koristi reprezenatcija u
dvojičnom komplementu.
51
3.3.4 Redolsed izvršenja
Behavior duzajna karakterišu sekvencijalni i paralelni thread-ovi (niti) rada. Njihov redosled se
može eksplicitno specificirati preko HDL-ovog modela redosleda u izvršenju. Na primer, za sve
iskaze u ISPS primeru na slici 3.2 se usvaja da se izvršavaju paralelno pod uslovom da to nije
ograničeno od strane control konstrukcija, ili od strane ključne reči next, koja forsira sekvencijalnoi
redosled izvršenja uzastopnih iskaza.
Sekvencijalnost kod HDL-ova se specificira na dva načina: implicitno, preko zavisnosti po
podacima između operacija, i eksplicitno, preko control i reolsedno-specifičnih jezičkih
konstrukcija. Na primer, slika 3.3 (a) prikazuje opis VHDL procesa kod koga se iskazi dodele
izvršavaju sekvencijalno. Na slici 3.3 (a), prvi iskaz dodeljuje staru vrednost B u A. Naredni iskaz
dodeljuje novu vrednost A u B. Shodno tome oba signala A i B primaju staru vrednost B na kraju
PROCESS P1.
Slika 3.3 Redosled izvršenja kod VHDL-a: (a) sekvencijalni; (b) konkurentni
Paralelizam je opšta osobina hardvera koja zahteva implicitnu jezičku semantiku i eksplicitne
jezičke konstrukcije za izražavanje tog paralelizma. Na primer, svi iskazi dodele u okviru VHDL
blok konstrukcije se obavljaju paralelno. Na slici 3.3 (b) desni deo svakog izlaza dodele se određuje
paralelno (koristeći stare vrednosti signala) pre nego što se obavi dodela rezultata signala na levoj
strani. Zbog toga vrednosti signala A i B se međusobno razmenjuju nakon izvršenja VHDL bloka.
Uočimo da čak i kod sekvencijalnih jezižkih opisa, kakav je onaj na slici 3.3 (a), paralelizam se
implicitno podrazumeva da postoji između operacija između kojih ne postoje upravljačke zavisnosti
i zavisnosti po podacima.
52
Slika 3.4: DSL specifikacija
3.4.4 Asinhronost
Ponašanje na RT nivou za svaki taktni ciklus u dizajnu se izražava u zavisnosti od registarskog
prenosa. Ipak, i pored sinhronog ponašanja, hardver na RT nivou poseduje osobine asinhronog
ponašanja posebno one koje se odnose na reset i prekid. Ovako asinhrono ponašanje se može opisati
pomoću ponašanja na RT nivou koristeći specijalne HDL konstrukcije koje se odnose na asinhroni
rad. Alternativno, sva asinhrona ponašanja dizajna se mogu grupisati u poseban opis, čija semantika
ukazuje da asinhrono ponašanje uvek ima prioritet u odnosu na sinhrono ponašanje za datu
specifikaciju.
Opštiji oblik asinhronosti u radu javlja se kada se razmatra komunikacija između procesa koji
se izvršavaju od strane sistema koji rade sa različitim taktnim frekvencijama. U ovakvim
situacijama, asinhroni događaji kod interfejs procesa mogu da prekinu sinhrono ponašanje i da
uslove prekidnu sekvencu u dizajnu. Ovi događajno inicirani prelazi se koriste za definiciju
asinhronih FSM-ova, kod kojih se u novo događajno stanje ulazi samo usled promene ulaznog
signala a ne usled promene taktnog signala. Jezici koji se koriste za opisivanje ovih osobina su:
53
BIF, SpecCharts, StateCharts, i dr., kod kojih sistem asinhrono prelazi iz stanja ACTIVE u stanje
RESET kada se signal RESET_IN aktivira nezavisno od toga u kom je podstanju bio ACTIVE
(FETCH, DECODE ili EXECUTE).
3.4.5 Hijerarhija
Kako sistemi postaju kompleksniji projektanti sve više koriste hijerarhijski pristup kao sredstvo
za opis njihovog kompleksnog ponašanja. Hijerarhija kod HDL-a može da ima nekoliko formi:
proceduralna, strukturna, behavioral i dizajn hijerarhija.
Konstrukcije standardnog programskog jezika kod proceduralne hijerarhije koriste funkcije i
procedure pomoću kojih se u skraćenoj formi opisuje ponašanje sistema. Proceduralna hijerarhija
omogućava dekompoziciju ponašanja na strukturni način i obezbeđuje koncizno predstavljanje. Kod
nekih HDL-ova, pojedino ponašanje se može enkapsulirati u strukturu, i može se kasnije koristiti u
strukturnoj hijerarhiji. Na slici 3.4 prikazano je kao se ova enkapsulacija ostvaruje kod DSL-a
koristeći konstrukciju PERFORMED FUNCTION.
Strukturna hijerarhija u samom procesu, specificira spregu komunikacionih procesa preko
globalnih signala i portova. Posmatrajmo dizajn staze podataka na RT nivou koji čini RF polje i
ALU. Hijerarhijsak net lista dizajna opisuje međusobnu spregu RT komponenata (RF i ALU) na
najvišem nivou pri čemu je svaka komponenta (npr. ALU) razložena u strukturnu net listu bulovih
logičkih kola. Strukturni VHDL opisi podržavaju ovu formu hijerarhije.
Kako behavioral dizajn postaje složeniji proceduralne i strukturne hijerarhijske apstrakcije nisu
više dovoljne da bi se izašlo na kraj sa povećanom kompleksnošću. Ovo je od posebne važnosti kod
sistema zasnovanih na stanju (state-based systems) kod kojih ulazni događaji uzrokuju neposredne
prelaze ka različitim sekvencama u ponašanju. Kod ovakvih rešenja, koristi se behavioral
hijerarhija koja koncizno sagledava kompleksno ponašanje. Na slici 3.5 prikazan je primer
behavioral hijerarhije jednog jednostavnog računarskog sistema opisan korišćenjem SpecChart-a.
Isprekidana linija na slici ukazuje da je računarski sistem SYSTEM sastavljen od dva izvršna
konkurentna procesa, CPU procesor i CLK_GEN taktni generator. CPU čine dva glavna stanja:
RESET koje je inicijalno ulazno stanje CPU-a, i ACTIVE u toku koga je procesor operativan.
ACTIVE stanje se dalje može razložiti na 3 podstanja: FETCH, DECODE i EXECUTE, koji
opisuju detaljni rad procesora. Behavioral hijerarhija koja je prikazana u ovom slučaju omogućava
54
dekompoziciju stanja na podstanja i konkurentnih procesa, a takođe i pruža jednu moćnu notaciju za
opis globalne asinhronosti (tj. setovanja i resetovanja) koristeći događaje. Npr. pojava događaja
(RESET_IN) dovodi CPU proces u RESET stanje, nezavisno od toga u kojem podstanju je bio
proces ACTIVE.
Konačno hijerarhijski dizajn specificira kako će se ukupni dizajn komponovati u zavisnosti od
njegovih podkomponenata, komunikacionih procesa, itd. Na slici 3.6 prikazana je dizajn hijerarhija
koja odgovara VHDL konfiguraciji. Svaka dizajn celina na ovoj slici se hijerarhijski razlaže u
manje blokove, pri čemu svaki blok može da predstavlja ponašanje (behavioral) ili strukturu.
Slika 3.7: Sinhronizacija procesa kod HardwareC: (a) prenos parametara (b)prenos poruka.
3.4.7 Ograničenja
Ograničenja dizajna koja se odnose na sintezu koja je usmerena ka fizičkoj realizaciji treba da
uzmu u obzir performanse koje se mogu ostvariti, cenu koja se može postići, testabilnost,
pouzdanost i druga fizička ograničenja. Projektantska ograničenja se mogu specificirati posebno od
strane projektanta na nivou behavioral modela ili se mogu ispreplitati sa ponašanjem u HDL-u (npr.
kako napisati VHDL kod za low power). Fizička ograničenja (kakva su broj pinova na čipu,
korišćena tehnologija i napon) se obično specificiraju izdvojeno u odnosu na behavioral model, a to
se obično izvodi posebnim deklaracijama ili posebnim fajlovima. Na primer, slika 3.4 prikazuje
kako deklaraciona sekcija DSL-a omogućava da se specificiraju različiti tipovi fizičkih ograničenja
kakvi su potrošnja, tehnologija, napon i površina.
Vremenska ograničenja su veoma često kritična za ostvarivanje korektnog ponašanja kao i
specifikaciju performansnih zahteva dizajna. Vremenska ograničenja se mogu specificirati na nivou
interfejsa dizajna ili se mogu ispreplitati sa operativnim ponašanjem dizajna. U oba slučaja,
vremenska ograničenja se obično specificiraju kao kašnjenja. Kod sinhronih rešenja, vremenska
ograničenja se uobičajeno specificiraju relativno u odnosu na sistemski takt, dok se kašnjenja
specificiraju kao umnožak taktnih intervala. Na slici 3.4 prikazano je kako se specificiraju
performansna ograničenja kod DSL-a: prilikom poziva IMPERATIVE calc, do loop se ograničava
na izvršenje u okviru 3 taktna intervala. Kada se opisuje komunikacija između procesa, neophodno
je da se specificiraju kašnjenja relativna u odnosu na specifične događaje. Ova kašnjenja
56
odgovaraju apsolutnim vremenskim vrednostima koje su neophodne za korektnu vremensku
implementaciju komunikacionog protokola. Na primer, kod jednostavnog protokola koji se odnosi
na ciklus čitanja memorije, neophodno je prvo da se postave adresne linije i da se izda zahtev za
čitanje memoriji, a zatim da se specificira kašnjenje koje se odnosi na dostupnost podataka na
magistrali podataka, čime se daje memoriji dovoljno vremena da reaguje na zahtev za čitanje i
pristup lokaciji na osnovu adrese pre nego što se generišu podaci. Slika 3.9 prikazuje primer koji se
odnosi na ciklus čitanja kod BIF. U stanju 1 BusReq se briše (postavlja na 0) 175 ns nakon događaja
Falling(MemReq), tj. nakon što je adresa ADR i memorijski zahtev MR potvrđen.
Vrednosti apsolutnog kašnjenja se takođe mogu koristiti za specifikaciju ograničenja koja se
odnose na performanse dizajna, kašnjenja na logičkim putevima i timeout-ima. Jezici za simulaciju
kakav je VHDL omogućavaju da se specificira apsolutno kašnjenje koristeći dva tipa kašnjenja:
inerciono i transportno. Inerciono kašnjenje odgovara inerciji komponenti i zahteva da se njegova
ulazna vrednost uspostavi za specificirani period vremena pre nego što se aktivira izlaz (na primer
set-up i hold vremena kod flip flopa). Transportno kašnjenje predstavlja kašnjenje veza ili žica kod
koga ulazna promena se uvek propagira kroz komponentu a time ima uticaj na izlaz.
Pre nego što se počne sa procesom sinteze projektant mora da pođe od specifikacije koja se
predstavlja formalizovanim HDL opisom kako je to prikazano na slici 3.1. Ovaj konceptualni
projektantski proces ima važnu ulogu u sintezi na visokom nivou, imajući u vidu kako je dizajn
modeliran i opisan. Loše modeliran opis dizajna rezultiraće inferiornoj implementaciji zavisno od
toga koliko su dobra sredstva za sintezu. Štaviše konceptualne greške koje se ne detektuju ranije u
fazi projektovanja mogu da uzrokuju greške koje je teško detektovati. Ipak postoji nekoliko
projektantskih sredstava koja olakšvaju zadatak modeliranja i opisuju dizajn na višem nivou. O
nekima ćemo govoriti kasnije.
57
Da bi podržali opis dizajna i modelovanje, potrebni su nam HDL formati koji su pogodni za
predstavljanje različitih aplikacija. Na nižim nivoima procesa projektovanja (kakvi su RTL, logički
i layout) grafički načini prezentacije su bili dominantni. HDL-ovi na behavioral nivou su
prvenstveno tekstualnog oblika i evoluirali su iz tekstualnih programskih jezika. U daljem tekstu
objasnićemo tekstualne, grafičke, tabelarne i talasno bazirane HDL formate koji se koriste za
sintezu na visokom nivou.
58
Slika 3.8: Dijagram ploče CPU-memorija
Na slici 3.9 prikazan je jednostavni handshake protokol koji se odnosi na ciklus čitanja
memorijske ploče i koristi tabelarni opis stanja u BIF-u. Ciklus čitanja se inicira u stanju 1, kada
signal MemReq se postavi na nulu a Board_Id memorijske ploče se upari sa adresnim bitovima 16
do 18 koji su prisutni na adresnoj magistrali Abus. U tom trenutku, memoriji je dozvoljen rad,
interni adresni registar Addr se puni na vrednost adresne magistrale, a memorijska ploča preuzima
upravljanje magistralom podataka Dbus postavljanjem BusReq signala na nulu. Događaj
Falling(BusAck) forsira prelaz u stanje 2, pri čemu memorijska ploča predaje adresirani podatak
Data na magistrali za podatke Dbus. Handshake protokol se kompletira u stanju 3 kada se
memorijskoj ploči zabranjuje rad.
59
Slika 3.10: Vremenski dijagram za ciklus čitanja kod memorijske ploče
60
Poglavlje 4
4.1 Uvod
Pošto postoje značajne razlike između semantičkih modela koji se odnose na HDL opise za
unos dizajna i sintetizovanih ciljnih arhitektura javlja se potreba za kanoničnom međuprezentacijom
koja olakšava efikasno preslikavanje ulaznih HDL opisa u različite ciljne arhitekture koristeći pri
tome različita sredstva za sintezu (vidi sliku 4.1).
Kanonična međuprezentacija treba da sačuva osobine početno zadatog behavioral-a koji se
odnosi na HDL specifikaciju, ali takođe i da ostvari rezultate sinteze pomoću različitih metoda
ulančavanja (binding), optimizacije, preslikavanja (mapping) itd. S obzirom da izlazi HLS-a
predstavljaju skup RT komponenata i simboličke control table, kanonična prezentacija mora da
uzme ove izlaze u postupku sinteze. Ulazni behavioral, sintetizovana struktura i sintetizovana
control unit predstavljaju objekte koji pripadaju različitim dizajn domenima, kao i različitim
nivoima dizajna, kao što je to bilo ilustrovano na behavioral i structural osama u Y dijagramu
(definisano u poglavlju 1). Zbog toga mi treba da korelišemo tako da možemo da obavimo
multinivovsku simulaciju i debagiranje.
Idealna međuprezentacija koja podržava zadatke uvedene u HLS-u treba da ispuni sledeće
zahteve:
a) ona mora da bude skladište (magacin) informacija o kompletnom dizajnu u toku procesa
sinteze, uključujući početni behavior, dizajn ograničenja, informacija o sintetizovanom stanju,
sintetizovane strukture i ulanačavanje različitih dizajn objekata
61
b) ona mora da ima kanonični oblik koji obezbeđuje uniformni pogled na reprezentaciju za
sva sredstva projektovanje i sve korisnike
c) mora da bude HDL ne zavisna kako bi podržala različite ulazne jezike
d) mora da bude dovoljno moćna da podrži brojne ciljne arhitekturne stilove
Neki od ovih zahteva za međuprezentaciju mogu biti kontradiktorni jedan u odnosu na drugi.
Na primer, mi smo već ukazali da ne postoje standardni ulazni behavioral jezici, jer HDL-ovi
koriste različite tipove operativnih primitiva i različiti nivoi kod apstrakcije podataka, što rezultira
različitim semantikama kod prezentacija. Ipak, u praksi, mi ćemo se držati međuprezentacije koja je
korisna za određenu klasu HDL-ova i koja takođe podržava određene klase ciljnih arhitektura.
Prvi korak kod HLS-a predstavlja kompilacija ulaznog behavir-a u međuprezentaciju tipa graf.
Nakon toga mi obavljamo nekoliko HLS zadataka kakvi su ScH, selekcija jedinice, povezivanjeFU-
ova, povezivanje memorijskih jedinica i povezivanje sprežnih jedinica, kao i generisanje Control
Unit-a. U daljem tekstu koristićemo dizajn množača koji radi na principu pomeranja (shift
multiplier) da bi ilustrovali neki od ovih zadataka.
Razmotrimo behavioral VHDL opis shift muptiplier-a prikazanog na slici XX (str 131).
Opisom VHDL procesa specificira se algoritam za izračunavanje 8-bitnog proizvoda M_OUT dvaju
4-bitna ulaza A_PORT i B_PORT . Napomenimo da se iskazi koji opisuju VHDL proces izvršavaju
sekvencijalno, ali između operacija ne postoje zavisnosti po podacima što znači da se one mogu
konkurentno izvršavati. Saglasno tome, sekvencijalni VHDL opis dizajna serijski pomerač poseduje
implicitni nevidljivi paralelizam u okviru opisa.
62
Slika 4.2: CDFG za shift-multiplier primer
63
Implementirajmo dizajn shift-multiplier-a koristeći FSMD ciljni arhitekturni model koga smo
ranije opisali. Prvo mi ScH-aujemo CDFG u četiri sinhrona vremenska koraka koja označavamo
kao S0, S1, S2 i S3 vidi sliku 4.3. U stanju S0 shift-multiplier čeka na pojavu signala start. Kada se
start aktivira, shift-multiplier se inicijalizira sa dva ulazna operanda koji se pribavljaju sa A_PORT i
B_PORT , a sve interne promenljive se postavljaju na nula (resetuju se). Mi uočavamo da između
iskaza dodele DFG-a B1 sa slike 4.2 ne postoje zavisnosti po podacima. Saglasno tome mi ScH-
ujemo sve iskaze u B1 u jedinstveno stanje S0. Stanje S1 predstavlja prva naredba shift-multiplier
loop-a. Ako LSB promenljive A je jedan, promenljiva M akumulira tekući parcijalni proizvod u
stanje S2. U stanju S3 , brojač se inkrementira, a parcijalni proizvod pomera u desno. Kada shift-
multiplier ciklus završi rezultat se predaje portu M_OUT. Kada je COUNT u stanju S1 jednako
četiri, množenje se završava signaliziranjem DONE ⇐1 i predajom rezultata na M_OUT. Nakon
ScH-ovanja mo možemo označiti svaki čvor u CDFG-u sa odgovarajućim stanjem u kome je ono
ScH-ovano, zadržavajući pri tome vezu između apstraktno behavior-a i stanja dizajna.
Naredni zadatak HLS-a se odnosi na selekciju jedinice, koja određuje tipove i broj RT jedinica
koje će se koristiti u dizajnu. Mi selektujemo memorijske jedinice (tj. registre) za promenljive koje
se koriste u više od jedno stanje. S obzirom da se četiri promenljive (tj. COUNT, A, B, i M ) koriste
u više od jedno stanje, mi selektujemo četiri registra koja nazivamo Count_Reg, A_Reg, B_Reg, i
Mult. Šta više mi treba da implementiramo operacije specificirane u svakom stanju koristeći FU-
ove. Zbog toga selektujemo jedan sabirač (označen kao Adder), dva pomerača (označena kao Shift1
i Shift2) i komparator (označen kao Compar) kako je to prikazano na slici 4.4.
64
Slika 4.4: Inicijalna selekcija jedinica kod shift-multiplier dizajna
Ulančavanje jedinica sledi nakon selekcije jedinica: jer je potrebno ulančati behavioral
promenljive i operatore u CDFG prezentaciji sa selektovanim memorijskim jedinicima i FU-ovima.
Mi povezujemo promenljive COUNT, A, B i M sa registrima Count_Reg, A_Reg, B_Reg i Mult,
respektivno. Zatim povezujemo operacije pomeranja za M i A u stanju S3 sa pomeračima Shift1 i
Shift2 respektivno. Činimo da sabirač Adder bude deljiv između operacije sabiranja u stanju S2 i
inkrementirana COUNT u stanju S3. Komparator Compar se alocira testu loop-a (petlje) za potrebe
COUNT u stanju S1. Nakon toga povezujemo ove RT FU-ove i memorijske jedinice na jedan
ispravan način kako bi obezbedili korektni prenos podataka u okviru datapath-a. Da bismo uradili
ovo, mi uočavamo da imamo veći broj izvora na ulazima jedinica Mult , A_Reg i Adder-a. Mi
rešavamo ove dvosmilsenosti koje postoje zbog većeg broja izvora informacija na ulazu
alociranjem (dodelom) multipleksera Mux1, Mux2,Mux3 i Mux4 , kako je tor prikazano na slici 4.5.
65
Slika 4.5: Sintetizovani dizajn za shift-multiplier primer
66
4.3 HDL kompilacija
Ukazaćemo sada na zadatak kompilacije koristeći VHDL opis kao ulaz i CDFG reprezentaciju
kao izlaz. Kod CDFG reprezentacije, HDL-ove Control Flow konstrukcije, kakve su loop i
conditional (tj. if i case strukture) se preslikavaju u Control Flow čvorove, dok blokovi iskaza tipa
dodele koji su između ovih Control Flow konstrukcija se predstavljaju pomoću DFG-ova.
Mi ćemo ukazati na generisanje DFG-ova na osnovu sekvencijalnog VHDL opisa sa slike 4.6
(a). Kao prvo, HDL parser generiše rasčlanjeno stablo na principu preslikavanja ''jedan-na-jedan''
pojedinačnih jezičkih iskaza u rasčlanjeno stablo prikazano na slici 4.6 (b). S obzirom da
rasčlanjena stabla opisuju behavior sekvencijalnih iskaza dodele u VHDL-u mi ćemo korstiti listu
iskaza (Stmt1, Stmt2, Stmt3) da bi ukazali na redosled izvršenja rasčlanjenih stabala.
Slika 4.6: Generisanje DFG-a: (a) HDL opis; (b) rasčlanjena stabla; (c) CDFG
Nakon toga interpertiramo redosled izvršenja rasčlanjenjih stabala na osnovu stila semantike
ulaznog HDL opisa. Kada HDL semantika zahteva da se iskazi izvršavaju konkurentno (u okviru
VHDL Data flow opisa), rasčlanjenja stabla se realiziraju da bi se ustanovilo da svi izrazi na desnoj
strani (RHS) u iskazima dodele se procenjuju konkurentno, pre nego što se promenljivima obavi
dodela vrednosti na levoj strani (LHS). Rasčlanjenja stabla se drže kao celovita (bez promena), sa
izuzetkom pristupa deljivim RHS izvornim promenljivama koje se spajaju (merge).
Ako se HDL konstrukcije karakterišu sekvencijalnom semantikom izvršenja (tj. u okviru opisa
VHDL procesa), tada se obavlja analiza data flow-a između rasčlanjenih stabala da bi otkrili
konkurentnost između sekvencijalnih HDL iskaza. Ovaj korak sličan je data flow analizi kod
tradicionalnih programskih jezičkih kompilatora. S obzirom da se opis sa slike 4.6 (a) karakteriše
sekvencijalnom semantikom izvršenja mi primenjujemo data flow analizu na rasčlanjena stabla
prikazana na slici 4.6 (b). Pri tome se uočava da je promenljiva A definisana u iskazu Stmt1, a
koristi se u okviru iskaza Stmt2 i Stmt3. Zbog toga mi smo markirali zavisnosti po podacima za
promenljivu A između iskaza Stmt1 i oba iskaza Stmt2 i Stmt3. Na sličan način, promenljiva D je
definisana u iskazu Stmt2, a koristi se u iskazu Stmt3 što rezultira postojanjem zavisnosti-po-
podacima za promenljivu D između iskaza Stmt2 i Stmt3.
67
Zatim kompletiramo data flow analizu spajanjem svih rasčlanjenih stabala u jedinstveni DFG,
ali pri tome zadržavajući zavisnosti-po-podacima koji postoje između različitih iskaza. Slika 4.6 (c)
prikazuje rezultujući DFG generisan na osnovu skupa sekvencijalnih VHDL iskaza dodele sa slike
4.6 (a).
HDL opisi se obično vezuju sa flow graph-ovima kakva je CDFG šema. Flow-graph šeme
razlikuju se u prezentaciji control konstrukcija i u prezentaciji prenosa podataka u okviru DFG-a.
Mi ćemo koristiti neke jednostavne šeme da bi intuitivno ilustrovali obuhvatanje control flow
konstrukcije. Nakon toga ukazaćemo na neke opcije koje se odnose na reprtezentaciju sekvenciranja
i informacija o tajmingu. Konačno, kroz jedan primer ilustrovaćemo tri specijalne klase flow-graph
šema koje se koriste od strane HLS sistema: razruđenost podataka i upravljanja, hibridni podaci i
upravljanje i prezentacija rasčlanjenog stabla.
68
Slika 4.7: Primer naredbe Case: (a) VHDL opis, (b) tok upravljanja, (c) tok podataka
Kao i control flow prezentacija tako i data flow prezentacija eksplicitno prikazuje
konkurentnost zbog uzajamne isključivosti različitih conditional puteva. Ipak s obzirom da data
flow prezentacija procenjuje sva grananja conditional testa paralelno ona razmatra veći segment
grafa za optimizaciju u odnosu na control flow prezentaciju. Saglasno tome, data flow prezentacija
je pogodnija kod zadataka gde se vrši ScH-ovanje kôdova kod kojih ne postoji grananje (straight
line) u odnosu na control flow prezentaciju. Sa druge strane, rekonstzrukcija početno zadatog opisa
ako se raspolaže data flow prezentacijom je mnogo teže jer je sva control flow informcija ugrađena
u okviru data flow grafa. Takođe, sobzirom da svi ugnežđene condtional i loop konstrukcije se
prikazuju u okviru jedinstvenog data flow grafa, duboko ugnežđene strukture generišu nekoliko
nivoa selektora pomoću kojih se bira između conditional puteva. Ovo generisanje može da rezultira
u egzistenciji data flow grafova koji su suviše obimni i sa kojima se mnogo teško manipuliše.
Prva šema koju smo prethodno opisali polazi od toga da je obavljena particija behavior-a nad
data flow i control flow, i da se ta prticija prvenstveno zasniva na egzistenciji osnovnih blok
struktura ulaznog opisa. Mi takođe koristimo hibridnu prezentacionu šemu, kod koje postoji sprega
između control i data flow, pri čemu control flow diktira ekslicitno sekvenciranje data flow
čvorova. Daćemo primere nekoliko različitih prezentacionih šema nakon sagledavanja prezentacije
sekvenciranja i tajming ograničenja.
69
a zatim razmenjuju mesta. Sobzirom da se ovi iskazi izvršavaju konkurentno mi moramo osigurati
da, za signale a i b operacije čitanja prethode operacijama upis. Bold potezi u data flow
prezentacijama na slici 8 (b) ukazuje na odnos ovih prethođenja.
Slika 4.8: Data flow sa potezima prethođenja: (a) konkurentni opis; (b) DFG prezentacija
Flow graph prezentacione šeme se takođe razlikuju u odnosu na njihove data flow prezentacije
koje se odnose na pristupe promenljivima (tj. čitanja i upisi). Neke od šema eksplicitno
predstavljaju svako čitanje i upis promenljive pomoću čvora sa promenljivim pristupom. Kod
bloka koji ima sekvencijalno ponašanje, mi mora da obezbedimo da se vrednosti promenljivih čitaju
pre nego što se definiše nova vrednost (tj. vrši upis). U suprotnom pristup promenljivoj radi čitanja
se ne može izvršiti pre nego što se ta vrednost definiše (tj. vrši upis). Grafovi prethođenja se mogu
koristiti da ukažu na ovakvo uređenje čvorova za čitanje i upis koje se odnosi na istu promenljivu
(vidi sliku 4.9 (b)). S obzirom da pristupi promenljivoj mogu biti ograničeni na memorijske
elemente koji zahtevaju upravljanje, ova eksplicitna prezentaciona šema obezbeđuje da se pristupi
promenljivima i jezički operatori tretiraju uniformno, što čini zadatke tipa selekcije jedinica i
povezivanje (ulančavanje) lakšim. Druge flow graph zasnovane šeme predstavljaju pristupe
promenljivim implicitno kako se sledi trasa podataka putem korišćenja potega u data flow
prezentaciji (vidi sliku 4.9 (c)). Nasuprot eksplicitnoj šemi, data flow optimizacija su mnogo lakše
za obavljanje trasiranja vrednosti u odnosu na slučaj kada su ovi pristuši eksplicitno predstavljeni
kao čvrovi tipa operacija.
Slika 4.9: Prezentacije pristup promenljivima: (a) sekvencijalni VHDL opis; (b) DFG sa
promenljivim pristupom čvoru; i (c) DFG sa promenljivim trasama
Slika 4.10: Prezentacija tajminga: (a) naznačavanje data flow potega prethođenja; (b)
korišćenje data flow tajming čvor; (c) korišćenje control flow tajming čvor
71
4.4.3 Razdvojene Data flow i Control flow prezentacije
Razdvojena Data flow i Control flow (CDFG) prezentaciona šema je slična među flow graph
prezentaciji koja se koristi kod standardnih kompajlera kod kojih se upravljačke konstrukcije
preslikavaju u control flow čvorove, a dodele u okviru osnovnih blokova se preslikavaju u data flow
čvorove. Control flow čvorovi se izdvajaju kao posebni od data flow čvorova, a to čini da ukupno
sekvenciranje dizajna može lako da se sledi.Descart i VSS koriste posebni control flow čvor za
predstavljanje osnovnog bloka data flow čvorova. Control flow graf se direktno generiše na osnovu
upravljačkih konstrukcija ulaznog jezika. Nekoliko tipova control flow čvorova se koristi. Jezičke
konstrukcije kakve su if , case i loop se preslikavaju u control flow nekoliko divergirajućih i
spajajućih čvorova. Pozivi procedura i funkcija predstavljaju se pomoću control flow pozivnih
čvorova. Pored toga upravljačklo demarkacioni čvorovi se koriste za definisanje granica behavioral
programa, funkcija i procedura. Data flow takođe sadrži nekoliko tipova čvorova. Data flow
operativni čvorovi predstavljaju jezičke operatore, čvorovi koji referencuiraju promenljive
odgovaraju operacijama čitanja i upis promenljivih, dok čvorovi koji koriste indeksiranje
odgovaraju pristupu vektorima ili matricama (elementima polja). S obzirom da jedinstveni blok
čvor koji odgovara upravljčkom iskazu predstavlja DFG sa nekoliko DF čvorova, mi imamo odnos
jedan-prema-više control flow u odnosu na data flow čvorove. Analizirajmo case iskaz prikazan na
slici 4.11 (a). CDFG prezentacija za ovaj ulaz je prikazana na slici 4.11 (b). Ova šema aksplicitno
predstavlja pristup promenljivoj koristeći data flow čvorove.
DDS šema je drugi tip prezentacije koji koristi posebne grafove za data flow i control/timing
flow, sa vezama između njih koje ukazuju na zavisnosti i sekvenciranje.
72
Slika 4.11: Flow graph prezentacija: (a) VHDL kôd; (b) particionisani CDFG; (c) De Jong-ov
hibridni flow graph; (d) SSIM flow graph
Mi možemo da očuvamo korelaciju između entiteta ulaznog behavioral opisa (tj. operacije i
promenljive) i sintetizovane RT strukture označavnanjem svakog čvora flow grafa sa binding vezom
ka odgovarajućoj RT strukturnoj komponenti. Na primer, čvor sabiranja u iskazu blok_B2 na slici
4.2 se može označiti sa binding-om RT komponente Adder. Slično svaki čvor tipa pristup radi
74
čitanja ili upisa promenljivoj M u DFG-u sa slike 4.2 se može označiti sa binding-om registra
M_Reg.
Simbolička control tabela opisuje stanja, prelaze između stanja, i control signale koji se
aktiviraju kako bi dozvolili rad odgovarajućih datapath akcijama u svakom stanju. Ona odgovara
FSMD-ovoj state-table koju smo prethodno već opisali. Simbolička control tabela za shift
multiplier dizajn je prikazana u control unit na slici 4.5. Control table koristi simboličku
prezentaciju svojih stanja i control izlaza, bez da koristi bilo kakav poseban tip kodiranja. Ovo je
prikazano na slici 4.5, gde kako stanja (tj. S0), tako i kontrolni izlazi (tj. Load A_Reg) su
predstavljeni simbolički. Mi možemo da održavamo veze između početnog behavior-a i simboličke
control table naznačabvanjem svakog flow graf čvora sa odgovarajućim stanjem i uslovom pod
kojim će se to stanje izvršiti. Na primer, pošto iskaz blok B2 se ScH-uje u stanje S2 kada je A(0) =
1; vidi sliku 4.3 mi možemo dodeliti svakoj operaciji čvor u dataflow bloku B2 sa slike 2. Sa ScH-
ovanim stanjem S2 i uslovom A(0) = 1.
Slika 4.12: Primer shift multiplier-a: (a) FSMD tabele stanja; (b) I/O portovi
75
Razmatrajmo shiftmultiplier dizajn koji je specificiran pomoću VHDL-a. Ovaj opis je
kompajliran u CDFG prikazan na slici 4.2. Već smo ukazali da se ovaj apstraktni behavioral dizajn
ScH-uje u četiri stanja S0, S1, S2, i S3 kako je proikazano na slici 4.3. U ovom trenutku, dizajn je na
nivou FSMD-a pri čemu mi znamo akcije koje treba da se obave u svakom stanju kao i tranzicije
između stanja. Ipak ne postoji korespondencija između apstarktnih operacija koje se obavljaju nad
promenljivima u svakom stanju i RT jedinicama koje implementiraju behavior. Mi možemo
predstaviti rezulatate ovog ScH-a pomoću FSMD state tabele (vidi sliku 4.12 (a)). Kao što smo
prethodno ukazali FSMD state tabele opisuju, za svako stanje, uslove test izraza, izlaze kao
behavior iskazi dodele, i naredno stanje za taj dizajn. Saglasno tome, ova state tabela je
prirodninačin da projektanti sagledaju behavior RT dizajn. S obzirom da nismo dodali nikakvu
strukturnu informaciju dizajnu, slika 4.12 (b) prikazuje inicijalnu strukturu shift multiplier dizajna
koja sadrži samo portove definisanih u početnom VHDL behavior-a.
Nakon što je shift multiplier ScH-ovan, mi selektujemo FU i registre kako je to prikazano na
slici 4.4. Zatim obavljamo zadatke tipa unit binding connected binding da bi kompletirali RT
datapath prikazan na slici 4.13 (a). Kod ovog dizajna, mi povezujemo shift operacije za M sa Shift1
i shift operaciju za A sa Shift2. Moguće je da delimo FU Adder između inkrementiranje M u stanju
S2 i inkrementiranje COUNT u stanju S3.
Rezultati datapath alokacije se mogu obuhvatiti koristeći FSMD state tabelu, kod koje
behavioral iskazi dodele se zamenjuju trasama u datapath transferima preko komponenata u
datapath-u. Za svako stanje i kombinaciju uslova, moguće je opisati aktiviranje svake datapathg
jedinice, zajedno sa detaljima operacije koja se obavlja kao i korišćenih ulaza. Kao primer ove
komponentno-zasnovane state tabele za shift multiplier dizajn je delimični prikaz dat na slici 4.13
(b) koji se odnosi na stanja S1 i S2.
Za objašnjenje operativnog polja ove komponentno-bazirane state tabele, razmotrićemo iskaz
M:=M+B u stanju S2 sa slike 4.3. Kod datapath sa slike 4.13 (a), ovo sabiranje se obavlja
selekcijom Mult i B_Reg koristeći Mux3 i Mux4, repsektivno, obavljajući operaciju add na Adder-u,
i smeštajući rezultat ponovo u Mult preko desnog ulaza Mux1. Ovaj prenos podataka ostvaruje se
samo kada je A(0) = 1 u satnju S2. Komponentno-bazirana state tabela koncizno opisuje ovaj
prenos podataka i njegovo actions polje , kako je to prikazano u stanju S2, uslov A_Reg (0) = 1, na
slici 4.13 (b). Prva akcija ukazuje da FU Mux3 slektuje levi ulaz Mult. Na sličan način, Mux4
selektuje B_Reg kao svoj izvorišni, a Adder obavlja operaciju add koristeći Mux3 i Mux4 kao ulaze.
Konačno, Mux1 komutira izlaz Adder-a ka Mult-u koji puni rezultat sabiranja.
76
Slika 4.13: Shift multiplier dizajn nakon alokacije datapath-a: (a) parcijalno sintetizovana
struktura; (b) FSMD komponentno-bazirana state tabela
77
Slika 4.14: FSMD simbolička control tabela za shift multiplier dizajn
78
4.13. Konačno BIF-ova kontrolno-bazirana state tabela specificira simboličku control tabelu
dizajna u format koji je blizak modelu na slici 4.14. BIF reperezentacija omogućava korisniku da
reaguje sa sintetizovanim zadacima obezbeđujući fokusirani pogled na kompletni dizajn u toku
svake faze sinteze.
4.6 Transformacije
Inicijalna flow graf prezentacija veoma usko odražava ulazni opis, a saglasno tome može da
predstavi sintaktičko jezičke konstrukcije koje nisu korisne ili čak relevantne za sintezu. Moguće je
primeniti transforamacije na početno zadati flow graf pre HLS zadataka koje se odnose na ScH i
alokaciju, kreiranjem drugog flow grafa koji je pogodniji za ove HLS zadatke. Svaka transformacija
ima različiti efekat. clean-up transformacija odstranjuje redundantnost, a bazira se na sintaksi
ulaznog jezika. Optimizirajuća transformacija poboljšava prezentaciju odgovarajućim
izbacivanjima ili zamenom segmenata prezentacije sa efikasnijim. Restruktuirajuća transformacija
modifikuje prezentaciju kako bi se uskladila sa specifičnim stilom (tj. protočnim) ili da se ostvari
različiti iznos paralelizma.
Transfomrmacije se mgu primeniti na prezentaciju dizajna u toku različitih koraka HLS-a. U
toku kompilacije ulaznog opisa u flow graph, nekoliko kompajler optimizacija se mogu obaviti
kako bi se izbacile ekstra sintatičke konstrukcije i redundanse u HDL opisu. Flow graf prezentacije
se koriste da konvertuju delove prezenatcija iz jednog stila (npr. control flow) u drugi (data flow) i
da promene stepen paralelizma. Hardversko specifične transformacije koriste ocsobine RT i logičkh
komponenata da bi obavili optimizacije (tj. zamenili DFG segmente koje inkrementiraju promeljive
sa inkrement operacijama). Ukazaćemo u daljem tekstu na neke od ovih transformacija kroz
primere.
79
Slika 4.15: Uzorne kompajler optimizacije: (a) constant folding; (b) eliminacija redundandnog
operatora
Promenljive tipa polja predstavljaju drugi zahvalan izvor za optimizaciju HLS-a na nivou
kompajlera. Ova polja u behavioral prezentaciji se preslikavaju u memorije, tako da redukcija broja
pristupa polju smanjuje prekoračenje (overhead) koji se javlja zbog pristupa memorijskim
strukturama. Refenciranja poljima sa promenljivim indeksima rezultira dugim ulančavanjima
zavisnosti između uzastopnih pristupa polju pošto vrednost promenljive može da ima identičnu
indeksnu vrednost u lancu. Mi možemo koristiti optimizacione transformacije da redukujemo ova
ulančavanja zavisnosti. Ako je ulančavanje na kritičnom putu optimizacijom polja redukuje se
dužina kritičnog puta i poboljšavaju performanse dizajna.
Slika 4.16: Signal atribut transformacija: (a) kod za usponsku ivicu signala X, (b) inicijalni FG, (c)
transformisani FG
80
atribute o promeni signala (tj. sensitivity i signal change) i pridružuje ove atribute izlaznom potegu
operacije READ ( signal 7 na slici 4.16 (c)).
Druga flow graf transformacija (specifična za CDFG reprezentacionu šemu) konvertuje control
flow konstrukcije u kevivalentnu data flow prezentaciju. Ova transformacija je korisna kada
testiramo promenljive Boolean-ovog tipa u control flow. S obzirom da svaki control flow
conditionali test forsira kreiranje novog stanja u toku sinteze, mi dobijamo nekoliko veštačkih
stanja koje odgovaraju testiranju Boolean-ih promwnljivih u control flow. Ova veštačka stanja
moguće je eliminisati transformisanjem Boolean-ih control flow testova u data flow prezentaciju.
Slika 4.18 ilustruje ovu transformaciju na uzorni if iskaz. Slika 4.18 (b) prikazuje control flow
prezentaciju izvedenu na osnovu ulaznog opisa sa slike 4.18 (a). Ostvarena dobit ove transformacije
je povećani eksplicitni paralelizam u DFG-ovima. S obzirom da se data flow blokovi sa slike
međusobno razilaze, sredstva za sintezu ne mogu u potpunosti da iskoriste paralelizam između
uzajmno isključivih data flow blokova Stmt_Blk1 i Stmt_Blk2. Konverzija ove control flow
prezentacije u ekvivalentnu data flow prezentaciju prikazanu na slici 4.18 (c) učinila je da se pojavi
eksplicitni paralelizam u okviru jedinstvenog DFG-a.
Ako je ulazni opis hijerarhijski, CDFG se može rekurzivno dovesti u formu DFG-a. Ova
hijerarhijska transformacija je posebno korisna kada svi control flow condition testiraju Boolean-e
promenljive; tako da možemo da eliminišemo nekoliko dodatnih (dummy) stanja u konačnom ScH-
u. Slika 4.19 (a) prikazuje uzorni hijerarhijski CDFG. Moguće je rekurzivno primeniti control flow i
data flow transformacije na ovom flow grafu kako bi doveli (''ispeglali'') prezentaciju u jedinstveni
DFG, kako je to prikazano na slici 4.19 (b) i (c). Napomenimo da CDFG šema zahvata loop
knstrukcije CFG-a. Loop-ovi koji imaju fiksne granice se mogu odmotati kako bi se generisali
obimniji DFG-ovi. Ipak, ako granice loop –a nisu fiksne u fazi kompilacije, ne moguće je
81
kompletno odmotati loop (petlja). Kod ovih slučajeva ne moguće je transformisati flow graf u
jedinstveni DFG kako je prikazano na slici 4.19. Ipak, tehnike za razmotavanje loop-a se mogu
koristiti za parcijalno odmotavanje loop-a sa ciljem da se iskoristi veći stepen paralelizma.
Slika 4.18: Transformacija control flow u data flow: (a) if iskaz; (b) inicijalna CF prezentacija;
(c) transformisan DF prezentacija
82
Slika 4.19: ''Peglanje'' CF-a: (a) inicijalni flow graf; (b) unutrašnje ''if'' peglanje; (c) konačno
generisani DF blok
83
način, transformacije se mogu krostiti za konverziju množenja i deljenja stepenom dvojke u
operacije shift (tj. značajna redukcija).
Slika 4.21: Jednostavna transformacija flow grafa na RT nivou: (a) flow graf oblik; (b)
bibliotečki specifični funkcijski čvor
Nizovi ovih transformacija se mogu koristiti da bi maksimalno prožimali flow garf čvorove u
standardno korišćene FU-ove na RT nivou kakvi su ALU-ovi. Slika 4.22 (a) prikazuje segment
VHDL kôda kod koga signal OUT je dodeljen različitim vrednostima u zavisnosti od vrednosti F.
Slike 4.22 (b), (c) i (d) prikazuju kako se odgovarajuća data flow grafička prezentacija VHDL kôda
može progresivno ujediniti u jedan multifunkcionalni čvor koji odgovara FU tipa sabirač-oduzimač.
Ove optimizacije su posebno korisne kada RT FU biblioteka sadrži složene multifunkcionalne
jedinice kakvi su ALU-ovi. U ovakvimslučajevima mi možemo posmatrati ovaj niz transformacija
kao lokalno predprocesirajuće faze za alokaciju, gde se grupe alokacija koje odgovaraju
kompleksnoj RT komponenti transformišu u kompleksni funkcijski čvor; pri čemu alokator može
zatim direktno da preslika kompleksno-funkcijski čvor u RT komponentu.
Slika 4.22: Prepoznavanje kompleksne funkcije: (a) VHDL opis; (b) inicijalna DF prezentacija;
(c) pojednosttavljena DF prezentacija sa ''add_inc'' i ''sub_inc'' operatorima; (d) konačna DF
prezentacija sa ALU operatorom
84
Transformacije na sistemskom nivou se mogu koristiti da bi podelili delove fow grafa na
posebne procese koji će se izvršavati konkurentno ili na protočni način. Transformacije na ovom
nivou se mogu takođe koristiti da obave podelu Flow grafa na funkcionalne blokove koji će se
preslikati u čip ili na fizičke particije konačnog layout-a. Više detalja o ovome može se naći u
poglavlju ''Particija''.
85
Poglavlje 5
PLANIRANJE I
behavioral specifikacija
ekstrakcija DFG-a
86
5.2 Identifikacija osnovnih zadataka kod postupka sinteze na visokom
nivou
Kod sinteze na visokom-nivou dva osnovna zadatka koja treba obaviti su:
Promenljive kod DFG-a mogu pripadati nekom od sledeća tri skupa: primarni ulazi (VI ) ,
primarni izlazi (VO ) , među-promenljive (VM ) . Tok-podataka kod DFG-a se označava kao
v1 ⎯⎯→
O1
v 2 ⎯⎯→
O2
..... ⎯O⎯
⎯
n =1
→ v n , gde vi , 1≤ i ≤ n je promenljiva u VI ∪ VO ∪ VM , dok O j
87
koji se pridružuje svakom "→" , 1 ≤ j ≤ n predstavlja operaciju (kakve su sabiranje, množenje, i
dr), sa v j kao ulaznim operandom, a v j +1 kao rezultatom. Kada su v1 i v n iste, tok-podataka se
naziva ciklični-tok-podataka, a v1 i v n nazivamo granične promenljive. Skup svih graničnih
promenljivih kod DFG-a se označava sa V B . Za DFG kažemo da je aciklični kada ne poseduje
ciklični-tok-podataka, inače je DFG ciklični. Na primer, deblje izvučeni potezi na slici 5.2 (b)
+1 +3
odnose na aciklični tok podataka a ⎯⎯→ f ⎯
⎯→
*
g ⎯⎯→ i . Ciklični graf toka-podataka obično
odgovara konstrukcijama tipa petlja (loop), kakvi su u behavior specifikaciji, iskazi tipa while ili
for. Na slici 5.2 (a) prkazan je osnovni-blok koji na svom kraju ima while iskaz. Odgovarjući DFG
je dat na slici 5.3 (b), koji ima graničnu promenljivu x pridruženu cikličnom grafu toka-podataka
određenu od strane iskaza while. Naime, tekuća vrednost promenljive u cikličnom grafu toka-
podataka zavisna je od prethodne vrednosti u zadnjoj iteraciji petlje. Uočimo da graf toka-podataka
sa slike 5.3(b) ne opisuje tok-upravljanja (control flow), nego samo tok-podataka u okviru iskaza
while.
x b
do { ∗ c
d=x b; d
+
x=d + c; f
<
} while ( x < f ) ;
Slika 5.3: a)osnovni-blok koji je tipa petlja; b) odgovarajući DFG sa graničnom promenljivom x
Za svaku operaciju o koja je pridružena čvoru DFG-a, o0 ran označava najraniji vremenski
ciklus (period) za koji se o može izvršiti, a o0 kas označava najkasniji mogući vremenski ciklus za
koji se o može izvršiti, a da se pri tome ne naruše zavisnosti-po-podaciima definisani od strane
DFG-a. Pri ovome, labavost operacije o se definiše kao interval [o0 ran − o0 kas ] , a mobilnost
operacija o se definiše kao o0 ran - o0 kas . Sekvenca operacija čija je mobilnost 0 naziva se
kritični-put (critical path). Tako na primer, operaciju + 2 na slici 5.2(b) karakteriše labavost [1 , 2] ,
a njena mobilnost iznosi 1. Operacije + 1 , ∗ , i + 3 imaju mobilnost 0 pa su zbog toga na kritičnom
putu. Labavost i mobilnost se mogu koristiti da ukažu na slobodu planiranja izvršenja operacija.
Svakoj operaciji behavior specifikacije, u toku koraka upravljanja, planiranjem-izvršenja se
dodeljuje vreme izvršenja. U daljem tekstu razmatraćemo jednostavno planiranje-izvršenja, a to je
slučaj kada ne postoji operacija koja se izvršava za veći broj ciklusa. Za DFG sa slilke 5.2(b), na
slici 5.4 prikazana su dva različita plana izvršenja Sa i Sb, pri čemu isprekidana linija ukazuje na
upravljački korak. Nakon određivanja plana izvršenja DFG graf nazivamo SDFG (scheduled
DFG). U konkretnom slučaju operacija + 2 se može planirati radi izvršenja u ciklusu 1 (kod plana
Sa) ili u ciklusu 2 (kod plana Sb), a da se pri tome ne produži ukupno vreme izvršenja sekvence.
Ipak plan-izvršenja Sa zahteva najmanje dva sabirača jer se obe operacije + 1 i + 2 izvršavaju u
istom ciklusu 1 tako da ne mogu deliti isti sabirač. Sa druge strane za plan-izvršenja Sb potreban je
88
samo jedan sabirač jer se po jedna operacija sabiranja izvršava u svakom ciklusu. Na slici 5.5
prikazan je krajnji efekati mplementacije.
Slika 5.4: Dva plana izvršenja istog DFG-a: (a) Sa, i (b) Sb
a
b
MUX MUX
d e
c
R3 R1 R2 R4 R5
∗ +1,3 +2
g
j f,i h
a)
89
b
d
MUX
e MUX a
c
R3 R1 R5 R4 R1
MUX
MUX
∗
g
j
+1,2,3
f, h, j
b)
Slika 5.5: Dve arhitekture izvredene na osnovu dva plana izvršenja a) za plan Sa; i b) za plan Sb
Arhitektura sa slike 5.5(a) je izvedena na osnovu plana Sa, a čine je pet registara, dva sabirača,
jedan množač, i dva multipleksera. Arhitektura sa slike 5.5(b) izvedena je na osnovu plana Sb, a
čine je pet registara, jedan sabirač, jedan množač, i četiri multipleksera. To su dve različite
arhitekture koje karakteriše isto ponašanje (behavior).
90
5.4.1 ASAP i ALAP planiranje izvršenja
ASAP i ALAP su najjednostavniji konstruktivni pristupi za planiranje izvršenja.
Svaku operaciju o iz DFG-a ASAP algoritam planira radi izvršenja u ciklusu o. ran , dok je
ALAP algoritam planira radi izvešenja u ciklusu o. kas . Na slici 5.6 prikazana su dva DFG-a
planirana za izvršenje od strane ASAP i ALAP algoritama, respektivno.
∗1 ∗2 ∗4 ∗6 +1
∗3 ∗5 +2
2
-1
3
-2
a) ASAP
∗1 ∗2
∗4
∗3
2
∗6
∗5
-1
3
-2 +2 +1
b) ALAP
91
I pored toga što ASAP i ALAP algoritmi mogu uvek da dodele najbrži algoritam planiranje-
izvršenja, često je za njihovu implementaciju potreban nešto veći iznos hardvera od minimalnog.
Razlog ovome je što ovi algoritmi ne vode računa o kritičnom putu i ne mogu da odlože izvršenje
operacije na nekritičnom putu kako bi se uštedilo na resursu. Na primer, za planiranje-izvršenja
ASAP algoritma sa slike 5.6 potrebna su četiri množača (množenje se planira za izvršenje u ciklusu
1). Ipak, ako se ∗ 4 i ∗6 koje se nalaze na nekritičnim putevima planiraju radi izvršenja u ciklusu 2,
dok ∗5 i + 2 se planiraju radi izvršenja u ciklusu 3, tada su potrebna samo dva množača, a da se pri
tome ne poveća ukupan broj ciklusa izvršenja.
Slika 5.7: (a) DFG primer je svakoj operaciji kao prioritetna funkcija pridružen broj operacija od
teoperacije pa do kraja bloka (broj u zagradi): (b) list scheduling rezultat
U tabeli na slici 5.8 za svaki ciklus prikazana je lista spremnih resursa, lista prioriteta, i
operacije koje se planiraju za izvršenje. Lista spremnosti se generiše i ažurira od strane LS
92
algoritma, a čine je operacije čiji su neposredni prethodnici planirani radi izvršenja. Spremne
operacije su kandidati da budu planirane za izvršenje u tekućem ciklusu samo kada su zadovoljena
organičenja koja se odnose na broj resursa i prioritet. Tako na primer, u prvom ciklusu u tabeli na
slici 5.8, operacije + 1 , ∗1 , + 2 i ∗ 2 su spremne za planiranje. Ali zbog ograničenja broja resursa,
selektuju se samo ∗1 i + 2 čiji je prioritet najviši i planira, u prvom ciklusu, njihovo izvršenje. Na
sličan način, u drugom ciklusu, listu spremnosti čine + 1 , ∗ 2 i + 3 , pri čemu se planiraju za
izvršenje operacije sa najvišim prioritetom ∗ 2 i + 3 . Konačno, ∗3 i + 1 se planiraju za izvršenje
u trećem ciklusu. Na slici 5.7(b) prikazan je plan-izvršenja DFG-a.
Slika 5.8: LS rezultat u svakom ciklusu za DFG sa slike 5.7(a), pod uslovom da postoje
ograničenja po resursima od jedan sabirač i jedan množač
0 1 2
ciklus 1 +1 +2
ciklus 2 +2
ciklus 3 +3
Kod zadatog grafa distribucije, za svako moguće planiranje izvršenja operacije o u ciklusu i,
"sila" se izračunava na sledeći način
Fi = ∑ DG j × Δ( j , i )
j∈(O0 najranije , O0 najkasnije )
gde je:
j opseg o-ih mrtvih perioda, DG j vrednost grafa distribucije u ciklusu j, a Δ ( j , i ) je
promena u vrednosti grafa distribucije ako je planiranje o-a fiksirano za ciklus i. Na primer, za sliku
5.9, uvedena "sila" koja se odnosi na dodelu operacije + 2 ciklusu 1 iznosi
F1 = 1,5 ∗ 0,5 + 0,5 ∗ (− 0,5) = 0,5 . Prvi član se odnosi na promenu koja se unosi kod sabiranja u
ciklusu 1, imajući u vidu da se njena verovatnoća povećava sa 0,5 na 1, dok se drugi član odnosi na
odstranjivanje operacije + 2 u ciklusu 2, što dovodi do smanjenje njene verovatnoće sa 0,5 na 0.
Pozitivna sila F1 ukazuje da operaciju ne treba planirati radi izvršenja u ciklusu 1, jer ciklus 1 je
jako opterećen sa operacijom sabiranja. Na sličan način se izračunava "sila" za planiranje + 2 u
ciklusu 2 kao F2 = 1,5 ∗ (− 0,5) + 0,5 ∗ 0,5 = − 0,5 . Nakon što su određene sve "sila" , bira se plan
sa najmanjom "sila" , u konkretnom slučaju je to F2. Zbog toga se operacija planira za izvršenje u
ciklusu 2, a distribucioni graf se ažurira kako bi predstavljao odraz ove odluke.
2
branch branch
3 10
ogranicenja
4 11
upravljacki
korak
Ograničenja se određuju između ona dva čvora koji mora da se isplaniraju za izvršenje u dva
različita ciklusa. Tako na primer, kod CFG-a sa slike 5.10, ako obe operacije čvorova 3 i 5
dodeljuju vrednost istom signalu, tada se one ne mogu isplanirati za izvršenje istovremeno. Ovo
ograničenje je predstavljeno intervalom od čvora 3 do čvora 5, i označeno je prugom na slici 5.10. I
ostala ograničenja se mogu takođe izvesti. Tako na primer U/I port signal ne može istovremeno da
obavlja operacije Read i Write, a takođe i operacije koje koriste isti modul ne mogu se obavljati u
istom ciklusu. Kada dva ograničenja imaju intervale koji se preklapaju, oba ograničenja moraju biti
zadovoljena na taj način što se u preklapajućem intervalu uvodi upravljački korak. Tako na primer,
kod slike 5.10, upravljački korak se uvodi između čvorova 4 i 5, koji zadovoljava oba ograničenja
naznačena od strane i jednog i drugog intervala.
Za efikasan plan izvršenja veoma je važno minimizirati broj taktnih ciklusa, a pri tome
zadovoljiti ograničenja. Algoritam koji je zasnovan na izboru puta prvo planira sve puteve izvršenja
95
nezavisno koristeći "clique partitioning" tehniku kako bi se odredio minimalan broj ciklusa za svaki
put. (O ovom problemu biće govora kasnije). Nakon ovoga za puteve koji se preklapaju nalaze se
planovi izvršenja pri čemu je težnja da se minimizira broj ciklusa za sve puteve. Za primer sa slike
5.10, algoritam planiranja zasnovan na izboru puta čine sledeći koraci:
• korak 1: zadati CFG učiniti acikličnim i odrediti sve puteve izvršenja. Na slici 5.11(a) za
CFG sa slike 5.10 prikazana su oba puta izvršenja, path 1 i path 2.
• korak 2: Preslikati sva ograničenja u intervale koja se odnose za svaki put izvršenja. Na
slici 5.11(a) ograničenja od C1 do C6 se pridružuju path 1, dok se ograničenja C7 i C8 pridružuju
putu path 2.
• korak 3: Isplanirati izvršenje svakog puta nezavisno, koristeći clique partitioning tehniku
putem uvođenja minimalnog broja ciklusa.
Ovaj postupak se izvodi na sledeći način. Na slici 5.11(b) za svaki path (put) sa slike 5.11(a)
određuje se interval graf, kod koga čvor odgovara intervalu, a poteg ukazuje da oba intervala koja
odgovaraju i jednom i drugom čvoru se povezuju potezima koji se preklapaju. "clique", koji je u
suštini kompletan potgraf, sadrži sve intervale koje se međusobno preklapaju.
Slika 5.11: (a) dva puta izvršenja kod CFG-a sa slike 5.10 i odgovarajuća ograničenja;
(b)clique partitioning interval grafa za svaki put izvršenja
Slika 5.12: (a) svakom preseku određen sa slike 5.10 (b) pridružuje se odgovarajući put
izvršenja; (b) "clique partitioning" interval grafa na preseke (cuts) kako bi se odredio minimalan
broj upravljačkih stanja; (c) konačni plan izvršenja sa minimalnim brojem upravljačkih stanja.
Nakon planiranja, DFG postaje planirani DFG, ili SDFG. Kod acikličnih SDFG-ova, vreme-
kreiranja promenljive v , označava se kao v. birth , a predstavlja trenutak u toku koga se
promenljiva po prvi put definiše. Sa druge strane, vreme ukidanja primenljive v se označava sa
97
v. death i predstavlja trenutak u toku koga se ona zadnji put koristi. Shodno prethodnom, vreme
života promenljive v se definiše kao interval [v. birth , v.death] .
Ipak kod cikličnog grafa, u toku svake iteracije petlje promenljiva može da ima veći broj
kopija identičnog vremena života. Sa ciljem da se pojednostavi prezentacija svi povratni tokovi
podataka, na granici petlje, se raskidaju čime se SDFG čini acikličnim, tako da se samo za prvu
iterativnu petlju smatra da određuje vreme života. Tako na primer, vreme života promenljive f kod
cikličnog SDFG-a sa slike 5.13(a) se definiše kao interval [1 , 2] . Šta više, za slučaj kada je
povratna veza toka podataka prekinuta, vreme života one promenljive koja se nalazi na granicama
prekida se deli na dva dela. Ilustracije radi vreme-života promenljive h prikazane na slici 5.13(a)
se definiše kao [1 , 2] ∪ [2 , 3] . Tabela koja ukazuje na vreme-života promenljivih moguće je u
principu kreirati na osnovu SDFG-a kada se obavi analiza vremena-života promenljivih kod
SDFG-a. Na slici 5.13(b) prikazana je tabela koja odgovara vremenu-života promenljivih za SDFG
sa slike 5.13(a). Kod tabele koja se odnosi na vreme-života vremenski-ciklusi su prikazani po
horizontalnoj osi. Vreme-života svake promenljive je označeno linijskim segmentom čija leva i
desna ivica odgovaraju vremenu kreiranja i vremenu ukidanja promenljive, respektivno.
98
5.6 Dodela resursa
99
Slika 5.14: Primer ponderisanog MAG-a izveden na osnovu SDFG-a
Dodela žica se vrši alokacijom veza koje su namenjene za prenos signala promenljivim koje se
čuvaju u registrima ili koriste od strane modula. Na sličan način, za dva signala se može dodelliti
ista žica u slučaju kada se odgovarajuća vremena-života ne preklapaju. Na slici 5.15 prikazan je
efekat alokacije kod konačne implementacije. Kao što se vidi alocirane su dve različite arhitekture
za realizaciju istog ponašanja koje se specificira od strane SDFG-a. Obe arhitekture imaju po četiri
registra, ali se promenljive dodeljuju na različiti način. Tako na primer, na slici 5.15 b) promenljive
a , c , g se dodeljuju registru R1 , b i f registru R2, d registru R3, a e registru R4. Sa druge strane
kod slike 5.15 c) promenljive a, f i g su dodeljene registru R1‚ promenljive b i c registru R2,
promenljiva d registru R3, a promenljiva e registru R4. Kod arhitekture sa sllike 5.15 c) potrebna je
jedna veza više, a takođe i MUX2 mora da ima još jedan ulaz više u odnosu na MUX2 sa slike 5.15
b) da bi prihvatio promenljivu g.
a b d e 0
+1 +2
1
c f
+3
2
g
a)
100
a b
MUX 1 MUX 2 e
d
R1 R2 R3 R4
g
+2
+1,3
c,g f
b)
a b
MUX 1 MUX 2 e
d
R1 R2 R3 R4
g
+2
+1,3
c g f
c)
101
Poglavlje 6
Particija
6.1 Uvod
U kontekstu CAD-a paticiju smatramo kao zadatak koji objedinjava objekte u grupe tako da se
ciljna funkcija optimizira u odnosu na skup projektanskih ograničenja.
Kod HLS-a (High Level Synthesis) particija se koristi za potrebe planiranja izvršenja
(scheduling), alokacije (dodeljivanje), selekciju-jedinice, kao i particiju čipa i sistema.
Kao prvo, particija se koristi da objedini promenljive i operacije u grupe (clusters) tako da se
svaka grupa može preslikati u memorijski elemenat, funkcionalnu jedinicu, ili sprežnu jedinicu
realnog dizajna. Rezultat ovakve particije se može koristiti radi selekcije-jedinice pre planiranja
izvršenja i povezivanja (binding), ili se može koristiti za alokaciju (dodelu). Ovo je od posebne
koristi kod selekcije-jedinice jer suma svih površina se može iskoristiti da objedini operacije u
grupe tako da se svaka grupa izvršava od strane istog upravljačkog stanja ili upravljačkog koraka.
Ovaj tip particije se koristi za planiranje-izvršenja.
Kao drugo, particija se koristi za dekompoziciju velikog opisa na nivou ponašanja na nekoliko
malih. Na ovaj način manji problemi se mogu efikasnije rešiti. Dodatni cilj je da se kreiraju opisi
koji se mogu sintetizovati u strukturu koja ispunjava ograničenje sa tačke gledišta pakovanja.
Tehnike za particiju se baziraju na graf modelu dizajna. Primena osnovnih metoda particije na
HLS iziskuje preslikavanje modela ponašanja ili dizajn-strukture u graf-modele. Ukažimo sada
kako se na osnovu modela-ponašanja kreiraju graf-modeli i objasnimo nekoliko standardnih graf-
particionih algoritama.
102
6.1 (b) prikazano je kako se graf G deli na dva podgrafa G1 i G2 koji odgovaraju Chip1 i Chip2,
respektivno. Potezi e24 i e36 koji prelaze liniju preseka odgovaraju dvema spregama, ni i n j , koje
povezuju Chip1 i Chip2.
Slika 6.1: Particija kola: (a) jednostavni primer; (b) graf i fizička prezentacija
Na sličan način behavioral particija se može formulisati kao graf particioni problem. U
principu ponašanje (behavior) dizajna se može opisati koristeći dve različite forme; (a) kao
tekstualni opis; i (b) pomoću CDFG-a (control/data flow graph). Tipično implementacija dizajna
sistema čini skup međusobno povezanih komponenata kakvi su procesori, memorije, kontroleri,
arbitri magistrale i interfejs kola. Behavioral opis opisuje svaku komponentu koristeći jedan ili veći
broj procesa. Komunikacija između procesa se može specificirati preko skupa globalno
promenljivih. Na slici 6.2 (a) prikazan je behavioral opis koji sadrži tri konkurentna procesa. Svaki
proces sadrži sekvencijalno uređene iskaze dodele, procedure, i funkcije. Globalni port i signal
promenljive, ( I1, I 2 , I 3,O1, B , F , H ), se koriste za potrebe komuniciranja između procesa. Svaki
proces se može posmatrati kao hardverski modul koji izvršava opis tog procesa. Moduli se mogu
predstaviti kao čvorovi grafa kod kojih potezi predstavljaju globalne promenljive koje se koriste za
potrebe komunikacije između procesa (slika 6.2 (b)).
103
I1 I2
process1
B H
I3
process2 process3 O1
F
I1
I1>0
exit
B>0
true false
C I2 A I2 H
- -
B B wait
H>0
end if
process 1
B process 2 F process 3
wait wait
B<=0 F>0
B I3 I1 F I3 I1
+ +
+ +
D F G H
Slika 6.2: VHDL primer; (a) behavioral opis; (b) komutacija procesa; (c) CDFG-ovi
CDFG opis eksplicitno prikazuje upravljačke zavisnosti i zavisnosti po podacima. Na slici 6.2
(b) prikazano je kako se izvodi CDFG na osnovu VHDL behavioral opisa. Svaki krug predstavlja
operaciju, svaki trougao se odnosi na upravljačku odluku (control decision), dok svaki poteg
predstavlja upravljačku zavisnost ili zavisnost po podacima. Upravljačke zavisnosti kao i linijsko-
uređeni kôd (straight line code) se mogu predstaviti kao čvorovi u CFG-u (control flow graph), pri
čemu potezi odgovaraju upravljačkim zavisnostima. Na sličan način, kod DFG-a (data flow graph)
operacije se mogu posmatrati kao čvorovi dok potezi odgovaraju toku-podataka (data flow).
Behavior grafovi u odnosu na CDFG-ovi razlikuju se u granularnosti čvorova. Svaki čvor kod
behavior grafa predstavlja programski blok ili opisni blok, koji može da sadrži po nekoliko iskaza
dodele, funkcija ili procedura, dok se čvor kod CDFG-a odnosi na operaciju ili odluku u programu,
ili opis.
Na oba grafa se može obaviti particija u vremenu ili fizičkoj dimenziji, što znači da se ta
particija obavlja za potrebe performansi ili određivanja fizičkog obima. Kada obavljamo particiju
radi ocenjivanja performansi mi objedinjavamo (clustering) čvorove grafa po kritičnim putevima,
pri tome minimizirajući komunikacije, definisane brojem upravljačkih aktivnosti, kao i obim
104
podataka, koji se prenose između grupa (clusters). Particija može da rezultira u egzistenciji
nekoliko upravljačkih puteva koji se izvršavaju konkurentno, pod nadzorom jednog globalnog
kontrolera ili nekoliko lokalnih kontrolera (što odgovara SIMD ili MIMD stilovima paralelnog
procesiranja).
Sa druge strane, kada se particija vrši sa tačke gledišta fizičke cene mi objedinjavamo čvorove
grafa po tipu operacije koji oni obavljaju, minimizirajućI pri tome povezljivost (tj. broj žica)
između različitih grupa (clusters).
Ukažimo da su minimizacija komunikacije i minimizacija povezljivosti (connection) dva
različita i nezavisna cilja. Za istu brzinu prenosa od n bps-a mi možemo da imamo jako izraženu
komunikaciju pri jako dobro izvedenu povezljivost, kao kod serijske komunikacije po jednoj vezi ili
paralelne komunikacije po magistrali, respektivno.
Razlika između obavljene particije radi procene performansi i particije radi procene fizičke
cene se može objasniti njenom efikasnošću u vremenu i prostoru. Particijom radi procene
performansi optimizira se vreme-korišćenja, dok se particijom radi procene fizičke cene optimizira
iskorišćenje komponeneta.
U opštem slučaju, postoje dve osnovne tehnike za particiju:
Konstruktivni metodi obavljaju particiju grafa startujući od jednog ili većeg broja seed čvorova
pri čemu se dodavanje čvorova seed-ovima vrši jednovremeno.
Metodi iterativnog-poboljšanja počinju nekom inicijalnom particijom, a zatim sukcesivno
poboljšavaju rezultate premeštanjem objekata između particija.
U nastavku teksta opisaćemo prvo tri konstruktivna metoda: slučajan izbor, porast-grupe
(cluster-growth), i hijeratrhijsko-objedinjavanje (hierarchical clustering). Nakon toga opisaćemo
dve iterativne metode: particiju minimalnog preseka i simulirano-kaljenje (simulated annealing).
105
Neka G = (V , E ) predstavlja graf koga čini skup čvorova V i skup potega E . Za svaki par
čvorova vi , v j ∈ V , neka ci , j predstavlja cena potega ei , j između vi i v j . Obavićemo sada particiju
grafa na grupe (clusters) sa po m čvorova pri čemu svaka grupa koristi cenu potega kao merilo
srodnosti. Promenljiva num_cluster predstavlja broj grupa. Procedura CONNECTED (V1 ,V2 ) vraća
vrednost čvora vi ∈ V1 ⊂ V za koji ∑ v j ∈V2 ⊂V ci , j je maksimalan, ili drugim rečima, vraća čvor koji
je maksiimalno povezan na V2 . Promenljive seed i temp su privremeno promenljive u V.
Algoritam rast-grupe je jednostavan za implementaciju ali generiše loš rezultat jer se mera
srodnosti izračunava samo za čvorove koji su već dodeljeni grupama, a ne za sve čvorove. Kao i
metod slučajan-izbor, ovaj pristup se često koristi za generisanje inicijalne particije kod algoritma
za iterativno-poboljšanje.
v1 v(24) v3 v5 v(241)
v1 v1 - - - -
v(24)
5 4 v(24) 5 - - -
1
v3 v3 4 1 - -
v(24) v5 0 -
0 3
3
v5 v1 v2 v4 v3 v5
v(2413)
v(241) v(241)
v(241) v3 v5
v(241) - - - v(24)
v3 v3 4 - -
4
v5 3 0 -
3
v5 v1 v2 v4 v3 v5
v(24135)
v(2413)
v(2413)
v(2413) v5
v(241)
v(2413) - -
v(24)
v5 3 -
3
v5
v1 v2 v4 v3 v5
107
Označimo sa LSucc (nk ) i RSucc (nk ) levi i desni naslednik ne-terminalnog čvora nk . Neka
{
C = ci , j 1 ≤ i , j ≤ V , i ≠ j } predstavlja matrica srodnosti L(vi ) = 0 za sve čvorove vi ∈ V .
Funkcija CLOSENESS (vi ,v j ) određuje meru srodnosti za bilo koja dva čvora u V . Procedura
MAXCLOSS (C ) vraća maksimalnu vrednost srodnosti iz matrice srodnosti C . Ako dva para
čvorova imaju istu meru srodnosti vraća se ona sa većim brojem potega. Vrednosti v max 1 i v max 2 su
privremeno promenljive koje pamte čvorove sa maksimalnom srodnošću u svakoj iteraciji. Na
sličan način c max 1,max 2 čuva maksimalnu vrednost srodnosti. Algoritam hijerarhijskog grupisanja je
prikazan kao Algoritam 6-2.
Slika 6.4: Grupisanje zasnovano na:(a) samo Criterion_A; (b) samo Criterion_B; (c) Criterion_A
ispod prve linije preseka, nakon toga Criterion_B; (d) Criterion_B ispod prve linije preseka, nakon
toga Criterion_A; (e) Criterion_A ispod druge linije preseka, nakon toga Criterion_B.
109
6.2.5 Particija: minimalni presek
Algoritam particije tipa minimalni-presek (minimal cut) uzajamno menja mesta dveju grupa
čvorova između dve particije istog obima sa ciljem da generiše maksimalno poboljšanje kod
particije. Algoritam tipa minimalni-presek se može takođe koristiti kao osnova za rešavanje opštih
n-to strukih problema particije. Ovaj algoritam se u velikoj meri koristi kod dosta aplikacija jer
generiše dobar rezultat za mali iznos CPU-ovog vremena. Algoritam tipa minimalni-presek deli
data graf G = (V , E ) od 2n čvorova na dva jednaka podgrafa sa n čvorova, minimizirajući veze
između oba podgrafa. Algoritam startuje sa proizvoljnom particijom V -a na dva podgrafa V1 i V2
(vidi sliku 6.5). U toku svake iteracije algoritam međusobno menja mesta k parova (k ≤ n) čvorova
između dva skupa. Proces stopira kada dalja poboljšanja nisu moguća. Ovaj proces se može
repetitivno izvršavati sa proizvoljnim brojem inicijalnih particija. Na ovaj način, najbolje rešenje se
bira na osnovu velikog broja generisanih particija. Ovakvim proistupom, šanse da se pronađe
particija koja je bliska globalnom minimumu su povećane.
EC i = ∑c
vk ∈V2
i ,k (6.1)
IC i = ∑c
vm ∈V1
i ,m (6.2)
Razlika između interne i spoljne cene oznažimo kao Di = EC i − ICi . Na sličan način
definišimo EC j , IC j i D j za svaki čvor v j ∈ V2 .
Neka ci , j predstavlja broj potega između vi i v j . Za bilo koja dva čvora vi ∈ V1 i v j ∈ V2
definišimo dobit (gain) od međusobne razmene vi i vj kao:
110
Neka ci , j ima uticaj na obe spoljne (eksterne) cene EC i i EC j . Nakon međusobne razmene vi
i v j , doprinos ovih potega na spoljnu cenu ostaje isti. Na primer, eksterna i interna cena od vi sa
slike 6.6 (a) su 2 i 0, respektivno. Za poteg v j , imamo da je EC j = 3 i IC j = 0 . To znači da je
Di = 2 , a D j = 3 . Pošto ne postoji veza između vi i v j , ci , j je jednaka 1. Dobit međusobne
razmene između vi i v j iznosi 2 + 3 − 2 = 3 . Shodno tome, nakon međusobne razmene između vi i
v j , ukupni broj veza između V1 i V2 se redukuje na tri (vidi sliku 6.6 (b)).
Slika 6.6: Redukcija međusobne-sprege međusobnom razmenom čvorova: (a) pre međusobne
razmene vi i vj; (b) nakon međusobne razmene vi i vj
k
GAIN (k ) = ∑ gaini (6.4)
i =1
111
Algoritam 6-3: Particija minimalnog preseka
U suštini algoritam međusobno razmenjuje mesta prvih k parova čvorova za koji je GAIN (k )
maksimalan. Ako je za sve k ,GAIN (k ) jednak ili manji od nule rad algoritma se zaustavlja. Na
primer, sekvenca dobiti za graf sa 20 čvorova neka bude kao na slici 6.7. Međusobnom razmenom
prvog prvog para čvorova, ukupna dobit je 10. Međusobnom razmenom prvog i drugog para
čvorova, ukupni dobit je 20 za k = 5 . To znači da će algoritam međusobno razmeniti prva pet para,
i pored toga što prve tri međusobne-izmene generišu negativnu dobit, a prve četiri izmene ne
generišu dobit.
112
Slika 6.7: Strategija pretraživanja kod minimalnog preseka
Neka G = (V , E ) predstavlja graf sa 2n čvorova. Polje Locked čuva vrednost 0 ako je čvor
dostupan za međusobnu razmenu, a vrednost 1 ako je čvor zabranjen (locked). Procedura
CLUSTERGROWTH (G , n ) selektuje podgraf obima n . Procedura EXCHANGE (V1 ,V2 , vi , v j )
međusobno razmenjuje čvorove vi ∈ V1 i v j ∈ V 2 iz oba subgrafa G1 i G 2 , respektivno. Polje
gain pamti dobit svakog para čvorova, a polje max 1 i max 2 čuvaju indekse ovih čvorova. Polje
GAIN memoriše akumuliranu dobit za sekvencu od n međusobnih-izmena. Promenljive bestk i
bestGAIN memorišu indeks i vrednost meksimalno akumulirane dobiti, respektivno.
( )
Kompleksnost predloženog algoritma je O n 2 log n , gde je n broj čvorova.
Δc
−
F (Δc, T ) = min(1, e T
). (6.5)
gde je Δ c negativna vrednost (tj. nova particija je bolja od stare), F vraća vrednost 1; inače,
ona vraća vrednost u opsegu od [0 ,1] . Funkcija RANDOM vraća proizvoljnu vrednost u opsegu od
[0 ,1] . Zbog toga, ako Snew je bolja od Sold, ono se definitivno prihvata, inače se prihvata sa
113
verovatnoćom određenom od strane Δ c , T i slučajnog broja. S obzirom da su slučajni brojevi
iuniformno distribuirani, stopa prihvatanja je inverzno proporcionalna sa T . Parametar T se naziva
temperatura očvršćavanja. Ona je visoka na početku procesa očvršćavanja, a niska na kraju. Ona se
može ažurirati od strane funkcije UPDATE na mnogo različitih načina; za 0 < α < 1 jednostavna i
praktična formula za određivanje temperature je
T = initial_temperature;
Sold = initial_partition;
cold = cost (Sold);
while "stopping criterion" is not satisfied do
while "inner loop criterion" is not satisfied do
Snew = GENERATE (Sold);
cnew = cost (Snew);
∆c = cnew – cold;
x = F(∆c, T);
r = RANDOM (0,1);
if r<x then
Sold = Snew;
cold = cnew;
endif
endwhile
T = UPDATE(T);
endwhile
Na primer, ako je cena bit-slice oduzimača ili sabirača 6 gejtova, a cena kombinovanog bit-
slice sabirača/oduzimača je 8 gejtova, tada funkcionalna srodnost sabirača i oduzimača,
fp (t ,− ) = (6 + 6 − 8) 8 = 0.5 .
115
Komunikaciona srodnost dva operatora se može definisati na sličan način. Neka cconn (oi ,o j ) i
tconn (oi ,o j ) predstavlja broj zajedničkih i ukupnih veza operacija oi i o j . Komunikaciona bliskost
se definiše kao
cconn (oi , o j )
Cp (oi , o j ) = (6.8)
tconn (oi , o j )
Tako na primer, ako operator sabiranja i operator oduzimanja imaju jedan zajednički ulaz tada
cconn (+,− ) = 1 , tconn (+,− ) = 6 i Cp (+,− ) = 1 6 .
Metrika srodnosti koja se koristi kod operacija grupisanja definiše razmak između svakog para
operacija tako da su dve operacije na kratko rastojanje jedna od druge ako postoji prednost da dele
istu jedinicu, dok ako je njihovo međusobmo rastojanje veliko postoji mala prednost da budu
zajedno. Uočimo da grupisanje sličnih operacija u jednu jedinicu smanjuje potencijalni paralelizam,
a time se najverovatnije povećava vreme izvršenja behavioral opisa. Nešto preciznije, rastojanje
između dve operacije oi i o j se definiše kao ponderisana suma i zadata je kao
116
Slika 6.8: Primer grupisanja: (a) dvo-grupna particija; (b) tro-grupna particija
BUD koristi hijerarhijski metod grupisanja. Na početku pretraživanja za svake dve operacije
oi i o j izračunava se rastojanje dist (oi , o j ) . Nakon toga se formira hijerarhijsko stablo grupisanja
na osnovu izračunatih rastojanja. Kod ovog stabla, listovi predstavljaju operacije koje se grupišu, a
broj ne-listnih čvorova između dva lisna čvora definiše relativno rastojanje između ove dve
operacije.
Grupno-stablo usmerava pretraživanje u dizajn prostoru. Niz različitih modul (tj. funkcionalnih
jedinica) setova se generišu počev sa linijom preseka pri koraku i premeštanjem linije-preseka ka
listovima. Bilo koji presek duž stabla deli stablo na skup podstabala, pri čemu svako predstavlja
grupu (cluster). Za svaku liniju preseka formira se različiti modul set, a nakon toga se avaluira
rezultujući dizajn. To znači, da prvi dizajn ima sve operacije u istu grupu, deleći istu čvrsto
spregnutu stazu podataka. Kod drugog preseka imamo dve grupe između kojih postoji veće
rastojanje itd. Proces se nastavlja sve dok kriterijum o stopiranju, kakav je nedostatak poboljšanja
dizajna za unapred određen broj skupova modula se ne dostigne.
Svaki put kada se novi skup jedinica selektuje, procenjuje se dizajn. Prvo funkcionalne jedinice
potrebne za izvršenje svih operacija u svakoj grupi se dodeljuje dizajn. Nakon toga, sve operacije se
planiraju radi izvršenja u upravljačkim koracima. Nakon što je planiranje izvršenja završeno,
vremena života svih vrednosti se izračunavaju i maksimalan broj bitova potreban za memorisanje
ovih vrednosti između bilo koja dva upravljačka koraka se određuje. Broj međuveza između svakog
para grupe se takođe određuje. Sa ovom informacijom, broj i obim registara, multipleksera i žica u
okviru svake grupe je poznat tako da dužina, širina i površina svake grupe se može proceniti.
Aproksimirajući floorplanner zasnovan na algoritmu particije tipa maksimalni presek se koristi sa
ciljem da proceni ukupnu površinu čipa. U/I stopice se postavljaju po ivicama čipa za potrebe
globalne promenljive definisane behavioral opisom ili za bilo koju off-chip memoriju. Konačno,
kašnjenje u stazi podataka kao i taktna frekvencija se procenjuju. Ukupna površina i vreme trajanja
taktne pobude se koriste za kompariranje dizajna sa drugim koja su bila uzeta u obzir kod
pretraživanja.
U jednostavnom primeru na slici 6.8 (a), operacije se dele na dve grupe, G1 = {o1 , o 2 } i
G2 = {o3 } . Grupe G1 i G 2 se preslikavaju u sabirač add1 i množač mult1 respektivno, sa dve
magistrale predstavljene potezima e13 i e23 koje povezuju ova dva bloka. Dizajn sa slike 6.8 (a)
zahteva tri taktna intervala za izvršenje triju operacija. Slika 6.8 (b) prikazuje drugačiju particiju
istog dizajna. Ovu operaciju čine tri grupe, G1 = {o1 }, G1 = {o 2 } i G1 = {o3 } i zahteva dva taktna
intervala za izvršenje.
117
Slika 6.9: Control clustering
Ideje BUD-a su proširene kod APARTY, tako da arhitekturni particioner može da izabere
strategiju particije koja se odnosi na behavioral u zavisnosti od sledećih pet različitih klastering
kriterijuma: control clustering, data clustering, procedure/control clustering, procedure/data
clustering, operator clustering.
Control clustering pokušava da zajedno grupiše operatore u duge control thread-ove sa ciljem
da redukuje broj puta kroz koje za dati opis kontrola (upravljanje) između klastera prolazi.
Razmatrajmo o4 i o5 sa slike 6.9, koja predstavljaju dva operatora koji se izvršavaju u istoj
kontrolnoj (upravljačkoj) sekvenci pri čemu između njih ne postoji grananje. Ako se o4 i o5 dodele
dvoma različitim klasterima upravljanje mora da prelazi sa jednog na drugi. To znači da je bolje da
se o4 i o5 dodele istom klasteru.
Data clustering smanjuje broj vrednosti podataka koji se moraju prenositi između klastera
koristeći komunikacionu proximity meru definisanu jednačinom (6.8).
Procedure/control clustering, na sličan način kao i control clustering, minimizira broj puta
prelaska upravljanja između klastera, grupišući pri tome pozivnu i pozvanu proceduru.
Procedure/data clustering zajedno grupiše procedurne pozive sa ciljem da minimizira broj
komunikacionih kanala u dizajnu.
Operator clustering smanjuje cenu dizajna zajedničkim grupisanjem sličnih operanada.
Mera sličnosti kombinuje mere funkcionalne proximity i konkurentnosti definisane
jednačinama (6.7) i (6.9).
APARTY ne kombinuje sve klastering kriterijume u jedinstvenu meru. Umesto toga koristi se
višestepeni klastering algoritam koji razdvaja klustering kriterijume. Višestepeni algoritam
obezbeđuje bolje pretraživanje prostora projektovanja s obzirom da se različiti kriterijumi
primenjuju u različitim trenucima. Kod višestepenog klasteringa postoji nekoliko klastering
stepena, pri čemu svaki stepen ima svoj sopstveni kriterijum. Kod svakog stepena, kreira se
kompletno stablo klastera. Nakon toga bira se linija preseka na nekom nivou stabla, pri čemu svako
podstablo koje je ispod linije preseka postaje element koji treba uzeti u obzir kod klasteringa u
narednom stepenu. Kompletno stablo se gradi na nivou svakog stepena pošto ono omogućava da se
različite linije preseka mogu evaluirati i omogućava da se izabere najbolja linija preseka. Linije
preseka se mogu automatski birati u saglasnosti sa jednim od sledeća tri fizička kriterijuma:
površina, povezljivost i dužina planiranja izvršenja. Bilo koji od kriterijuma se može izabrati kao
osnova za izbor linije preseka kod bilo kog stepena.
118
Slika 6.10 Mogući particioni skriptovi kod APARTY
Klastering stepeni i kriterijumi po liniji preseka se mogu zamisliti kao gradivni blokovi za
različita particionisanja koji generišu različite stilove particije a shodno tome i različite stilove
dizajna. Svi blokovi kod APARTY particionera su prikazani na slici 6.10. Korisnik predaje skript sa
fizičkim ograničenjima dizajna, kakve su mere o površini, procene operacija, procene izbora, pri
čemu se za svaki stepen koristi određeni tip klasteringa i kriterijum za liniju preseka. Rezultujuće
particione šeme se koriste za generisanje struktura koje mogu biti od koristi drugim sredstvima za
projektovanje u procesu sinteze.
120
Slika 6.11:
121
Slika 6.12:
Ako se particija sprovede na nivou behavioral opisa a ne na CDFG ili strukturnom nivou tada
ćemo imati nekoliko prednosti. Kao prvo rezultujući particioni opis sadrži objekte sa kojima je
projektant upoznat još od početnog opisa. Na ovaj način se pojednostavljuje pisanje test oblika za
funkconalno testiranje svake particije. Kao drugo, mali broj poznatih oblika podstiče projektanta,
pre svega u procesu manuelnog grupisanja opisa kao i soriviđenju dopuna o odlukama o particiji.
Naglasimo da mašinu telefonsku sekretaricu karakteriše više od 1500 čvorova kada se koristi CDFG
prezentacija. Ovo je suviše veliki broj stanja za projektanta ako on treba da obavi manuelnu
particiju. Kao treće ponašanje se može modifikovati da se učini komunikacion kompromis nakon
što je particija poznata. Tako na primer, moguće je spojiti adresnu magistralu podataka kada se vrši
pristup memoriji, zatim da se obavi odgovarajuća modifikacija protokola, i na kraju izvrši
reparticiju redosleda sa ciljem da se smanji broj pinova po cenu sporijeg pristupa memoriji. Kao
četvrto u centru pažnje je da se analiziraju performanse kada se koristi veći broj procesa kao i
interprocesorska komunikacija, a ne da se razmatra ulazno-izlazno kašnjenje kod DFG-a. Konačno,
naglasimo da sistemi koji polaze od izvornog DFG-a kao ulaza su u velikoj meri ograničeni.
Najveći broj sistema mora biti opisan pomoću control i data operacija kod kojih kako opisni nivo
tako i CDFG nivo particionisanja moraju da se primene.
Particionisanje koristeći behavioral opis je korisno u slučajevima kada se testabilnosti,
interakciji sa projektantom, komunikacionim kompromisima (uključujući broj pinova), i ukupnim
sistemskim performansama dodeljuje najviši prioritet u fazi projektovanja. Nažalost, jedno od
ograničenja je to da je obim razmatranih objekata za particiju u značajnoj meri određen načinom na
koji je kreiran početni opis. Na primer, ako se ukupni opisa sastoji od samo jedne velike procedure,
tada se ne može izvršiti particja bez ponovnog pisanja koje će se sastojati u deobi procedure na
manje procedure. Nasuprot tome, CDFG pristupi mogu da dekomponuju ponašanje do nivoa
granularnosti operacija, mada i oni ne mogu da lako izvrše particiju upravljanja. Drugo ograničenje
se odnosi na to kako behavioral tako i CDFG particija vrše procenu površine i performansi sa
manjom tačnošću u odnosu na tačnost koju procenjuje particija na strukturnom nivou, jer se u ovom
slučaju čine pretpostavke koje se odnose kako na planiranje izvršenja tako i na alokaciju resursa.
Ako ograničenja koja se odnose na obim objekata i procenu tačnosti predstavljaju problem za dati
primer, behavioral particija može u određenoj meri da obezbedi grubu inicijalnu particiju, koja se
kasnije može poboljšati uz pomoć CDFG ili strukturne particije.
122
Poglavlje 7
Behavioral specificira sekvencu izvršenja koju treba obaviti od strane sintetizovanog hardvera.
Obično se behavioral opis kompajlira u internu prezentaciju podataka kakva je CDFG, koja
obuhvata sve upravljačke zavisnosti kao i zavisnosti po podacima zadatog behavioral opisa.
Algoritmi za planiranje izvršenja (scheduling algorithms -ShA) zatim dele ovaj CDFG na
podgrafove tako da se svaki podgraf izvršava u jedan upravljački korak. Svaki upravljački korak
odgovara jednom stanju FSMD modela.
U okviru upravljačkog koraka, za izvršenje svake operacije dodeljene tom koraku, potrebna je
posebna funkcionalna jedinica (functional unit - FU). To znači da je ukupan broj FU-ova potreban
u tom upravljačkom koraku direktno srazmeran broju operacija koje su planirane za izvršenje. Ako
se u svakom koraku planira za izvršenje veći broj operacija, tada je neophodan veći broj
funkcionalnih jedinica, a to rezultira implementaciji većeg broja upravljačkih koraka. Sa druge
strane, ako se po nekoliko operacija planira za izvršenje u svakom upravljačkom koraku, tada je
potreban i veći broj funkcionalnih jedinica, ali takođe je potreban i veći broj upravljačkih koraka.
Planiranje izvršenja (scheduling - ScH) je važan zadatak kod HLS-a jer utiće na kompromis
između cene dizajna i performanse.
Različite HDL-ove konstrukcije imaju različit uticaj na ShA-ove. Bahavioral opisi koji sadrže
Conditional kao i Loop konstrukcije zahtevaju složenije tehnike za ScH jer se moraju razrešiti
zavisnosti koje postoje u okviru granica Branch i Loop instrukcija.
Zadaci za ScH kao i dodela (allocation) jedinica su usko povezani. Veoma je teško
karakterizirati kvalitet ShA-a bez da se razmotre efekti algoritma koji obavljaju tu dodelu.
U daljem tekstu ukazaćemo na osnovne probleme koji su svojstveni algoritmima za ShA.
Ova ograničenja, kasnije, kada se budu razmatrali realniji sistemi neće biti tako stroga.
Definisaćemo dva ciljna problema ScH, koji će važiti za biblioteku FU-ova sa poznatim
karakteristikama (kakve su površina, kašnjenje, disipacija), i dužinu (trajanje) upravljačkog koraka.
Kao prvo, može se minimizirati broj funkcionalnih jedinica za fiksni broj upravljačkih koraka. Ovaj
pristup nazivamo fiksiran-upravljački-korak (fixed-control-step), vremensko-ograničeno ScH
123
(time constrained scheduling). Kao drugo, može za datu cenu da se minimizira broj upravljačkih
koraka, pri čemu se cena projektovanja meri u funkciji broja FU-ova, broja memorijskih jedinica,
broja dvo-ulaznih NAND kola, ili površine lay-out-a čipa. Ovaj pristup koji je prvenstveno
namenjen minimizaciji cene naziva se ScH ograničeno po resursima (resource-constrained
scheduling).
Sa ciljem da se razumeju ShA-ovi koji će biti objašnjeni u daljem tekstu, uvešćemo nekoliko
definicija.
DFG (data flow graph) je usmeren aciklični graf G(V,E), kod koga V predstavlja skup
čvorova, a E skup potega. Svaki vi ∈ V predstavlja operaciju ( oi ) u behavioral opisu. Usmereni
poteg ei , j od vi ∈ V postoji u E, ako podatak generisan od strane operacije oi (predstavljen sa vi )
se troši od strane operacije o j (predstavljen sa v j ). U ovom slučaju mi kažemo da je vi neposredni
prethodnik od v j . Slično v j je neposredni naslednik od vi . Succ vi označava skup neposrednih
naslednika od vi . Svaka operacija oi se može izvršiti za Di upravljačkih koraka. S obzirom da
usvajamo da je svakoj operaciji potreban za izvršenje samo jedan korak, vrednost Di iznosi 1 za
svaku od oi .
Ilustrovaćemo pomenute definicije koristeći primer nazvan HAL. Na slici 7.1 (a) prikazan je
HLL-ov tekstualni opis, a na slici 7.1 (b) njegov DFG koji se sastoji od 11
čvorova, V = {v1 ,v 2 , … ,v n } i 8 potega E = {e1,5 , e2 ,5 ,e5 ,7 ,e7 ,8 , e3 ,6 , e6 ,8 ,e4 ,9 ,e10 ,11 }.
DFG ispoljava paralelizam u dizajnu. Shodno tome, svaki DFG čvor poseduje određenu
fleksibilnost koja se ogleda u tome u kom stanju će čvor biti određen za ScH. Veliki broj ShA-ova
se baziraju na najranijim ili najkasnijim granicama (vremenskim trenucima) u okviru kojih oni
mogu biti ScH-ovani. Najranije stanje u kome se čvor može dodeliti tom stanju naziva se ASAP
vrednost. Ova vrednost je određena ASAP-ovim ShA-om i prikazana je odgovarajućim ASAP-
algoritmom 7-1.
124
u dx 3 x u dx x dx
∗ v1 ∗ v2 ∗ +
v4 v10
e 2,5
e1,5 e 4,9
y y
∗ ∗ +
v5 v3 v9 e 10,11
e 5,7 e3,6
u
dx a
- ∗ <
v7 v6 v11
e7,8
e 6,8
- c
v8
125
Algoritam 7-1: ASAP ShA
ASAP ShA dodeljuje ASAP oznaku (tj. indeks upravljačkog-koraka) Ei čvoru vi DFG-a i
planira za izvršenje operaciju vi u što je moguće ranijem upravljačkom koraku S E . Pr edvi
označava sve čvorove DFG-a koji su neposredni prethodnici čvora vi . Funkcija
ALL_NODES_SCHED( Pr ed vi , E ) vraća vrednost True ako su svi čvorovi skupa Pr ed vi , već
ScH-ovani (tj, svi neposredni prethodnici vi -a imaju ne-nultu E oznaku). Funkcija
MAX (Pr ed vi , E ) vraća indeks čvora koji iz skupa prethodnika čvorova za vi ima maksimalnu
vrednost E .
Petlja tipa for u algoritmu 7-1 inicijalizira ASAP vrednost za sve čvorove DFG-a. Ona
dodeljuje čvorove koji nemaju svoje prethodnike stanju S 1 , a ostale čvorove stanju S 0 . U svakoj
iteraciji, petlja tipa while određuje čvorove koji imaju svoje prethodnike koji su već ScH-ovani i
dodeljuje ih najranijem mogućem stanju. S obzirom da smo usvojili da je kašnjenje svih operacija 1,
upravljački korak najranije-moguće-stanje se izračunava na osnovu sledeće jednačine
Ei = MAX (Pr ed vi , E ) + 1 .
Na slici 7.2 (a) prikazani su rezultati ASAP ShA koji se odnose za HAL primer sa slike 7.1.
Operacije o1 ,o2 ,o3 , o4 i o10 su dodeljene upravljačkom koraku S 1 jer nemaju bilo kakve svoje
prethodnike. Operacije o5 ,o6 ,o9 , i o11 su dodeljene upravljačkom koraku S 2 , a operacije o7 i o8
su dodeljene upravljačkim koracima S 3 i S 4 , respektivno.
ALAP vrednost za čvor definiše najkasnije stanje u koje čvor može biti ScH-ovan. ALAP
vrednost se određuje pomoću ShA-a algoritma 7-2. Za zadato vremensko ograničenje od T
upravljačkih koraka algoritam određuje najkasniji mogući upravljački korak u kome operacija može
početi sa izvršenjem. ALAP ShA svakom čvoru vi u DFG-u dodeljuje ALAP oznaku Li , a shodno
tome i operaciju oi , čije planiranje izvršenja treba obaviti, dodeljuje najkasnijem mogućem
upravljačkom koraku S Li . Funkcija ALL_NODES_SCHED( Succvi , L ) vraća vrednost True ako su
svi čvorovi označeni sa Succvi već ScH-ovani (tj, svi neposredni naslednici vi -a imaju oznaku Li
126
različitu od nule). Funkcija MIN (Succvi , L ) vraća indeks čvora sa minimalnom vrednošću L , kao i
skup čvorova naslednika čvora vi .
Kod for petlje, u algoritmu 7-2, inicijalizacija ALAP vrednosti se vrši za sve čvorove DFG-a.
Inicijalizacija dodeljuje čvorove koji nemaju svoje naslednike najkasnijem mogućem stanju, a
ostale čvorove stanju S 0 . U svakoj iteraciji, petlja while određuje prvo čvorove koji imaju sve svoje
naslednike već ScH-ovane pa ih zatim dodeljuje najkasnijem mogućem stanju.
Slika 7.2: HAL primer: (a) ASAP ScH; (b) ALAP ScH
Na slici 7.2 (b) prikazani su rezultati ALAP ShA-a (za T = 4 ) koji važe za HAL primer sa slike
7.1. Operacije o8 ,o9 i o11 su dodeljene zadnjem upravljačkom koraku S 4 , s obzirom da nemaju
svoje naslednike. Operacije o4 ,o6 ,o7 i o10 su dodeljene upravljačkom koraku S 3 , a operacije o3 i
127
o5 su dodeljene upravljačkom koraku S 2 . Ostale operacije o1 i o 2 su dodeljene upravljačkom
koraku S1 .
Na osnovu konačnog plana-izvršenja, lako je odrediti broj FU-ova potreban za implementaciju
dizajna. Maksimalni broj operacija u bilo kom stanju pokazije na broj FU-ova za taj pojedini tip
operacije. Kod ASAP ScH-a (slika 7.2 (a)) maksimalan broj operacija množenja koji je ScH-ovan u
bilo kom od koraka je četiri (stanje S1 ). To znači da su potrebna četiri množača. Pored toga, ASAP
ScH takođe zahteva sabirač/oduzimač i komparator. Sa druge strane, kod ALAP ScH-a (slika 7.2
(b)), maksimalan broj operacija množenja koji je ScH-ovan u bilo kom upravljačkom koraku je dva
(stanja S1 , S 2 i S 3 ). To znači da su dovoljna dva množača. Pored toga ALAP-ovo ScH zahteva
sabirač, oduzimač i komparator.
128
1 2 3 4 5 6 7 8 9 10 11
v1 v2
s1 s1 ∗ ∗
s2 s2 ∗ v5 ∗ v3 + v10
s3 s3 - v7 ∗ v6
∗ v4
v9 v11
s4 s4 - v8 + <
∑ (C )
m
min imize tk × N tk (7.1)
k =1
pod pretpostavkama,
⎛ ⎞
∀ i, 1 ≤ i ≤ n , ⎜⎜ ∑ xi , j = 1⎟⎟ (7.2)
⎝ Ei ≤ j ≤ Li ⎠
⎛ ⎞
∀ j ,1 ≤ j ≤ r , ∀ k ,1 ≤ k ≤ m ,⎜ ∑ x i , j ≤ N tk ⎟ (7.3)
⎜ i∈INDEX t ⎟
⎝ k ⎠
i
⎛ ⎞
∀ i , j , oi ∈ Pr ed o j ⎜⎜ ∑ (k × xi ,k ) − ∑ (l × x j ,l )⎟⎟ (7.4)
⎝ Ei ≤ k ≤ Li Ei ≤ l ≤ Li ⎠
129
Ciljna funkcija (7.1) minimizira ukupnu cenu koja se odnosi na potreban broj funkcionalnih
jedinica. Uslov (7.2) zahteva da svaka operacija oi bude ScH-avana u jedan i samo jedan
upravljački korak ne ranije od Ei i ne kasnije od Li . Uslov (7.3) obezbeđuje da upravljački korak
sadrži više od jedne opercije N tk tipa t k . Konačno, uslov (7.4) garantuje da za operacije o j , svi
njegovi prethodnici (tj. Pr ed o j ) su ScH-aovani u ranijem upravljačkom koraku. Drugim rečim, ako
je xi ,k = x j ,l = 1 tada je k < 1 .
Iskoristimo sada DFG sa slike 7.1 b) da bi ilustrovali ILP formulaciju za ScH-ovanje
flowgraph-a u četiri upravljačka koraka. Pošto DFG sadrži četiri različita tipa operacija ( tj.
množenje, sabiranje, oduzimanje i kompariranje), potrebna su nam, iz biblioteke, četiri tipa
funkcionalnih jedinica. Neka C m ,C a ,C s i C c predstavljaju cene množača, sabirača, oduzimača i
komparatora respektivno. Neka N m , N a , N s i N c predstavlja broj množača, sabirača, oduzimača i
komparatora koji je potreban u konačnom ScH. ILP formulacija ScH-a za DFG sa slike 7.1 b) u
četiri upravljačka koraka je:
za koju važi
x1,1 = 1
x 2 ,1 = 1
x3 ,1 + x 3 ,2 = 1
x4 ,1 + x 4 ,2 + x 4 ,3 = 1
x5 ,2 = 1
x6 ,2 + x6 ,3 = 1
x7 ,3 = 1
x8 ,4 = 1
x9 ,2 + x9 ,3 + x9 ,4 = 1
x10 ,1 + x10 ,2 + x10 ,3 = 1
x11,2 + x11,3 + x11,4 = 1
x1,1 + x 2 ,1 + x 3 ,1 + x 4 ,1 ≤ N m
x3 ,2 + x4 ,2 + x 5 ,2 + x6 ,2 ≤ N m
x4 ,3 + x6 ,3 ≤ N m
x7 ,3 ≤ N s
x8 ,4 ≤ N s
x10 ,1 ≤ N a
130
x9 ,2 + x10 ,2 ≤ N a
x9 ,3 + x10 ,3 ≤ N a
x9 ,4 ≤ N a
x11,2 ≤ N c
x11,3 ≤ N c
x11,4 ≤ N c
1x3 ,1 + 2 x 3 ,2 − 2 x6 ,2 − 3 x6 ,3 ≤ −1
1x4 ,1 + 2 x4 ,2 + 3 x4 ,3 − 2 x9 ,2 − 3 x 9 ,3 − 4 x 9 ,4 ≤ −1
1x10 ,1 + 2 x10 ,2 + 3 x10 ,3 − 2 x11,2 − 3 x11,3 − 4 x11,4 ≤ −1
131
za dato stanje s j , tako da važi Ei ≤ j ≤ Li , verovatnoća da će operacija oi biti planirana za
izvršenje u tom stanju biti data sledećm relacijomo p j = 1 (Li − Ei + 1) .
Mi ćemo ilustrovati verovatnoće ovih izračunavanja koristeći prime HAL sa slike 7.1, sa ASAP
(Ei) i ALAP (Li) vrednosti koje se koriste u izračunavanju na slici 7.2. Verovatnoća operacije za
dati primer prikazana je na slici 7.4 (a). Operacije o1 , o 2 , o5 , o7 i o8 imaju vrednost verovatnoće 1
koja se odnosi na ScH-ovanje u koracima s1 , s 2 , s3 i s 4 respektivno pošto je vrednost s Ei jednaka
s Li , tj. vrednosti ovih operacija. Širina pravougaonika na slici 7.4 odgovara verovatnoći
(1 Li − Ei + 1) da će se operacija ScH-ovati u odgovarajućem upravljačkom koraku. Tako na primer,
operacija o3 ima verovatnoću 0.5 jer se može dodeliti kako s1 tako i s 2 . Zbog toga, vrednost
p1 (o3 ) = p 2 (o3 ) = 0.5 .
Skup grafova distribucije verovatnoće (tj. bar grafovi) kreiraju se na osnovu vrednosti
verovatnoće svake operacije pri čemu se konstruiše posebni bar graf za svaki tip operacije. Bar graf
za pojedini tip operacije (na primer množenje) predstavlja očekivanu operator cenu (EOC) u
svakom stanju. EOC u stanju sj za operaciju tipa k je zadata kao
EOC j ,k = ck ∗ ∑ i ,s j ∈ mrange (oi ) p j (oi ) , gde je oi operacija tipa k , a c k je cena FU koja obavlja
operaciju tipa k . Slika 7.4 b) odgovara bar grafu EOC-ova za operaciju množenja u svakom
upravljačkom koraku. Mi možemo da izračunamo vrednost za EOC1 , multiplication kao
c multiplication × ( p1 (o1 ) + p1 (o2 ) + p1 (o3 ) + p1 (o4 )) , koja je c k × (1.0 + 1.0 + 0.5 + 0.33) ili 2.83 × c k .
Saglasno tome bar graf u stanju 1 za operaciju množenja ima vrednost EOC od 2.83.
Bar graf sa slike 7.4 (b) prikazuje da EOC za množenje u sva četiri stanja ima vrednost
2.83, 2.33, 0.83 i 0,0 respektivno. Sobzirom da se FU mogu deliti tokom stanja, maksimalna
vrednost EOC u toku svih stanja predstavlja merilo ukupne cene implementacije svih operacija tog
tipa. Bar grafovi slični kao na slici 7.4 (b) se konstruišu za sve ostale tipove operacija.
132
Slika 7.4: Force-directed ScH primer: a) verovatnoća ScH-aovanih operacija u upravljičkim
koracima; b) cena operatora za množenje u a); c) verovatnoća ScH-ovanja operacija upravljačkim
koracima nakon što je operacija o3 ScHi-aovana u koraku s2; d) cena operatora za množenje u c)
Sobzirom da je glavni cilj FDS algoritma da ostvari efikasnu deobu FU tokom svih stanja, on
pokušava da balansira EOC vrednost za svaki tip operacija. Algoritam 7-3 opisuje metod za
ostvarivanje uniformne vrednosti EOC-ova.
133
Algoritam 7-3: Force-Directed Scheduling
U toku izvršenja algoritma, S current označava najskoriji parcijalni ScH. S work predstavlja kopiju
ScH-a na koje su privremene ScH dodele ostvarene. U toku svake iteracije, promenljive BestOp i
BestStep čuvaju najbolju operaciju za ScH-aovanje i najbolji upravljački korak za ScH-aovanje te
operacije. Kada se za datu iteraciju odrede BestOp i BestStep, Scurrent ScH se menja pomoću funkcije
SCHEDULE_OP (Scurrent, oi, sj) koja predaje novi ScH nakon ScH-ovanja operacije oi u stanju s j
za Scurrent. ScH-ovanje pojedine operacije u odgovarajućem koraku ima uticaj na vrednostima
verovatnoća drugih operacija zbog zavisnosti po podacima. Funkcija ADJUST_DISTRIBUTION
analizira skup potega i određuje distribuciju verovatnoća svih čvorova u grafu tipa prethodnik i
naslednik. FDS algoritam je prikazan na slici 7.3.
Funkcija COST(S) procenjuje cenu iomplementacije pojedinog ScH-a S zasnovano na bilo
kojoj zadatoj ceni funkcije. Cena funkcije se formira dodavanjem EOC vrednosti za svaki tip
operacije kao što je dato relacijom (7.6).
134
minimalnom EOC-u za množenje, jer Max(Pj ) se smanjuje sa 2.83 na 2.33. Ova dodela se prihvata.
Kada se operacija o3 dodeli upravljačkom koraku s 2 vrednosti verovatnoća za operaciju o6 takođe
se menjaju kao što je prikazano na slici 7.4 (c). Operacija o3 se više nikad ne premešta dok iteracije
za ScH koje se odnose na ostale neScH-aovane operacije se produžavaju. U toku svake iteracije
FDS algoritma, po jedna operacija se dodeljuje tom upravljačkom koraku na osnovu minimalne
EOC. Ako postoje dve moguće dodele u upravljačkim koracima koji imaju bliske ili identične
operator cene, tada predloženi algoritam ne može dobro da proceni najbolji izbor dodele.
Slika 7.5: Replaniranje: (a) inicijalni plan kod koga se tri operacije mogu pomeriti u 5 kontrolnih
koraka (isprekidane strelice), (b) nakon što je operacija 6 pomerena i zaključana
135
Algoritam 7-4: Iterativno replaniranje
Kod iterativnog algoritma replaniranja (prikazan kao algoritam 7-4), promenljiva Scurrent čuva
najskorije ažuriranu kopiju plana. Smov i Swork su privremene verzije plana izvršenja koje se koriste
za evaluaciju (procenu) različitih opcija replaniranja. Funkcija SCHEDULE_OP (Swork, oi, sj)
predaje novi plan nakon izvršenja operacije oi u stanju sj u Swork. Funkcija COST(S) izračunava
cenu pojedinog plana izvršenja. Ova cena se određuje na osnovu jednačine 7.6. Skup UnlockOps
predstavlja skup čvorova koji u pojedinoj iteraciji ostaje nezaključan pa shodno tome se u budućim
iteracijama može ponovo replanirati za izvršenje. Polje O[m] sadrži sekvencu operacija koje se
kopiraju (premeštaju) u svakoj iteraciji dok polje S[m]sadrži stanja u kome svaka operacija O[m]
treba da se kopira ili premesti. Funkcija MAX_CUM_GAIN analizira polje G[m] i predaje
maksimalno mogući kumulativni dobitak. Promenljiva MaxGain_index čuva broj kopiranja koji je
potreban da bi se ostvario maksimalni kumulativni dobitak.
Petlja while u algoritmu određuje niz najboljih mogućih kopiranja dok sve operacije ne postanu
zaključane. Najveći dobitak za svako kopiranje se memoriše u polju G[m]. Ove funkcije
MAX_CUM_GAIN i MAX_CUM_GAIN_INDEX analiziraju polje G[m] i izdvajaju subsekvence
kopiranja koje daju najveći kumulativni dobitak. Plan izvršenja Scurrent se zatim menja da bi odrazio
uvedene modifikacije koje su izvedene od strane pomenutih kopiranja.
Predložen algoritam nazvan KL se pokazao kao veoma koristan u domenu fizičkog dizajna.
Njegova korisnost kod planiranja izvršenja se može povećati inkorporiranjem određenih
poboljšanja koja su predložena za graf biparticioni problem. Na dva od njih ukažimo nešto
detaljnije.
1. Prvo poboljšanje je po prirodi probabilističko i koristi činjenicu da je kvalitet rezultata
generisan od strane KL metoda u velikoj meri zavisan od inicijalnog rešenja. S obzirom da
136
je algoritam sa aspekta vremena izračunavanja brz, moguće je ovaj algoritam izvršavati
veći broj puta, pri čemu svaki put koristiti različita inicijalna rešenja a na kraju se odlučiti
za najbolje.
2. Drugo poboljšanje naziva se lookahead šema i ona se bazira na znatno sofisticiranijoj
strategiji selekcije kopiranja. Umesto da procenjuje dobitak kopiranja algoritam unapred
sagledava i procenjuje tekuće kopiranje na osnovu mogućih budućih kopiranja. Dubina
lookahead-a određuje kompromis između vremena izračunavanja i kvaliteta dizajna: dublji
lookahead dovodi do tačnije selekcije kopiranja ali veće cene izračunavanja (duže vreme).
137
skup čvorova, V i određuje da li su bilo koje od operacija u skupu spremne (tj. da li su svi
prethodnici ScH-ovani), odstranjuje svaki spreman čvor iz skupa V i pridružuje ga jednoj od listi
prioriteta na osnovu tipa operacija. Funkcija SCHEDULE _ OP (Scurrent, oi, sj ) vraća novi ScH
nakon ScH-ovanje operacije oi u upravljačkom koraku sj . Funkcija
DELETE (Plistk, oi ) odstranjuje označenu operaciju oi iz specificirane liste.
Inicijalno, svi čvorovi koji nemaju svoje prethodnike ubacuju se u odgovarajuću listu prioriteta
pomoću funkcije INSERT_READY_OPS, na osnovu prioriteta funkcija. Petlja while izvlači
operacije iz svake liste prioriteta i ScH-auje ih u tekući korak sve dok se ne iskoriste svi resursi u
tom koraku. ScH-ovanje operatora u tekućem koraku čini da druge operacije naslednici postanu
spremni. Ove spremne operacije se ScH-uju u toku narednih iteracije petlje. Iteracije produžavaju
sve dok se ne istprazne liste prioriteta.
Ilustrovaćemo List ScH proces na primeru sa slike 7.6. Pretpostavimo da su kao resursi
dostupna dva množača, jedan sabirač, jedan oduzimač i jedan komparator (vidi sliku 7.6 (c)). Svaka
operacija oi u DFG sa slike 7.6 (a) je označena odgovarajućim opsegom mobilnošću (tj.
mrange(oi)). Čvorovi koji imaju nižu mobilnost moraju biti ScH-ovani kao prvi usled toga što
kašnjenje zbog njihovih dodela u upravljačkom koraku povećava verovatnoću da se ScH produži.
Saglasno tome, vrednost mobilnosti predstavlja dobru funkciju prioriteta. Za svaki operator tip,
kreira se lista prioriteta (vidi sliku 7.6 (b)) kod koje je prioritet zadan spremnim čvorovima čija je
mobilnost manja. Ako dve operacije imaju istu mobilnost, tada ona sa manjim indeksom imaće veći
prioritet.
U toku prve iteracije, kada su spremne operacije ScH-ovane u upravljačkom koraku s1, postoje
pet spremnih operacija: o1, o 2, o 3, o 4 i o10 . Operacija o10 , koja jpredstavlja samo operaciju
sabiranja, se ScH-uje u upravljačkom mkoraku s1 bez da se vodi računa o drugim faktorima.
Sobzirom da postoje samo dva množača, samo dva od četiri spremna množenja biće ScH-ovana u
upravljačkom koraku s1 ; pri tome o1 i o 2 su izabrane za ScH-ovanje pošto one imaju nižu
mobilnost u odnosu na o 3 i o 4 .
Nakon prve iteracije, operacije o1 , o 2 i o10 su ScH-ovane u upravljačkom koraku s1 . Za
drugu iteraciju operacije o 5 i o11 se dodaju listi spremnosti sobzirom da ove dve operacije imaju
sve svoje ulazne čvorove ScH-ovane. Lista spremnosti se sortira na osnovu mobilnosti i ceo proces
se iznova ponavlja. Nakon četiri iteracija, sve operacije su ScH-ovane u odgovarajućim
upravljačkim koracima (slika 7.6 (d)).
138
Kao što smo prethodno ukazali, uspeh List-Based ScH , uglavnom zavisi od prioriteta funkcija.
Mobilnost predstavlja dobru funkciju prioriteta jer manja vrednost mobilnosti ukazuje na veću
urgentnost za ScH-ovanje operacije. Mobilnost je jedna od većeg broja prioritetnih funkcija koja je
predložena kao funkcija prioriteta kod List ScH-a. Jedna alternativna prioritetna funkcija koristi
dužinu najdužeg puta od operacije čvor ka čvoru koji nema neposredni naslednik. Ovaj najduži put
je proporcionalan broju dodatnih koraka koji je potreban da se kompletira ScH ako operacija nije
ScH-ovana u tekućem koraku. Zbog toga operaciji koja ima najduži označeni put dodeljuje se
najveći prioritet.
Slika 7.6: List Scheduling: (a) DFG sa označavanjem mobilnosti (unutar <>), (b) lista spremnih
operacija za kontrolno stanje s1, (c) ograničenja resursa, (d) isplanirani DFG.
139
vrednost izabira se proizvoljni redosled. Sortirana lista se održava kao lista prioriteta koja određuje
redolsed u kome će se operacije ScH-ovati.
Slika 7.7: Statički list Sch: (a) DFG, (b) lista prioriteta, (c) parcijalni plan za 5 čvorova,
(d)konačni plan
Na slici 7.7 (a) prikazan je HAL DFG, a na slici 7.7 (b) prikazane su ASAP i ALAP vrednosti
za svaki čvor kao i potpuna lista prioriteta za ovaj primer. Operacije o8, o9 i o11 imaju najniže
ALAP vrednosti koje su 1, pa i zbog toga pripadaju prvim trima slotovima u listi prioriteta. Između
ova tri čvora, o8 ima najveću ASAP u odnosu na o9 i o11. Zbog toga o8 propada slotu sa najnižim
prioritetom. Operacije o9 i o11 imaju iste ASAP i ALAP vrednosti i pridružuju se drugom i trećem
slotu u listi. Operacija o9 proizvoljno se odabira da prethodi operaciji o11. Ostatak liste se formira
na sličan način.
Nakon što je lista prioriteta kreirana, operacije se ScH-uju sekvencijalno počev od zadnje
operacije (sa najvišim prioritetom) u listi. Operacija se ScH-uje što je ranije moguće, što zavisi
samo od broja dostupnih resursa i zavisnosti operatora. To znači da je operacija o2 prva ScH-ovana.
Ona se ScH-uje u prvom upravljačkom koraku jer su dostupna oba množača. Naredna operacije za
ScH-ovanje je o1 i ona se dodeljuje drugom množaču u istom upravljačkom koraku. Operacija o3
ne može biti ScH-ovana iu stanje s1 sobzirom da ne postije dostupni množači, tako da se ona ScH-
uje u stanje s2. Operacija o5 ne može da se ScH-uje u stanje s1 jer je njen ulazni podataka dostupan
samo u stanju s2 tako da se ona ScH-uje u stanjes2. Mada operacije o10 ima niži prioritet u odnosu
na operacije o3 i o5, ona se ScH-uje u upravljačkom koraku s1 jer je sabirač dostupan u stannju s1 ,
a ona ne zavisi od bilo kojih drugih prethodno ScH –ih operacija. Konačni ScH za ovaj primer je
prikazan na slici 7.7 (d).
140
7.3 ScH-ovanje sa relaksiranim pretpostavkama
U prethodnoj sekciji ukazali smo na neke osnovne algoritme za ScH koje koriste
pojednostavljeni skup pretpostavki. Proširićemo sada ScH algoritme tako da oni obuhvate mnogo
realističnije dizajn modele, kakvi su FU-ovi promenljivog vremena izvršenja, multifunkcionalne
jedinice i behavioral opise koji nisu ograničeni na sekvencijalni kôd.
141
Slika 7.8: ScH sa proizvoljnim vremenskim kašnjenjem: (a) ScH kod koga svaka operacija se
izvršava u jednom koraku; (b) ScH sa dvociklusnim množačem; (c) ScH sa ulančanim sabiračem i
oduzimačem; (d) ScH sa dvostepenim protočnim množačem
Kao što je poznato, protočnost je jednostavna ali veoma efikasna tehnika za povećanje
paralelizma. Kada se koristi protočna FU, ScH mora da izračuna na jedan drugačiji način zahteve za
korišćenjem resursa. Na primer na slici 7.8 (d) oba množenja mogu da dele isti dvostepeni protočni
množač uprkos činjenici da se obe operacije izvršavaju konkurentno. Ova deoba je moguća jer
svaka operacija množenja koristi različiti stepen protočnog množača. Zbog toga je neophodan samo
jedan protočni množač a ne dva ne-protočna množača.
142
se operacije ScH-ovati u odgovarajuće upravljače korake što će obezbediti deobu FU-ova u
različitim stanjima.
Uslovne kostrukcije
Uslovna konstrukcija analogna je if ili case iskazu u programskim jezicima. Kao rezultat
postoje višestruka grananja koja su uzajmno isključiva. U toku jednog izvršnog puta dizajna, samo
jedna grana će se izvršiti što zavisi od ishoda uslova koji se procenjuje. Slika 7.9 prikazuje segment
behavioral opisa koji sadrži uslovni if iskaz. Nije moguće predstaviti ovo ponašanje pomoću
izvornog DFG-a. Umesto toga, neophodno je uvesti CDFG, tj. flowgraph sa upravljačkim
zavisnostima i zavisnosti po podacima. U konkretnom primeru control flow (tok upravljanja)
određuje izvršenje četiri DFG-a koji su predsavljenji kvadratima na slici 7.9.
Efikasni ScH algoritam deli resurse između uzajmno isključivih operacija. Tako na primer,
samo jednu od dve operacije množenja sa slike 7.9. se izvršava u toku bilo kog trenutka izvršenja
datog behavioral opisa. Zbog toga, ScH algoritam može da ScH-uje obe operacije množenja u
istom upravljačkom koraku, i pored toga što je u svakom koraku dostupan samo jedan množač.
143
Slika 7.10: Planiranje petlji: (a) sekvencijalno izvršenje, (b) parcijalno odmotavanje petlje,
(c)savijanje (folding) petlje
Loop konstrukcije
Behavioral opis ponekad sadrži i konstrukcije tipa loop. Tako na primer, kod filtra za
digitalno signal procesiranje nad svakim uzorkom ulaznog niza podataka skup akcija se repetitivno
ponavlja. Ova repetitivna akcija se modelira korišćenjem loop konstrukcije. Kod ovih opisa,
optimizacija tela loop-a (tela petlje) dovodi do poboljšanja performansi dizajna.
Konstrukcije tipa loop poseduju potencijalni paralelizam koji egzistira između različitih
iteracija petlje. Ovaj paralelizam se može iskoristiti tako što će se nekoliko iteracija iste petlje
izvršavati konkurentno. ScH-ovanje tela petlje (loop) razlikuje se u odnosu na ScH-ovanje serijskog
DFG-a po tome što nema potreba da se razmatra potencijalni paralelizam u toku različitih iteracija
petlje.
Koristićemo sliku 7.10. da bi ilustrovalitri različita načina loop-a. Pretpostavimo da je loop
konačan i da se sastoji od n iteracija ( n=12-slika 7.10). Prvi, najjednostavniji pristup usvaja
sekvencijalno izvršenje loop-a i ScH-uje svaku loop iteraciju u b upravljačkih koraka. Ako se 12
iteracija izvrši sekvencijalno, ukupno vreme izvršenja je 12b kako je to prikazano na slici 7.10 (a).
Ostala dva pristupa koriste paralelizam u okviru loop iteracije.
Drua tehnika se naziva odmotavanje loop-a (loop unrolling) jer se određeni broj loop iteracija
odmotava. Ova akcija rezultira petlji koja ima veće telo petlje, ali manji broj iteracija. Veće telo
petlje (loop body) omogućava veću fleksibilnost kod sažimanja ScH-a. Na slici 7.10 (b) tri iteracije
su razmotane u jedinstvenu super-iteraciju što rezultira postanju četiri super-iteracija. Svaka super-
iteracija se ScH-uje u okviru u upravljačkih koraka. Stoga, ako u<3b, ukupno vreme izvršenja je
manje od 12b upravljačkih koraka.
Treći metod koristi intraloop paralelizam (paralelizam u okviru petlje) koristeći loop folding
tehniku, pomoću koje sukcesivne iteracije loop-a se međusobno preklapaju na protočni način. Slika
7.10 (c) prikazuje petlju čije telo se izvršava za m upravljačkih koraka. Kod loop folding, inicira se
nova iteracija svakih p upravljačkih koraka, gde je p<m, što znači da postoji preklapanje između
sukcesivnih iteracija. Ukupno vreme izvršenja je m+(n-1) * p upravljačkih koraka (vidi sliku 7.10
(c)). Odmotavalnje petlje je primenljivo samo kada je broj izvršenja tela petlje unapred poznat, dok
loop folding je primenljivo na oba slučaja kako na fiksni tako i na neograničeni broj izvršenja tela
petlje.
Da bi ilustrovali sva tri metoda izvršenja loop-a, razmotrićemo DFG koji sadrži veći broj
iteracija. Slika 7.11 (a) prikazuje DFG tela petlje koji sadrži 17 identičnih operacija pri čemu se
svaka operacija izvršava za jedan upravljački korak. Isprekidani potezi ili linije ukazuju da u okviru
granica petlje postoje zavisnosti po podacima. Na primer, poteg od čvora P ka čvoru J ukazuje da
144
rezultat generisan od strane opearcije P u toku jedne iteracije se koristi od strane operacije J za
narednu iteraciju. Mi ćemo ScH-ovati ovaj DFG koristeći tri loop ScH tehnike. Sa ciljem da
procenimo kvalitet rezultujućeg ScH uvešćemo dve performansne mere: iskorišćenje FU-a, tj.
procenat stanja u kojima FU-ovi se koriste za obavljanje neke operacije, i cena upravljanja koja se
meri brojem jedinstveni (po sadržaju) upravljačkih reči u upravljačkoj jedinici.
Na slici 7.11 (b) prikazan je ScH koga čine 6 upravljačkih koraka i koji koristi tri FU-e. S
obzirom da je stazi podataka sa tri FU-ova potrebno najmanje 6 upravljačkih koraka za izvršenje 17
operacija i da je dužina kritičnog puta DFG-a šest, za ovaj plan kažemo da je optimalan. Stepen
iskorišćena FU-e je 17 (3 ∗ 6 ) = 17 18 . Upravljačka cena je šest reči ako usvojimo da je
upraljačkoj jedinici potrebna jedna reč za svaki ScH upravljački korak. Možemo poboljšati
performanse ovog dizajna ako iskoristimo paralelizam u okviru granica petlji.
Slika 7.11: Standardni ScH petlje (loop-a): (a) DFG kod koga postoje zavisnosti u okviru iteracije;
(b) sekvencijalni ScH koji koristi tri FU-e
Slika 7.12 pšrikazuje ScH za primere sa slike 7.11 koji koristi odmotavanje petlje. Dve
iteracije, tj. dve kopije DFG-a, se ScH-uju u devet upravljačkih koraka koristeći četiri FU-e.
Iskorišćenost hardvera ostaje ista: (17*2)/(4*9) = 17/18. Ipak, prosečno vreme koje je potrebno za
izvršenje iteracije se redukuje sa 6 na 9/2 = 4.5 upravljačkih koraka. Cena upravljanja se povećava
sa 6 na 9 upravljačkih reči.
Na slici 7.12 (b) prikazan je ScH za isti primer koji koristi loop folding tehniku. Sukcesivne
iteracije počinju sa njihovim izvršenjemnakon tri upravljačka koraka. Koristi se 6 FU-ova a njihova
stopa iskorišćenja je (5+6+6)/(6*3) = 17/18, i ista je kao u prethodna dva ScH-a. No prosečno
vreme izvršenje iteracije u proseku iznosi tri upravljačka koraka u slučaju kada je broj iterqacija
veliki (kada se zanemare overhead). Cena upravljanja je 9 ( po 3 za svako zaglavlje, telo i rep
petlje).
U kontekstu sinteze na visokom nivou (HLS) neophodno je razmotriti promenu u ceni
upravljanja kada se obavljaju ove optimizacije. Ove tehnike loop unrolling i loop folding
povećavaju cenu upravljanja. Kod loop unrolling tehnike, ScH može da eksploatiše više paralelizma
ako razmota veći broj iteracija, ali se tada povećava cena upravljanja. Zbog toga on čini kompromis
između brzine izvršenja i upravljačke cene. Kod loop folding postoje dva važna činioca koji utiču
na cenu upravljanja: loop overhead i loop body. Činilac loop overhead proporcionalan je vremenu
izvršenja iteracije. Loop body činilac proporcionalan je proizvodu vremena izvršenja iteracije i
broju upravljačkih koraka između sukcesivnih iteracija, tj latenciji.
145
ScH-ovanje kod razmotavanja petlje se lakše izvodi jer osnovni ScH algoritmi koje smo
prethodne opisali se mogu primeniti za razmotavanje DFG-a. Jedini problem koga treba rešiti je
obim. Neki od algoritama koji imaju jako izraženu kompleksnost izračunavanja (tj. ILP metod) neće
dati dobre rezultate kada se primeni odmotavanje. Sa druge strane, ScH-ovanje folded-loop-a je
nešto komplikovanije. Za fiksnu latenciju k , mi možemo da proširemo list ScH algoritam da ScH-
uje operacije za koje postoji ograničenje po resursima. U upravljačkom koraku q gde je q>k
operacije iz različitih iteracija loop-a se mogu konkurentno izvršavati. Saglasno tome, zahtevani
resursi za izvršenje različitih noperacija iz konkurentnih iteracija moraju se obezbediti.
Slika 7.12: ScH sa preklapanjem iteracija: (a) loop unrolling; (b) loop folding
Pored osnovnih ScH algoritama koje smo prethodno opisali postoje i druge tehnike. Mi ćemo
ukazati na tri pristupa: simulirano očvršćavanje (simulated annealing), path-based ScH i
restruktuiranje DFG-a.
Slika 7.13: Planiranje korišćenjem simuliranog očvršćavanja: (a) inicijalni raspored, (b) nakon
zamene dve operacije, (c) nakon razmeštanja jedne operacije
147
7.4.2 Path-Based ScH
Path-Based ScH algoritam minimizira broj upravljačkih koraka koji je potreban za izvršenje
kritičnih puteva u CDFG-u. On prvo izvlači sve moguće puteve izvršenja iz datog CDFG-a, a zatim
ih ScH-uje nezavisno. ScH za različite puteve se zatim kombinuju da bi generisali konačan ScH
dizajn.
Razmatrajmo CDFG prikazan na slici 7.14 (a): Sa ciljem da izdvojimo puteve izvršenja, CDFG
se čini acikličnim na taj način što se izbacuju svi povratni potezi u petlji. Put počinje prvim čvorom
u CDFG-u ili prvim čvorom petlje, a završava se sa čvorom koji nema naslednike. Slika 7.14 (b)
prikazuje put početnog CDFG-a sa slike 7.14 (a).
Zatim delimo svaki put u CDFG-u na upravljačke korake tako da:
a) promenljiva se dodeljuje samo u jednom upravljačkom koraku, a ne u više
b) I/O portu se ne pristupa više od jedanput u svakom upravljačkom koraku
c) u svakom upravljačkom koraku FU se koristi samo jedanput
d) ukupno kašnjenje operacije u svakom upravljačkom koraku nije veće od dužine
upravljačkog koraka
e) svi projektantsko postavljeni zahtevi koji se odnose na ScH posebno na operacije u
različitim upravljačkim koracima su ispunjeni
Sa ciljem da se zadovolje svi gore pomenuti uslovi path-based ScH algoritam generiše
ograničenja između dva čvora koja se moraju ScH-ovati u dva različita upravljačka koraka. Ovakvo
ograničenje se predstavlja intervalom koji počinje i završava na oba konfliktna čvora. Na primer,
operacije označene čvorovima 5 i 9 na slici 14 (b) ne mogu proipadati istom upravljačkom mkoraku
jer ove operacije dodeljuju vrednost istoj promenljivoj. Ovo ograničenje je predtsvaljeno intervalom
i1 (slika 7.14 (b)). Na sličan način operacije označene čvorovima 3 i 9 koriste isti sabirač i moraju
da se obave u različitim upravljačkim koracima. Ovo ograničenje je predstavljeno intervalom i2 na
slici 7.14 (b). Ako dva ograničenja imaju intervale preklapanja obadva ograničenja moraju biti
simultano zadovoljena uvođenjem upravljačkog koraka između bilo koja dva čvora koja pripadaju
delu preklapanja oba intervala. Na primer, uvođenje novog upravljačkog koraka između čvorova 5 i
9 zadovoljiće oba ograničenja i i1 i i2.
148
Slika 7.14: Path-Based ScH: (a) primer CDFG; (b)put u CDFG-u sa intervalima u kojima
postoje ograničenja; (c) ScH-ovani CDFG
Sa ciljem da se efikasno ScH-uje ukupni put, veoma je važno da se uvede minimalan broj
upravljačkih koraka. Problem uvođenja minimalnog broja upravljačkih koraka koji zadovoljava sva
ograničenja se može transformisati u clique-partitioning problem za graf. Konstruiše se graf kod
koga svaki čvor predstavlja interval ograničenja. Između dva čvora postoji poteg ako se oba
odgovarajuća intervala međusobno preklapaju.
Clique-partitioning ukazuje na skup minimalnig ne preklapajućih intervala za dati put. Slični
intervali se dobijaju za svaki put u grafu. Clique-partitioning tehnika se ponovo koristi da
kombinuje intervale generisane od strane različitih puteva. Rezultati Clique-partitioning-a
predstavljaju konačni skup intervala koji važe za ceo CDFG. Uvođenjem novog upravljačkog
koraka između dva čvora u konačnom skupu intervala generiše jedinstveni ScH za početni CDFG.
Slika 7.14 (c) prikazuje konačni ScH za primer sa slike 7.14 (a).
149
redudantne operacije mogu da modifikuju strukturu DFG-a, a da pri tome očuvaju njegov
behavioral.
Redukcija nivoa stabla, o kome smo prethodno pričali, restruktuira DFG koji se predstavlja kao
stablo koristeći asocijativnost nekih operacija, na primer sabiranje. Na primer, na slici 7.15 (a),
DFG koji predstavlja izračunavanje (((a+b)+c)+d)+(e+f), ima kritični put dužine četiri. DFG na
slici 7.15 (b) koji se odnosi na izračunavanje ((a+b)+c)+(d+(e+f)) ima kritični put dužine tri. Oba
DFG-ova imaju isti behavioral pošto izračunavaju a+b+c+d+e+f. Ipak, drugi DFG ima kraću
dužinu stabla, što rezultira kraćem fizičkom putu, a shodno tome i boljem ScH-u.
Slika 7.15: Restruktuiranje DFG-a: (a) DFG1; (b) DFG1 nakon redukcije dužine stabla; (c)
DFG2 i (d) DFG2 nakon ubacavanja redundantne operacije
Ubacivanje redundantne operacije takođe pokušava da smanji dužinu kritičnog puta uvođenjem
dodatnih operatora koji će rasteretiti izračunavanje na kritičnom putu. Na primer, slika 7.15 (c)
prikazuje DFG čija je dužina kritičnog puta šest (operacija 3 se izvršava u dva upravljačka
koraka).Nakon uvođenja nove operacije 6, zadnja operacija, 5, na kritičnom putu se može ScH-ovati
ranije. Zbog toga dužina kritičnog puta se redukuje sa 6 na 5 (vidi sliku 7.15 (d)).
150
7.5 Zaključci i novi smerovi razvoja
151
Poglavlje 8
Alokacija
Kao što smo istakli u prethodnom poglavlju, ScH dodeljuje operacije upravljačkim koracima i
na taj način konvertuje behavioral opis u skup registarskih prenosa (transfera) koji se mogu opisati
tabelom stanja. Ciljna arhitektura za ovakav opis predstavlja FSMD koga smo već prethodno
opisali. Mi kreiramo CU za takvu FSMD na osnovu kontrolno-upravljačke sekvence i uslova koji se
koriste za određivanje narednog upravljačkog koraka u sekvenci. Datapath (staza podataka) se
kreira na osnovu registarskih prenosa koji se dodeljuju svakom upravljačkom koraku; ovaj zadatak
se naziva sinteza datapath-a ili alokacija datapath-a.
Datapath kod FSMD modela predstavlja net lista koju čini tri tipa komponenata za registarski
prenos (RT-Register Transfer) ili jedinica: funkcionalno, memorijska i sprežna. FU-ovi, kakvi su
sabirači, pomerači, ALU-ovi i množači, izvršavaju specificirane operacije iz behavioral opisa.
Memorijske jedinice, kakvi su registri, registarska polja (RF), RAM-ovi i ROM-ovi čuvaju
vrednosti promenljivih koje su generisane i koriste se u toku izvršenja behavior-a. Sprežne jedinice,
kakve su magistrale i multiplekseri obavljaju prenos podataka između FU-ova i memorijskih
jedinica.
Alokaciju datapath-a čine sledeća dva ključna zadatka: selekcija jedinice i povezivanje jedinice
(unit bining). Selekcija jedinice određuje se broj i tip RT komponenata koje se koriste u dizajnu.
Jedinica povezivanja se odnosi na preslikavanje promenljivih i operacija u ScH-ovanog CDFG-a u
funkcionalne, memorijske, i sprežne jedinice pri čemu se obezbeđuje da behavioral dizajn korektno
radi nad seleketovanim komponentama. Za svaku operaciju u CDFG-u, potrebna je FU koja je u
stanju da izvrši tu operaciju. Za svaku promenljivu koja se koristi u toku nekoliko upravljačkih
koraka ScH-ovanoog CDFG-a potrebna je memorijska jedinica koja će čuvati vrednost podatka u
toku vremena života promenljive. Konačno, za svaki transfer podataka u CDFG-u potreban je skupš
saprežnih jedinica koje će ostvariti taj transfer. Uprkos projektantskim ograničenjima koja su
uvedena u početno zadatom behavioral-u, a predstavljene su u CDFG-u, dodatna ograničenja nad
procesom povezivanja se postavljaju od strane tipa selektovane hardverske jedinice. Na primer, FU
može da izvrši samo jednu operaciju u datom upravljačkom koraku. Na sličan način, broj
višestrukih pristupa memorijskoj jedinici u toku upravljačkog koraka ograničeni su brojem
paralelnih portova te jedinice.
Ilustrovaćemo preslikavanje promenljivih i operacija DFG-a sa slike 8.1 u RT komponente.
Usvojimo da smo selektovali dva sabirača, ADD1 i ADD2, i četriri registra r1, r2, r3, i r4. Operacije
o1 i o2 ne mogu biti preslikane u isti sabirač jer se moraju obaviti u istom upravljačkom koraku s1.
Sa druge strane, operacija o1 može da deli sabirač sa operacijom o3 jer se one izvode u toku
različitih upravljačkih koraka. Zbog toga se obe operacije o1 i o3 preslikavaju u ADD1.
Promenljive a i moraju posebno biti memorisane jer su njihove vrednosti istovremeno potrebne u
toku upravljačkog koraka s2. Registri r1 i r2 , u kojima se čuvaju promenljive a i e, moraju biti
povezani na ulazne portove ADD1; inače, operaciju o3 nećemo biti u stanju da izvršimo na ADD1.
Na sličan način, operacije o2 i o4 se preslikavaju u ADD2. Naglasimo da postoje nekoliko različitih
152
načina za obavljanje povezivanja. Na primer, mi možemo da preslikamo o2 i o3 na ADD1 , a o1 i
o4 na ADD2.
Već smo ukazali na osnovne ciljne arhitekture i pokazali kako se za poboljšanje performansi uz
neznatno povećanje cene koriste protočni datapath-ovi. Takođe smo izveli formule za
izračunavanje taktnih intervala za ove arhitekture. U daljem tekstu daćemo pregled nekih osnovnih
osobina realnih datapath-ova i sagledati ih sa aspekta formulacije problema alokacije datapath-a.
Datapath arhitektura definiše karakteristike datapath jedinica i sprežnu topologiju. Jednostavna
ciljna arhitektura može značajno da redukuje kompleksnost problema sinteze iz razloga što se broj
alternativnih dizajn rešenja značajno redukuje. Sa druge strane, kod arhitekture kod koje postoje
manja ograničenja, mada teža za sinhronizaciju, postoji veći broj kvalitetnih dizajna. Dok
pojednostavljena datapath arhitektura vodi ka elegantnim algoritmima za sintezu, ona obično
rezultira i u ne prihvatljivim dizajn rešenjima.
Sprežna topologija koja podržava transfer podataka između memorije i FU-ova je jedan od
faktora koji značajno utiče na performanse datapath-a. Kompleksnost sprežne topologije se definiše
maksimalnim brojem sprežnih jedinica između bilo koja dva porta FU-ova ili memorijskih jedinica.
Svaka sprežna jedinica se može implementirati multiplekserom ili magistralom. Na primer, slika 8.2
prikazuje dve datapath koje koriste sprežne jedinice zasnovane na multiplekserima i magistralama,
koje implementiraju sledeća pet registarska prenosa:
153
s 3 : r3 ⇐ ALU 1(r1 , r6 );
Zvaćemo sprežnu topologiju point-to-point ako postoji samo jedna sprežna jedinica između
bilo koja dva porta FU i/ili memorijskih jedinica. Topologija point-to-point je najpopularnija kod
HLS (High-Level Synthesis) jer ona pojednostavljuje algoritme za alokaciju. Kod ove topologije,
kreira se veza između bilo koje dve FU ili memorijske jedinice po potrebi. Ako se ulazu jedinice
dodeli više od jedna veza, tada treba da se koristi multiplekser ili magistrala. Sa ciljem da se
minimizira broj sprega, grupisaćemo registre u RF polja koja imaju veći broj portova. Svaki port
može da podržava pristupe tipa čitanje i/ili upis podataka. Neka od RF polja omogućavaju pristupe
tipa simultano čitanje i upis po različitim portovima. I pored toga što RF fajlovi smanjuju cenu
sprežnih jedinica, svakom portu potrebno je namensko dekoder kolo koje je sastavni deo RF polja, i
koje u suštini povećava kako cenu memorisanja tako i propagaciono kašnjenje.
Slika 8.2: Sprežne jedinice datapath-a : (a) multipleksersko zasnovana datapath; (b) datapath
bazirana na magistrali
Slika 8.3: Sekvencijalno izvršenje tri mikro-operacije u okviru istog taktnog perioda
155
Slika 8.4: Ubacivanje lečeva na izlazne portove FU-ova
Slika 8.6: Ubacivanje lečeva kako na ulaznim tako i na izlaznim portovima FU-ova
156
Slika 8.7: Preklapanje aktivnosti tipa prenos podataka sa aktivnošću tipa izvršenje kod FU
Kao što smo prethodno opisali sa ciljem da se poboljšaju performanse datapath-a između
ulaznih i izlaznih portov FU-ova se ubacuju lečevi. Kada se lečevi ubacuju samo na izlazima FU-
ova (vidi sliku 8.4) pristupi tipa čitanje i izvršenje operacije u FU-a koje se ScH-uje u tekućem
upravljačkom koraku se može obaviti istovremeno kao i operacija upis koja se ScH-uje u
prethodnom uprvaljačkom koraku. Taktni period cse redukuje na max(tr+te, tw). No registarski
prenos nije dobro balansiran jer čitanje registar i izvršenje ALU operacije se obavljaju u prvom
ciklusu, dok samo upis rezultata u registar se obavlja u drugom ciklusu. Slično, ako se lečuju samo
ulazi FU-ova, tada operacije pristupa radi čitanja koje su ScH-ovane u narednom upravljačkom
koraku se mogu obaviti istovremeno kao i FU-ovo izvršenje kao i pristupi radi upisa za operacije
koje su ScH-ovane u tekućem upravljačkom koraku. Taktni period u tom slučaju biće max (tr,
te+tw). U oba slučaja, RF polja i lečevi se kontrolišu od strane monofaznog taktnog signala.
Izvršenje operacije i čitanje/upis podataka može da se ostvari konkurentno kada se lečuju ulazi
i izlazi FU-a (slika 8.6). Tri tipa kombinacionih komponenata, ulazno sprežne jedinice, FU-e i
izlazno sprežene jedinice mogu biti istovremeno aktivne. Slika 8.7 prikazuje kako ova protočna
šema radi. Taktni interval čine sub-ciklusa. Izvršenje operacije se proteže duž tri uzastopna taktna
ciklusa. Ulazni operandi za operaciju se prenose iz registarskih fajlova u ulazne lečeve FU-a u toku
drugog sub-ciklusa prvog taktnog intervala. U toku drugog taktnog intervala, FU-a izvršava
operaciju i upisuje rezultat u izlazni leč na kraju taktnog intervala. Rezultat se prenosi u konačno
odredište, RF polje u toku prvog sub-ciklusa trećeg taktnog intervala. To znači da je potrebno
koristiti dvo-faznu ne preklapajuću šemu taktovanja. Oba, kako ulazni tako i izlazni lečevi se
kontrolišu jednom fazom jer kraj pristupa čitanje i kraj operacije izvršenja se istovremeno javljaju.
Druga faza se koristi da kontroliše pristup upisa u RF polje.
Preklapanjem izvršenja operacija u sukcesivnim upravljačkim koracima, može značajno da
poveća iskorišćenje hardvera. Taktni interval se zbog toga redukuje na max (te, tr+tw). Šta više
ulazne i izlazne mreže mogu da dele neke od sprežnih jedinica. Tako na primer, OutBus1 je
istovremeno i InBus3, a OutBus2 je InBus4 (vidi sliku 8.6).
Na ovaj način, ubacivanjem ulaznih i izlaznih lečeva moguće je učiniti da veći broj sprežnih
jedinica ima dvostruku (In/OutBus) ulogu, što pojednostavljuje projektovanje datapath-a. Deobom
prenosa tipa registar-u-registar na mikro-operacije koje se izvršavaju u različitim taktnim
intervalimaostvaruje se bolja iskorišćenost hardverskih resursa. Ipak, ova šema zahteva od
algoritama za povezivanje da obave pretraživanje većeg broja alternativa koje se odnose na dati
dizajn.
Sa operator chaining (ulančavanje operatora) smo se već upoznali i ono se odnosi na izvršenje
dve ili veći broj operacija u nizu u toku istog upravljačkog koraka. Da bi podržali ulančavanje
operatora, potrebne su veze od izlaznih portova nekih FU-ova koje direktno vode ka ulaznim
portovima drugih FU-a. Kod arhitekture koja ima deljivu magistralu (vidi sliku 8.6), ovo
povezivanje se može lakše ostvariti korišćenjem puta od izlaznog porta FU-e preko jedne od
157
magistrala do ulaznog porta neke druge FU-e. S obzirom da ovaj put mora da bude kombinacioni,
neophodno je ugraditi kola za premošćavanje (baypass circuits) oko svih lečeva duž puta za
ulančavanje.
Datapath sinteza se sastoji od četiri nezavisna zadatka: saelekcija modula, alokacija FU,
alokacija memorije i alokacija sprege. Ukazaćemo sada na svaki od ovih zadataak i
prodiskuvaćemo prirodu njihovih međuzavisnosti.
158
8.3.4 Povezivanje sprege
Svakom prenosu podataka (tipa čitanje ili upis) potreban je sprežni put od izvorišta do
odredišta. Dva prenosa podataka mogu da dele ceo ili deo sprežnog puta ako se oni ne dešavaju
istovremeno. Na primer, na slici 1, čitanje promenljive b u upravljačkom koraku s1 i promenljive e
u upravljačkom koraku s2 se može ostvariti korišćenjem iste sprežne jedinice. Ipak, upis
promenljivih e i f , koje se javljaju istovremeno u toku upravljačkog koraka s1 moraju da se ostvare
korišćenjem različitih puteva. Cilj sprege povezivanja je da maksimizira deobu sprežnih jedinica, a
shodno tome da minimizira cenu sprezanja, a da pri tome i dalje podržava nekonfliktne prenose
podataka koje se zahtevaju od strane opisa za registarski prenos.
Slika 8.8: Međuzavisnost funkcionalne jedinice i povezivanja memorije: (a) isplanirani DFG, (b)
povezivanje funkcionalne jedinice sa 6 multipleksera, (c) poboljšan dizajn koji ima dva
multipleksera manje, postignut uz pomoć realokacije registra, (d) optimalni dizajn bez
multipleksera, postignut uz pomoć modifikaciju povezivanja funkcionalnih jedinica
Neka postoje dva sabirača, ADD1 i ADD2 i dva načina za grupisanje četiri operacije za sabiranje
o1,o2,o3 i o4 (vidi sliku 8.8 (a)) tako da se svaka grupa može dodeliti jednom od sabirača:
159
(2 ) ADD1 ← {o1 ,o3 } , ADD2 ← {o2 ,o4 },
Za dato povezivanje registra, potrebna su nam 6 multipleksera tipa 2-u-1 (MUX 2/1) za
sprezanje jedinica u slučaju (1) (vidi sliku 8.8 (b)). Ipak mi možemo eliminisati dva 2-u-1
multipleksera (vidi sliku 8.8 (c)) modifikacijom popvezivanja registara tako da r1 ← {a , g },
r2 ← {b ,e}, r3 ← {c , f } i r4 ← {d , h}. Ako, zatim, modifikujemo povezivanje FU-ova u odnosu na
slučaj (2), tada zaključujemo da multiplekseri nisu potrebni (vidi sliku 8.8 (b)). Na ovaj način, ovaj
dizajn je optimalan ako se cena povezivanja meri brojem multipleksera koje treba ugraditi. To znači
da kako povezivanje FU-ova tako i memorije potencijalno utiče na optimizaciju koju je moguće
ostvariti pomoću alokacije aprega.
Prethodni primer takođe ukazuje na neophodnost uređenja koje treba da postoji između
zadataka za alokaciju. Zahtevi za sprezanjem postaju izrazitiji nakon što je obavljena alokacija kako
FU-ova tako i memorijskih elemenata. Zbog toga, alokacija FU-ova može da učini korektne odluke
ako je prethodno urađena alokacija memorijskih jedinica, i obratno. Da bi prekinuli ovu situaciju
tipa "smrtni zagrljaj" obično se usvaja da jedan zadatak sledi nakon drugog. Na žalost, kod ovakvog
uređenja, zadatak koga smo prvo izabrali ne može da koristi informaciju drugog zadatka što nije
slučaj za drugi zadatak.
Možemo konstruisati datapath koristeći gramzivi (greedy) pristup kod koga se RT komponente
dodeljuju operacijama na principu korak-po-korak.
Konstruktivni algoritam počinje od prazne datapath-a i postepeno po potrebi gradi datapath
dodavanjem FU-a, memorijskih jedinica i sprežnih jedinica. Za svaku operaciju on pokušava da
pronađe FU na delimično projektovanoj datapath-u koja je u stanju da izvrši tu operaciju. U slučaju
kada postoje dve ili veći broj FU-a koje ispunjavaju ove uslove, bira se ona koja rezultira
minimalnom povećanju sprežne cene. Sa druge strane, ako nijedna od FU-a na delemično
projektovanom datapath-u ne ispuni uslov, dodaje se nova FU iz biblioteke komponenata koja je u
stanju da izvede tu operaciju. Na sličan način, mi možemo dodeliti promenljivu dostupnom registru
samo ako vreme života te promenljive se ne preklapa sa promenljivom koja je već dodeljena tom
istom registru. Novi registar se alocira samo kada ne alocirani registar ispunjava gore navede
uslove. Ponovo, kada postoji veći broj alternativa za dodeljivanje promenljive registru, mi biramo
onu koja minimalno povećava cenu datapath-a.
Slike 8.9 (b)-(g) prikazuju nekoliko modifikovanih datapath-ova koji su dobijeni dodavanjem
sprežnih veza i/ili FU-ova delimičnom dizajnu sa slike 8.9 (a). Prodiskutovaćemo svaki od ovih
slučajeva posebno:
1. na slici 8.9 (b) dodajemo novu vezu od r3 i Bus1 levom ulazu ALU-a.
2. na slici 8.9 (c) dodajemo vezu od r3 ka desnom ulazu ALU-a preko Bus1. S obzirom da
veza od Bus1 do desnog ulaza ALU2 već postoji, mi dodajemo samo jedan trostatički bafer.
3. slika 8.9 (d) je slična slici 8.9 (c) sa izuzetkom što dodajemo multiplekser Mux2 umesto
trostatički bafer
4. na slici 8.9 (e) dodajemo novu FU-u, ALU3, i novu vvezu od r3 i Bus1 ka desnoj strani
ALU3
5. slika 8.9 (f) slična je slici 8.9 (e), sa izuzetkom što dodajemo multiplekser Mux2 umesto
trostatički bafer
6. na slici 8.9 (g) mi spajamo Mux1 i Bus1 u jedinstvenu magistralu Bus1
160
Slika 8.9: Konstrukcija datapath-a: (a) delimični inicijalni dizajn; (b) dodavanje još dva ulaza
multiplekseru; (c) dodavanje trostatičkog bafera magistrali; (d) dodavanje multipleksera ulazu FU-
u; (e) dodavanje FU i trostatički bafre magistrali; (f) dodavanje FU-a i multipleksera; i (g)
konverzija multipleksera u deljivu magistralu
Dodela veze sledi odmah nakon povezivanja izvorišta i odredišta prenosa podataka. Na primer,
kod delimične datapath-a sa slike 8.9 (a), ne postoji veza između r3 i ALU2. Usvojimo da
promenljiva koja predstavlja ulaz operacije koja je dodeljena ALU2 se upravo dodlei registru r3. U
tom slučaju neophodno je uspostaviti vezu kao što prikazano bold-linijama (debljim linijama) na
slici 8.9 (c). Svaka sprežna jedinica koja je neophodna da bi se ostvario prenos popdataka u
behavioral opisu ima uticaj na cenu datapath-a. Tako na primer, na slici 8.9 (b) izvedene su još
dodatne dve veze ka levom ulazu porta ALU1, pri čemu dvoulazni multiplekser već postoji. Zbog
toga, cena ove modifikacije predstavlja razliku između cene dvoulaznog i četvoroulaznog
multipleksera. Ipak, u najmanju ruku dva dodatna prenosa podataka se sada podržavaju kod ovakve
modifikacije.
Algoritam 8-1 opisuje gramzivi konstruktivni metod dodele. Neka UBE predstavlja skup
nedodeljenih behavioral entity, a DPcurrent predstavlja delimično projektovanu datapath
behavioral entity koje razmatramo mogu biti promenljive koje treba da se preslikaju u registre,
operacije koje treba da se preslikaju u FU-ove, ili prenosi podataka koji treba da se preslikaju u
sprežne jedinice. DPcurrent je inicijalno prazna. Procedura ADD (DP,ube) strukturno modifikuje
datapath DP dodajući joj neophodne komponente kako bi podržao behavioral entity ube. Funkcija
COST (DP) procenjuje cenu površina/performansi delimično projektovanog datapath-a DP.
DPwork je privremena datapath koja se kreira sa ciljem da se proceni cena cwork koja se odnosi na
svaku modifikaciju DPcurrent.
161
Počevši sa skupom UBE, unutrašnja for petlja određuje koja ne alocirana behavioral entity,
BestEntity, iziskuje minimalno povećanje cene kada se ista doda (ugradi) datapath-u. Ovo se
ostvaruje pojedinačnim dodavanjem svake ne alocirane behavioral entity UBE-a u DPcurrent i
nakon toga procenjivanjem cene dobijenog rezultata. Procedura ADD tada modifikuje DPcurrent
inkorporiranjem BestEntity u datapath. BestEntity se zatim izbacuje iz skupa ne alociranih
behavioral entity-a. Algoritam iterativno se ponavlja po spoljnoj while petlji sve dok se svi
behavioral entity ne dodele (tj. UBE =∅) .
Sa ciljem da korstiomo gramzivi konstruktivni pristup moramo da vodimo računa o dve
osnovne stavke: izračunavanje cene-funkcije i redosled po kome se ne alocirane behavioral entity
preslikavaju u datapath. Izračunavanje cene smo već objasnili u prethodnim poglavljima. Na
primer, cena konverzije datapath-a sa slike 8.9 (a) u onu na slici 8.9 (g) zavisi od razlike u ceni
između jednog multipleksera tipa 2-u-1 i cene koja treba da se plati za tri trostatička bafera.
Sobzirom da su maghistrale sa slike 8.9 (a) i (g) različitih dužina, obe datapath mogu da imaju
različite cene povezivanja.
Redosled po kome se ne alocirane entity-e presklikavaju u datapath može biti određeno statički
ili dinamički. Kod statičkog pristupa, objekti se uređuju pre početka konstruisanja datapath-a.
Redoslewd se ne menja u toku procesa konstruisanja. Nasuprot tome, kod dinamičkog pristupa se
unapred ne izvodi uređenje. Da bi selektovali operaciju ili promenljivu radi povezivanja sa
datapath-om, mi mora prvo da procenimo svaku ne alociranu behavioral entity u funkciji cene koja
se odnosi na modifikaciju delimične datapath, a zatim da odaberemo entity za koju je potrebna
najjeftinija modifikacija. Nakon svakog povezivanja, ponovo procenjujemo cene ostalih ne
povezanih entity-a. Algoritam 8-1 koristi dinamičku strategiju.
Kod deobe hardvera, prethodno opisane skupe metode povezivanja mogu postati jeftina ako se
izvedu neka druga povezivanja. Zbog toga, dobra strategija ikorporira u cenu funkcije neki
lookahead faktor. To znači da cena modifikacije datapath-a biće niža ako smanjuje cenu drugih
povezivanja koje će se izvoditi nadalje.
162
8.5 Pristupi dekompozicija
163
Algoritam 8-2: Clique Partitioning
Inicijalno, svaki čvor vi ∈ V od G-a se smešta u poseban supr-čvor si∈ S od G'. U toku
svakog koraka algoritam određuej super-čvorove sIndex1 i sIndex2 u S tako da su oni povezani potegom
i imaju maksimalni broj zajedničkih suseda. Ova dva super-čvora se spajaju u jedinstveni super-
čvor sIndex1Index2 koji sadrži sve čvorove od sIndex1 i sIndex2. Skup CommonSet sadrži sve zajedničke
susede od sIndex1 i sIndex2. Svi potezi koji potiču sIndex1 i/ili sIndex2 u G' se izbacuju. Novi čvorovi se
dodaju iz sIndex1Index2 svim super-čvorovima u CommonSet. Gornji koraci se ponavljaju sve dok
postoje potezi na levoj strani grafa. Čvorovi koji se nalaze u svakom super-čvoru si ∈ S formiraju
clique grafa G.
Slika 8.10 ilustruje gornji algoritam. U grafu sa slike 8.10 (a) V= {v1, v2, v3, v4, v5} i E =
{e1,3, e1,4, e2,3, e2,5, e3,4, e4,5}. Inicijalno svaki čvor se smešta u poseban super-čvor (označen sa s1 do
s5 na slici 8.10 (b)). Tri potega e’1,3, e’1,4 i e’3,4 super-grafa G' imaju maksimalni broj zajedničkih
suseda između svih potega (vidi sliku 8.10 (b)). Prvi poteg e’1,3 se selektuje i sledeći koraci se
obavljaju sa ciljem da se dobije graf sa slike 8.10 (c).
1. s4 , jedini zajednički sused za s1 i s3 se smešta u CommonSet
2. svi potezi se izbacuju koji povezuju super-čvorove s1 ili s3 (tj. e’1,3, e’1,4, e’2,3 i e’3,4)
3. super-čvorovi s1 i s3 se kombinuju u novi super-čvor s13
4. poteg se dodaje između s13 i svaki super-čvor u CommonSet; tj. poteg e13,4 se dodaje
164
Kod naredne iteracije s4 se spaja u s13 što rezultira super-čvorom s13,4 (vidi sliku 8.10 (d)).
Konačno, s2 i s5 se spajaju u super-čvor s25 (vidi sliku 8.10 (e)). Clique-ovi su s134={v1, v3, v4} i
s25={v2, v5} vidi sliku 8.10 (f).
Sa ciljem da primenimo clique partitionig tehniku na alokacioni problem mi prvo mora da
izvedemo graf model za ulazni opis. Kao primer posmatraćemo alokaciju registra. Primarni cilj
alokacije registara je da minimizira cenu registara, maksimiziranjem deobe deljivih registara
između promenljivih. Da bi rešili problem alokacije registara mi konstruišemo graf G =(V,E), kod
koga svaki čvor vi∈V na jedinstven način predstavlja promenljivu vi i postoji poteg ei,j∈E ako i
samo ako promenljive vi i vj mogu biti smeštene u isti registar (tj. njihovi intervali života se ne
preklapaju). Za sve promenljive za koje odgovarajući pripadajući čvorovi su u clique G-a kažemo
da se mogu meorisati u jedinstveni registar. CP G-a obezbeđuje rešenje za problem alokacije
memorije datapath-a i zahteva minimalan broj registara. Slika 8.11 prikazuje rešenje problema
alokacije registara koji koristi CP algoritam.
Sa druge strane, alokacija FU-ova kao i alokacija sprega se takođe može formulisati kao CP
problem. Kod alokacije FU-ova, svaki čvor grafa predstavlja operaciju. Između dva čvora postoji
poteg ako su zadovoljena sledeća dva uslova:
1. dve operacije se ScH-uju u dva različita upravljačka koraka,
2. postoji FU koja je u stanju da izvede ove operacije
165
Slika 8.10: Clique Partitioning: (a) graf G; (b) izračunavanje zajedničkih suseda za potege u grafu
G'; (c) super-čvor s13 koji se formira uzimanjem u obzir potega e'1,3 ; (d) super-čvor s134 koji se
formira uzimanjem u obzir potega e'13,4 ; (e) super-čvor s25 koji se formira uzimanjem u obzir e’2,5,
(f) rezultujuće clique-e s134 i s25;
166
Slika 8.11: Alokacija registara koja koristi CP: (a) ScH-ovani DFG; (b) intervali vremena života
promenljivih ; (c) graf model za aloakciju registara; (d) rešenje za CP
Rešenje CP-a za ovaj graf daje rešenje za problem alokacije FU-ova. S obzirom da se FU
dodeljuje svakom clique, sve operacije čiji reprezentativni čvorovi se nalaze u clique se izvršavaju u
istoj FU.
Kod alokacije sprežnih jedinica, svaki čvor odgovora vezi između dve jedinice, dok svaki
poteg povezuje dva čvora ako dve odgovarajuće veze nisu konkurentno korišćenje u bilo kom
upravljačkom koraku. CP rešenje ovakvog grafa ukazuje na particiju veza na magistrale ili
multipleksere. Drugim rečima sve veze čiji reprezentativni čvorovi pripadaju istom clique koriste
istu magistralu ili multiplekser.
I pored toga što CP metod kada se primeni na alokaciju memorije može da minimizira zahteve
za memorijom, on u potpunosti ignoriše međuzavisnost koja postoji između alokacije memorije i
veza. Da bi se ovaj problem rešio potreban je veći broj algoritama. Mi ih nećemo izučavati.
167
algoritmi za rutiranje kanala pokušavaju da spakuju horizontalne segmente u što je moguće manje
traka. Left-Edge algortam se može primeniti za rešavanje problema alokacije registra, kod koga
intervali života promenljivih odgovaraju horizontalnim žičanim segmentima, a registri žičanim
trakama.
Ulaz u ovaj algoritam je lista promenljivih, L. Interval vremena života se produžuje svakoj
promenljivoj. Algoritam učini nekoliko prolaza kroz listu promenljivih sve dok se sve promenljive
ne dodele registrima. U suštini, algoritam pokušava da spakuje ukupno vreme života novog registra
koje se alocira u svakom prolazu sa većim brojem promenljivih čija se vremena života ne
preklapaju, koristeći analogiju pristupa rutitanja kanala putem pakovanja horizontalnih segmenata u
što manji broj traka.
Algoritam 8-3 opisuje alokaciju registra koristeći left-edge algoritam: Ako postoji n
promenljivih u behavioral opisu mi definišemo da L bude lista svih promenljivih vi, 1 ≤ i ≤ n . Neka
dvojka <Start(v), End(v)> predstavlja interval vremena života promenljive v gde Start(v) i End(v)
odgovaraju respektivno početnim i krajnim vremenima intervala života. Procedura SORT(L) sortira
promenljive iz L-a u rastućem redosledu u odnosu na startna vremena, Start(v), kao primarni ključ,
a zatim u opadajućem redosledu krajnja vremena End(v) ka sekundarni ključ. Procedura
DELETE(L, v) eliminiše promenljivu v iz liste L, dok FIRST(L) vraća prvu promenljivu iz sortirane
liste L, a NEXT(L, v) vraća promenljivu koja sledi nakon v u listi L. Polje MAP čuva trag dodele
registara svakoj promenljivoj. Vrednost reg_index predstavlja indeks registara koji se dodeljuje u
svakom prolazu. Krajnje vreme inervala najskorije dodeljene promenljive u tom prolazu se čuva u
last.
Inicijalno, promenljive se ne dodeljuju bilo kom od registara. U toku svakog prolaza kroz listu
L, promenljive se dodeljuju novom registru rreg_index. Prva promenljiva iz sortirane liste čije se
vreme života ne preklapa sa vremenom života bilo koje druge promenljive koja je dodeljenja
rreg_index dodeljuje se istom registru. Kada je promenljiva dodeljenja registru, registar se unosi u
polje MAP za tu promenljivu. Završetkom algoritma, polje MAP sadrži dodelu registra svim
promenljivima, a reg_index predstavlja ukupan broj alociranih registara.
168
Algoritam 8-3: Alokacija registara koristeći left-edge algoritam
Slika 8.12 (a) opisuje sortiranu listu koja odgovara intervalima vremena života promenljivih iz
DFG-a sa slike 8.11 (a). Naglasimo da su promenljive v1 i v2 sa slike 8.11 (a) podeljene tako da se
svaka sastoji od dve promenljive (v1, v'1 i v2, v'2).sa ciljem da se dobije bolja gustina pakovanja.
Slika 8.12 (b) prikazuje kako na jednom primeru radi left-edge algoritam. Počev sa novim praznim
registrom r1, prva promenljiva u sortiranoj listi, v1, se smešta u r1. Idući nadalje kroz listu ne pakuju
se promenljive u r1 pre nego što naiđemo na v8. Nakon što smo spakovali v8 u r1 naredna
promenljiva koja se može spakovati, a nalazi se u donjem delu liste, je v'1. Ne postoji više
promenljivih kojoe se mogu dodeliti r1 bez preklapanja života promenljivih. Zbog toga algoritam
alocira novi registar (r2) i startuje ponovo od početka liste. Sortirana lista sada ima tri promenljive
manje nego što je imala na početku (tj. v1, v8 i v'1 su eliminisane). Lista postaje prazna nakon što je
svih pet registara alocirano.
Nasuprot CP problemu koji je NP-complete (No Polynomial) left-edge algoritam ima
polinomsku vremensku kompleksnost. Šta više ovaj algoritam alocira minimalni broj registara.
Ipak, on ne uzima u obzir uticaj alokacije registara na cenu sprege, kao što je to slučaj sa verzijom
ponderisanja kod CP algoritma.
169
Slika 8.12: Alokacija registara koja koristi left-edge algoritam: (a) sortirani intervali vremena
života promenljivim; (b) rezultat alokacije na pet registara
170
registrima r1, r2, r3, r4 i r5, respektivno. Algoritam zatim pokušava da dodeli drugi cluster od triju
promenljivih v3, v5 i v7, registrima.
Promenljiva se može dodeliti registru samo ako se njeno vreme života ne preklapa sa
vremenima života svih promenljivih koje su već dodeljenje tom registru. Na slici 8.13 (b) svaki
poteg grafa odgovara mogućoj dodeli promenljiva-u-registar. Kao i kod CP algoritma potezima se
mogu pridružiti težine (ponderacije). Potegu ei,j se zadaje veća težina ako dodela promenljive vj
registru ri dovodi do redukcije cene sprege. Na primer, neka promenljiva vm bude vezana za registar
rn. Ako se druga promenljiva vk koristi od strane iste FU koja takođe koristi promenljivu vm, tada s
obzirom da dve promenljive mogu da dele iste sprežne puteve, poželjno je da se vk takođe dodeli rn-
u.
171
Slika 8.13: WBMA kod alokacije registara: (a) sortirani intervalivremena života kod cluster-a; (b)
bipartit-ni graf za povezivanje promenljivh u Cluster2 nakon što je Cluster1 dodeljen registrima; i
(c) konačno povezivanje promenljivih sa skupom registara
Kod bipartit-nog grafa, skup čvorova se deli na dva nepreklapajuća skupa, a svaki poteg
povezuje dva čvora u različitim podskupovima. Graf dat na slici 8.13 (b) je bipartit-ni (dvodelni).
On ima dva skupa, skup registara R={r1, r2, r3, r4, r5} i skup promenljivih V={v3, v5, v7}. Graf
takođe ima skup potega E={e3,5, e3,7, e4,5, e4,7, e5,3, e5,5, e5,7} koji se dobijaju kao rezulatat izvršenja
funkcije BUILD_GRAPH. Problem uparivanja (matching) svake promenljive ekvivalentan je
klasičnom problemu koji se odnosi na posao dodeljivanja. Podskup sa najvećim brojem čvorova,
koji nema bilo kakve zajedničke krajnje čvorove sa drugim podskupovima, definiše se kao
maksimalno uparivanje grafa. Maksimalno uparivanje ponderisanog čvora grafa odgovara
maksimalnom uparivanju koji ima najveći zbir ponderisanih potega.
Skup E' ukazuje na dodlejivanje promenljivih registrima kao što je to određeno algoritmom za
maksimalno uparivanje u funkciji MATCHING. E' = {e5,3, e3,5, e4,7} je označen u grafu na slici 8.13
(b) pomoću bold linija. Nakon povezivanja drugog cluster-a promenljivih registrima što se izvodi u
skladu sa uparivanjem, naime v3 u r5, v5 u r3 i v7 u r4, algoritam produžava da alocira treći cluster
promenljivih v8,v9 i v11, itd. Konačna alokacija promenljivih je prikazana na slici 8.13 (c).
172
Algoritam uparivanja (matching), na sličan način kao i algoritam left-edge, alocira minimalan
broj registara. On takođe delimično uzima u obzir uticaj alokacije registara na alokaciju sprege jer
svakom potegu može da dodeli odgovarajuću težinu.
Neka je data datapath sintetizovana konstruktivnom metodom ili metodom dekompozicije, pri
čemu se njen kvalitet može poboljšati realokacijom. Kao primer razmotrimo realokacije FU.
Moguće je da se redukuje cena sprege ako međusobno promenimo dodelu FU-ova za par operacija.
Na primer, ako počnemo sa datapath prikazanoj na slici 8.8 (c) međusobnom razmenom dodele
FU-ova za operacije o3 i o4 redukovaćemo cenu sprege za četiri multipleksera tipa 2-u-1 (vidi sliku
8.8 (d)).
Promene dodele tipa promenljiva-u-registar mogu biti takođe od koristi. Na slici 8.8 (d) ako
premestimo promenljivu g iz registra r2 u registar r1 i promenljivu h iz r3 u r4 dobićemo poboljšanu
datapath koja ima dva multipleksera manje (vidi sliku 8.8 (c)).
Glavna poenta iterativnog refinement pristupa odnosi se na tipove modifikacija koji se
primenjuju na datapath, izbora tipa modifikacije u toku iteracije i izbora krajnjeg kriterijuma
refinement procesa.
Najjednostavniji pristup predstavlja jednostavna promena dodele. Kod ovog pristupa,
modifikacija datapath-a se ograničava na međusobnu razmenu mesta dveju dodela (tj. para
promenljivih ili para operacija). Usvojimo da se samo jedna razmena mesta koristi kod iterativnog
refinement. Algoritam dvostruke prromene obavlja niz modifakacija nad datapath sa ciljem da snizi
cenu datapath-a. Kao prvo, sve moguće međusobne razmene mesta dodeljenih operacija koje su
ScH-ovane u istom upravljačkom koraku se evaluiraju u zavisnosti od dobitka koji se odnosi na
cenu datapath-a zbog promene u sprezi. Nakon toga međusobna razmena koja rezultira boljem
dobitku se prihvata, a datapath se ažurira kako bi ukazala na novo stanje. Ovaj proces se ponavlja
sve dok međusobna razmena dovodi do pozitivnih rezultata (tj. daljih redukcija u ceni datapath-a).
Algoritam 8-5 opisuje metod međusobne razmene jednog para operacija. Neka DPcurrent
predstavlja tekuću strukturu datapath-a, a DPwork predstavlja privremenu datapath koja se kreira
da bi se evaluirala cena međusobne razmene kod dodele operacija. Funkcija COST (DP) procenjuje
cenu datapath-a DP. Datapath cene od DPcurrent i DPwork predstavljene su pomoću ccurrent i cwork.
Procedura SWAP(DP, oi, oj) menja dodele za operacije oi i oj istog tipa i saglasno tome ažurira
datapath DP. U toku svake iteracije unutrašnje petlje, CurrentGain predstavlja redukciju cene
datapath-a zbog međusobne razmene mesta operacijama u toj iteraciji. BestGain čuva trag o
najvećoj ceni redukcije koja se može ostvariti jedinstvenom međusobnom razmenom mesta
operacije koja je evaluirana u toku tekuće iteracije.
Ovaj pristup ima dve negativne strane. Prvo, on koristi jednostavnu razmenu mesta samo para-
operacije koje može da bude neadekvatno za eksploatisanje svih mogućnosti refinement-a. Na
primer, ne postoji iznos međusobne razmene promenljivih koji može da promeni datapath sa slike
8.8 (b) u datapath sa slike 8.8 (d). Kao drugo, strategija gramzivosti koja se bazira na tome da se
uvek ide najprofitabilnijom modifikacijom vodi ka rešenju da refinement proces odgovara nekom
lokalnom minimumu. Sa druge strane, probabnilistički metod, kao što je simulirano očvršćavanje,
moguće je koristiti da bi se izašlo na kraj sa drugim problemom po ceni dužeg vremena izvršavanja.
Usvojimo da je operacija oi dodeljenja FU fuj i da je jedna od njenih ulaznih promenljivih
povezana sa registrom rk. Odstranjivanjem oi od fuj neće eliminisati spregu iz rk ka fuj sve dok druge
operacije koje su prethodno dodeljenje fuj-u imaju svoje ulazne promenljive dodeljene registru rk.
Nešto detaljnije, iterativni refinement proces približava problem na grubljem nivou istovremeno
vodeći računa o većem broju objekata. Mi moramo da vodimo računa o odnsima između celinama
različitog tipa. Na primer, dobit koja se ostvaruje realokacijom operacija može biti veća ako se
njene ulazne promenljive takođe istovremeno alociraju. Strategija realokacije grupa različitog tipa
173
celina može da bude jednostavna kao i gramzivi konstruktivnio algoritam ili da bude sofisticirani
kao branch-and-bound pretraživanje.
174
Poglavlje 9
Modeli i arhitekture
9.1 Uvod
175
Slika 9.1: Konceptualni pogledi na kontroler lifta: (a) željena funkcionalnost opisana na
srpskom jeziku; (b) algoritamski model; (c) model konačnog automata
Svaki od ova dva modula predstavlja skup objekata i instrukcija. Tako na primer, model
konačnog automata karakteriše se skupom stanja kao i prelaza između ta stanja. Nasuprot tome,
algoritamski model čini skup iskaza koji se izvršavaju u okviru petlje.
Oba modela predstavljaju različite poglede na sistem. Ilustracije radi, model konačnog
automata je pogodniji za predstavljanje ponašanja sistema u vremenu, jer omogućava projektantu da
eksplicitnije opiše režime rada kao i prelaze iz jednog režima u drugi pod uticajem spoljnih ili
internih događaja. Sa druge strane, kod algoritamskog modela ne postoje eksplicitna stanja. Kod
ovog modela specificira se odnos ulaz-izlaz na nivou sistema u zavisnosti od sekvence iskaza, tako
da je ovaj model pogodniji za predstavljanje sistema na proceduralnom nivou.
Projektanti u zavisnosti od faze projektovanja koriste različite modele, pri čemu se izborom
modela istiću oni aspekti sistema koji su od interesa u datom trenutku. Nakon što je projektant
izabrao odgovarajućI model kojim se specificira funkcionalnost sistema, on može u detalje da opiše
kako sistem radi. Ali u tom trenutku proces projektovanja nije završen jer taj model ne opisuje
tačno kako taj sistem treba da bude realizovan (fabrikovan). Naredni korak predstavlja
transformaciju modela u arhitekturu. Arhitekturom se definiše implementacija modela putem
specifikacije broja i tipova komponenata kao i njihove interakcije. Na slici 9.2 prikazane dve
različite arhitekture koje se mogu koristiti za implementaciju modela konačnog automata kontrolera
lifta sa slike 9.1 (c). Arhitektura sa slike 9.2 (a) odnosi se na implementaciju na nivou-registra. Ova
arhitekture koristi registre stanja radi čuvanja tekućeg stanja, kombinacionu logiku za
implementaciju prelaza iz jednog stanja u drugo, kao i implementaciju izlaznih signala. Na slici 9.2
(b) prikazana je implementacija na nivou-sistema koja preslikava isti model konačnog automata u
softver, koristeći programske promenljive radi predstavljanja tekućeg stanja, programske iskaze
176
radi određivanja uslova prelaza iz jednog stanja u drugo, kao i vrednosti izlaznih signala. Kod ove
arhitekture, program je smešten u memoriji i izvršava se od strane procesora.
Slika 9.2: Arhitekture koje se koriste kod: (a) implementacije na nivou registara; (b)
implementacije na nivou sistema
Modeli koji sistemski projektanti koriste kod razvoja hardverskih I softverskih metodologija se
mogu svrstati u jednu od sledećih kategorija:
1. orijentisani-ka-stanju (state oriented) - tipični su za konačne automate (Finite State
Machine - FSM). Ovim modelima sistem se predstavlja pomoću skupa stanja I skupa prelaza
između tih stanja. Pri ovome, prelaz iz jednog stanja u drugo (trigerovanje) obavlja se pod uticajem
spoljnih događaja. Ovaj model je pogodan za predstavljanje upravljačkih sistema, kakvi su reaktivni
sistemi za rad u realnom-vremenu, kod kojih je vremensko ponašanje sistema najvažniji aspekt
dizajna.
2. orijentisani-ka-aktivnostima (activity oriented) tipični su za gra- toka-podataka (data flow
graph). Ovaj model opisuje sistem kao skup aktivnosti uslovljeni tokovima podataka ali
zavisnostima između podataka koje se javljaju u toku izvršenja. Model se najčešće primenjuje kod
177
sistema koji obavljaju neke transformacije nad podacima kakvi su sistemi za digitalno signal
procesiranje, kod kojih podaci prolaze kroz skup transformacija pri fiksnim brzinama procesiranja.
3. strukturno-orijentisani (structure oriented) - tipičan je za blok dijagram. Ovaj model
opisuje sistemsko fizičke module i njihovo međusobno povezivanje. Nasuprot prethodna dva
modela koja su prvenstveno orijentisana ka funkcionalnosti sistema ovaj model se pre svega
orijentiše ka sistemskofizičkoj kompoziciji.
4. orijentisan-ka-podacima (data oriented) - tipičan je za dijagram kod koga postoje
uzajamni odnosi između entiteta. Ovaj model se koristi da predstavi sistem kao kolekcija podataka
između kojih se uspostavljaju odnosi na osnovu njihovih atributa, pripadnosti klasama, i dr. model
je pogodan za korišćenje kod informacionih sistema, kakve su baze podataka, kod kojih je funkcija
sistema od manjeg značaja u odnosu na organizaciju podataka u sistemu.
5. heterogeni (heterogeneous) - integriše većI broj karakteristika prethodna četiri modela, a
koristi se za prezentaciju različitih pogleda na sistem.
Gde S = { s1, s2, …, sp} prredstavlja skup stanja; I = { i1, i2, …, im}odgovara stanjun ulaza; O
= { o1, o2, …, on} skupu izlaza; f - predstavlja funkciju narednog stanja koja određuje naredno
stanje na osnovu tekućeg stanja i ulaza; h - izlazna funkcija koja određuje izlaze, takođe na osnovu
tekućeg stanja i ulaza.
Na slici 9.3 prikazan je FSM koji modelira kontroler lifta u zgradi sa tri sprata. Kod ovog
modela, skup ulaza I = { r1, r2, r3} se odnosi na zahtevani sprat. Na primer, r2 znači da se zahteva
sprat 2. Skup izlaza O = { d1, d2, n, u1, u2} se odnosi na smer i broj spratova kojih lift treba da pređe.
Tako na primer, d2 znači da lift treba da ide naniže 2 sprata, u2 znači da lift treba da ide naviše dva
sprata, dok n znači da lift treba da miruje. Sa slike 9.3 se vidi da, ako je tekući sprat 2, tj. tekuće
stanje je s2, a zahtevani sprat je 1, tada će izlaz biti d1.
178
r n r n
2
1
r u
start
2 1
s 1
s 2
r d
1 1
r u
3 2
r d
2 1
r d
1 2 r u
3 1
s 3
r n
3
gde je : a) skup ulaznih vrednosti proširen da sadržI statusne izraze; b) izlazni skup je prošeren
da sadržI memorijske elemente; c) f I h se definišu kao preslikavanja tipa S x (I ∪ STAT) → S i S
x (I ∪ STAT) → ( O ∪ A ), respektivno.
Koristeći ovaj tip FSMD-a možemo izmodelirati kontroler lifta sa slike 9.3 kao onaj na slici
9.4. Redukcija broja stanja je moguća jer smo projektovali da promenljiva tek_sprat memoriše
vrednost tekućeg sprata, čime se eliminiše potreba da se svakom spratu dodeli po jedna
promenljiva.
179
( tek _ sprat ! = zah _ sprat ) / izlaz := zah _ sprat − tek _ sprat ; tek _ sprat := zah _ sprat
start
si
( tek _ sprat = zah _ sprat ) / izlaz := 0
gde je P = { p1, p2, …, pm} skup lokacija, T = { t1, t2, …, tm} skup tranzicija, pri čemu izme|u P
i T ne postoji preklapanje. Ulazna funkcija I : T → P+ definiše sve lokacije koje obezbe|uju ulaz za
prelaz, dok izlazna funkcija, O : T → P+, definiše sve izlazne lokacije za svaku tranziciju. Drugim
rečima, ulazno izlazne funkcije specificiraju povezljivost lokacija i tranzicija. Konačno, funkcija
markiranja u : P → N definiše broj znakova u svakoj lokaciji, gde je N skup nenegativnih
celobrojnih vrednosti.
Na slici 9.5 prikazan je grafik i tekstualna reprezentacija Petri mreže. Uočimo da u konkretnom
primeru postoji pet lokacija (grafički označene kao krugovi) i četiri prelaza (grafički označeni
punom uspravnom linijom). U ovom slučaju, lokacije p2, p3 i p5 obezbe|uju (poseduju) ulaze za
prelaz t2, dok su p3 i p5 izlazne lokacije za t2. Funkcija markiranja M dodeljuje po jedan znak
lokacijama p1, p2 i p5, a po dva znaka lokaciji p3, kao što je naznačeno izrazom u (p1, p2, p3, p4, p5) =
(1, 1, 2, 0, 1).
180
Slika 9.5: Primer Petri-mreže
Princip rada Petri mreže bazira se na opaljivanju prelaza. Prelaz se može opaliti samo ako mu
je dozvoljen rad, što obično znači da odgovarajuća ulazna lokacija ima po najmanje jedan znak. Za
tranziciju kažemo da je opaljema kada je ona otklonila sve svoje znakove sa ulaznih lokacija koji
joj dozvoljavaju rad, a smestila po jedan znak na svaku od specificiranih za nju izlaznih lokacija.
Ilustracije radi, za sliku 9.5 važi da će se nakon opaljivanja tranzicije t2, markiranje u promeniti na
(1, 0, 2, 0, 1).
Petri mreže su korisne jer one efikasno modeliraju različite sistemske karakteristike. Tako na
primer, na slici 9.6 (a) prikazano je modeliranje sekvenciranja, kod koga sse tranzicija t1 opaljuje
nakon tranzicije t2. Na slici 9.6 (b) prikazano je modeliranje ne-determinističkog grananja, pri čemu
je dvema tranzicijama dozvoljen rad a samo se jedna od njih može opaliti. Na slici 9.6 (c) prikazano
je modeliranje sinhronizacije, kod koje se prelaz može opaliti samo ako u obe ulazne lokacije
postoje znaci. Na slici 9.6 (d) prikazano je kako se modelira sudar zbog korišćenja-resursa
(resource contention) pri čemu se dve tranzicije takmiče za isti znak koji se nalazi u centralnoj
lokaciji. Na slici 9.6 (e) prikazano je kako se može modelirati konkurentnost, slučaj kada dve
tranzicije, t2 i t3, se mogu opaliti istovremeno. Nešto preciznije, slika 9.6 (e) modelira dva
konkurentna procesa, proizvođač i potrošač, što znači da znak koji se nalazi u centralnoj lokaciji
generiše se od strane t2 a troši od t3.
181
Slika 9.6: Prezentacija uz pomoć Petri-mreže: (a) sekvenciranje, (b) grananje, (c)
sinhronizacija, (d) sudar, (e) konkurentnost
I pored toga što Petri-mreža ima veći broj prednosti kod modeliranja i analize konkurentnih
sistema, ona ima ograničenja kao i ona koja su slična za FSM, a to je da ona brzo postaje glomazna
i nerazumljiva sa povećanjem kompleksnosti sistema.
Slika 9.8: Data flow dijagram: (a) activity nivo, (b) operacioni nivo
Treba naglasiti da DFG ne opisuje sekvenciranje koje prati problem nego samo ukazuje na
zavisnosti koje postoje između različitih aktivnosti. Štaviše DFG ne sadrži bilo kakvu informaciju
koja se odnosi na implementaciju mašine. Iz tih razloga DFG se često koristi u fazi specifikacije
sistema kao sredstvo za komunikaciju između projektanata i korisnika. Treba takođe naglasiti da,
pošto DFG-ovi podržavaju hijerarhijsku dekompoziciju, kao modeli su pogodni za specificiranje
složenih transformacija koje sistem obavlja. Ipak, imajući u vidu da ovaj model ne izražava
(specificira) bilo kakvo vremensko sistemsko ponašanje ili upravljačku akciju koja se nalazi u
pozadini zavisnosti po podacima DFG kao model tada nije pogodan za embedded sisteme.
184
potege da ukaže na sekvenciranje ili tok upravljanja (control flow). Dijagrami toka takođe
podsećaju na FSMD-ove u tom smislu da oba ističu upravljački aspekt sistema, i pored toga što se
oni značajno razlikuju u mehanizmima pomoću kojih se trigeruju (okidaju) prelazi : naime,
tranzicije kod FSMD-a se trigeruju nakon pojave eksternih događaja, dok se tranzicije kod
dijagrama toka trigeruju uvek kada se završi pojedina aktivnost.
U osnovi, dijagram toka čini skup čvorova i skup potega. Između određenog broja čvorova
nalaze se start i end čvorovi, koji ukazuju na početnu i krajnju tačku dijagrama toka. Drugi tip čvora
je computation čvor koji se koristi da definiše transformaciju podatka na putu kroz sekvencu iskaza
dodele. Konačno, postoje i decision čvorovi koji se koriste za upravljanje tokom grananja. Različiti
tipovim čvorova u dijagramu toka su povezani pomoću usmerenih potega, koji ukazuju na redosled
u kome se čvorovi moraju izvršavati. Grafički, dijagram toka treba da bude zaokružen
pravougaonicima koji ukazuju na početne i krajnje čvorove, pravougaonicima koji predstavljaju
čvorove izračunavanja i rombovima koji ukazuju na blokove odluke. Na slici 9.9 prikazan je primer
dijagrama toka koji izračunava maksimum od N brojeva memorisanih u polju MEM.
Dijagram toka je koristan kada je potrebno sagledati sistem kao skup sekvencirajućih aktivnosti
koje se upravljaju od strane upravljačkog toka. Ovaj model je pogodan za one sisteme koji imaju
dobro definisane zadatke i koji ne zavise od spoljnjih događaja. On se takođe može koristiti da
ukaže na specifični redosled izvršenja aktivnosti kod DFG kada je potrebno da se naznači prirodna
zavisnost po podacima. U najvećem broju slučajeva dijagrami toka se koriste samo tada kada se
implementacija sistema od strane projektanta dobro razume.
185
ALU-ovi, procesori, ili čak podsistemi. Potezi, sa druge strane, predstavljaju različite veze između
ovih komponenata, a to su obično magistrale i žice.
Slika 9.10: Strukturno orijentisano modeliranje: (a) blok dijagram sistem, (b) šema na RT
nivou, (c) šema na nivou logičkih kola
S obzirom da ovaj model nam omogućava da pridružimo različite objekte pomoću čvorova i
potega, CCD se može inkorporirati u različitim modelima prezentacije. Tako na primer, na slici
9.10, CCD je instanciran na tri različita nivoa apstrakcije, na nivou sistemskog blok dijagrama, na
nivou šeme sa registrima i na nivou šeme sa logičkim kolima. Kod blok dijagrama, komponente se
definišu kao moduli na sistemskom nivou, kakvi su procesori, memorije ili ASIC čipovi. Naglasimo
da se veze između ovih komponenata specificiraju samo parcijalno, s obzirom da ovaj dijagram ne
sadrži detaljnu informaciju o povezivanju, kakva je obim magistrale podataka i obim upravljačke
magistrale itd. Na nivou šeme sa registrima komponente su namenjene da predstavljaju jedinice na
registarskom nivou, kakve su ALU, registri, selektori magistrala, a veze definišu kako će se podaci
prenositi između aritmetičkih i memorijskih elemenata. Kod ovog tipa šeme upravljački signali se
obično ne prikazuju. Konačno, šema na nivou logičkih kola koristi logička kola kao komponente, pa
se u ovom slučaju veze između komponenata predstavljaju aktuelnim fizičkim žicama (vezama).
Drugim rečima, veze koje odgovaraju podacima i upravljačkim signalima se u potpunosti
specificiraju.
Imajući u vidu da Component Connectivity model je veoma pogodan za predstavljanje
strukture sistema, on se često koristi u kasnijim fazama procesa projektovanja, tj. u trenutku kada
projektanti žele da specificiraju implementaciju sistema.
186
9.6 Data-oriented modeli
Kod ovog tipa dijagrama svaka celina ukazuje na jedinstveni tip podataka koji procesira jedan
ili veći broj specifičnih atributa. U našem slučaju koji se tiče magacina, atributi celine Potrošač
mogu biti imena i adrese svakog potrošača, dok atributi koji prate celine Produkt mogu biti imena i
cene svakog proizvoda. Kao pravilo važi da odnos održava neku činjenicu koja je relevantna za
celine, kao na primer odnos P.O. instanca se odnosi na informaciju o tome koji potrošač želi čiji
proizvod od kog dobavljača.
S obzirom da ERD pruža dobar uvid u podatke celog sistema ovaj model je veoma pogodan
kada treba organizovati složene odnose između različitih tipova podataka. Treba ipak naglasiti da
ERD model ipak ne opisuje funkcionalno i vremensko ponašanje sistema.
Na slici 9.12 prikazan je primer Džeksonovog dijagrama koji modelira skup objekata za
crtanje. Kod ovog dijagrama, Crtež predstavlja kompozitni tip podatka koga čine Color, Shape, i
Users koji su označeni operacijom ‘*’. Svaki podatak tipa User čini Name, dok svaki podatak tipa
Shape može biti Circle ili Rectangle. Konačno, podatak tipa Rectangle se sastoji od dva podtipa,
Width i Height, dok podatak tipa Circle ima samo jedan podtip – Radius.
Džeksonov dijagram je pogodniji za predstavljanje podataka koji imaju kompozitnu
kompleksnu strukturu, nasuprot ERD modelu koji je pogodniji za predstavljanje podataka između
kojih postoje kompleksnije međusobne relacije. Ipak treba naglasiti da su ograničenja ovog modela
slična onim koja se odnose na ERD, a sastoje se u tome da ovaj model nije pogodan za opis bilo
kakvog funkcionalnog ili vremenskog ponašanja sistema.
188
Slika 9.13: Control/Data Flow graf: (a) Programski kod, (b) CDFG
Na slici na 9.13 (b) prikazana je CDFG prezentacija programa datog na slici 9.13 (a).
Naglasimo da upravljačke konstrukcije programskog jezika, kakav je case iskaz, se preslikavaju
control flow čvorove, dok se grupe iskaza dodele između ove control flow konstrukcije
predstavljaju pomoću DFG-ova. Uočimo, takođe, da su CFG i DFG-ovi povezani pomoću
isprekidanih linija koje ukazuju koje aktivnosti u okviru DFG-ova se pridružuju kojim čvorovima u
CFG-u. Kada upravljanje karakteristično za neki čvor započne, ono će se izvršiti nezavisno od toga
koje aktivnosti su bile predviđene za taj čvor.
CDFG nije ograničen samo na predstavljanje upravljačkih konstrukcija i iskaza dodele u
programskom jeziku. Nasuprot tome, on se može koristiti za predstavljanje bilo kojih kompleksnih
aktivnosti i uravljačkih akcija koje se preuzimaju od strane sistema i često se koristi kod
projektovanja sistema koji rade u realnom vremenu.
189
Slika 9.14: Nivo aktivnosti CDFG-a
190
Slika 9.15: Primer strukturnog dijagrama
192
Slika 9.16: Sistem sa objektnim i transformacionim funkcijama
193
Slika 9.17: Primer program-state mašine
Slika 9.17 prikazuje primer program-state mašine koja se sastoji od root stanja Y, koje samo po
sebi sadrži dva konkurentna podstanja, A i D. Stanje A se zatim sastoji od dva sekvencijalna
podstanja, B i C. Naglasimo da su stanja B, C i D stanja list, i pored toga što slika prikazuje
program samo za stanje D. U saglasnosti sa grafičkim simbolima koje smo uveli, može se uočiti da
označeni potezi e1 i e3 su tipa TOC potega, dok je poteg označen kao e2 tipa TI potega.
Konfiguracija potega znači da kada stanje B završi i kada je uslov e1 istinit upravljanje se prenosi
na stanje C. Ali kada je uslov e2 istinit a nalazimo se u stanju C upravljanje će preći na stanje B
nezavisno od toga da li se završava ili ne.
S obzirom da PSM-ovi mogu da predstavljaju podatke sistemskih stanja, kao i aktivnosti u
okviru jedinstvenog modela, oni su značajno pogodniji od HCFSM-ova za potrebe modeliranja
sistema koji koriste složene podatke i aktivnosti pridružene svakom stanju. PSM takođe može da
premosti primarno ograničenje programskih jezika, s obzirom da on može da modelira stanje
eksplicitno. On omogućava licu koje modelira da specificira sistem koristeći hijerahijsku
dekompoziciju stanja sve dok je projektant modela u stanju da koristi programske konstrukcije.
Model programskog jezika kao i HCFSM model su dva ekstrema FSM modela. Programse može
posmatrati kao PSM koji ima samo stanja tipa list pri čemu stanje sadrži samo jezičke konstrukcije.
HCFSM se može posmatrati kao PSM kod koga sva stanja tipa list ne sadrže jezičke konstrukcije.
194
Slika 9.18: Model čekanja: (a) jedan server, (b) više servera
Važna osobina modela čekanja je da predstavlja sistem kao mrežu redova čekanja i servera.
Dolazeći zahtevi se memorišu u redovima čekanja i čekaju na procesiranje od strane servera. Na
slici 9.18 (a) i (b) prikazani su primeri modela redova čekanja sa jednim ili većim brojem servera.
Prednost modela redova čekanja je ta što pružaju osnovu za određene tipove matematičkih
analiza koji su često neophodni da bi se rešili problemi u sistemu. Ako poznajemo određene
karakteristike sistema, kakav je broj servera, tipovi redova čekanja, interval između dva uzastopna
dolazeća zahteva, i vreme opsluživanja koje se iziskuje od zahteva, model reda čekanja omogućava
nam da dobijemo informaciju o korišćenju (deo vremena za koje je server zauzet), dužini čekanja
(prosečan broj zahteva koji čekaju u redu čekanja), propusnost (brzina sa kojom se zahtevi
procesiraju od strane servera). Projektanti mogu zatim da koriste ovu novu informaciju kako bi
locirali usko grlo u sistemu.
Treba naglasiti da različiti modeli mogu zahtevati različite tipove matematičkih analiza. Neki
modeli, kakvi su oni koji imaju jedinstven server i jedinstveni red čekanja, zahtevaju relativno
jednostavne tehnike, dok drugi zahtevaju nešto sofisticiranije tehnike, dok je neke skoro nemoguće
analizirati kvantitativno.
Kao primer analiziraćemo model koji se sastoji od jednog servera i jednog reda čekanja. Sa
ciljem da obavimo matematičku analizu i odredimo ponašanje sistema, neophodno je da znamo
nekoliko parametara modela. Na primer, mora da se zna interval između dva sukcesivna zahteva
kao i vreme potrebno da se opsluži jedan zahtev. Moguće je da se modeliraju oba ova vremena kao
slučajno promenljive sa definisanim distribucijama, kakav je slučaj ako usvojimo da interval
između dva pristizanja kao i vreme opsluživanja imaju eksponencijalnu distribuciju. U ovom
slučaju, ako je prosečni interval između pristizanja λ a prosečno vreme opsluživanja je µ, tada se
stabilni red čekanja može ostvariti ako je λ > µ , jer će to obezbediti da ne postoji mnogo zahteva
koji čekaju u redu čekanja. Za slučaj da je λ ≤ µ, tada red čekanja postaje nestabilan što dovodi do
pojave beskonačno dugog čekanja.
Do ovog trenutka ukazali smo na različite modele koji se mogu koristiti za opis funkcionalnosti
sistema, podataka, upravljanja i strukture. Arhitektura je namenjena da podrži rad ovih opisnih
195
modela, specificirajući na koji način će se sistem aktuelno implementirati. Cilj arhitekture je da
opiše broj komponenata, tip svake komponente, i tip svake veze između različitih komponenata u
sistemu.
Arhitekture se mogu variraju u opsegu od jednostavnih kontrolera do masivno paralelnih
procesora. Uprkos ovim razlikama, pravi se razlika između sledećih klasa: 1) aplikaciono specifične
arhitekture kakvi su DSP sistemi, 2) procesori opšte namene kakvi su RISC-ovi i 3) paralelni
procesori kakve su SIMD i MIMD mašine.
Kao što smo prethodno pomenuli, postoje dva tipa kontrolera, transition-based i state-based.
Oba tipa kontrolera razlikuju se u načinu definicije izlazne funkcije h. Kod transition-based
kontrolera, h se definiše kao preslikavanje S × I → O, što znači da je izlazna funkcija zavisna od
dva parametra, naime, State register i Inputs. Kod state-based kontrolera, h se definiše kao
preslikavanje S → O, što znači da je izlazna funkcija zavisna od samo jednog parametra, State
register. S obzirom da su ulazi i izlazi Bool-ovi signali, u oba slučaja, ova arhitektura je veoma
pogodna za implementaciju kontrolera koji ne zahtevaju kompleksne manipulacije sa podacima.
Sintezu kontrolera čini minimizacija stanja ili kodiranje stanja, Bool-ova minimizacija i tehnološko
mapiranje funkcija narednog stanja i izlaza.
196
N −1
y (i) = ∑ x(i − k )b(k )
k =0
gde je N = 4. Naglasimo, da Datapath sa slike 9.20 (a) obavlja sva množenja konkurentno a
sabiranje obavlja paralelno koristeći princip stabla. Datapath sa slike 9.20 (b), takođe obavlja sva
množenja konkurentno, ali sabiranja proizvoda obavlja serijski. Takođe, naglasimo da Datapath sa
slike 9.20 (a) ima tri protočna stepena, svaki izdvojen isprekidanim linijama, dok Datapath sa silke
9.20 (b) ima četiri protočna stepena izdvojena isprekidanim linijama. I pored toga što oba Datapath
koriste po četiri množača i tri sabirača, Datapath sa slike 9.20 (b) je regularniji i lakši za
implementaciju u ASIC tehnologiji.
Slika 9.20: Dve različite Datapath za FIR filtar: a) sa tri protočna stepena, b) sa četiri protočna
stepena
Kod ove arhitekture, sve dok se svaka operacija u algoritmu implementira pomoću sopstvene
funkcionalne jedinice, kao što je dato na slici 9.20, nema potrebe za uvođenje upravljanja u radu
sistema, jer podaci jednostavno protiču od jedne ka narednoj jedinici, a takt se koristi samo za
punjenje protočnih registara. Ponekad, ipak, neophodno je da se koristi manji broj jedinica kako bi
se uštedela površina na silicijumu, što znači da je neophodno da se ugradi jednostavni kontroler koji
će upravaljati tokom podataka između jedinica i registara, i birati odgovarajuću aritmetičku funkciju
za one jedinice koje mogu obavljati različite funkcije u različitim vremenima. Druga situacija je ona
koja se odnosi na implementaciju više od jednog algoritma na istu stazu podataka, pri čemu se svaki
algoritam izvršava u različitom vremenu. U ovom slučaju, pošto svaki algoritam zahteva jedinstveni
tok podatka kroz datapath, potreban nam je kontroler koji će regulisati protok podataka. Ovakvi
kontroleri su obično jednostavni i bez izvedene mogućnosti o uslovnom grananju.
Uobičajeno, datapath arhitektura se implementira kao ASIC. Jeftinije rešenje je ono koje koristi
raspoloživi DSP procesor, čiji datapath čine množač i akumulator. Ovaj tip DSP-a, obično ima
analogni interfejs, sa A/D i D/A konvertorima na istom mikročipu. Takođe, on često ima izdvojene
197
magistrale za instrukcije i podatke tako da se pribavljanje instrukcija i podataka može vršiti
konkurentno, što dovodi do veće propusnosti. U nekim situacijama, ovaj čip može da ima
preprogramirani ROM koji je namenjen za izvršenje standardizovanih funkcija, kakve su Furijeove
transformacije i digitalno filtriranje.
Kao arhitektura opšte namene, FSMD-ovi se obično koriste za različite ASIC dizajne. FSM
kontroler i DSP datapath koje smo prethodno pomenuli su dva specijalna slučaja ovog tipa
arhitekture. Pored toga, FSMD je takođe i osnovna arhitektura za procesore opšte namene, pošto
svaki procesor sadrži kako control unit tako i datapath, pored memorija u kojima se čuvaju podaci i
program.
9.10 Procesori
Postoje RISC, CISC, VLIW, vektorski i paralelni računari. Više detalja o ovim arhitekturama
se može naći u udžbenicima koji razmatraju problematiku arhitekture računara.
198
Poglavlje 10
Razrada Specifikacije
10.1 Uvod
199
Slika 10.1: Preslikavanje obima memorije: (a) deklaracija promenljivih; (b) preslikavanje u
memoriju obima 8-bitova; (c) upis 12-bitne vrednosti u C; (d) upis 12-bitne vtrednosti u D
Usklađivanje promenljive se vrši kada je obim promenljive, sa tačke gledišta broja bitova,
manji od obima memorije, ili ako obim promenljive odgovara multiplu širine memorije.
Sagledajmo sada deklaracije promenljivih sa slike 10.1 (a) koje treba da se preslikaju u 8-bitnu
memoriju, kako je to prikazano na slici 10.1 (b). Promenljivima A i B se dodeljuje po jedna i dve
memorijske reči, respektivno.
Ako obim memorije nije celobrojna vrednost obima memorije, tada se preslikavanje može obaviti
na dva načina. Za 12-bitnu promenljivu C osam LS bitova se dodeljuju jednoj adresi, a ostala četiri
bita se dodeljuju naradnoj adresi (vidi sliku 10.1 (b)). Promenljiva D je druga 12-bitna promenljiva
kod koje se šest LS bitova preslikavaju u jednu adresu, a šest ostalih bitova u narednu adresu. Prvi
pristup zahteva ugradnju multipleksera manjeg obima kada se promenljiva C upisuje u memoriju,
ali zahteva da se na magistrali podataka poveže osam drajvera (vidi sliku 10.1 (c)). Drugi pristup
zahteva ugradnju multipleksera većeg obima, ali je sada potrebno ugraditi samo šest drajvera
magistrale kako bi se ostvarilo povezivanje na memorijsku magistralu podataka (vidi sliku 10.1
(d)).
200
Prvo, ako se vektor promenljiva V indeksira u potpunosti numeričkim adresama, obraćanja njoj
se u potpunosti zamenjuju odgovarajućim obraćanjima memoriju MEM. Naime, obraćanje V(0) se
zamenjuje sa MEM(100), a V(36) sa MEM(136).
Drugo, ako se vektor indeksira iskazom kojim se pozivaju promenljive, tada ofset, koji
odgovara početnoj memorijskoj adresi prvog elementa vektor promenljive, mora da se doda tom
izrazu. Na primer, neka je data vektor promenljiva V koja se u programskom kôdu sa slike 10.2 (a)
indeksira sa J i K. S obzirom da je u memoriji MEM V-u dodeljena početna adresa 100, obraćanje
V(J) biće zamenjeno sa MEM(J+100), dok obraćanje V(K) biće zamenjeno sa MEM(K+100) - (vidi
sliku 10.2 (b)).
Kao treće, ako se promenljiva koristi za indeksiranje samo jednog vektora, tada se dodavanje ofseta
može izbeći još u fazi inicijalizacije adrese promenljive. Tako na primer, promenljiva J se koristi
samo za indeksiranje vektor promenljive V. Na slici 10.2 (c) prikazano je kako ažuriranje svih
inicijalizacija J-a (uključujući i granice svih for- loop konstrukcija) eliminiše potrebu za
dodavanjem ofseta. Na žalost, ovo nije uvek moguće ako promenljiva J indeksira nekoliko vektora.
U ovom slučaju, može se izbeći sabiranje ofseta za najmanje jednu vektor promenljivu, ako joj se
dodeli memorijska adresa koja počinje od 0.
Slika 10.2: Prevođenje memorijske adrese: (a) početna specifikacija; (b) specifikacija sa ofsetom
svim indeksnim izrazima za V; (c) specifikacija sa ažuriranjem indeksne promenljive J
201
koga ćemo u daljem delu ovog teksta sretati, odnosiće se na skup konkurentnih ponašanja, nazvanih
proces.
1) obim-podataka (data size), bits(C) , predstavlja broj bitova jedne poruke koja se prenosi
kanalom C. Obim-podataka uključuje i adresne bitove koji su potrebni za pristup
promenljivima putem kanala.
2) broj-pristupa (number of access), access(P,C), odgovara broju puta koji behavior P prenosi
podatke preko kanala C u toku svog životnog veka.
3) prosečna-brzina-kanala (channel average rate), avgrate(C), predstavlja brzinu sa kojom se
podaci predaju preko kanala C u toku veka-života behavior-a koji komuniciraju preko
kanala.
4) vršna-brzina-prenosa-kanala (channel peak rate), peakrate(C), je brzina sa kojom se
preko kanala prenosi jedna poruka.
Bilo koja implementacija magistrale kanala ili grupe kanala se može okarakterisati pomoću sledeća
četiri parametra:
buswidth( B)
peakrate( B) = (10.1)
protdelay( B)
Slika 10.3: Tipična magistrala formirana objedinjavanjem kanala koji između nekoliko behavior-a
prenose podatke različitih po obimu
203
Slika 10.4: Spajanje kanala X i Y u magistralu B
Pre nego što obavimo objedinjavanje kanala u magistralu, treba voditi računa da ako se po jednom
kanalu prenose podaci određenom prosečnom brzinom, tada magistrala treba da bude u stanju da
prenese podatke sa istom prisečnom brzinom. Ovo se postiže ako prosečna brzina prenosa,
avgrate(B), magistrale B je veća od zbira individualnih prosečnih kanalnih brzina
avgrate( B) ≥ ∑ avgrate(C )
C∈B
(10.2)
Cilj generisanja magistrale treba da bude sinteza magistrale sa minimalnim brojem žica kao i
prosečnom brzinom prenosa definisanom jednačinoom (10.2). Najefikasnija implementacija
magistrale ostvaruje se kada magistrala nije nikad pasivna (idle), i ako permanentno prenosi
podatke fiksnom brzinom. Pod ovakvim uslovima, vršna i prosečna brzina prenosa po magistrali
biće identične:
204
slučaju kao na slici 10.2 (b). Treba sada naglasiti da su behavior-u za potrebe komuniciranja po
magistrali potrebna četiri vremenska slota. Ovo rešenje je u suštini neprihvatljivo, iz razloga što su
ostala dodatna dva vremenska slota i dalje potrebna da se obave interna izračunavanja behavior-a
(početno obavljena u vremenskim slotovima t = 2 i t = 3, kako je to prikazano na slici 10.5 (a).
Ako je za kanal X specificirana minimalna vršna brzina prenosa 16 bps-a, dobićemo željenu
implementaciju magistrale kao na slici 10.5 (c), tj. implementacija koja ne zahteva bilo kakvih
dodatnih vremenskih slotova. Na ovaj način, za sve kanale C koji se karakterišu minimalnom
vršnom brzinom prenosa važi
U slučaju kada je specificirano ograničenje koje se odnosi na vršnu brzinu prenosa kanala, tada
rezultujuća magistrala biće pasivna u određenim vremenskim trenucima.
Slika 10.5: Ograničenja koja se odnose na vršnu brzinu kanala: (a) trag izvršenja po kanalu X; (b)
magistrala B sintetizovana bez ograničenja o vršnoj brzini prenosa kanala; (c) magistrala B
sintetizovana kada se uzme u obzir ograničenje o vršnoj brzini prenosa od 16 bps-a
⎡ bits (C ) ⎤
commtime( P) = access( P, C ) × ( ⎢ × protdelay( B)) (10.5)
⎢ currwidth ⎥⎥
total _ bits ( B, C )
avgrate(C ) = (10.6)
comptime( B) + commtime( B, C )
gde je:
a) total_bits(B,C) = access(B,C) * bits(C) -- ukupan broj bitova koji se predaju po kanalu C u
toku vremena života behavior-a B
b) ukupno vreme izvršenja bilo kog behavior-a čine sledeće dve komponente:
1. comptime(b) -- vreme izračunavanja koje se definiše kao vreme koje je potrebno da
behavior B obavi interna izračunavanja
2. commtime(B,C) -- vreme komunikacije koje se definiše kao vreme potrebno da
behavior B prenese podatke preko kanala C
207
Ostale cene funkcija, se takođe mogu definisati kako bi se procenila cena koja odgovara
specifičnom obimu-magistrale. Na primer, ako želimo implementaciju magistrale sa najmanjim
brojem veza cena se određuje pojednostavljenjem currwidth.
Kada za grupu kanala postoji više od jedno ostvarljivo rešenje, tada se za implementaciju
magistrale bira obim sa najnižom cenom. Promenljiva mincost u algoritmu 10-1 predstavlja
minimalnu izračunatu cenu za sve izvodljive implementacije, dok promenljiva mincostwidth
predstavlja obim-magistrale, koji odgovara minimalnoj ceni.
Ako ne postoje ostvarljiva rešenja za sve ispitane obime-magistrala, tada implementacija za
grupu kanala nije moguća. Bilo kakva implementacija za takvu grupu kanala progresivno zakasniće
komunikacije behavior-a preko magistrale. Ovakva situacija se javlja kada se radi implementacije u
jedinstvenu magistralu zajedno grupiše nekoliko kanala sa velikom prosečnom brzinom prenosa.
Kod ovakve situacije jedno od rešenja se sastoji u podeli grupe kanala koje treba implementirati na
više od jedne magistrale. Alternativno, ako ne postoji drugo rešenje, bira se obim neizvodljive
magistrale čija je cena najniža.
Slika 10.6: Veličina poruke, broj pristupa kanalu i vremena izračunavanja za dva kanal
temperaturnog kontrolera
Prvo se određuje opseg obima magistrale koga ćemo ispitivati. Oba kanala ch1 i ch2 se koriste
za pristup promenljivim tipa polje, koje imaju 128 reči (7 adresnih bitova), pri čemu je svaka reč
obima 16 bitova. Na ovaj način najveći broj bitova koji učestvuje u bilo kom prenosu preko bilo
kog kanala je 23. Opsezi obima magistrale koje ćemo ispitivati su:
208
Slika 10.7: Temperaturni kontroler: cena u odnosu na obim magistrale
minwidth = 1 a maxwidth = 23
Takođe za currwidth = 18 bitova, prosečne brzine prenosa za kanale ch1 i ch2 se izračunavaju
na osnovu jednačine (10.6).
⎡ 23 ⎤
avgrate(ch1) = (128 × 23) ÷ [515 + (128 × ⎢ ⎥ × 2)] = 2.86 bits / clock
⎢ 18 ⎥
⎡ 23 ⎤
avgrate(ch2) = (128 × 23) ÷ [129 + (128 × ⎢ ⎥ × 2)] = 4.59 bits / clock
⎢ 18 ⎥
S obzirom da je suma prosečnih brzina prenosa za dva kanala manja od peakrate(B) koje smo
prethodno odredili, obim magistrale od 18 predstavlja realno ostvarljivu implementaciju magistrale.
Možemo sada odrediti cenu koja važi za ovaj obim magistrale. Vršna brzina prenosa kanala
ima minimalno ograničenje od 10 bitova po taktnom intervalu sa težinom 10. S obzirom da je vršna
brzina određena da bude 9 bita po taktnom intervalu
209
Slika 10.8: Temperaturni kontroler: vreme izvršenja u odnosu na obim magistrale
210
linije se mogu takođe direktno kodirati u adrese podataka kojima se pristupa preko magistrale. U
ovim slučajevima slave behavior-i moraju da poseduju mehanizam za detekciju adrese koji testira
svaku adresu prisutnu na magistrali, sa ciljem da odredi da li on treba da se odazove na kontrolne
signale koji su postavljeni od strane master behavior-a.
Slika 10.9: Behavior-i pristupaju promenljivama preko kanala koji su grupisani u magistralu
Ilustriraćemo generisanje protokola preko jednog jednostavnog primer prikazanog na slici 10.9.
Promenljivima X i MEM se pristupa od strane behavior-a P i Q. Isprekidane linije ukazuju kako je
izvršena dodela behavior-a i promenljivih sistemskim komponentama. Kanali CH0, CH1, CH2 i
CH3 su grupisani u jedinstvenu magistralu B, čiji je obim određen tako da bude 8 bitni. Generisanje
protokola čine sledeći koraci:
1. Selekcija protokola: za implementaciju magistrale moguće je selektovati veći broj
različitih komunikacionih protokola, kakvi su full-handshake, half-handshake, i hardwired
ports. Za svaki protokol neophodno je da se koristi različiti broj kontrolnih linija. Za magistralu
B sa slike 10.9 izabran je full-handshake protokol. Za implementaciju handshaking-a koriste se
dva signala START i DONE.
2. ID dodela: ako se na istoj magistrali implementira N kanala, tada za kodiranje kanala ID
potrebno je log2N linija. Pri tome se svakom kanalu dodeljuje jedinstveni ID. Za sva 4 kanala
sa slike 10.9 potrebne su dve ID linije. Kanalu CH0 se dodeljuje ID “00”, CH1 se dodeljuje
“01”, itd.
3. Struktura magistrale i definicija procedura: struktura koja se određuje za magistralu
(linije podataka, kontrole i ID) definiše se uz specifikaciju. Za svaki kanal koji se preslikava na
magistrali, generišu se odgovarajuće procedura za predaju i prijem, koje enkapsuliraju
sekvencu dodela linija magistrale koje se odnose na upravljanje, podatke i ID sa ciljem da se
obavi željeni prenos podataka. Na slici 10.10 prikazana je deklaracija 8 bitne magistrale koja
sadrži dve kontrolne linije i dve ID linije. Magistrala B se deklariše da bude globalna
promenljiva (tipa signal u slučaju VHDL-a) tako da svi behavior-i mogu da joj pristupe.
Behavior P upisuje u 16 bitnu promenljivu X preko kanala CH0. S obzirom da je obim
magistrale samo 8 bitova, procedura SendCH0 i ReceiveCH0 sa slike 10.10 (b) preneće 16
bitnu poruku pridruženu kanalu CH0 preko magistrale u dva 8 bitna transfera.
4. Ažuriranje referenciranja promenljivih: obraćanja promenljivoj koja je dodeljena drugoj
sistemskoj komponenti u fazi particionisanja sistema mora se ažurirati u behavior-ima gde se
početno vršilo direktno referenciranje njoj. Pristupi promenljivim zamenjuju se pozivima tipa
Send i Receive procedure koji odgovaraju kanalu preko koga se pristupa promenljivoj. Na
primer, na slici 8.9 behavior P upisuje vrednost “32” direktno u promenljivu X. Kanal CH0
predstavlja upis u promenljivu X. Iskaz X <= 32, zamenjuje se pozivom procedure
SendCH0(32) (kako je to prikazano na slici 8.11. Iskaz MEM(60) <= COUNT u behavior-u Q
211
se ažurira na SendCH3(60, COUNT), ukazujući da će vrednost u COUNT biti upisana na adresi
60 polja MEM.
212
Slika 10.11: Razrađena specifikacija nakon generisanja protokola
Generisanje protokola koji je predstavljen u ovoj sekciji ima nekoliko prednosti. Prvo
razrađena specifikacija je u obliku simulacione tabele, a funkcionalnost dizajna, nakon ubacivanja
magistrale i komunikacionih protokola, moguće je verifikovati. Kao drugo, enkapsulacijom prenosa
podataka preko magistrale koja se ostvaruje preko send i receive procedura, i opis behavior-a je
manje nejasan nego što bi bio ako bi se insertovali iskazi za kontrolne linije i linije podataka u
svakoj komunikacionoj tački behavior-a. Konačno ako u kasnijoj fazi se izabere drugi
komunikacioni protokol za komunikaciju preko magistrale, neophodno je promeniti samo
deklaracije magistrale koje se odnose na procedure send i receive. Opisi sistemskog behavior-a, koji
sadrže procedure za send i receive ostaće nepromenjeni.
Konflikti kod pristupa se javaljaju u sistemima kada dva ili veći broj behavior-a pokušava
istovremeno da pristupi istom resursu. Ovakvi konflikti se javljaju, na primer, zbog grupisanja
promenljive i kanala u toku particionisanja sistema. Promenljivim koje su zajednički grupisane
moguće je istovremeno pristupiti od strane različitih behavior-a. Konflikti u pristupu javiće se ako
memorija koja implementira grupu promenljivih poseduje nekoliko portova kojima se može
konkurentno pristupiti. Na sličan način, komunikacioni kanali se mogu grupisati zajedno čime se
implementira jedinstvena magistrala. Behavior-i koji komuniciraju preko ovih kanala mogu da
pokušaju sa istovremenim prenosom podataka, što dovodi do sudara na magistrali.
Arbitraža rešava konflikte zbog pristupa između behavior-a koji konkurentno pristupaju
deljivom resursu. Arbiter generation je zadatak koji insertuje arbitracioni mehanizam u
specifikaciji kad god postoji sudar u pristupu resursima sistema.
213
arbitraža. Ovi modeli su ilustrovani sa primerom prikazanim na slici 10.12 kod koga behavior-i
pristupaju dvoportnoj memoriji.
Kod modela statičke arbitraže, pristupi od strane behavior-a se dodeljuju specifičnom portu
memorije. Na slici 10.12 (a), behavior P pristupa memoriji Mem preko Port2, dok behavior-i Q i R
pristupaju memoriji preko Port1. Mapiranje pristupa specifičnim portovima je statičko; tj. behavior
će pristupiti podatku preko porta koji je njemu dodeljen u toku vremena života sistema. Kod
ovakvog modela, arbitriraju se samo konkurentni pristupi preko jedinstvenog porta. To znači
MemArbiter, se ugrađuje kako bi rešio pristup zbog konflikta u pristupu Portu1 između behavior-a
Q i R. Statički arbitražni model je jednostavan za implementaciju ali su performanse loše jer se
dodela portova izvodi statički, behavior mora da čeka da port postane dostupan koji je statički
dodeljen njemu, i pored toga što je drugi port neiskorišćen.
Kod modela sa dinamičkom arbitražom, behavior-i mogu pristupati memoriji preko različitih
portova u različitim trenucima, u zavisnosti od njihove dostupnosti. Na slici 10.12 (b) sva tri
behavior-a se rutiraju ka svakom od dva memorijska porta korišćenjem komutatorske mreže.
Arbitar, MemArbiter, ograničava pristup ka MEM na dva behavior-a istovremeno. Glavna prednost
ovog arbitražnog modela je veći stepen iskorišćenosti ova dva porta što dovodi do bržeg vremena
izvršenja kada behavior-i pristupaju memoriji. Ipak, dinamička arbitraža zahteva nešto
kompleksniju implementaciju, jer MemArbiter treba da rutira podatke od sva tri behavior-a prema
oba memorijska porta, a pored toga da odabere kom je behavior-u dozvoljeno da pristupi memoriji.
214
Fiksni prioriteti
Šema sa fiksnim prioritetom svakom behavior-u dodeljuje prioritet na statički način. Relativni
prioriteti koji su dodeljeni behavior-ima ostaju nepromenjeni u toku vremena života sistema. Ako
dva behavior-a istovremeno zahtevaju pristup zajedničkom resursu, behavior-u sa višim prioritetom
se dozvoljava pristup. Šeme sa fiksnim prioritetom mogu da rade i na principu istiskivanja. To su
situacije kada behavior koji pristupa deljivom resursu treba da prepusti svoju privilegiju pristupa
drugom behavior-u koji ima viši prioritet. Tako na primer, prioritet sa istiskivanjem sreće se kod
Intel-ovog 8237 DMA kontrolera, koji dozvoljava perifernim uređajima sa višim prioritetom da
istisnu uređaje sa nižim prioritetom.
Određivanje fiksnog prioriteta za različite behavior-e zavisi od određenih metrika koje se
moraju optimizovati. Jedna takva metrika, srednje vreme čekanja, predstavlja prosečno vreme koje
behavior troši na čekanje kako bi dobio pravo pristupa deljivom resursu. Kraće srednje vreme
čekanja rezultira brzom izvršenju kada behavior-i pristupaju resursu.
To znači da se behavior-ima trebaju dodeliti prioriteti na način koji će minimizirati srednje
vreme čekanja. Kod specifičnih dodela prioriteta behavior-ima rezultujuće srednje vreme čekanja se
može isključivo odrediti kada se simulirana specifikacija dinamički izvršava. Da bi odredili
prioritete behavior-a statički, srednje vreme čekanja se obično aproksimira metrikama koje mogu da
se relativno lako evaluiraju. Jedna od tih metrika je obim podataka koja prati način pristupa
behavior-a. Na primer, ako behavior prenosi veliki obim podatka u jednom transferu preko kanala,
tada se tom behavior-u dodeljuje najniži prioritet, kako bi se obezbedili da drugi behavior-i ne
zabrane pristup magistrali za značajni period vremena u toku koga se vrši prenos podataka. Druga
metrika koja se može izabrati odnosi se na najniže srednje vreme čekanja i predstavlja frekvenciju
pristupa koje behavior vrši deljivom resursu. Što je frekvencija pristupa veća tom behavior-u se
dodeljuje veći prioritet.
Kod određivanja prioriteta behavior-ima sistemski projektant može da koristi bilo jedan
kriterijum ili ponderisanu kombinaciju nekoliko kriterijuma.
Dinamički prioritet
Kod šeme sa dinamičkim prioritetom, prioritet behavior-a se određuje u saglasnosti sa stanjem
sistema u toku njegovog rada. Na primer, round-robin šema dodeljuje najniži prioritet behavior-u
koji je u najskorije vreme pristupio resursu. Šema prvi-naišao-prvi-opslužen dodeljuje privilegije
prava pristupa u zavisnosti sa redosledom pristizanja zahteva za pristup. Ove šeme se karakterišu
odsustvom bilo kakvog apsolutnog redosleda po kome behavior-i dobijaju pravo pristupa nad
resursima. Saglasno tome za šeme sa dinamičkom arbitražom kažemo da imaju fer dodelu ili
drugim rečima, behavior ne mora da čeka nedefinisano dugo da bi dobio pravo pristupa nad
resursima.
215
Algoritam 10-2: Generisanje arbitra
Algoritam 10-2 predstavlja VHDL opis arbitra za dati resurs R. Bi predstavlja i-ti behavior koji
pristupa resursu R. Za dodeljene prioritete behavior-ima se usvaja da su memorisani u priority_list
na principu opadajućeg redosleda. Procedura First(L) vraća prvu stavku liste L, a procedura Tail(L)
vraća listu identičnu listi L sa izuzetkom da je prvi element liste izbačen.
Generisanje arbitra je ilustrovano za behavior-e P i Q prikazane na slici 10.11, koja prenosi
podatak preko magistrale B, čiji je obim i protokol bio definisan u sekciji 10.3. Usvajamo da je
behavior-u P dodeljen veći prioritet u odnosu na behavior Q koji se odnosi na prenos podataka
preko magistrale B.
216
Slika 10.13: Detaljno razrađena specifikacija nakon generisanja arbitar behavior za magistralu B
Sistemski projektant može da poveže pojedinačne funkcionalne objekte ili grupe koristeći
standardno raspoložive komponente. Promenljive grupe se mogu povezati sa standardnim
memorijama, behavior-i se mogu povezati sa standardnim čipovima ili procesorima, a kanalne
grupe se mogu povezati sa standardnim protokolima magistrale. Raspored izvoda (pinova) i
komunikacioni protokoli ovih standardnih komponenti su fiksirani i ne mogu se menjati. Saglasno
tome komunikacija između ovih sistemskih komponenata koje koriste različite komunikacione
protokole je jedino moguća ako se uvedu korektni interfejsi.
Sa ciljem da ispitamo efekat povezivanja funkcionalnih objekata u sistem sa standardnim
komponentama, analiziraćemo kanal X sa slike 10.14 (a), preko koga dva behavior-a A i B prenose
podatke. Neka Pa i Pb predstavljaju protokole pomoću kojih se implementiraju komunikacija za
behavior-e A i B, respektivno. Pri ovome može da se javi jedna od sledeće tri situacije, u zavisnosti
od toga koji od behavior-a je bio povezan na standardne komponente:
1. Nijedan od behavior-a nije povezan na standardnu komponentu, vidi sliku 10.14 (a).
Komunikacija između njih se može implementirati generisanjem magistrale i ugradnjom
protokola u behavior-e A i B kako je to objašnjeno u sekciji 10.3.
2. Jedan od behavior-a je povezan na standardnu komponentu, to je behavior B na slici 10.14
(b). Protoko Pb koji je ugrađen u tu komponentu je fiksiran. S obzirom da je drugi behavior, A,
217
projektovan po porudžbini njegov protokol se mora modifikovati kako bi bio kompatibilan sa
protokolom Pb čime se obezbeđuje da behavior-i A i B mogu međusobno komunicirati.
Modifikacije koje su učinjene na Pa se inkorporiraju u specifikaciju behavior-a A.
3. Oba behavior-a su povezana na standardne komponente, kao što je slučaj sa behavior-ima
A i B prikazanim na slici 10.14 (c). U ovom slučaju, odgovarajući protokoli Pa i Pb su fiksni.
Ako su oba protokola međusobno kompatibilna neophodno je samo povezati odgovarajuće
portove na obe standardne komponente i behavior-i će komunicirati međusobno. Ali ako su
protokoli Pa i Pb nekompatibilni, između obe standardne komponente neophodno je ubaciti
interfejs proces. Interfejs proces prikazan isprekidanim linijama na slici 10.14 (c) je behavior
koji obezbeđuje prenos podataka između dve standardne komponente usklađivanjem ovih
nekompatibilnih protokola.
218
10.5.2 Specifikacija komunikacionih protokola
Pre nego što opišemo tehnike za generisanje interfejs procesa, ukazaćemo na metoda za
specifikaciju komunikacionih protokola.
Protokol čini skup atomiziranih operacija. Postoje sledećih pet tipova atomiziranih operacija:
Bilo koji protokol se može specificirati uz pomoć kombinacije pomenutih atomskih operacija.
Komunikacioni protokoli se obično specificiraju na osnovu sledeća 3 načina:
219
Slika 10.15: Predstavljanje protokola: (a) dva behavior-a A i B sa fiksiranim protokolima Pa i Pb,
(b) prezentacija konačnog automata, (c) prezentacija tajming dijagrama, (d) HDL prezentacija
220
reprezentaciju vremenskih ograničenja između parova događaja. Ipak vremenski dijagrami pate od
nekoliko nedostataka.
Kao prvo, oni oskudevaju od akcionog jezika kojim se predstavljaju protokol operacije
pridružene linijama za podatke. Drugim rečima, tačni izvor i odredište podataka koji se prenose
protokolom se ne može specificirati. Na slici 10.15 (b), na primer, prezentacija automata koja se
odnosi na protokol Pb čita elemenat iz polja promenljive MemVar. U tajming dijagramu, jedina
informacija koja se može predstaviti je ta da podatak koji se čita iz polja promenljive je važeći na
linijama za podatke samo određenom trenutku. Saglasno tome, tajming dijagrami se ne mogu
simulirati sa specifikacijom ostatka sistema.
Kao drugo, specifikacija repetitivnih sekvenci događaja se ne može predstaviti bez razmotavanja
petlje i ponavljanja sekvence događaja u tajming dijagramu, što dovodi do stvaranja velikih tajming
dijagrama. Konačno, prezentacija sekvenci uslovnih događaja koja koristi tajming dijagrame
zahteva veći broj dijagrama za svaki uslov ili način rada u protokolu.
Na slici 10.15 (d) prikazan je HDL opis dva protokola. Promenljive koje predstavljaju stvarne
podatke koji se prenose se mogu specificirati u opisu protokola, tj. daju se detalji o tome koji deo
promenljivih se dodeljuje tj. upisuje a koji čita sa portova podataka u bilo kom trenutku. Na primer,
dve dodele koje se odnose na ADDRp u protokolu Pa specificiraju da LS i MS bajtovi adrese,
AddrVar se prenose od strane protokola u dva posebna prenosa. Kašnjenje između operacija se
može specificirati korišćenjem iskaza kašnjenja (kakav je iskaz wait u VHDL-u).
Glavna prednost protokol zasnovanog opisa se sastoji u tome što je on kompletan – sva informacija
o portovima (imena, broj i tip) i repetitivne i uslovne protokol operacije se mogu lako predstaviti
korišćenjem konstrukcija HDL-a. Nije potreban dodatan jezik ili naznačavanje da bi se verifikovala
funkcionalna korektnost. Glavni nedostatak HDL zasnovane protokol prezentacije je da
specifikacija događajnih vremenskih ograničenja može biti otežana.
Slika 10.16: Izvođenje i particionisanje relacija: (a) izvođenje relacija za protokol Pa, (b) izvođenje
relacija za protokol Pb, (c) particionisanje relacija oba protokola u relacione grupe
Prednost relacione prezentacije protokola je ta što ona omogućava jednostavno obuhvatanja I/O
relacija između događaja i protokola, nezavisno od toga kako je protokol specificiran. Na slici 10.16
(a) i (b), protokoli su specificirani koristeći HDL. Ali protokoli se mogu inicijalno specificirati kao
FSM ili tajming dijagram i na jednostavan način predstaviti kao skup relacija.
Notacija za relacionu grupu koju čini skup relacija specificira sekvencijalno izvršenje operacija
u A1, A2 i B1, počevši s leva na desno.
Produžavanjem na sličan način, kreira se druga relaciona grupa, G2, spajanjem relacija A3 i B2.
S obzirom da se 16-bitni podaci generišu od strane operacija u relaciji B2 a čitaju od strane operacija
u A3, to znači da B2 prethodi A3 u relaciji G2, tj.
G2 = (B2, A3).
Operacija kašnjenja nema svoj dvojnik. Da bi videli kada je operacija kašnjenja uključena u
interfejs procesu, razmotrimo operaciju o1 koja predstavlja kašnjenje u jednom protokolu i operaciju
o2, koja čeka na događaj na ulaznoj upravljačkoj liniji u drugom protokolu. Ako u istoj relacionoj
grupi iza o1 sledi o2, tada dualnost operacije kašnjenja o1 je uključena u interfejs proces. Ovo
obezbeđuje da operacija o2 u drugom protokolu se ne izvršava pre vremena. Na primer, relaciona
grupa G2 sastoji se od relacija B2 i B3. U saglasnosti sa definicijom relacija sa slike 10.16, uočavamo
da uslov (100 ns) u relaciji B2 je prosleđen čekanjem na uslov (DRDY_P = „1“) u relaciji A3. Da bi
se obezbedili da protokol Pa ne čita linije za podatke DATAp pre nego što Pb može da generiše
podatke na ovim linijama, u interfejs procesu mora da bude uključena operacija kašnjenja.
Interfejs proces, IP, se dobija inverzijom operacija u relacionim grupama određenim u
prethodnom koraku:
223
IP = (G1’)(G2’)=(A1’A2’B1’)(B2’A3’)
A1’ je dvojnik ove dve operacije što rezultuje u sledeća dva iskaza:
Ovi iskazi su prva dva u interfejs procesu prikazanom na slici 10.18 (a).
Bilo koje interne promenljive potrebne od strane interfejs procesa deklarišu se unutar procesa.
Deklaracije portova za svaku upravljačku liniju za podatke kod oba protokola dodaju se interfejs
procesu zajedno sa inverznim smerom prenosa (tj. in port u protokolu se deklariše kao out port u
interfejs procesu, i obrnuto). Konačno, upravljački i portovi za podatke kod oba behavior-a
povezuju se sa odgovarajućim portovima interfejs procesa.
Slika 10.18: Generisanje interfejs procesa: (a) interfejs procesi sa dualnim operacijama u blokovima
G1 i G2, (b) interfejs proces nakon optimizacije međusobnog povezivanja
224
Optimizacija internog povezivanja
Interfejs proces generisan u prethodnom koraku zahteva da sve linije za podatke i upravljanje
oba protokola budu povezane na njemu, kako je to prikazano na slici 10.18 (a). U određenim
situacijama, moguće je direktno povezati kontrolne portove i portove za podatke od oba behavior-a
koja komuniciraju, čime se na efikasan način premošćava interfejs proces u potpunosti. Ovaj pristup
ima dve prednosti. Prvo, on pojednostavljuje međusobnu spregu u sistemu smanjenjem broja netova
u sistemu. Kao drugo operacije koje se odnose na ove portove u interfejs procesu se mogu u
potpunosti izbaciti. Ovo će u fazi sinteze logike rezultovati efikasnijim interfejs procesom, kako sa
aspekta obima tako i performansi.
Prvi tip optimizacija međusobne sprege pokušava da redukuje linije za podatke koji se
povezuju na interfejs procesa. Usvojimo da dva porta za podatke, D1 i D2, koji pripadaju i jednom i
drugom protokolu su istog obima. Ako interfejs proces upisuje u port D1 svaki put kada pročita
vrednost sa porta D2, a ne postoji kašnjenje (tj. wait iskaz) između operacija, tada se portovi
podataka od oba protokola mogu direktno povezati. Svi upisi u port D1 i čitanja sa D2 se mogu
eliminisati iz interfejs procesa. Saglasno tome, promenljiva generisana za privremeno čuvanje
vrednosti koja se prenosi između portova se može eliminisati. Na slici 10.18 (a), portovi MDATAp i
DATAp su identičnog obima od 16 bitova, pri čemu ne postoji kašnjenje između čitanja vrednosti
od MDATAp i njenog upisa u DATAp; što znači da se ovi portovi mogu direktno povezati. Pored
toga privremena promenljiva TempVar2 i iskazi u interfejs procesu koji se odnose na čitanje i upis u
ove portove se mogu eliminisati.
Drugi tip optimizacije ispituje upravljačke portove oba protokola. Analizirajmo dva
upravljačka porta, C1 i C2 svaki pridružen jednom od protokola. Ako, svaki put interfejs proces čeka
na određenu vrednost na C1, on ažurira C2 sa istom vrednošću, što znači da portovi C1 i C2 mogu
biti direktno povezani. Na primer, na slici 10.18 (a) upravljački portovi DREQp i RDp protokola Pa
i Pb respektivno se mogu direktno povezati. Odgovarajući wait i dodela iskazi se mogu izbaciti iz
interfejs procesa.
Optimizovani interfejs proces generisan za protokle Pa i Pb je prikazan na slici 10.18 (b).
Portovi podataka MDATAp i DATAp, i upravljački portovi DREQp i RDp su direktno povezani.
225
Algoritam 10-3: Generisanje interfejs procesa
226
Slika 10.19: Sinteza na osnovu tajming dijagrama: (a) blok dijagram FIFO magacinsko upravlačke
ćelije, (b) tajming dijagram, (c) graf događaja, (d) skelet kola
Nakon što je graf događaja generisan, šablonska strategija uparivanja se koristi za generisanje
skeleta kola za svaki izlaz ćelije. Svaki čvor u grafu događaja se implementira sa kolom koje će
generisati odgovarajući prelaz na izlazu. Tri tipa šablona se koriste od strane metoda za sintezu
kako bi se predstavili različiti događaji koji treba da se generišu – jedan za generisanje asinhronih
događaja, jedan za generisanje sinhronih događaja na osnovu drugih sinhronih događaja, i jedan za
generisanje sinhronih događaja na osnovu asinhronih događaja. Svaki šablon se sastoji od SR leča.
Usponske i opadajuće tranzicije se ostvaruju odgovarajućim setovanjem i resetovanjem leča. Na
slici 10.19 (d) prikazano je kako je konstruisano skelet kolo polazeći od grafa događaja sa slike
10.19 (c) za svaki od 3 izlaza L, Ro i Ai. Kao primer posmatrajmo izlaz ćelije L. Prva rastuća
tranzicija na L se trigeruje od strane 3 uslova: ulaz A0 je nizak, ulz Ri ima usponsku tranziciju, a L je
na niskom. Stoga, SR leč za L se postavlja kad god je istinito A0 Ri L . Ovo se implementira kao and
kolo koje pobuđuje S ulaz leča za izlaz L. Konačni korak se odnosi na tehnike za optimizaciju
227
logike pomoću kojih se minimizira skelet generisanog kola. Kod primera na slici 10.19, logika kola
je dobijena na osnovu jedinstvenog tajming dijagrama. Da bi sintetizovali transducer-e posebni
grafovi događaja se prvo generišu za tajming dijagrame oba interfejsa (i sa jedne i sa druge strane).
Nakon toga, oba grafa događaja se kombinuju u jedinstveni graf bilo eksplicitnim specificiranjem
zajedničkih oznaka koji povezuju čvorove u oba grafa događaja ili ispitivanjem zavisnosti po
podacima između ova dva interfejsa. Strategija uparivajna šablona o kojoj smo prethodno govorili
se zatim primenjuje na kombinovani graf događaja sa ciljem da se generiše skelet kola. Lečevi za
različite izlazne signale se zatim međusobno povezuju obilaskom po širini grafa događaja (breadth
first traversal). Bilo koje ograničenje koje odnosi na narušavanje tajminga kao i uslovi trke (race
condition) u kolu se koriguju dodavanjem odgovarajuće logike. Na primer, minimalna vremenska
ograničenja se mogu ispuniti ubacivanjem elemenata za kašnjenje u kolu. Konačno, rezultujuća
kola se optimizuju.
Glavna prednost metode za sintezu transducer-a se sastoji u tome što ona inkorporira detaljna
tajming ograničenja u između događaja u oba interfejsa. Kao drugo, nasuprot metodi za generisanje
interfejs procesa opisanoj u prethodnoj sekciji, izlaz transducer sinteze predstavlja logičko kolo –
dalja sinteza nije potrebna. Jedno od ograničenja pristupa je činjenica da neuparenost obima
podataka kod oba interfejsa nije dozvoljena. Pored toga, rezultujuće transducer kolo se ne može
simulirati pomoću tajming dijagrama protokola koje on povezuje.
Bilo koji behavior opis se može implementirati kao softver ili kao hardver. Ako izaberemo
softversku implementaciju, behavioral opis biće kompajliran u skup instrukcija za izabrani
procesor. Ako sa druge strane se odlučimo da implementiramo behavioral opis kao hardver po
porudžbini on će se sintetizovati u strukturu komponenata dobijenih iz biblioteke. U određenim
situacijama, ove komponente mogu biti standardne, dok u drugim slučajevima se mogu generisati
od strane generatora komponenti. Važna stavka pri ovome je da bilo koji sistem koga čine
hardverske i softverske komponente treba da ima hardversko softverski interfejs koji će
predstavljati prilagođenje u komunikaciji između različitih delova.
Posmatrajmo sistem dat na slici 10.20. Kod ovog sistema, procesor i memorija se smatraju
softverskim komponentama dok ostale stavke se vide kao hardverske komponente. Hardverske i
softverske komponente su povezane preko magistrale, što znači da svaka komponenta može da
bude bilo master ili slave magistrale. Master (gospodar) magistrale je bilo koja komponenta koja
upravlja magistralom i inicira prenos podataka, kakvi su procesori, disk kontroleri i DMA
kontroleri. Nasuprot tome, slave magistrale je bilo koja komponenta koja se odaziva na komande
inicirane od strane master-a magistrale, ali koja ne inicira transakcije po magistrali. Tipični slave-
ovi magistrale su memorije i U/I komponente. U slučaju ASIC-a, moguće je da oni budu bilo
master-i bilo slave-ovi, sve to u zavisnosti od funkcija koje obavljaju. Na primer, FP koprocesor se
228
u opštem slučaju implementira kao slave magistrale sa ulaznim i izlaznim baferima instaliranim u
koprocesoru sa ciljem da memorišu operande i rezultate. Sa druge strane, ASIC koji manipuliše sa
video informacijom se obično implementira kao master magistrale, jer je to najbolji način da se
postigne velika brzina podataka ka ili iz memorije. Naglasimo da kada dva ili veći broj gospodara
magistrale se povezuju na jednu magistralu neophodno je ugraditi arbitar magistrale koji
obezbeđuje da samo jedan gospodar u datom trenutku upravlja magistralom. Najveći broj
magistrala, kakve su VMEbus ili Multibus je projektovan sa magistralno arbitražnom šemom koja je
ugrađena u njihovim protokolima. Sa druge strane, kod nekih procesorsko nezavisnih magistrala
kakve su varijante PC/XT/AT, procesor je taj koji arbitrira između konkurentnih zahteva za
upravljanje magistralom.
Sama magistrala, kao sprežna komponenta, se može projektovati za specifičnu aplikaciju, kao
što je bilo opisano u sekciji 10.3.3, ili se može izabrati iz skupa unapred definisanih magistrala,
uključujući Multibus, VMEbus, NuBus, PC/XT/AT bus, STD bus... S obzirom da svaka od ovih
magistrala ima svoj sopstveni komunikacioni protokol, bilo koja komponenta koja se povezuje na
njoj mora da poštuje pravila protokola na toj magistrali. Ponekad, ipak, može se upasti u problem
kada komunikacioni protokol standardne komponente se ne uklapa u protokol izabrane magistrale,
pa u tom slučaju projektant treba da ugradi interfejs komponentu između ovih elemenata sa ciljem
da ostvari korektnu komunikaciju, kako je to bilo diskutovano u sekciji 10.5. Naglasimo da, ako
ASIC još nije bio implementiran, protokol izabrane magistrale se može inkorporirati u
funkcionalnost ASIC-a, i na taj način rešiti problem interfejsa.
U sledećim sekcijama ukazaćemo na nekoliko zadataka koji se odnose na sprezanje
hardverskih i softverskih komponenata. Proces distribucija promenljive, na primer, se može koristiti
za dodelu promenljivih bilo softveru ili hardveru sa ciljem da se ispuni zahtev za brzinom prenosa
podataka po minimalnoj ceni. Zadatak generisanja interfejsa dodaje interfejs proces koji će
dozvoliti korektnu komunikaciju između komponenata između kojih postoje nekompatibilne
magistrale. Konačno, zadatak razrada pristupa podacima i upravljanju ubacuje u softverskom ili
hardverskom opisu komunikacione protokole koji su neophodni za korektni prenos podataka i
upravljanje.
229
Slika 10.21: Particionisana specifikacija
Slika 10.22: Distribucija promenljive: (a) obe hardverske i deljive promenljive se čuvaju u
memoriji, (b)hardverske promenljive se čuvaju u ASIC dok se deljiva promenljiva nalazi u
memoriji, (c) obe hardverske i deljive promenljive se čuvaju u ASIC
Slika 10.22 prikazuje tre različite alternative za distribuciju promenljive. U ovom primeru,
behavior A se izvršava na procesoru, a behavior-i B1 i B2 su sintetizovani u ASIC. Naglasimo da
promenljiva v1 je deljiva promenljiva kojoj se pristupa od strane oba A i B1, a da odgovarajući
komunikacioni kanali za pristupe promenljivoj su X i Y1, respektivno. Takođe naglasimo da
promenljivoj v2 se pristupa samo od strane B2 preko kanala Y2. Razlika između ove tri distribucije
230
promenljivih se sastoji u sledećem: na slici 10.22 (a) hardverske i deljive promenljive su dodeljene
memoriji, na slici 10.22 (b) deljiva promenljiva je dodeljena memoriji a hardverska promenljiva
ASIC-u, a na slici 10.22 (c) obe promenljive su dodeljene ASIC-u.
Ako usvojimo da je prosečne brzine prenosa podataka kanala X, Y1, i Y2, avgrate(X),
avgrate(Y1) i avgrate(Y2), respektivno, tada brzina prenosa po magistrali koja je potrebna za
slučajeve sa slike 10.22 (a), (b) i (c), biće: avgrate(X)+avgrate(Y1)+avgrate(Y2),
avgrate(X)+avgrate(Y1) i avgrate(X), respektivno. Na osnovu ove tri različite distribucije
promenljivih, moguće je takođe odrediti relativne cene: slika 10.22 (b) imaće cost(v2), slika 10.22
(c) imaće cost(v1) + cost (v2), gde cost(v) označava cenu silicijuma potrebnu za implementaciju
promenljive v na ASIC-u. Naglasimo da je cost(v1) veća od cost(v2), jer je za v1 potreban dual port
pristup.
Na osnovu primera vidi se da najbolji način za redukciju brzine prenosa po magistrali je onaj
kada se dodele sve hardverske promenljive ASIC-u. Sa druge strane ovakva dodela promenljivih
biće skupa jer je cena ASIC-a mnogo veća nego cena standardnih komponenti. Slika 10.22
pokazuje da željena brzina prenosa po magistrali se smanjuje od slučaja (a) ka slučaju (c) po ceni
povećanja silicijuma. Nazvaćemo ovu ekstra cenu silicijuma cenom pristupa promenljivoj.
Kao što smo prethodno pomenuli da bi spregnuli hardver i softver moramo da selektujemo
magistralu koja će nam obezbediti komunikaciju između disparitetnih softverskih i hardverskih
komponenata. Da bi izabrali magistralu, mi mora da razmatramo kako željenu brzinu prenosa
podataka po magistrali tako i cenu magistrale, koja ne uključuje somo cenu magistrale već takođe i
cenu interfejs komponenata. Jedna krajnost je sledeća, cena interfejsa biće 0 ako komponente sa
aspekta protokola magistrale su uparene. Alternativno ako koristimo standardno raspoloživa
interfejs kola da bi povezali nekompatibilne komponente na magistrali, interfejs cena biće jednaka
ceni interfejs kola. Konačno, ako takvo interfejs kolo nije raspoloživo, interfejs cena biće visoka, jer
potrebno da se sintetizuje ASIC kolo po porudžbini za taj interfejs.
Mi moramo biti svesni da izbor magistrale i distribucija promenljivih su aspekti koji su u
međusobnoj sprezi. Za datu magistralu, na primer, cilj distribucije promenljive treba da bude da se
odredi distribucija koja će zadovoljiti brzinu prenosa po magistrali a minimizirati cenu pristupa
promenljivim. Na sličan način za datu distribuciju promenljive, proces izbora magistrale uključuje
izbor magistrale koji zadovoljava zahtevanu brzinu prenosa a takođe minimizira cenu magistrale. U
najvećem broju slučajeva, s obzirom da nam je potrebno rešenje koje zadovoljava kako brzinu
prenosa podataka po magistrali tako i minimalnu cenu sistema, neophodno je razmatrati objedinjeno
izbor magistrale i distribuciju promenljivih.
U algoritmu 10-4, mi prikazujemo jedan algoritam koji se može koristiti za konkurentni izbor
magistrale i distribuciju promenljivih. Intuitivno, algoritam ispituje skup potencijalnih magistrala,
Sb, koje su obezbeđuju od strane projektanta ili su memorisane u biblioteci gde se čuvaju sve
dostupne magistrale. Za svaku magistralu B koja pripada Sb, razmatra se svaka moguća distribucija
promenljive D za skup promenljivih Sv, koja sadrži kako sve hardverske tako i softverske
promenljive zadate u particionisanoj specifikaciji ili samo podskup onih promenljivih koje su
selektovane od strane projektanta. Naglasimo da Sv ne sadrži nijednu softversku promenljivu, iz
razloga što se sve softverske promenljive automatski dodeljuju memoriji.
231
Algoritam 10-4: Distribucija promenljivih
Slika 10.23: Sprega između: (a) dve komponente, (b) komponente i magistrale
233
Slika 10.24: Komponente interfejsa magistrale: (a) relacije za komponente protokola, (b) relacije za
protokol magistrale, (c) relacije grupa, (d) generisani interfejsi
234
tom slučaju da im se pristupa preko magistrale procesora. Zbog toga pristup portovima u
softverskim behavior-ima takođe treba da bude detaljno razrađen. Naglasimo da pristup portovima
u hardverskim behavior-ima ne treba da bude detaljno definisan jer ASIC može da ima pinove za
portove. Svi kanali za pristup portovima koji treba da budu detaljno razrađeni, za primer sa slike
10.25 označeni su isprekidanim linijama.
235
3. Koriste se in/out operacije da zamene softverske pristupe onim promenljivim koje se
preslikavaju u ASIC-e. Koriste se bafer operacije da zamene pristupe iz hardverskih
behavior-a.
4. Koriste se in/out operacije da zamene bilo koje pristupe portovima koji se preslikavaju u
globalni adresni prostor.
Slika 10.26: Razrada pristupa upravljanja: (a) specifikacija, (b) particionisana specifikacija sa
handshaking za upravljačke kanale, (c) specifikacija preslikavanja na ciljnu arhitekturu
Ova šema koja se odnosi na razradu upravljanja je jednostavna jer ostatak softverskog dela se
neće promeniti ako se B2 premesti (kopira) u hardver. No mi moramo da budemo svesni da ova
šema zahteva od procesora da stalno ispituje (poll-uje) lokaciju koja čuva vrednost promenljive
done, što rezultira u gubljenju procesorskih ciklusa.
S obzirom da konvencionalni procesori obično imaju izveden mehanizam za prekid to znači da
je moguć znatno efikasniji metod za razradu upravljačkog pristupa. Na slici 10.27 (a), na primer,
prikazana je šema koja koristi prekidni (interapt) mehanizam da bi ukazala na završetak
236
hardverskog behavior-a. U ovom slučaju B2 je zamenjen novim behavior-om koji se sastoji od
protokol iskaza koji startuje B2. Pored toga behavior B2 je proširen kako bi uključio protokol iskaze
koji se nalaze na početku i interapt iskaze koji se nalaze na kraju. Kod svakog prekida, ubacuje se
odgovarajuća servisna rutina u softverskoj particiji. Kada se javi prekid, upravljanje se vraća
servisnoj rutini. Korišćenjem prekidnog mehanizma procesor može da startuje B3 bez čekanja da B2
završi, sve dok ne postoji zavisnost po podacima između B2 i B3, ili alternativno procesor može da
startuje drugi softver behavior, kakav je B4.
Slika 10.27: Razrada pristupa upravljanja: (a) particionisana specifikacija sa prekidom koja ukazuje
na završetak hardverskog behavior-a, (b) specifikacija preslikavanja na ciljnu arhitekturu
Zadaci koji se odnose na razradu kontrole i pristupa upravljanja se mogu sumirati na sledeći
način:
1. Izabira se upravljačka šema, kakva je prozivka (polling) ili interapt. Zatim se uvode
odgovarajući komunikacioni protokoli u hardverskim i softverskim behavior-ima.
2. Ubacuju se neophodni softverski behavior-i, kakve su prekidne uslužne rutine
3. Definišu se pristupi deljivim promenljivim koji su bili uvedeni ubacivanjem protokola
237