You are on page 1of 237

SADRŽAJ:

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

Uvod u sintezu na visokom nivou

1.1 VLSI tehnologija: Uvod u sintezu na visokom nivou

Projektanti integrisanih kola mogu da primene metodologiju za opis-i-sintezu ASIC kola na


sledećih nekoliko nivoa abstrakcije:
• gejt nivou ( gate level)– klasičnim postupcima prekidačke algebre moguće je sintetizovati
logiku funkcionalne i upravljačke jedinice.
• RTL nivou (register transfer level)– opisuje se ponašanje ASIC kola pomoću programa,
algoritama, dijagrama toka, toka podataka, skupa instrukcija, ili generalizovanog FSM-a kod
koga svako stanje obavlja neko proizvoljno složeno izračunavanje.
• visokom nivou (behavioral level) – predstavlja sekvenca zadataka koja transformiše
prezentaciju ponašanja u RTL dizajn. Dizajn čine funkcionalne jedinice kakve su ALU jedinice
i multiplekseri, elementi za pamćenje kakvi su memorije i registarska polja, i sprežne jedinice
kakve su multiplekseri i magistrale.

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).

1.2 Opisivanje ulaza kod sinteze visokog nivoa

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

1.3 Interna prezentacija

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

DFG nije dobra forma za prezentaciju reaktivnog ponašanja sistema sa ugranjenim


mikroračunarem (embedded systems), kod kojih se upravljačka sekvenca bazira na spoljnim
uslovima. Kod ovakvih slučajeva pored zavisnosti po podacima mora se predstaviti i upravljačka
zavisnost. Ovo se izvodi na taj način što se DFG proširuje sa upravljačkim čvorovima. Tipičan
primer koji se odnosi na proširenje DFG-a je CDFG (control data flow graph). CDFG omogućava
prezentaciju upravljačkih struktura kakve su grananja i petlje, a pored toga sadrži specijalne
čvorove za prezentaciju if uslova, case i loop konstrukcija kao i sekvenci za izračunavanje. Na slici
1.4 prikazana je CDFG prezentacija za VHDL opis sa slike 1.2. U konkretnom slučaju izrazom
Y=max((Ashr1)+(B-(Bshr3)),B) izračunava se vrednost Y samo ako je spoljni uslov X potvrđen
(X=1) i ako je Tajmer razlličit od 0. Čvor if-begin proverava da li je Tajmer različit od 0, a if-end
čvor se odnosi na kraj branch iskaza. Izračunavanje koje prati iskaz ugrađuje se u osnovni
(dataflow) blok.
CDFG prezentacijom zadržava (očuvava) se upravljačka struktura specificirana od strane
projektanta. Kod CDFG-a svaki blok iskaza tipa dodela (iskazi koji pripadaju početno zadatom
opisu na nivou ponašanja) se predstavlja kao poseban osnovni blok. Informacija koja se odnosi na
zavisnost po podacima predstavlja se samo u okviru osnovnog bloka, dok zavisnosti po podacima
koje prelaze granice bloka se ne predstavljaju eksplicitno. Sistem za sintezu koji direktno radi (vrši
sintezu) na osnovu DFG prezentacije mora da sadrži strukturu osnovnih blokova. Tako na primier,
dve operacije u dva sekvencijalna osnovna bloka se nikad ne izvršavaju zajedno i pored toga što
između njih ne postoje bilo kakve realne zavisnosti. Ovo je jedan od glavnih nedostataka kada se
CDFG prezentaciji direktno koristi za sintezu.

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

Slika 1.4: CDFG prezentacija

1.4 Model sinteze na visokom nivou

Logička sinteza se zasniva na formalizmu Boole-ove algebre, dok se sekvenicjalna sinteza


bazira na FSM modelu. Kod sinteze na visokom nivou FSM model se proširuje na taj način što se
uvodi dodela promenljivih. FSM model čine skup stanja, skup prelaza iz jednog stanja u drugo, i
skup akcija koje prate ova stanja ili prelaze. Formalnije kazano FSM je petorka oblika

< S, I, O, f: S x I, h:S x I →O>

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

< S, I x STAT, O x A, f, h >

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.

Slika 1.5: FSMD model (a), i implementacija (b)


10
FSMD je univerzalni model kojim se mogu predstaviti sva hardverska rešenja (dizajna). Ovaj
model može pođednako uspešno da predstavi kako ona rešenja koja su upravljačko dominantna
(control-dominated) tako i rešenja koja su dominantno zavisna po podacima (data dominated).
Upravljačko dominatni dizajn se standardno izvodi kao rešenje koje se karakteriše velikom
upravljačkom jedinicom i malom stazom podataka. Tipičan primer je serijsko-paralelni konvertor
čiju stazu podataka čini jedan pomerački registar. Rešenja koja su dominantno zavisna popodacima,
kakvi su FIR filtri, imaju minimalnu upravljačku jedinicu ali veliku stazu podataka koja obavlja
operaciju filtriranje.
FSMD model uobičajeno se implementira pomoću upravljačke jedinice i staze podataka, pri
čemu svako stanje u modelu odgovara taktnom signalu u implementaciji. Upravljačka jedinica je ta
koja implementira FSM model, koristeći registar stanja i dve kombinacione logičke mreže koje
određuju vrednost registra stanja za naredni taktni interval (funkcija narednog stanja f, i vrednosti
izlaza i upravljačkih signala (izlazna funkcija h). Na slici 1.5(b) ove dve kombinacione mreže su
prikazani kao dva bloka, logika naredno-stanje i upravljačka-logika, respektivno. Implementaicju
staze podataka čini skup memorijskih elemenata (registri, brojači, registarska polja, memorije),
skup funkcionalnih jedinica (ALU-ovi, multiplekseri, pomerači, komparatori), i skup sprežnih
elemenata (linije, magistrale, multiplekseri).
Protočnom implementacijom FSMD-a povećavaju se performase. Na slici 1.6 prikazana su tri
protočna stila.
(a) Protočnost na nivou komponenata – sa ciljem da se u okviru staze podataka poveća
iskorišćenost funkconalnih jedinica, projektanti ove jedinice izvode kao protočne. Kao što se vidi
sa slike 1.6(a) ALU čine dva protočna stepena.
(b) Protočnost na nivou upravljanja – u toku svakog stanja FSMD model obavlja tri zadatka.
Određuje upravljačke signale, izračunava novu vrednost za jednu ili veći broj promenljivih koje se
čuvaju u elementima za pamćenje (storage units) i određuje naredno stanje. S obzirom da se ova tri
zadatka ponavljaju u svakom stanju, ona se mogu uprotočiti u tri stepena. Da bi se postigao protočni
efekat, stanje na upravljačkim i statusnim linijama je neophodno lečovati kako je to prikazano na
slici 1.6(b). FSM mora da se restruktuira kako bi se u toku operacija grananja (branch) usaglasilo
protočno kašnjenje.
(c) Protočnost na nivou staze podataka – kod aplikacija tipa signal-procesiranje FSMD
model obavlja istu sekvencu operacija nad svakim elementom ulazne povorke podataka. Sobzirom
da se u okviru staze podatka ove operacije izvode repetitivno, moguće je iste učiniti protočnim kako
je to prikazano na slici 1.6(c). Kod ovog stila realizacije protočnosti upravljačka jedinica svakog
stepena je obično veoma jednostavna ili skoro da je nema

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

1.5 Zadaci kod sinteze

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.

komponente (operacije) kašnjenje (ns) Površina (μ m2)


ALU-F (+/-/shr) 20 600
ALU-S (+/-/shr) 70 400
MAX (mac) 80 800

Slika 1.7: RTL biblioteka

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

alokacija broj ALU-F broj ALU-S broj MAX površina (μ m2)


A 0 1 1 1.200
B 1 0 1 1.400
C 0 2 1 1.600
D 1 1 1 1.800
F 2 0 1 2.000

Slika 1.8: Moguće alokacije za DFG sa slike 1.3

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

1200 1300 1400 1500 1600 1700 1800 1900 2000


Procenjena površina (μm2)

Slika 1.9: Kompromis površina-performansi za moguće alokacije iz Tabele 2

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.

1.5.2 Planiranje izvršenja


Naredni korak u postupku sinteze se odnosi na planiranje-izvršenja operacije
(aritmetičkih/logičkih) i memorijskih pristupa (čitanje/upis) u odgovarajućim taktnim intervalima.
Postoje dva tipa algoritama za planiranje-izvršenja, prvi imaju za cilj optimizaciju, a drugi polaze
od specificiranih ograničenja. Ako je u toku postupka alokacije korisnik u potpunosti specificirao
sve dostupne resurse, kao i trajanje taktnih impulsa, tada cilj algoritma za planiranje-izvršenja je da
generiše dizajn sa najboljim performansama, ili dizajn koji će datu aplikaciju izvršavati za najkraći
vremenski period. Drugim rečima, planiranje-izvršenja mora da maksimizira korišćenje alociranih
resursa. Ako pre planiranja-izvršenja lista resursa nije dostupna, ali su specificirane željene
performanse, cilj algoritma za planiranje-izvršenja je da generiše dizajn sa najnižom mogućom
cenom, ili sa najmanjim brojem funkcionalnih jedinica. Ovaj pristup se naziva planiranje-izvršenja
sa vremenskim ograničavanjem (time constrained scheduling)
Kod planiranja-izvršenja koje se bazira na ograničavanje broja resursa (resource-constrained
scheduling) uobičajena je praksa da se kreira (konstruiše) plan-izvršenja koga karakteriše jedno
stanje po taktnom intervalu (u datom trenutku). Planiranje-izvršenja operacija se tako izvodi da se
ne premaši ograničenje po resursima kao i naruši princip zavisnosti po podacima. U toku planiranja-
izvršenja osigurano je sledeće: Ako je izvršenje operacije Oi planirano u toku upravljačkog koraka
Sj, tada mora biti dostupan resurs koji će izvršiti Oi a takođe i svi prethodnici čvora Oi moraju biti
već isplanirani.
U prethodno opisanom primeru, alokacionim zadatkom E (vidi sliku 1.9) odredili smo da su
neophodna dva brza ALU-a (ALU-F) i jedna MAX jedinica da bi se ostvarile procenjene
performanse od 200ns. Pokušajmo sada da izvršimo planiranje-izvršenje ovog primera koristeći
alokaciju E i taktni interval od 50ns. Algoritam može da isplanira-izvršenje u prvom upravljačkom
koraku dve Shift operacije (O1 i O2), jer ove operacije ne zavise od prethodnih i zbog toga što su
oba ALU-a dostupna. U drugom upravljačkom koraku algoritam za planiranje-izvršenja određuje
da se obe operacije, sabiranje O3 i oduzimanje O4, mogu isplanirati radi izivršenja, jer su oba
15
resursa (dve brze ALU-F jedinice) dostupna. Čvor MAX se ne može planirati-za-izvršenje sve dok
prethodna operacija O4 ne izračuna svoj rezultat, pa se zbog toga ona isplanira radi izvršenja u
narednom stanju. Konačni plan izvršenja prikazan je na slici 1.10.

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

Slika 1.10: Primer planiranja izvršenja bazirano na alokaciji E

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:

• povezivanje kod memorisanja – ima zadatak da varijablama dodeli memorijski prostor.


Memorijski prostor može biti različitog tipa, a tipično su to registar, registarska polja ili memorijske
lokacije. Dve promenljive kojima se u toku datog stanja ne pristupa simultano (istovremeno) mogu
biti dodeljene istom portu registarskog polja ili memorije.
• povezivanje funkconalnih jedinica – u okviru upravljačkog koraka svaka operacija se
dodeljuje odgovarajućoj funkcionalnoj jedinici. Funkcionalna jedinica ili protočni stepen mogu da
izvršavaju samo po jednu operaciju po taktnom intervalu.
• povezivanje bloka za sprezanje – dodeljuje jedinicu za spregu, kakav je multiplekser ili
magistrala, u toku svakog prenosa podataka između portova, funkcionalnih jedinica, ili memorijskih
jedinica.

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

Naredni zadatak kod procesa povezivanja se odnosi na povezivanje funkcionalnih jedinica.


Ovom aktivnošću u toku svakog taktnog intervala vrši se dodela operacija alociranim
funkcionalnim jedinicama. Moguće je naći rešenje za problem povezivanja funkcionalnih jedinica
ako se u datom trenutku izvršava po jedno stanje. S obzirom da se obe operacije O1 i O2 mogu
povezati na bilo koji od dostupnih ALU-ova prvo stanje nudi dva izbora za povezivanje.
Usvojićemo da se O1 povezuje sa prvim ALU-om a O2 sa drugim. Na slici 1.12(a) prikazan je
parcijalni dizajn nakon povezivanja operacija u prvom stanju.
Proces povezivanja produžava za operacije u drugom stanju. S obzirom da stanje 2 ima dve
operacije O3 i O4, a oba ALU-a su sposobna da izvrše obe operacije, imamo na raspolaganju dva
različita izbora: Povezivanje O3 na ALU1 i O4 na ALU2, i obrnuto. Na slici 1.12(b) prikazan je
rezultujući parcijalni dizajn za prvi izbor. Nove veze su prikazane udebljanim (bold) linijama. Da bi
se kompletiralo parcijalno povezivanje stanja 1 i 2 dizajn zahteva četiri dodatna dvo-ulazna
multipleksera ili osam novih tro-statičkih drajvera. Na slici 1.12(c) prikazan je rezultat drugog
izbora: Tri dodatna multipleksera ili šest tro-statičkih drajvera je dovoljno pošto je veza od B ka
drugom ALU-u već prethodno ostvarena. To znači da drugi izbor rezultira optimalnijem dizajnu.
Ipak, opisani algoritam povezivanja koristi »greedy» pristup i može voditi ka suboptimalnim
rešenjima.

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.

2.2 Specifikacija isistema kod kojih se upravlja potrošnjom-energije


(power-management systems)

Energetska efikasnost je primarni projektanski cilj za savremene elektronske sisteme. Zahtevi za


energetsku-efikasnost imaju dva glavna aspekta (zahteva):
a) kao prvo, novi sistemi treba da budu projektovani sa jasno specificiranim energetskim
budžetima.To znači da potrošnja energije treba da se sagleda kroz sve faze projektovanja, od
koncepcije sistema do elementarne tehnologije komponenata.
b) sa druge strane, u toku svog rada elektronski sistemi, sa aspekta disipacije, treba efikasno da
se upravljaju.

Osnovno obrazloženje za power-management je veoma intuitivno. Sistemi su u opštem slučaju


projektovani da pod punim opterećenjem ispolje specificirani nivo performansi. Ali u toku rada (in-
field operation), sistemi su veoma često slabo iskorišćeni (tj. ne rade pod punim opterećenjem), pa

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.

2.2.1 Tehnološki trendovi


Trendovi razvoja u poluprovodničkim tehnologijama karakterišu se smanjenjem dimenzija
poluprovodničkih komponenata uz istovremeno povećanje gustine njihovog pakovanja. Kao
rezultat, disipirana energija po jedinici površine se povećava i postavlja nove izazove za
projektante. Da bi se izašlo na kraj sa novim problemima pribegava se rešenju smanjenja napona
napajanja. Nonezavisno od svega, smanjenje napona napajanja nije u celosti zadovoljavajuća mera
ako se ima u vidu povećana potrošnja energije na čipu, koja je posledica tehnologije skaliranja,
povećane disipacije na globalnim energetskim vezama za dovod napajanja i vezama za razvod
signala, agresivnom povećanju radne frekvencije, i sve značajnijem uticaju struje curenja.
Kao prvo, kod silicijumske tehnologije veze imaju sve dominantniju ulogu. S obzirom da
globalno povezivanje ne skalira tako brzo kao što skaliraju dimenzije tranzistora, kašnjenje i
disipacija energije na globalnim vezama sprečava rast IC-ova koji se odnosi na mogućnosti
izračunavanja/procesiranja i memorisanja. U suštini, i pored toga što se kapacitivnost gejta
skaliranog tranzistora smanjuje, kapacitivnost veza po jedinici dužine se ne smanjuje za isti iznos, a
takođe i dužina veza, zbog globalnog povezivanja, se ne smanjuje. Zbog toga C faktor u jednačini
za disipaciju snage PSW = k* C*V2DD *f ne skalira tako brzo kao i dimenzije tranzistora.
Sa druge strane, sa ciljem da se zadovolje zahtevi koji se odnose na kvalitet servisa, taktna
frekvencija čipa skalira brže od tehnologije, tj. povećanje frekvencije je veće u odnosu na smanjenje
dimenzija. Ovakav trend je posledica pre svega arhitekturnih optimizacija koje su pre svega rezultat
smanjenja broja logičkih stepena (kola) kroz kojih prolazi signal u toku jednog taktnog intervala
kroz stepen za procesiranje (recimo stepen kod protočne obrade). Sa aspekta potrošnje energije, ovo
predstavlja problem, jer je disipirana snaga sada direktno proporcionalna frekvenciji f.
Performansna ograničenja (pre svega brzina rada) su takođe glavni razlog zbog čega skaliranje
napona napajanja nije tako drastično kako bi se to želelo. Naime, brzina komutiranja tranzistora se
smanjuje sa (VDD - VT)α, gde je 1 < α < 2. To znači da se sporija brzina komutiranja ne može
tolerisati ako se žele superiornije performanse.
Kao treće, kod submikronske tehnologije, struje curenja se znatno povećavaju, šta više i kada
su tranzistori u stanju OFF. Struja drejn-surs zbog subpragovskog provođenja predstavlja dominatni
uzrok curenja, ali se takođe i struja drejn-gejt zbog elektronkog-tunelovanja duž gejt-oksida
značajno povećava.
Pored nabrojanih uzroka postoje i drugi fenomeni koji dovode da disipacija snage čak i kada je
kolo u stanju mirovanja (standby) postaje značajna.

2.2.2 Arhitekturni trendovi


Tehnološka evolucija nije usmerena danas ka tome da reši problem disipacije snage. Nasuprot
tome, najveći broj tehnologa da bi rešio problem power-crisis svoja rešenja nalazi u inovacijama
dizajna na nivou kola, logike, kao i arhitekturnom nivou. Na nesreću, trendovi u ovoj oblasti, sa
tačke gledišta energetske efikasnosti, nisu obećavajući.
Najveći broj današnjih sistema projektovan je sa visokim stepenom programibilnosti. Veliki deo
kola I sistema sadrži jedno ili dva jezgra (core) procesora.

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

Ptotal = pt ∗ (C L ∗ V ∗ V DD ∗ f CLK ) + I sc ∗ VDD + I leakage ∗ VDD (2.1)

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 .

2.4 Projektovanje kola i tehnološka razmatranja

Postoji veći broj opcija dostupnih kod izbora osnovnih kola i topologija za implementaciju
razližitih logičkih i aritmetičkih funkcija. Odluke o izboru se donose između:
• statičke ↔ dinamičke implementacije
• pass-gate ↔ konvencionalnih CMOS logičkih stilova
• sinhroni ↔ asinhroni tajming.
Drugi nivo izbora se odnosi na različite arhitekturno/strukturne izbore za implementaciju date
logičke funkcije. Na primer za realizaciju sabirača se može koristiti jedna od sledećih topologija:
a) ripple-carry; b) carry-select; c) carry-lookahead.

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

Pref = C ref ∗ Vref2 ∗ f ref (2.4)


gde je (u konkretnom slučaju):
Vref = 5V, a f ref = 1/25 ns.

A
L
E
^ KO
+ MP
AR A+B= C
B
L AT
E OR
^

C L
CLK E
^

Slika 2.1: Deo staze podataka

Jedan od načina da se sačuva propusnost (throughput) a da se pri tome redukuje napon


napajanja je da se koristi paralelna arhitektura. Na slici 2.2 prikazana je struktura kola koja
ispunjava zahteve u pogledu propusnosti a bazira se na korišćenju paralelizma. Kao što se vidi sa
slike 2.2 koriste se dva identična sabirača i komparatora.

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
^

Slika 2.2: Paralelna implementacija dela staze podataka

Pošto zahtevi za brzinom rada sabirača, komparatora i leča su sada smanjeni sa 25 ns na 50 ns,
napon napajanja se može redukovati sa 5V na 2.9V (vidi sliku 2.3).

4
normalizovano ka{njenje

3.5

3
2.5

1.5

1
2.9V

1 2 3 4 5 6 VDD [V]

Slika 2.3: Karakteristike kašnjenja logičkih CMOS kola (gruba aproksimacija)

Kapacitivnost staze podataka je povećana zbog potrebe rutiranja za faktor 2.15 (idealno bi bilo
za faktor 2) tako da je ukupna disipirana snaga sada:

24
2 ⎛ f ⎞
Ppar = C par ∗ V par
2
∗ f par = (2.15 ⋅ Cref )∗ (0.58 ⋅ Vref ) ∗ ⎜⎜ ref ⎟⎟ = 0.36 ⋅ Pref (2.5)
⎝ 2 ⎠

Pristup koji se bazira na redukovanju napajanja koristeći paralelizam ima za posledicu


povećanje površine čipa i kao rešenje je dobro kada ograničenja sa aspekta površine čipa ne postoje.
U opštem slučaju paralelizam uslovljava ekstra rutiranje koje mora da se minimizira.
Drugo moguće rešenje se zasniva na korišćenju protočne arhitekture, kako je to prikazano na slici
2.4. Sa dva dodatna protočna leča, kritični put postaje max[ Tsab , Tcomp ] i obezbeđuje da sabirač i
komparator rade pri manjim brzinama.

A
L
E
^

+ L

KOMPARATOR
B E izla
L ^
E
^

C L
L
E
E
^
^

CLK

Slika 2.4: Protočna implementacija dela staze podataka

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)

Sa ovom arhitekturom snaga se smanjuje za faktor od aproksimativno 2.5 u odnosu na sliku


2.1, ali treba naglasiti da površina dela staze podataka nije drastično povećana.
Kao logički se sada nameće zaključak do kakvih se rezultata dolazi implementacijom arhitektura
koje se zasnivaju na kombinovanim korišćenjem tehnika protočnosti i paralelizma. Strateški
posmatrano, protočno-paralelnu arhitekturu (udvostručeni paralelizam i udvostručena protočnost)
karakteriše:
• redukcija kritičnog puta a time i povećanje brzine rada za faktor 4
• smanjenje napona napajanja sve dok se kašnjenje ne poveća za faktor 4 (vidi sliku 2.3).
Potrošnja snage u ovom slučaju iznosiće
⎛ f ref ⎞
∗ f parpro = (2.5 ⋅ C ref ) ∗ (0.4 ⋅ Vref ) ∗ ⎜⎜ ⎟⎟ = 0.2 ⋅ Pref
2
Pparpro = Cparpro ∗ V parpro
2
(2.7)
⎝ 2 ⎠

25
Paralelno-protočna implementacija rezultira redukciji snage od 5 puta.
A
B
C SLIKA 4
CLK
M izlaz
U
X

SLIKA 4
Sel

Slika 2.5: Paralelno-protočna staza podataka

Uporedni rezultati koji se odnose na različite arhitekture opisane na primeru jednostavne staze
podataka koju čine sabirač i komparator su date na slici 2.6.

Tip arhitekture Napon Površina Snaga


jednostavna staza
5V 1 1
podataka (Slika 1)
protočna staza
2.9V 1.3 0.39
podataka (Slika 4)
paralelna staza
2.9V 3.4 0.36
podataka (Slika 2)
paralelno-protočna
2.0V 3.7 0.2
staza podataka (Slika 5)

Slika 2.6: Uporedni pregled karakteristika različitih staza podataka

2.5 Optimalni izbor napona napajanja

Već smo uočili da se iznos kašnjenja kroz digitalna kola povećava kako se smanjuje napon
napajanja. Pri ovome smo naglasili da kada se napon napajanja smanjuje kompenzovanje
povećanog kašnjenja kola se može uspešno rešiti korišćenjem paralelnih arhitektura. Ali treba pri
ovome naglasiti da kada se napon napajanja približi threshold vrednosti kašnjenje kola se drastično
povećava. Projektantima kola se sada postavlja sledeći zadatak: Kako odrediti optimalnu vrednost
napona napajanja pri kojoj dodatno ugrađeni paralelizam ne daje više očekivane efekte. Da bi
odredili vrednost napona koristićemo se modelom koji je definisan sledećom jednačinom:
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

Vnoise −m arg in ≤ Voptimal ≤ Vcritical (2.10)

Na slici 2.7 prikazan je dijagram disipirane snage normalizovan na 1 za V DD = 5V u funkciji


V DD -a za različita arhitekturna rešenja kod 2.0 μm CMOS tehnologije.
1

0.9 IIR filtar


sedmog reda
0.8
paralelna staza
0.7 podataka
normalizovana disipirana snaga

0.6
paralelno-proto~na
0.5 staza podataka

0.4

0.3

0.2

0.1
VDD [V]

1.0 2.0 3.0 4.0 5.0

Slika 2.7: Optimalni napon rada

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

Slika 2.8: Normalizovana površina/disipacija za različite napone napajanja

2.6 Strategija za smanjenje potrošnje

U zavisnosti od tipa dgitalnih kola, sinhroni ili asinhroni, koriste se različite strategije. Logika
koja se bazira na sinhronim kolima koristi registre (lečeve) koji se ubacuju između stepena koji vrše
izračunavanje. Stepeni se realizuju kao kombinaciona logika a pamćenje informacije u lečevima se
vrši nailaskom svakog taktnog impulsa. Da bi se smanjila potrošnja logike zasnovane na sinhronom
dizajnu neophodno je minimizirati komutatorske aktivnosti. Smanjenje ovih aktivnosti se obično
izvodi tako što se komutatorske aktivnosti izvršne jedinice ne izvode kada kolo ne obavlja željene
aktivnosti. Ovo je važan aspekt jer logički moduli mogu komutirati i trošiti energiju čak i slučaju
kada se oni aktivno ne koriste. To znači da dizajn sinhronih kola treba da se bazira na specijalnim
kolima kao i rešenjima kojima se detektuje neaktivnost nekog logičkog modula a zatim uključuju
power-down kola pomoću kojih se redukuje napon napajanja tog dela logike.
Kod asinhronih digitalnih kola situacija je nešto drugačija jer se njihov princip rada bazira na
konceptu power-down kada ta kola nisu aktivna.

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

0.03 VDD [V]

1 2 5

Slika 2.9: Power-delay proizvod za dva različita kola

Napomena: Slika 9 je data u log-log razmeri

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.

Prosto rečeno, smanjenjem V DD -a povećava se kašnjenje koje je drastično kada se približavamo


threshold naponu. Tačna analiza kašnjenja je složena zbog nelinearne karakteristike CMOS gejta,
ali za grubu aproksimaciju prvog reda važi da je:

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

Slika 2.11: Power-delay proizvod za različite stilove

U fazi optimizacije arhitekture za low-power dizajn treba tretirati V DD kao promenljivu


veličinu a pri tome menjati arhitekturu tako da se održi konstantna propusnost.

2.7 Odnos između strukturnog i fizičkog dizajna

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.

Control unit Datapath

present next reg.


cond.
state state transfer AR
RAM
DR
..................................
Register
.................................. file
Reg.

Mux Mux

FU

.................................. Status reg

Technology mapping Technology mapping

General Bit-sliced
PLA Std. cells Std. cells
cells stack

PLA Bit-sliced
stack

RAM Std. cells

Slika 2.12: Odnos između strukturnog i fizičkog dizajna

2.8 Mera kvaliteta koja se odnosi na površinu

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

2.8.1 Staza podataka (Datapath)


Datapath čini skup regularno struktuiranih RT komponenata kakvi su ALU-ovi, multiplekseri,
lečevi, drajveri i pomerači. Layout datapath-a se formira kao skup FU i memorijskih jedinica koje
se postavljaju jedna iznad druge. Svaka jedinica se sastoji od bit-slice-a, a sve jedinice imaju bit-
slice-ove jednakih širina. Ipak bit-slice-ovi u različitim jedinicama mogu biti različite visine. Svi
bit-slice-ovi se poravnjavaju počev od LSB-a, a različite jedinice se smeštaju jedna iznad druge. To
znači da magacin raste horizontalno kada se obim bitova povećava, a vertikalno kada se broj
jedinica povećava. (vidi sliku 2.13 (a)). Svaki bit-slice neke jedinice može da bude izvedena kao
custom ćelija ili može da se implementira pomoću jedne vrste povezanih standrardnih ćelija kako je
to pokazano na slici 2.13 (a) i (b). Razlika između stilova custom i standardnih ćelija odgleda se u
broju nivoa koji se koriste za rutitranje veza podataka i upravljačkih signala, kao i korišćenjem
custom i standardnih ćelija, kao i rutiranje linije za prenos podataka od ćelije do ćelije preko
posebnih kanala.

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

Unit 1 Power Unit 1

Ground

Unit 2 Power Unit 2

Ground

Over-the-cell
staza za
rutiranje

Power

Ground

Unit n Power Unit n

Ground

Diffusion

Hcell Hch Metal 1 Hcell Hch


Metal 2
Wbit Wbit
Poly
(b) Power/Ground (c)

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:

Wunit = α × tr (unit ) (2.12)

Saglasno tome visina bit-slice magacina od n jedinica je:

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:

⎧ 0; if Trk top ≥ Trk est


H ch = ⎨ (2.15)
⎩β × (Trk est − Trk top ); if Trk top < Trk est

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.

Adp = bw × H dp × ( H cell + H ch ). (2.16)

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).

2.8.2 Upravljačka jedinica


Upravljačka jedinica (Control Unit-CU) kod FSMD modela se može opisati pomoću control-
state tabele koja specificira naredno-stanje i upravljačke signale u funkciji tekućeg-stanja i
uslovnih ili statusnih signala u tabelarnoj formi. Na slici 2.15 (a) prikazana je jednostavna control-
state tabela sa ulaznim signalima tekuće-stanje i uslovnih/statusnih signala, kao i izlaznih signala
naredno-stanje i upravaljačkih signala. Tekuća-stanja se kodiraju kao binarne vrednosti pk...p1p0,
gde je k ≥ ⎡log 2 m⎤ − 1 , a m odgovara broju stanja. Na sličan način naredna-stanja se kodiraju kao
binarne vrednosti rk...r1r0. Svaki izlazni ci upravljački signal upravlja sa FU-ima, memorijskim
jedinicama ili sprežnim komponentama u datapath-u, dok izlazi rj specificiraju naredno-stanje.
Uparavljačka jedinica se sastoji od registra stanja (state register) i upraljačke logike (control
logic). Za implementaciju CU-a koriste se dve standardne tehnike: standardne ćelije i PLA. Mi
ćemo ukazati na procenu površine kako kod metoda koje se baziraju na standardnim ćelijama tako i
kod PLA implementacije koja koristi SOP (Sum-Of-Products) izraza (vidi sliku 2.15 (b)).
U realnim situacijama, broj optimizacionih procedura, kakva je procedura za minimizaciju
logike koja najčešće koristi mogućnosti PLA folding-a, se primenjuje sa ciljem da smanji
kompleksnost CU-a. Mi ćemo ignorisati uticaj optimizacije i ukazati na gornju granicu površine
koju zauzima CU. Procedure koje strožije određuju gornju granicu površine predstavljaju složeniji
problem.

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

gde m predstavlja broj stanja, n broj upravljačkih signala, a α je transistor-pitch koeficijent.


Visina Hsc se izračunava kao zbir visina SC-a (Hcell) i visina kanala (Hch). Hch je
proporcionalno broju traka koji se koriste kod ulaznog signala i broju net-ova koji povezuju AND i
OR gejtove. Usvojićemo da svaki ulazni signal zahteva po dve trake za prave i komplementarne
vrednosti. Usvajamo takođe da postoje log2m ++ signali stanja i C signali tipa uslov/status.
Maksimalan broj traka potreban za rutiranje internih net-ova kod svake grupe (cluster-a) jednak je
broju članova u SOP izrazu za pojedini izlazni signal. S obzirom da između grupa ne postoji
preklapanje, maksimalan broj zahtevanih traka da bi rutirali sve interne bet-ove jednak je najvećem
broju članova koji se koriste kod pojedinih SOP izraza izlaznog signala. To znači da se visina CU-a
Hsc izračunava kao

H sc = H cell + β × (2( ⎡log 2 m ⎤ + C ) + MAX (∀


⎡log 2 m⎤ term(O ))), (2.19)
i
i =1

gde je β- wire-pitch kanala.


Mada smo usvojili da postoji layout sa jedninstvenom vrstom modeli kontrolne logike kod
kojih postoje različiti odnosi aspekata su neophodni za realnu procenu. Različiti aspekti odnosa se
dobijaju raspodelom modula CL na nekoliko vrsta. Mi ćemo sada aproksimirati ovaj folding proces,
ako usvojimo da možemo da izvršimo podelu layout-a jedinstvene vrste sa slike 2.16(a) na tri vrste
jednake širine, kako je to prikazano na slici 2.16 (b). Usvojićemo da su I/O pinovi pozicionirani na
gornjem i donjem kraju CU-a, respektivno. Dalje, usvojićemo da se ulazi dovode do svake vrste
koristeći poli-silicijumske linije kod kojih se linije vraćaju povratno, a izlazi net-ova se rutiraju
vertikalno (preko ćelija) u metal2. Mi takođe usvajamo da se izlazni cluster-i ne dele na delu koji
zauzimaju folded vrste. Tada, širina ovakvog modula sa većim brojem vrsta Wsc/R gde R
predstavlja broj vrsta. Visina modula se određuje kao suma visina svih vrsta. Visina svake vrste se
može izračunati na osnovu jednačine (2.19) kod koje samo interni net-ovi cluster-a u pojednoj vrsti
imaju doprinos na gustinu kanala te vrste. S obzirom da je H ch × R ≥ H ch1 + H ch 2 + ... + H chR , mi
možemo da koristimo Hch kao gornju granicu visine kanala za svaku vrtsu. Sa ovakvim
pretpostavkama ukupna visina folded implementacije (Hblock) je Hsc*R , dok je širina Wsc/R. To
znači da mi možemo i dalje da koristimo jednačinu (2.17) kao procenu za layout kontrolne logike.

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

APLA = (((n + m) × MAX (l w , bw )) + W p ) × (l h + bh + r × p). (2.20)

39
Slika 2.17: PLA layout model: (a) logičko preslikavanje; (b) layout model

2.9 Performansne mere

Tradicionalno projektantske performanse za HLS se karakterišu merama kakve su taktna


frekvencija, broj instrukcija ili broj operacija tipa sabiranje/množenje koje se izvršavaju u jedinici
vremena tj. sekundi. Nabrojane individualne mere ne karakterišu u potpunosti stvarne performanse
dizajna koje se odnose na pojedini specificirani opis. Umesto toga performanse dizajna za pojedini
specificirani opis se uobičajeno mere ukupnim vremenom potrebnim da se izvrši taj opis (aktivnost
specificirana opisom). S obzirom da opis može da sadrži loop koji nemaju fiksne granice, kao i "if"
iskaze kod kojih "then" i "else" grananja zahtevaju različiti iznos vremena za izvršenje, vreme
izvršenja ovih opisa zavisiće od ulaznih podataka. Zbog toga vreme izvršenja bilo kog opisa
jednako je proizvodu broja upravaljačkih koraka koji je potreban da se izvrši opis i trajanju
upravljačkog koraka (obično izraženo u taktnim periodama). Zbog toga minimizacija taktnih
perioda za fiksni ScH uvek poboljšava performanse. Performanse se mogu takođe poboljšati
minimiziranjem broja upravljačkih koraka na kritičnom putu izračunavanja, koristeći veći broj
resursa i paralellnim izvršenjem uvek kada je to moguće.

Slika 2.18: Ožičavanje: (a) RT model; (b) ekvivalentni RC model kašnjenja

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

t p ( start , end ) = ∑ R j × ∑ C k . (2.21)


j k

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

2.9.2 Kašnjenje kombinacionih kola


Svako kombinaciono kolo se sastoji od jedne ili većeg broja komponennata. Kašnjenje
kombinacionog kola odgovara propagacionom kašnjenju kritičnog puta kroz kolo, a to je obično
najduže kašnjenje sa bilo kog ulaza na bilo koji izlaz. Na primer, za kolo sa slike 2.19 kritični put je
sa ulaza I3 ka izlazu O2. Kritični put prolazi kroz komponente A,C,E i F i mreža (net) n1,n4, n6 n7
i n8. To znači da je kašnjenje na putu od ulaznog porta ka izlaznom portu jednako zbiru
propagacionih kašnjenja i svih mreža (net) koje se nalaze na kritičnom putu. Neka COMP(I,O) i
CONN(I,O) definišu sve komponente i sve net-ove na putu od ulaznog porta I ka izlaznom portu O.
To znači da propagaciono kašnjenje (tp (I,O)) od ulaznog porta I ka izlaznom portu O jednako je

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

2.9.3 Kašnjenje kod memorijskih elemenata

Memorijski elementi su obično sastavljeni od lečeva i flip-flopova. Standardna logička


struktura leča D tipa prikazana je na slici 2.20 (a). Kroz ovaj leč D tipa možemo identifikovati dva
različita puta kašnjenja: kašnjenje podatak-ka-izlazu (tDQ) i kašnjenja takt-ka-izlazu (tCQ)- vidi sliku
2.20 (b). Sa šematskog dijagrama leča prikazanog na slici 2.20 (a) mi možemo da zaključimo da je
tDQ > tCQ pošto na putu podatak-ka-izlazu postoji jedan dodatni ili ekstra invertor.

Slika 2.20: D leč: (a) logička šema; (b) kašnjenja i ograničenja

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

2.9.4 Vreme trajanja sistemskog takta


S obzirom da je vreme izvršenja opisa (dizajna) jednako proizvodu broja upravljačkih koraka i
taktnog perioda, za fiksni period taktnog intervala broj upravljačkih koraka predstavlja dobru meru.
Slično, taktni period je dobra kvalitetna performansna mera kod ScH-ovanja behavioral opisa sa
fiksnim brojem stanja.
Trajanje taktnog intervala određeno je sa kašnjenjem najgoreg slučaja tipa registar-u-registar
koji postoji kod FSMD arhitekture. Na primer, tipično registar-u-registar kašnjenje u stazi podataka
(datapath) je prikazano na slici 2.22. Ono uključuje kašnjenje kroz ulazne registre, ALU i veze, i
setup time odredišnog registra. Drugim rečima mi možemo da specificiramo taktni period kao

t clock = MAX (t p (Re g1 ), t p (Re g 2 ))


(2.26)
+ MAX (t p (n1 ), t p (n2 )) + t p ( ALU ) + t p (n3 ) + t setup (Re g 3 ).
43
Ako prenos podataka čini veći broj komponenata jednačina (2.26) mora da se aproksimativno
odredi. Tako na primer, ako se ubaci multiplekserska komponenta na nekom ulaznom portu dodatno
propagaciono kašnjenje multipleksera kao i odgovarajuće kašnjenje zbog povezivanja mora da se
uključi u (2.26).

Slika 2.22: Put registarskog prenosa

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:

t clock = t p ( State register ) + t p (Control log ic) + t p ( Reg. file) + t p ( FU )


(2.27)
+ t p ( Next − state log ic) + t setup ( State register ) + ∑t p
i =1, 2 , 3, 4 ,10
( ni )

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:

t clock = MAX ((t p ( State register ) + t p (Control logic) + t p ( Reg. file)


+ t p ( FU ) + t setup ( Status register ) + ∑t
i =1, 2 , 3, 4
p ( ni )),
(2.28)
(t p ( Status register ) + t p ( Next − state log ic)
+ t setup ( State register ) + ∑t
i =10 ,11
p (ni ))).

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 )),

(t p ( Status register ) + t p ( Next − state log ic) + t setup ( State register ) + ∑t


i =10 ,11
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.

2.10 Druge mere

U prošlosti HLS se uglavnom fokusirao na mere kvaliteta zasnovane na površini i


performansama. I druge mere, kakve su potrošnja, testabilsnost, sposobnost za verifikaciju,
pouzdanost i mogućnost da se nešto fabrikuje, nisu bile tako dobro definisane i široko prihvaćene
od strane projektanata.
Proizvod potrošnja-kašnjenje (power-delay product-PDP) je druga korisna i veoma često
korišćena metrika. PDP dizajna se izračunava kao proizvod prosečne potrošene snage Pd i
prosečnog kašnjenja kola tp na sledeći način

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

Jezici za opis dizajna

3.1 Uvod u HDL

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.

3.2 Jezički modeli u odnosu na arhitekturne stilove

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:

A <= B + C after 20 ns;

dodeljuje sumu B i C signalu A, 20 ns nanon tekućeg simulacionog trenutka. U toku simulacije,


operacija sabiranje se obavlja trenutno, u nultom vremenu simulacije, dok se rezultat ScH-uje da
bude dodeljen A-u 20 ns kasnije. Ove simulacione semantike ukazuju da ne postoji korespondencija
sa hardverom za registarski prenos koja može da implementira ovaj iskaz. Na primer, signali A, B i
C i operator sabiranja ne odgovaraju registrima ili sabiračama, kašnjenje od 20 ns je jednostavno
simulatorski model inercijalnog kašnjenja i nema direktnu korespondenciju sa inercijalnim
kašnjenjem bilo koje fiztičke komponente, jer ne postoji takva komponenta koja se može imlicirati.
U suštini ovaj mehanizam kašnjenja se prvenstveno koristi od strane simulatiora da reši konflikte
koji rezultiraju zbog ScH-ovanja nekoliko vrednosti signalu u istom trenutku simulacionog
vremena.
Kod HLS-a mi ipak treba da preslikamo ove jezičke konstrukcije u hardver na RTL nivou. Ako
kortistimo behavioral VHDL iskaze kao ulaz HLS-a, VHDL signali treba da se preslikaju u
memorijske elemente (tj. registre) ili fizičke žice, dok VHDL operatori treba da se implementiraju u
RT jedinice. Da bi obavili efikasnu sintezu mi treba da razumemo kako da preslikamo jezičko-
semantički model u arhitekturne modele.
To znači da ako se raspolaže strogim uparivanjem između jezičko-semantičkog modela i ciljno
arhitekturnog modela tada se pojednostavljuje zadatak sinteze, a dizajn je visoko kvalitetan. U
opštem slučaju, jezički modeli (semantike) treba da se usklade u odnosu na različite aplikacione
modele (tj. hardversko even-driven simulatore) kako bi učinili efikasnijim specigfične dizajn
aktivnosti (tj. sinteza i simulacija).
Ulazni jezik za opis hardvera treba da opiše behavior dizajna kao i njegov odnos sa spoljnim
svetom. Zbog toga HDL opis se obično sastoji od tri celine: definicije, behavior i ograničenja. Pre
nego što opišemo behavior dizajna neophodno je definisati apstraktne nosioce podataka
(promenljive, signali) koji se koriste u specifikaciji, fizičke portove koji se od strane dizajna za
komunikaciju sa ostatkom sveta, bilo koje hardverske strukture koje se koriste u behavioral opisu, i
tipovi podataka (apstrakcije) koji se koriste da pojednostave specifikaciju behavior-a dizajna. U
behavior-u, mi specificiramo kako se u toku vremena generišu izlazi u funkciji ulaza, koristeći
logičke operatore i definisane apstrakcije podataka. Konačno mi mora da specificiramo ograničenja
dizajn behavior-a koja su neophodna za korektnu, praktičnu i efikasnu implementaciju
sintetizovanog hardvera.
U naredne tri sekcije ukazaćemo na neke od osobina HDL-a koja su neophodna da se opišu
dizajni.

3.3 Osobine programskih jezika za HDL-ove

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.

3.3.2 Operatori i iskazi za dodelu


Transformacija podataka u dizajn opisu obavlja se od strane različitih tipova jezičkih
operatora. Šire posmatrano opertori se mogu klasifikovati u aritmetičke, Boolean, logičke, za
manipulisanje sa bitovima, za pristupanje elemtima polja, kao i operatori dodele. Najveći broj HDL-
ova ima dovoljno širok skup unapred definisanih opetora. Pored toga neki HDL-ovi omogućavaju
definisanje novih operatora. Najjednostavnija osnovna logička konstrukcija za specifikaciju
transformacije predstavlja iskaz dodele, kod koga se rezultat izraza sa desne strane dodeljuje ciljnoj
promenljivoj na levoj strani.

3.3.3 Control konstrukcije


Da bi specificirali behavior dizajna u toku vremena neophodno je da opišemo sekvecnu
iskaza dodele. Mi koristimo control konstrukcije kakve su if-then-else, case, loop za specifikaciju
conditional i repetitivnog behavior-a. Telo ISPS opisa na slici 3.2 koristi control konstrukciju
repeat za ostvarivanje looping (izvršenje u petlji), i decode i if conditional control da bi se opisao
fetch-decode-execute ciklus kod jednog jednostavnog procesora. Prvi iskaz u repeat loop-u
pribavlja tekuću instrukciju u PI (Program Instruction). Iskaz decode selektuje odgovarajuću akciju
za execution na osnovu vrednosti f-a (prva tri bita od PI). Iskaz if (kada je f=6) ukazuje na
conditional izvršenje.

Slika 3.2: Opis ISPS Mark1 procesora

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.

3.4 Hardversko specifične HDL osobine

Konstrukcije standardnih programskih jezika obezbeđuju behavioral apstrakcije, ali ne


obezbeđuju način za izražavanje hardversko-specifičnih osobina opisa dizajna. Da bi opisali
behavior hardver dizajna na FSM, FSMD i sistemskim nivoima, potrebne su nam dodatne
konstrukcije za deklaraciju interfejsa specifikacione strukture za parcijalni dizajn, RT i logički
operatori, asinhronost, hijerarhija, inteprocesorska komunikacija, projektanska ograničenja i
povezivanje korisnika. Ukazaćemo ada na svaku od ovih stavki pojedinačno.

3.4.1 Deklaracija interfejsa


S obzirom da dizajn mora da bude opisan tako da dobija ulaze od spoljnjeg sveta, a da
predaje rezultate izračunavanja kao izlaze, neophodno je definisati ulazne i izlazne portove.
Definicije sadrže obim (broj bitova), mod (in-ulaz, out- izlaz, in-out- ulaz/izlaz), i hardversko
specifične osobine (da li je port baferovan ili trostatički). Slika 3.4 prikazuje DSL specifikaciju
jednog kola kod koga INTERFACE deklaracije specificiraju portove i njihove atribute.

52
Slika 3.4: DSL specifikacija

3.4.2 Strukturne deklaracije


Strukturne deklaracije obezbeđuju specifikaciju registara, akumulatora, brojača i drugih
hardverskih struktura koje se koriste kao prommenljive u HDL opisu. Strukturne deklaracije su
korisne kada je potrebno da se neke parcijalne strukture dobro razumeju ili unapred projektuju, a
neophodno je da se eksplicitno koriste kod specifikacije behavior dizajna. Na primer, dizajn
procesora normalno da sadrži arhitekturne registre (kakvi su programski brojač ili RF polje) koji su
fiksirani pre behavior opisa procesora; ovi arhitekturni registri su deklarisani kao fizičke strukture i
mogu se koristiti kao promenljive kod behavior opisa procesora.

3.4.3 RT i logički operatori


Pored standardnih aritmetičkih i Bollean-ih operatora koji se koriste kod programskih jezika,
neophodno je da se podrže operacione primitive koje odgovaraju RT hardveru i hardveru na
logičkom nivou. Primeri su logički operatori na bit nivou kakvi su bit shift, bit rotation, bit stream
extraction i povezivanje (konkatenacija) bitova, kao i po-bitne (bit wise) logičke operacije. Uzorni
operatori na RT nivou predtsvljaju operatori za inkrementiranje i dekrementiranje promenljivih.

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.

Slika 3.5: Behavioral hijerarhija kod SpecChart-a

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.6: Dizajn hijerarhija u VHDL-u

3.4.6 Interprocesne komunikacije


U sekciji *2.5* opisali smo arhitekturu ciljnog sistema koja se sastoji od hardverskih procesora
koji interaguju kod kojih se komunikacija ostvaruje pomoću signala koji povezuju upravljačke
jedinice i staze podataka FSMD-ova. Na najvišem nivou apstrakcije procesori se predstavljaju
pomoću procesa. Zbog ovoga su potrebni HDL mehanizmi koji će obezbediti specifikaciju
komunikacije između interaktivnih procesa. Za prave sinhrone dizajne, komunikacija se ugrađuje u
okviru behavioral opisa procesa, jer svaki proces operiše na sebi svojstven način. U takvoj situaciji,
korisnik može eksplicitno da opiše komunikaciju koristeći standardne HDL konstrukcije koje
uslovljavaju operacije čitanja i upis u korektnim taktnim ciklusima.
Kada komunikacioni procesi nisu sinhroni, neophodno je da se specificiraju protokoli kako bi
se ostvarila sinhronizacija između interaktivnih objekata. Postoje dva osnovna metoda za postizanje
sinhronizacije: deljivi medijum i prenos poruka. Sinhronizacija kod deljivog medijuma se postiže
korisšćenjem deljivih veza ili memorija kojima se može simultano pristupati od strane
komunikacionih procesa. Kod HDL-a kakav je HardwareC sinhronizacija deljivih medijuma je
opisana prenosom parametara preko portova koji povezuju procese. Primer na slici 3.7(a) pokazuje
kako se podatku koji je upisan na portu b procesa P1 pristupa od strane procesa P2 na portu y. Na
sličan način, podatak koji je upisan od strane procesa P2 na portu x može se čitati na portu a
procesa P1.
55
Prenos poruka kod HDL-ova se ostvaruje korišćenjem određenih primitiva pomoću kojih se
opisuje sinhronizacija između komunikacionih procesa. Slika 3.7(b) prikazuje kako se u HardwareC
može opisati sinhronizacija prenosom poruka. Dva kanala a i b specificiraju komunikacioni
medijum između procesa P1 i P2. Sinhronizacione primitive kod HardwareC kakve su send i
receive se koriste za prenos preko kanala sa ciljem da specificiraju transfer podataka između
procesa. Iskaz receive(a, buf) kod procesa P1 uslovljava da P1 čeka sve dok proces P2 šalje podatke
po kanalu a koristeći iskaz send(a, msg).
Zahtev-potvrda kod handshake protokola opisan u sekciji *2.5* se može opisati u HDL-u
koristeći konstrukcije koje su slične prethodno pomenutim primitivama.

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.

3.4.8 Alokacija korisnika i povezivanje


Zadatak sinteze na visokom nivou se može posmatrati kao proces alokacije(dodele) i
povezivanje apstraktnih behavioral celina sa RT strukturama u toku vremena. Tradicionalno, ovaj
zadatak se može posmatrati kao potpuno automatizovana procedura na koju projektant ima malo ili
nema kontrolu. Ipak, iskusniji programeri mogu da bolje sagledaju sredstva za sintezu a time i
poboljšaju kvalitet sintetizovanog hardvera. Pošto su sredstva za sintezu zasnovana na konačnom
iznosu znanja u procesu projektovanja, projektanti mogu biti u stanju da odrade ovaj proces bolje u
odnosu na automatska sredstva za sintezu na taj način što će identifikovati probleme, detektovati
kritične sekcije i dati parcijalna rešenja. Ulazni HDL mora da obezbedi opis ovakve informacije o
parcijalnom dizajnu koji sadrži alokaciju i povezivanje. Alokacije se mogu specificirati kao RT
strukture u HDL deklaracijama. Četiri tipa povezivanja se mogu specificirati u ulaznom opisu:
stanja, registri, funkcionalne jedinice i povezivanje. Ova povezivanja se mogu specificirati kako u
deklaracijama tako i u dizajnu na behavioral nivou.
Povezivanje stanja dodeljuje operaciju iz behavioral opisa u stanje sintetizovanog dizajna;
operacija se može označiti svojim dodeljenim stanjem. Neki HDL-ovi su state-based (npr. BIF);
povezivanje stanja se zatim ostvaruje opisom operacije i njenog odgovarajućeg stanja.
Funkcionalna jedinica, registri i magistrale povezuju se pomoću odgovarajućih operacija.
Promenljive se dovode na ulaz funkcionalnih jedinica i upisuju u registre preko magistrala. Ova
povezivanja se mogu opisati preko odgovarajućih jezičkih operacija, promenljivih i dodela koje se
alociraju komponentama i magistralama, koristeći specijalne jezičke konstrukcije koje ukazuju na
povezivanje. Na primer BIF i ISPS koriste vitičaste zagrade koje ukazuja na povezivanje
komponenti u behavioral modelu. Mimola i HardwareC takođe dozvoljavaju određeni iznos
alokacije i povezivanja kod specifikacije ulaznog opisa.

3.5 HDL formati

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.

3.5.1 Tekstualni HDL-ovi


Najveći broj HDL-ova visokog nivoa usvojili su sintaksu i semantiku viših programskih jezika
kakvi su Pascal, Ada i C. Tekstualni HDL-ovi mogu veoma uspešno da opišu ponašanje tipa iskaz
dodela koje uključuju složene transformacije podataka (kakve su aritmetičke i logičke operacije).
Aplikacije koje koriste veliki iznos izračunavanja se najbolje opisuju koristeći tekstualne iskaze
dodele. Primeri tekstualnih HDL-ova su: ISPS, VHDL, HardwareC, itd. HDL-ovi zasnovani na
formalno matematičkoj logici, kakav je HOL se takođe najbolje tekstualno opisuju.

3.5.2 Grafički HDL-ovi


Unos grafičke šeme koja se odnosi na strukturni dizajn je bila popularna metoda kod
projektanata dugi niz godina iz razloga što se ponašanje dizajna može efektivno opisati koristeći
grafičke formate. Naime, redosled izvršenja, paralelizam i tok upravljanja se mogu lako sagledati i
razumeti koristeći grafičku notaciju. Behavioral dijagram toka je dobar primer grafičkog unosa, kod
koga se tok upravljanja izražava grafički, dok se operativnost ponašanja opisuje u tekstualnom
obliku u okviru iskaza dodele.
Kada je obim behavioral-a relativno mali dijagram toka opisi zasnovani na dijagramu toka
predstavljaju korisni mehanizam za opis dizajna. ASM i EXEL notacija su dva tipična primera
ovakvih jezika. Kada behavioral dizajn postaje suviše kompleksan tada se on opisuje hijerarhijski.
State Charts i Spec Charts obezbeđuju koncizni formalizam za opis dizajna. Na slici 3.5 prikazano
je kako se Spec Chart-ovi mogu koristiti za grafički opis behavioral jednog jednostavnog
procesorskog sistema. Petri mreže se često koriste za grafički prikaz ponašanja hardvera; pri čemu
GDL je primer ovakve specifikacije.

3.5.3 Tabelarni HDL-ovi


Primeri sekvenciranja objašnjeni u poglavlju *2* pokazuju kako tabelarni opisi omogućavaju
konciznu specifikaciju notacije kod opisa dizajna baziranog na prelazu, posebno kod FSMD-ova,
gde deo koji se odnosi na stanja dizajna se može jasno izraziti pomoć tabele stanja a operacije staze
podataka se mogu izraziti u tekstualnom obliku koji se pridružuje odgovarajućim delovima tabele
stanja. BIF je primer ovog HDL-medijuma. Sekvenciranje stanja kod BIF-a se opisuje u tabelarnom
formatu, ali operativni behavioral se izražava koristeći tekstualne izraze koji se odnose na operacije
nad podacima u toku svakog stanja.
Na primer, na slici 3.8 prikazan je blok dijagram sistema koga čini CPU, kontroler magistrale i
memorijska ploča. Interno memorijska ploča se sastoji od memorijskog kontrolera i ROM-a. U
okviru memorijske ploče, komunikacija između memorijskog kontrolera i ROM-a se ostvaruje uz
pomoć signala Addr koji adresira ROM polje, signal MR koji dozvoljava rad ROM-u, i interna Data
magistrala koja prihvata podatke sa izlaza ROM-a. Na sistemskom nivou koristi se nekoliko signala
i magistrala da bi se ostvario handshaking protokol. Abus predstavljaju adresne linije spoljne
magistrale, Dbus su linije magistrale podataka, dok DataRdy ukazuju da ROM ima važeće podatke
na magistrali za podatke, dok BusReq predstavlja handshaking signal magistrale podataka. Svi
handshaking signali su aktivni kao niski.

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.

Slika 3.9: Ciklus čitanja memorijske ploče kod BIF-a

3.5.4 HDL-ovi zasnovani na talasnim oblicima


Handshaking protokol opisan u predhodnoj sekciji a koji se odnosi na ciklus čitanja memorije
može se uspešno opisati koristeći talasne dijagrame prikazane na slici 3.10. Talasni dijagrami na
jedan grafički način predstavljaju promene signala (tj. događaje kao što su uspon i opadanje ivica
impulsa), takođe mogu da prikažu sekvencijranje događaja, kao i da efektvino ukađu na vremenske
odnose između događaja. Projektanti hardvera često koriste vremenske dijagrame za opis
behaviorala a takođe i prilažu ove dijagrame u okviru dokumentacije. Nekoliko vremensko
baziranih editor jezika je razvijeno za predstavljanje ovog tipa informacije a tipični su Waves i
XWAVE.

59
Slika 3.10: Vremenski dijagram za ciklus čitanja kod memorijske ploče

60
Poglavlje 4

Prezentacija podataka i transformacija

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.

Slika 4.1: Uparivanje HDL modela sa ciljnim arhitekturama

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.

4.2 Tok dizajna kod HLS-a: Primer

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

Da bi ovaj paralelizam učinili eksplicitnim mi možemo iskompajlirati (prevesti), ovaj opis u


CDFG prezenraciju kako je to prikazano na slici 4.2. CFG (Control Flow Graph) CDFG
prezentacije obuhvata sekvenciranje, uslovna grananja kao i loop konstrukcije u behavioral opisu,
dok DFG (Data Flow Graph) obuhvata operativne aktivnosti opisane od strane VHDL iskaza
dodele (vidi sliku 4.2). Svaki čvor CFG-a može da sadrži Data Flow blok kome se on pridružuje
tako da on predstavlja operacije koje se obavljaju u tom Control Flow čvoru. CDFG-ovi Data Flow
blokova slični su bazičnim blokovima kod strukturnih programskih jezika. Naglasimo da je CDFG
šema samo jedan primer od velikog broja mogućih među-graf prezentacija; a mi ćemo koristiti
CDFG kao pogodnu ilustraciju pošto on jasno odražava strukturu ulaznog opisa. Kod opisa koji se
odnosi na shift-multiplier, između iskaza dodele u okviru osnovnog bloka ne postoje zavisnosti
između podataka. Na primer, blok B1 ima pet iskaza dodele u DFG-u, pri čemu se sva pet obavljaju
paralelno. Kod Data Flow prezentacije prikazane na slici 4.2 postoji eksplicitni paralelizam koji je
sastavni deo sekvencijalnog VHDL opisa tog procesa.
Pre nego što sintetizujemo hardver na osnovu ulaznog behavior-a, mi uočavamo da kako
početno zadati VHDL opis tako i odgovarajuća CDFG prezentacija ne ukazuju kako treba
implementirati dizajn u hardver. Promenljive, kakve su A,B, i M prikazane na slici 4.2 nisu
povezane sa memorijskim elementima. Na sličan način operacije, kao na primer sabiranje u bloku
B2, nisu povezane sa FU-ovima. Šta više, VHDL opis i CDFG ne specificiraju sekvenciranje stanja
ili upravljačke signale kojke aktiviraju datapath komponente u svakom stanju.

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.

Slika 4.3: ScH-ovan CDFG za shift-multiplier primer

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

Konačno, mi realizujemo kontroler koji sekvencira dizajn i upravlja sa rado FU-ova i


memorijskih jedinica u datapath-u. Simbolička tabela upravljanja (Control table koja je sastavni
deo Control Unit-a sa slike 4.5) prikazuje informaciju o nardnom stanju i nekodiranim upravljačkim
linijama koje upravljaju jedinicama datapath-a u svakom stanju. Svaka kolona u simboličkoj
control table odgovara stanju i uslovnoj kombinaciji, dok svaka vrsta (sa izuzetkom zadnje vrste)
predstavlja upravljački signal za datapath jedinicu. Zadnja vrsta control table prikazuje naredno
stanje za tekuće stanje i vrednost uslova (condition value). Da bi razumeli kako se ova tabela
kreira, razmotrimo prvu kolonu koja predstavlja stanje S0 i uslov START=1. Na osnovu ScH-
ovanog behavior-a sa slike 4.3, mi vidimo da promenljiva A, koja je povezana sa A_Reg, treba da se
napuni na vrednost koja se čita sa A_PORT. Ovaj transfer podataka se ostvaruje na slici 4.5
prenosom podataka sa A_PORT preko desnog ulaza Mux2 u A_Reg i punjenjem A_Reg. Shodno
tome upravljački signal ulaza za Mux2 je postavljen na 1 (tj. bira se desni ulaz ultipleksera) i Load
A_Reg upravljački signal je postavljen na 1 (tj. puni se A_Reg). Zadnji ulaz u prvoj koloni control
tablče-a ukazuje na naredno stanje S1 . Ostatak sadržaja simboličke control table se popunjava na
sličan način.
Počev od ulaznog behavior-a, mi dodajemo nekoliko tipova informacije u toku HLS-a, kakvi
su: stanja, RT jedinice i veze, datapath upravljačku informaciju i informaciju o sekvenciranju
stanja. Šta više neophodno je korelisati ove dodatne delove informacija sa ulaznim behavioral
opisom koristeći naznačavanja i/ili linkove za povezivanje. Među dizajn reprezentacija
(Intermediate design representation) mora zbog toga eksplicitno da predstavi ulančavanje stanja,
selekciju jedinica i povezivanje, strukturu RT povezivanja, i simboličko upravljanje. Ovakva
prezentacija podržaće sve faze HLS-a na putu od apstraktnog behavior-a do konačne
implementacije dizajna predstavljajući pri tome među rezultate sinteze kao i veze između među-
stepena u procesu sinteze.

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).

4.4 Predstavljanje HDL behavior-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.

4.4.1 Control-flow reprezentacija


Ispitaćemo dve jednostavne implementacije konstrukcija tipa control da bi intuitivno pokazali
da možemo da sagledamo control flow na različite načine. Segment VHDL kôda sa slike 4.7 (a)
prikazuje case iskaz koji selektuje skup dodela na osnovu vrednosti signala C. Kod prve šeme slika
4.7 (b) konstrukcije tipa control se preslikavaju u control flow čvorove koje zadržavaju eksplicitno
sekvenciranje i tok upravljanja specificiran od strane ulaznog opisa. CFG se sastoji od conditional
branch čvorova, conditional join čvorova i blok iskaza tipa dodele, simbolički predstavljeni
pomoću trouglova, invertovanih trouglova i pravougaonika, respektivno. Svaki control flow čvor
može da ima pridruženo data flow blok koji opisuje njegovu operativnu aktivnost (tj. dodele ili
testiranja). Na primer, slika 4.7 (b) prikazuje case iskaz koji je preslikan u conditional branch
konstrukciju (tj. trouglove) i dodele u okviru kojih evaluacija conditional-a se preslikava u data
flow blok (tj. pravougaonici). Kod ove control flow prezentacije, svaki put u case iskazu eksplicitno
pokazuje uzajamnu isključivost zato što čini lakim da algoritmi za sintezu dele resurse po različitim
granama conditional-a. Ova prezentacija se takođe može se čvrsto uskladiti sa tokom upravljanja u
ulaznom opisu, pa je zbog toga lakše da se obavi debagiranje i linkovanje na početno zadati opis.
Ovaj metod prezentacije je sličan control/data flow-graph-ovima (CDFG) kod koga se osnovni
blokovi koriste od strane softverskih kompajlera.
U drugoj prezentacionoj šemi, mi preslikavamo konstrukcije tipa control u DFG paralelnom
evaluacijom svih grananja kod conditional testiranja i odabiranjem korektne vrednosti putem
dodele nakon što su sva grananja izvršena. Da bi se ovo odradilo, neophodno je da se izračunaju sve
moguće vrednosti za ciljnu LHS promenljivu, a zatim selektovati odgovarajuću na bazi vrednosti
condition promenljive. Kod ove dataflow šeme koriste se krugovi da označe operacije, potezi da
označe dataflow , pravougaonici da označe čitanje i upis podataka, i invertovani trouglovi da
označe izbor podataka na osnovu vrednosti upravljačke linije. Slika 4.7 (c) prikazuje dataflow
reprezentacije case iskaza sa slike 4.7 (a). Data flow selekcioni čvorovi (predstavljeni inverznim
trouglovima na slici 4.7 (c)) selktuju odgovarajuće vrednosti za ciljne promenljive X i A koje se
pojavljuju na LHS u najmanje jednom iskazu dodele.

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.

4.4.2 Prezentacija sekvenciranja i tajming


Pored control flow i data flow prezentacija, i međuprezentacija odražava međusobne redoslede
koji su implicitno ili eksplicitno specificirani ulaznim opisom. Mi možemo koristiti potege
prethođenja da bi prikazali eksplicitni redosled koji postoji između čvorova u grafu. Potezi
prethođenja su neophodni da bi uslovili redosled kod operacije eksterno čitanje i upis (tj. dve
sukcesivne operacije čitanja pirta) u ulaznom opisu. Potezi prethođenja se takođe mogu forsirati
kako bi ukazali na redosled pristupa polju u slučaju kada indeksna vrednost nije konstantna. Slika
4.8 (a) prikazuje segment konkurentnog VHDL opisa kod koga signali a i b se prvo inkrementiraju,

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

Mi često specificiramo tajming ograničenja (timing constraints) behavior dizajna sa ciljem da


obezbedimo korektni rad ili ispunimo perfomansne ciljeve. Tajming informacije predstavljene u
70
control flow i data flow grafovima se koriste kao ograničenja za ScH, selekciju jedinice i
povezivanje (ulančavanje) jedinice. Ona takođe postavlja ograničenja na performanse
implementirang dizajna (tj. trajanje taktnog impulsa). U zavisnosti od korišćenje prezentacione
šeme, moguće je sagledati ovakvu tajming informaciju na nekoliko načina. Ilustrovaćemo neke
šeme za prezentaciju vremenskih ograničenja u data flow i control flow grafovima.
Na data flow graf nivou mi možemo da korisitmo dve jednostavne šeme: naznačavanjem
tajming informacije na potezima prethođenja između dva potega u grafu, ili kreiranjem tajming
čvora između dva čvora u grafu. Naznačavanje tajming informacije kod potega prethođenja između
čvorova data flow grafa obično se koristi za predtsvaljanje minimalnih, maksimalnih i nominalnih
tajming ograničenja koji postoje između dve operacije (tj. čvorova). Ovakvo tajming ograničenje
često se javlja kada operacije čitanja i upis eksternim portovima treba da budu uređene van vremena
koje se odnose na korektni rad (kao na primer kod komunikacionih protokola). Na primer, slika
4.10 (a) prikazuje tajming ograničenje min=500, max=1000 koje je naznačeno na potegu
prethođenja između čitanja ulazniog porta req i upis u izlazni port ack. Druga šema, koristi
eksplicitne tajming čvorove između potega data flow grafa i opisuje kašnjenja tipa tačka-ka-tački u
data flow grafu. Ova kašnjenja postavljaju ograničenja koja se odnose na minimalna i maksimalna
vremena izvršenja individualnih operatora, kao i grupe operatora na data flow putu od izvornog
(source) do krajnjeg (sink) tajming čvora. Na primer, slika 4.10 (b) prikazuje tajming čvor između
levog ulaza operacije sabiranja i izlaza operacije šift, koja ograničava izvršenje operacija sabiranja i
pomeranja na naminimum 50ns, a maksimum 90ns. Kada se tajming čvorovi koriste sa ulaza na
izlaz jednog čvora oni modeliraju pin-to-pin kašnjenja za kompontu koja implementira operaciju.
Na sličan način, na control flow graf novou, moguće je insertovati tajkming čvor između dva
potega control flow grafa. Semantike ovakvih tajming čvorova menja se sa korošćenom
prezentacijonom šemom. Kod CDFG prezentacije tajming čvor između dva control flow potega
ukazuje na ograničenje kod izvršenja svih data flow blokova duž control puta između izvornog
(source) i krajnjeg (sink) tajming čvora. Zbog toga, ovaj tajming čvor ograničava performansne
zahteve na nekoliko data flow blokova pa čak i na celokupan dizajn. Na primer, slika 4.10 (c)
prikazuje granice minimalnog i maksimalnog kašnjenja kod izvršenja loop-a specificirane
ubacivanjem čvora kašnjenja sa loop-a ulaznog potega na loop izlazni poteg control flow graph-a.
Mi smo pokazali da se različiti aspekti HDL ulaznog behavir-a mogu prikazati na različite načine
koristeći flow graph zasnovane šeme. Ukazaćemo sada na tri različite flow graph šeme koje se
koriste kod HLS-a.

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

4.4.4 Hibridno upravljanje i data flow prezentacija


Hibridno upravljanje i data flow prezentacija eksplicitno ugrađuje informaciju o celokupnom
upravljanju i sekvenciranju u okviru data flow . Primer ove šeme je konkurentna data flow
prezentacija prikazana na slici 4.7 (c), kod koje svi uzajhmno isključivi putevi se izvršavaju
konkurentno a konačan rezultat se bira na bazi vrednosti conditional (uslova).Value Trace (VT)
koristi ovaj pristup.
De Jong–ova prezentacija odgovara jednoj drugoj data flow baziranoj šemi kod koje se
izvršavaju samo aktivni conditional putevi, a ne svi branch i conditional testovi. Ova prezentacija
koristi branch i merge čvorove kako bi odredila koji će se put u data flow grafu izvršiti. Primer De
Jong-ove prezentacije za VHDL-ov case iskaz sa slike 4.11 (a) je prikazan na slici 4.11 (c). U ovom
slučaju Dx, Dw i Dc predstavljaju RHS vrednosti promenljivih X, W i C, respektivno, dok Ux i Ua
predstavljaju dodele ciljnim LHS promenljivama X i A , respektivno. Čvorovi označeni sa BR
odgovaraju brancing , a čvorovi označeni sa ME odgovaraju conditional dodelama. Potezi u ovoj
prezentaciji su označeni sa uslovnim vrednostima kako bi ukazali na odgovarajući put izvršenja.
73
DSL sistem koristi hibridnu control flow i data flow šemu gde osnovni graf čvorovi odgovaraju
jezičkim operacijama i promenljivima. Na vrhu ovih čvorova formiraju se tri različita grafa koja
koriste tri tipa potega: sekvencirajući potezi koji obuhvataju upravljačku i skevencirajuću
informaciju u ulaznom opisu, data flow potezi koji pokazuju na zavisnosti po podacima između
operacija i tajmin potezi koji prikazuju tajming ograničenja između različitih operacija. SSIM
predstavlja ekstenziju DSL-a koju obuhvata CF i DF delove koji su fizički razdvojeni putem
dupliciranja operator čvorova i prikazivanjem CF sekvencirajućih potega u prvom grafu, a DF
potega koji ukazuju na zavisnosti u drugom grafu. Ovaj odnos jedan-prema-jedan koji se odnosi na
CF i DF čvorove za VHDL behavior-a na slici 4.11 (a) je prikazan na slici 4.11 (b).
DSFG prezentacija se koristi da obuhvati SFG ponašanje izvedeno na osnovu silage opisa DSP
dizajna. Ovo je jedna druga hibridna prezentacija kod koje SFG (tj. DFG) se označava sa
upravljačkom informacijom i projektantskim ograničenjima. Na sličan način SIF prezentacija se
koristi kod Olympus sistema za sintezu koji koriste hijerarhijski graf sekvenciranje kojim se
pokazuje na DF i CF zavisnosti.

4.4.5 Prezentacija tipa rasčlanjena stabla


Na slici 4.6 (b) pokazali smo da rasčlanjena stabla se kao prvi generišu u procesu kompilacije
ulaznog opisa u FG prezentaciju. Ova rasčlanjena stabla se mogu koristiti kao behavioral
prezentacije na među nivou, i mogu se označiti uz pomoć povezivanja ili ulančavanja i struktura
kako proces sinteze napreduje. S obzirom da rasčlanjena stabla ne poseduju inforamacije o DF
analizi između iskaza, prednost ove šeme je da je ona dobro usklađena sa ulaznim behavioral
opisom. Ovo je čini da lako razumljivom od strane projektanata. Ipak prezentacija rasčlanjena
stabla ne pokazuje eksplicitno na potencijalni paralelizam koji postoji između različitih iskaza.
Shodno tome, sredstva za sintezu treba da izvuku ovu informaciju iz prezentacije stabla u trenutku
kada je to potrebno.

4.5 Prezentacija HLS izlaza

Izlaz HLS-a je strukturni datapath međusobno povezanih RT komponenata i simboličke control


tabele. RT komponente predstavljaju objekti u struktrnom domenu sinteze, a simbolička control
tabela predstavlja sintetizovani FSM behavioral na nižem nivou od početnog ulaznog opisa. S
obzirom da manipulišemo sa objektima u različitim dizajn domenima i na različitim dizajn nivoima,
sintetizovana struktura i upravljačka (control) jedinica se obično održavaju kao posebne u odnosu
na ulazni opis, a korelisane su sa ulaznim behavioral pomoću binding veza.
Sintetizovana struktura se obično memoriše kao net lista ili nodelist koju čine tri dela: lista
komponenata, lista signala, i veze između komponenata i signala. Za svaki net (tj. signal) net lista
specificira izvorišne i ordedišne portove komponenata. U suprotnom, za svaki čvor (node), tj.
komponenta, node lista specificira signale koji su povezani na ulazne i izlazne portove komponente.
Net lista i node lista mogu u značajnoj meri da variraju u zavisnosti od sintakse, ali svi oni sadrže
istu osnovnu informaciju o povezivanju. Primer nnode liste je VHDL opis strukture potpunog
sabirača sa slike YYY 4.13

4.5.1 Strukturni VHDL opis potpunog sabirača

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.

4.5.2 Projektantski pogledi i kompletne prezentacione šeme za HLS


Mi smo uočili da o nekoliko tipova informacija mora da se vodi računa o toku procesa HLS-a:
inicijalni dizajn behavior specificiran preko ulaznog HDL-a, dizajn ograničenja i rezultati različitih
zadataka sinteze u formi stanja, stanja sekvenciranja, strukture datapath-a, i njihovh povezivanja sa
behavioral promenljivima i operatorima.
Vertikalno integrisani HLS sistemi opisani u poglavlju IX obično sadrže kompletnu dizajn
informaciju u toku HLS-a koja koristi različite međuprezentacione šeme. Imajući u vidu da se po
nekoliko sradstva za sintezu koriste u toku različitih stepena sinteze, kakvi su ScH i alokacija,
neophodan je mehanizam koji će omogućiti razmenu dizajn informacije između sredstava za
projektovanje. Šta više proijektant često želi da ručno dopiše ili zameni određene faze u procesu
automatkse sinteze. Zbog toga je neophodno da se podržavaju različiti dizajn pogledi koji su veoma
usko usklađeni sa informacijom koja je neophodna da se koristi u toku svakog koraka sinteze.
Ilustrovaćemo ove potrebe za jedan skup dizajn pogleda ako koristimo primer shift multiplier-a kroz
različite korake HLS-a. Postoji mnogo prezentacionih šema koje sadrže kompletnu dizajn
informaciju neophodnu za HLS i koje obezbeđuju dizajn poglede za specifične aktivnosti u
postupku sinteze. Na kraju ove sekcije mi ćemo opisati neke od tih šema.

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

Zadatak alokacija rezultat u kompletnom datapath-u, ne objašnjava kako se ovaj datapath


kontroliše ili upravlja u vremenu kao što je to predstavljeno pomoću prazne Control unit na slici
4.13 (a). Zadnja faza u HLS-u je generisanje control signala pri čemu se izvodi simbolička control
tabela za Control unit sintetizovanog dizajna. Za svako stanje i uslov simbolička control tabela
ukazuje na kontrolne signale koji su neophnodni da aktiviraju FU-ove i memorijske jedinice u
datapath-u kao i naredno stanje sekvence. Model FSM state tabele prirodno opisuje ovu simboličku
control tabelu ako koristimo ne kodirana stanja i control izlaze. Slika 4.14 prikazuje parcijalnu
simboličku control tabelu shift multiplier dizajna koji ukazuje na controi signale aktiviranih u
svakom stanju dizajna i na informaciju o narednom stanju. Kompletni sintetizovani dizajn sa
ugrađenom simboličkom control tabelom prikazan je na slici 4.5.
Sa ciljem da bolje razumemo specifikaciju simboličke control tabele, ispratimo trasiranje
izvršenja behacvior-a M:=M+B u stanju S2 koristeći potpuni dizajn i simboličku control tabelu
prikazanih na slikama 4.5 i 4.14, respektivno. Mi prvo uočavamo da su M i B ograničene na Mult i
B_Reg respektivno. Zbog toga mi mora da propustimo izlaze Mult-a i B_Reg-a kroz Mux3 i Mux4,
respektivno, i da postavimo upravaljačke linije za Adder, biramo izlaze Adder preko Mux1, i
konačno punimo rezultat u Mult. Stanje S2 simboličke control tabele sa slike 4.14 prikazuje control
linije koje se moraju aktivirati kako bi se ostvario ovaj prenos podataka.
Koristeći jednostavan shift multiplier primer pokazali smo da se ulazni opis postepeno
razrađuje u dizajn implementaciju dodavanjem više strukturnosti u datapath-u i modifikacijom tipa
dizajn behavior-a sa ciljem da se ukaže na operativne i upravaljačke komponente datapath-a. Zbog
toga, meduprezentacija mora da obuhvati state baziranu informaciju o sekvenciranju kao i mešavinu
behavioral i strukturnog opisa koji podržava HLS. Pri svakom koraku procesa HLS-a, mi smo
ukazali na jedinstveni pogled dizajna baziran na FSMD modelu koji opisuje konkretni behavioral i
strukturni dizajn. U ostatku ove sekcije mi ćemo ukratko sagledati neke prezentacione šeme koje
sadrže kompletnu informaciju dizajna i pružaju dizajn poglede koje su user friendly za korisnika.
Behavioral Intermmediate Format (BIF) je primer kanonične međuprezentacije za sintezu koja
obuhvata dizajn behavior FSMD ciljnog arhitekturnog modela. BIF koristi state tabele koje su sa
behavioral dodelama, FU i sprege kako bi sveobuhvatno predstavio behavior, strukturna i i tajming
ograničenja dizajna u svakom koraku HLS procesa. BIF omogućava dizajn poglede zasnovane na
naznačene CDFG prezentacije koja se koristi od strane sredstava za sintezu. Inicijalno ne-ScH-
ovani behavioral se sagledava koristeći particionisanu CDFG prezentaciju. Nakon ScH-ovanja
dizajn behavior-a u stanja, CDFG se označava sa state informacijom. BIF operaciono bazirana
tabela stanja (OBST) obuhvata ScH-ovani FSMD behavior koristeći format koji je sličan FSMD
baziranoj state tabeli prikazanoj na slici 4.12. Nakon alokacije datapath-a, BIF-ova state tabela o
jedinicima (UBST) opisuje registar-u-registar datapath transfere u svakom stanju koristeći dizajn
poglede koji su modelirani na FSMD baziranom datapath alokacionoj tabeli prikazanoj na slici

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.

4.6.1 Kompajler transformacija


S obzirom da flow graf prezentacije tipično odgovaraju opisima imperativnih jezika nekoliko
standardnih kompajler optimizacionih tehnika se mogu obaviti nad prezentacijama. Slika 4.15
prikazuje dve uzorne kompajler optimizacije. Constant folding (slika 4.15 (a)) zamenjuje flow graf
segment koji sadrži aritmetički operator koji ima konstantne operande sa rezultatom operacije
(jedinstvena konstanta). Mi možemo da prenosimo rezultujuću konstantu naniže u lancu data flow
potega kako bi obavili dalje korišćenje konstante. Ovaj proces se naziva propagacija konstante.
Eliminacija redudantnog operatora (slika 4.15 (b)) je druga kompajler optimizaciona tehnika
koja eliminiše operator u flow grafu ako postoji drugi flow graf operator sa identičnim ulazima. Mi
možemo da generišemo ovu transformaciju da bi pretražili i eliminisali sve zajedničke sub-izraze
koje se javljaju na izlazu svih operatora u flow grafu. Globalna data flow analiza flow grafa može i
da ne otkrije veći broj optimizacija, kakve su eliminacija ''mrtvog'' kôda, loop invarijantnu detekciju
i kôd hoisting.

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

Određene kompajler transformacije su specifične HDL-u i koriste se za opis dizajna. Kada se


VHDL koristi opis dizajna moguće je identifikovati specifične sintaktičke konstrukcije i zameniti ih
sa atributima signala i net-ovima koji ukazuju na njihove funkcije. Na primr, slika 4.16 (a)
prikazuje uzorni segment VHDL kôda koji testira na pojavu usponske ivice signala X. Kompajler
inicijalno generiše flow graf strukturu koja sadrži čvorove za čitanje konstanti 1 i stable, kao i
logički operator čvor kakav je AND i NOT za evaluaciju usponske ivice uslova. (vidi sliku 4.16
(b)). Mali označeni krugovi u DFG-u sa slike 4.16 ukazuju na signale. S obzirom da mi
jednostavno želimo da ukažemo na test usponske ivice signala X, flow graf transformacija sakuplja

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)).

4.6.2 Transformacija Flow-Graph-a


Moguće je obaviti nekoliko transformacija na flow graf nivou sa ciljem da se pobošlja
paralelizam dizajna. Neke od flow graf transformacija su nezavisne od prezentacione šeme doku se
druge mogu primeniti na specifične flow graf šeme. Ukazaćemo na tri tipa flow graf transformacije:
redukcija visine stabla, control flow i data flow transformacija i flattening control/data flow
grafova.
Redukcija visine stabla koristi osobine komutativnosti i distributivnosti jezičkih operatora kako
bi smanjio veličinu dugih lančanih izraza, i ispoljila potencijalni paralelizam u okviru složenog
DFG-a. Slika 4.17 prikazuje primer redukcije veličine stabla koja se odnosi na primenu iskaza
dodele sa šest operatora. Inicijalno rasčlanjeno stablo generisano od strane kompajlera ima veličinu
šest i ne pokazuje potencijalni paralelizam u okviru iskaza dodele. Nakon redukcije veličine stabla,
dobija se stablo veličine tri kod koga se nekoliko operacija mogu paralelno obaviti.

Slika 4.17: Redukcija veličine stabla izraza

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

Slika 4.20: Transformacije flow grafa na logičkom nivou

4.6.3 Hardversko specifične transformacije


Hardversko-specifične transformacije na logičkim, RT i sistemskim nivoima se mogu primeniti
na među prezentaciju. U opštem slučaju to su lokalne transformacije koje koriste hardver na
različitim dizajn nivoima kako bi optimizirali među prezentaciju.
Na logičkom nivou, moguće je primeniti lokalne Boolean-ove optimizacione tehnike na
međuprezentaciju. Ove transformacije koriste osobine Boolean-ove algebre da bi lokalno
optimizovali delove flow grafa putem uparivanja oblika i zamenom. Slika 4.20 prikazuje uzorni deo
flow grafa koji se svodi na redukovani jednostavni prenos podataka pošto se ekvivalentna Boolean-a
funkcija redukuje na jednu Boolean-u promenljivu. Operacije koje upoređuju vrednosti sa 0 ili
konstantama se takođe mogu optimizirati na ovaj način.
Na RT nivou, možemo koristiti oblik uparivanja kako bi detektovali i zamenili delove flow
grafa jednostavnim flow graf segmentima. Transformacije uparivanje oblika se baziraju na RT
semantikama hardverskih komponenata koje odgovaraju flow graf operatorima. Transformacije se
mogu proširiti na prepoznavanje celokupnih segmenata flow grafa koje odgovaraju RT FU-ovima.
Slika 4.21 (a) prikazuje jednostavni primer kod koje se signali a i b zajednički sabiraju, a rezultat se
inkrementira. Ako RT biblioteka ima FU koja kombinuje sabiranje sa inkrementiranjem, moguće je
zameniti flow graf segment sa add_inc operacijom kako je to prikazano na slici 4.21 (b). Na sličan

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

5.1 Behavioral sinteza

Behavioral sinteza predstavlja proces generisanja dizajna na registarskom nivou polazeći od


behavioral specifikacije na algoritamskom nivou. Dizajn koji je izlaz (rezultat) behavioral sinteze
čine dve interaktivne komponente: staza podataka (data path) i kontroler.
Staza podataka predstavlja kompozicija modula koji su selektovani iz modul-biblioteke.
Biblioteka sadrži sabirače, multipleksere, registre, i druge module.
Kontroler se generiše kao FSM opis koji prihvata markere statusa (uslova) iz staze podataka i
generiše upravljačke signale koji upravljaju radom različitih resursa staze podataka. Prelaz iz
jednog stanja u drugo kod samog kontrolera dovodi do sekvenciranja registarskog prenosa u stazi
podataka. Nakon behavioral sinteza standardno slede koraci logičke i layout sinteze radi
generisanja fabričke maske layout-a (vidi sliku 5.1). U toku procesa logičke sinteze svaki modul
staze podataka se preslikava u modul tipa složeno-logičko-kolo koje se najčešće realizuje pomoću
stanardnih ćelija.
Sredstva projektovanja za logičku i layout sintezu procesiraju kontroler kako bi generisali
implementaciju FSM-a. Pri ovome se pretpostavlja da ova implementacija uzima u obzir ožičenu
formu PLA strukture i da je implementacija u potpunosti u CMOS tehnologiji.
Ograničenja tipa površina i trajanje taktne periode uobičajeno se uzimaju u obzir prilikom
behavioral procesa sinteze.

behavioral specifikacija

ekstrakcija DFG-a

Data Flow Graph

behavioral sinteza biblioteka modula

Dizajn na nivou registara


(data path + controller)

generator celija standardne celije


logicka layout sinteza
(soft makroi) (hard makroi)

layout maska spremna za


fabrikaciju

Slika 5.1: Vertikalno integrisano okruženje za sintezu

86
5.2 Identifikacija osnovnih zadataka kod postupka sinteze na visokom
nivou

Kod sinteze na visokom-nivou dva osnovna zadatka koja treba obaviti su:

1. planiranje izvršenja (scheduling)


2. dodela (allocation)

Planiranjem se određuje redosled izvršenja zadataka, dok se dodelom vrši pridruživanje


hardvera koji će obavljati te operacije. U suštini ova dva zadatka su veoma složena i pripadaju klasi
NP-kompleta. Ovo je glavni razlog zbog čega se za rešavanje ovih problema koriste heuristički
pristupi.

5.2.1 Modeliranje ponašanja


Ponašanje (behavior) kola na visokom-nivou se može specificirati nekim od HDL-ova. Nakon
toga, na osnovu definisane specifikacije, ponašanje se može predstaviti u formi grafa na osnovu
toka podataka (data flows) i toka-upravljanja (control flows)
Behavior spcifikacije, osnovni-blok se definiše kao neprekidna-sekvenca iskaza koja sadrži
iskaz grananja samo na svom kraju. Shodno tome, graf toka podataka (data flow graph – DFG) je
moguće izvesti iz osnovnog-bloka pri čemu se svakom čvoru pridružuje operacija, a svakom potegu
se dodeljuje promenljiva. Zavisnost po podacima je određena smerom potega. Na slici 5.2(a)
prikazan je jedan primer osnovnog-bloka koga čine četiri iskaza, a na slici 5.2(b) odgovarajući
DFG.

Slika 5.2: a) Behavior specifikacija; b) odgovarajući DFG

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

5.3 Osnovni koncept planiranja izvršenja

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).

5.4 Algoritmi o planiranju izvršenja

Algoritmi za planiranje izvršenja se mogu podeliti na sledeće dve grupe:


a) transformacioni i iterativno/konstruktivni,
b) InLP (integer linear programming) planiranje izivršenja koje se zasnivaju na matematičkoj
formulaciji
Kod transformacionih algoritama za planiranje izvršenja startuje se od inicijalnog plana-
izvršenja i pokušava se da se obave transformacije koje zadržavaju behavior, ali teže da poboljšaju
plan izvršenja. Tako na primer, polazeći od osnovnog plana-izvršenja teži se da se maksimalno
paralelizuje sekvencijalni plan, a da se pri tome zadovolje kriterijumi koji se odnose na ograničenje
resursa. Kod iterativno/konstruktivnog pristupa obavlja se planiranje jedne operacije po ciklusu sve
dok se ne isplaniraju sve operacije. Važni algoritmi iz ove klase su:
• što-je-moguće-pre (as-soon-as-possible: ASAP schedlling)
• što-je-moguće-kasnije (as-late-as-possible: ALAP scheduling)
• list scheduling (LS)
• critical path scheduling (CPS)
• list scheduling (LS)
• force directed schedlling (FDS)
• path based scheduling (PBS)

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

Slika 5.6: Planiranje-izvršenje DFG-ova od strane ASAP i ALAP algoritama, respektivno

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.

5.4.2 List scheduling (LS)


LS algoritam premošćava problem ASAP algoritma na taj način što kreira listu operacija
uređenih po nekoj funkciji prioriteta. Umesto da bira operacije za izvršenje što je moguće ranije, LS
algoritam planira izvršenje operacija bazirano na prioritetu. Na osnovu ovog kriterijuma vreme
izvršenja operacije sa najnižim prioritetom se može odložiti ako postoje ograničena sa aspekta
korišćenja resursa. Funkcije prioriteta mogu biti mobilnost, urgentnost (minimalan broj ciklusa od
te operacije do izlaza), i druge.
Na slici 5.7(a) prikazan je DFG kod koga je u zagradama naznačen dodeljeni prioritet svakoj
operaciji. U konkretnom slučaju prioritet operacije o se definiše kao broj operacija između o i
kraja bloka u kome je locirana o . Usvaja se da su ograničenja sa aspekta resursa jedan sabirač i
jedan množač.

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.

ciklus lista spremnosti lista prioriteta lista plana-izvršenja

1 ( +1, * 1, +2, *2) (* 1, + 2, * 2, + 1) *1, +2

2 (+1, *2, +3) (+1, +3 , *2) *2, +3

3 (+1, *3) (+1, *3) *3, +1

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č

5.4.3 Planiranje-izvršenja po kritičnom putu (CPS)


Algoritam CPS planira prvo da izvrši operacije koje se nalaze na kritičnom putu. Za ostale
operacije, dopušta se sloboda, slično konceptu kako se određuje mobilnost. Sloboda operacije se
određuje kao razlika između vremena kada su ulazne vrednosti potrebne toj operaciji i vremena
kada je rezultat te operacije potreban, umanjeno za propagaciono kašnjenje koje unosi hardver za
potrebe procesiranja. Operacija čiji je iznos slobode najmanji selekture se kao prva od planera radi
izvršenja.
Jedan tipičan CPS algoritam čine sledeći koraci:
• korak-1: za zadati DFG, ocenjuju se vremenska ograničenja i svakoj operaciji se dodeljuje
vrednost kašnjenja
• korak-2: određuje se kritični put kao i broj taktnih ciklusa potreban za izvršenje uzimajući u
obzir vremenska ogbraničenja. Za slučaj da se vremenska ograničenja ne mogu zadovoljiti vrati se
na korak-1 i postavi nova ograničenja
• korak-3: operacijama na kritičnom putu dodeli hardverske module
• korak-4: ako ne postoji više operacija koje treba planirati radi izvršenja, završiti algoritam
• korak-5: izračunati/ažurirati slobode za sve operacije koje nisu na kritičnom putu
• korak 6: planirati-izvršenje operacije sa najmanjom slobodom
- ako je moguće, modul koji je spreman za dodelu je deljiv od strane ove operacije. Preći
na korak-4.
- Inače, dodaj drugi hardverski modul i preći na korak-4 ili dodaj još jedan ciklus i preći
na korak-2.

5.4.4 Planiranje tipa usmeravanje-na-silu


Planiranje tipa usmeravanje-na-silu (force directed scheduling) je globalni algoritam
balansiranog opterećenja koji pokušava da slučajno distribuira operacije u toku ciklusa, tako da
resursi budu jako iskorišćeni. Kod ove šeme za svaku operaciju se izvodi distribucioni graf
93
(distribution graph) koji ukazuje na konkurentnost operacija. Zatim se izračunava "sila" (force),
mera koja pokazuje na distribuiranost konkurentnosti, za svaku od operacija pa se ta "sila" koristi
za dodeljivanje operacije onom ciklusu kod koga je iskorišćenost resursa mala.
Distribucioni graf se koristi za izračunavanje "sila" operacija istog tipa koje mogu deliti
(koristiti) funkcionalni modul. Distribucioni graf za svaki ciklus prikazuje sa kolikim brojem istih
operacija je taj ciklus opterećen, pri čemu za sve operacije postoji jednaka verovatnoća da budu
planirane za izvršenje u toku tog mrtvog-perioda. Ako je mrtvi-period operacije k ciklusa, tada se u
svakom ciklusu mrtvog-perioda distribucionog grafa toj operaciji dodaje 1/k. Na slici 5.9 prikazan
je distgribucioni graf operacije sabiranja za DFG sa slike 2b). Usvojićemo da vremenska
ograničenja iznose 3 ciklusa. S obzirom da se operacije + 1 i + 3 moraju da isplaniraju u ciklusima
1 i 3, respektivno, tada se 1 dodeljuje ciklusima 1 i 3 distribucionog grafa, respektivno. Za operaciju
+ 2 , s obzirom da se može planirati bilo za ciklus 1 ili 2, tada se svakom ciklusu dodaje po 1 2 .

0 1 2

ciklus 1 +1 +2

ciklus 2 +2

ciklus 3 +3

Slika 5.9: Graf distribucije za operacije sabiranja kod DFG-a sa slike 2

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.

5.4.5 Planiranje zasnovano na izboru puta


Planiranje zasnovano na izboru puta (path based scheduling), putem korišćenja uslovnih
grananja za sve puteve izvršenja u opisu dizajna, minimizira broj taktnih ciklusa. Umesto da koristi
DFG, da bi odredio plan izvršenja, planiranje bazirano na izboru puta koristi graf toka upravljanja
(control flow graph-CFG) koji se dobija od opisa dizajna. Kod DFG-a, čvorovi predstavljaju
94
operacije koje treba isplanirati, dok potezi ukazuju na relacije prethođenja između čvorova. To
znači poteg od čvora i na j ukazuje da se operacija j može izvršiti tek nakon što se prethodno izvrši
operacija i. Ako neki čvor ima više od jednog naslednika za takav čvor kažemo da predstavlja
uslovno-grananje (conditional branch). Na slici 5.10 dat je primer DFG-a kod koga čvor 2
predstavlja uslovno grananje sa signalom branch kao predikat (uslov) koji se testira. Čvorovi 3, 4, 5
i 6 se izvršavaju ako je uslov True, inače, kada je uslov False, izvršavaju se čvorovi 10 i 11.
Povratni poteg od čvora 9 ka čvoru 1, koji ukazuje na iterativno izvršenje, se raskida kako bi se
CFG, za potrebe planiranja zasnovano na izboru puta, učinio acikličnim. Uočimo da aktuelne
operacije koje su predstavljene od strane čvorova nisu od interesa za sprovedeno objašnjenje, one
eksplicitno i nisu prikazane na slici 5.10.
1

2
branch branch

3 10
ogranicenja

4 11
upravljacki
korak

Slika 5.10: Primer CFG-a kod koga su ograničenja predstavljena intervalima.

Napomena: Uočimo da je povratni poteg prekinut kako bi se za potrebe algoritma planiranja


zasnovana na izboru puta CFG učinio acikličnim.

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

Sada, u okviru preseka intervala u "clique"-u, nazvan preklapajući pod-interval, postavlja se


upravljački korak koji mora da zadovolji odgovarajuća ograničenja. Pojam "cut" se koristi da označi
jedan takav pod-interval koji se pridružuje svakom "clique"-u. Tako na primer presek "cut 2"
pridružen "clique"-u koji sadrži C4 i C5 predstavlja podinterval od čvorova 5 ka 7 za CFG.
Korak 4: Obavlja se preklapanje svih puteva sa ciljem da se minimizira ukupan broj stanja
koristeći tehniku "clique partitioning"
96
Na slici 5.12(b), kreiran je jedinstveni interval graf za sve "cut"-ove sa slike 5.12(a). Sada
iznova, za interval graf, čvor koji odgovara preseku i poteg koji ukazuje na odgovarajuće preseke se
preklapaju. Nakon toga, minimalni "clique partitioning" interval grafa daje minimalni skup preseka,
koji se na slici 5.12 označava sa fcs, a ispunjava plan izivršenja za sve puteve, što znači da postoji
minimalni ukupni broj upravljačkih stanja. Na sllici 5.12(c) prikazan je konačni plan izvršenja za
CFG sa slike 5.10 koji ima minimalan broj upravljačkih stanja.
Korak 5: Koristeći konvencionalna sredstva za logičku sintezu generiše se upravljačka logika
za rezultujući plan 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.

5.5 Vreme života promenljive

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.

Slika 5.13: a) Primer SDFG-a; b) odgovarajuća tabela-života

98
5.6 Dodela resursa

5.6.1 Osnovni koncept


Da bi generisali RTA (register-transfer architecture) polazeći pri tome od zadatog SDFG-a
neophodno je obaviti dodelu resursa, tj raspodeliti hardverske elemente, na sledeći način: a) registre
treba koristiti za čuvanje promenljivih; b) module (ili operatore) treba upotrebljavati za izivršenje
operacija; i c) veze treba koristiti za međusobno povezivanje modula i registra kao i prenos signala.
Dodela (alokacija) resursa, se označava sa R , i može se smatrati kao particija {R1 , R2 , ... , Rr }
od V I ∪ VO ∪ VM , tako da za bilo koje dve promenljive vi i v j u Rk , 1 ≤ k ≤ r , odgovarajuća
vremena-života se ne preklapaju, pri čemu V I , VO i VM predstavljaju skupove primarnih ulaza,
primarnih izlaza, privremeno promenljivih, respektivno. Moguće je takođe definisati i vreme-
kreiranja registra Ri , koje se označava kao Ri . birth , kao i vreme-ukidanja, koje se označava kao
Ri . death , kao najraniji i najkasniji trenutak promenljive koji je dodeljen registru Ri , respektivno.
Pored toga, register se naziva ulazni (izlazni) registar ako se registru dodeljuje primarni ulaz (izlaz).
Kada je registar istovremeno i ulazni i izlazni, isti se naziva IO regista.
Na sličan način, alokacija modula (ili funkcionalne jedinice), se označava sa M , i može se
smatrati kao particija {M 1 , M 2 , ... , M m } od o , što odgovara skupu svih operacija u behavioral
specifikaciji, tako da za bilo koje dve operacije oi i o j iz M k , 1 ≤ k ≤ m , između odgovarajućih
vremena izvršenja ne dolazi do konflikta. Radi pojednostavljenja, takođe se usvaja, da se samo
jedan regularni bibliotečni modul koristi za alokaciju modula. To znači da svaki modul iz biblioteke
može da obavi u suštini samo jednu operaciju.
Na osnovu SDFG-a, za potrebe alokacije modula, izvodi se neusmereni graf za alokaciju
modula (MAG-module allocation graph), kod koga svaki čvor odgovara operaciji SDFG-a, a svaki
poteg deljivoj (zajedničkoj) kompatibilnosti tog istog modula između dva čvora koje taj poteg
povezuje. Stepen (iznos) deobe kompatibilnosti između operacija istog modula se može zatim
rasčlanjivati ako se svakom potegu dodele različite vrednosti koje odgovaraju preferenci-deobe-
modula (module shering preference-MSP), na osnovu ciljeva koje želimo ostvariti, a to su
minimizacija površine čipa, poboljšanje performansi, testabilnost, itd. Na osnovu prethodnog, MAG
kod koga postoji dodela potega na principu MSP-a postaje ponderisani graf za dodelu modula.
Shodno tome dodela modula se dobija određivanjem skupova čvorova u MAG-u pri čemu su svi
članovi međusobno povezani, a suma ponderisanih potega je najveća.
Jedan tipičan primer ponderisanog MAG-a izveden na osnovu SDFG-a je prikazan na slici
5.14. Predpostavimo da nam stoje na raspolaganju samo dva sabirača, a na osnovu razmatranja koja
se tiču uštede čipa MSP između + 1 i + 2 iznosi –1, a između + 1 i + 3 iznosi 3. S obzirom da je
preferencirana deoba između + 1 i + 3 veća nego između + 1 i + 2 , jedan će sabirač biti deljiv
između + 1 i + 3 , a drugi biće namenjen samo za potrebe + 2 .

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)

Slika 5.15 a) SDFG; b) jedna moguća arhitektura; c) druga moguća arhitektura

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.

6.2 Osnovni metodi za particiju

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.

6.2.1 Formulacija problema


Da bi prikazali kako se specifični particioni problemi mogu formulisati kao graf particioni
problemi, razmotrićemo particiju logičkog kola na blokove. Na slici 6.1 (a) i (b) prikazana je
struktura dizajna i njena odgovarajuća graf reprezentacija. Svaki čvor u grafu predstavlja fizičku
komponentu, kakav je gejt (logičko kombinaciono kolo), flip-flop, registar ili sabirač, dok svaki
poteg predstavlja fizičku vezu između dve komponente. Multirateralne sprege (nets) između
nekoliko komponenata razlažu se na nekoliko dvo-terminalnih sprega. Tako na primer, sprega ni sa
slike 6.1 (a) se predstavlja pomoću dva potega e24 i e25 u grafu na slici 6.1 (b).
Nakon particije, svaki podgraf se predstavlja kao objedinjeni-gejt (gate cluster), modul, čip, ili
podsistem. Potezi koji prelaze liniju prelaza (preseka) između dva subgrafa predstavljaju spoljne
veze između dva fizička pakovanja. Glavni cilj particije je da dekomponuje graf na skup
podgrafova koji zadovoljavaju data ograničenja, kakva su recimo obim podgrafa (subgraph). Pri
tome, treba minimizirati ciljnu funkciju kakav je broj potega koji povezuju dva podgrafa. Na slici

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:

(a) konstruktivni metodi; i


(b) metodi iterativnog poboljšanja.

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).

6.2.2 Slučajan izbor


Slučajan izbor (random selection) je najjednostavniji konstruktivnoi metod koji se često koristi
za generisanje inicijalne particije kod algoritma iterativnog-poboljšanja. Algoritam u jednom
trenutku odabira čvorove i smešta ih u grupe (cluters) fiksnog obima sve dok se ne dostigne željeni
obim. Procedura se ponavlja sve dok se svi čvorovi ne razmeste. Ovaj algoritam je brz i lak za
implementaciju, ali često generiše loše rezultate.

6.2.3 Rast grupe


Algoritmi tipa rast-grupe (cluster growth) startuju od ne-particionisanog skupa objekata i
smeštaju objekte u određeni broj grupa u saglasnosti sa nekim merilom o srodnosti. Algoritam rast-
grupe čine sledeća tri zadatka: (1) seed-selekcija (odabir semena); (2) izbor nerazmeštenog čvora; i
(3) smeštaj čvora.
Prvi korak algoritma rasta-grupe bira seed-čvorove za svaku grupu (cluster) sa ciljem da se
odrede smernice u procesu objedinjavanja (clustering process). Seed-čvorovi se mogu specificirati
od strane projektanata, odabirati proizvoljno, ili selektovati na osnovu atributa kakvi su obim i broj
potega za povezivanje.
U drugom koraku, algoritam određuje redosled grupisanja neraspoređenih čvorova. Raspored je
određen od strane neke mere srodnosti, kakva je broj veza između neraspoređenih i raspoređenih
čvorova.
Konačno, u trećem koraku,algoritam dodaje neraspoređeni čvor sa najvećom vrednošću
odgovarajućoj grupi. Ovaj proces se ponavlja sve dok se ne razmeste svi čvorovi u grupe.

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 6-1: Rast-grupe

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.

6.2.4 Hijerarhijsko grupisanje

Kod algoritma za hijerarhijsko grupisanje, skup objekata se grupiše u saglasnosti sa nekom


merom srodnosti. Prvo se grupišu dva najsrodnija objekta koja se nakon toga smatraju kao
jedinstveni objekat za potrebe daljeg grupisanja. Proces grupisanja produžava grupisanjem dva
posebna objekta, ili objekata / grupe sa drugom grupom (cluster) u toku svake iteracije. Rad
algoritma se zaustavlja dok se ne generiše jedinstvena grupa i formira hijerarhijsko stablo grupe. Na
ovaj način bilo koja linija preseka kroz stablo ukazuje na skup podstabala ili grupa koje treba odseći
od stabla.
Kao primer, razmotrimo pet čvorova {v1 ,v 2 ,v3 , v 4 ,v5 } kako je to prikazano na slici 3. Skup od
pet potega {e12 ,e13 ,e23 , e24 , e25 } ukazuje na meru ne-nulte srodnosti između čvorova. Vrednosti
srodnosti su prikazane kao potezi sa ponderisanom težinom, i kao matrica (vidi sliku 6.3(a)). Tako
na primer, matrica prikazuje maksimalnu srodnost od 6 između potega v 2 i v 4 . Zbog ovoga čvorovi
v 2 i v 4 spajaju se prvo u čvor v(24 ) . Mere srodnosti se zatim ponovo izračunavaju za novi skup
čvorova, kako je to prikazano na slici 6.3 (b). Pri tome čvorovi v(24 ) i v1 se spajaju, nakon toga,
kako je prikazano na slici 6.3 (b). Naglasimo pri ovome da najsrodniji rezultat (score) se zasniva na
maksimalnoj težini potega između dva čvora ili grupa. To znači da najsrodnija mera između potega
106
v 3 i grupe v(24 ) je MAX (4 ,1) = 4 , kako je to prikazano na slici 6.3 (c). Konačno, jedinstvena grupa
se formira spajanjem čvorova v 5 i v(2413 ) (vidi sliku 6.3 (d)). Konačna grupa predstavlja grupno
stablo. Bilo koja linija preseka koja prolazi kroz grupno-stablo definiše particiju početnog grafa.
Linija preseka blizu listova stabla generiše mnogo grupa, dok linija preseka bliska korenu stabla
generiše nekoliko grupa sa dosta različitim čvorovima.
v1 v2 v3 v4 v5
v1 v1 - - - - -
5
4
v2 v2 5 - - - -
1 v3 v(24)
v3 4 1 - - -
6
3
v4 0 6 0 - -
v5 0
v4 v5 0 3 0 -
v1 v2 v4 v3 v5

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

Slika 6.3: Formiranje grupnog-stabla

Neka je G = (V , E ) graf kod koga je V skup od n čvorova, a E skup potega koji se


karakterišu ne-nultom srodnošću dva čvora. Za svaki ei , j ∈ E , ci , j predstavlja mera srodnosti čvora
vi i v j . Neka N = {nk 1 ≤ k ≤ n} predstavlja skup neterminalnih čvorova u grupnom stablu.

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.

Algoritam 6-2: Hijerarhijsko grupisanje

for all do ; endfor


/*Compute closeness easure*/
for all do = CLOSENESS (); endfor
/*Construct the cluster tree*/
for k = 1 to n-1 do
MAXCLOSE(C);
V = V ;
V = V - ;
LSucc(nk) = ;
RSucc(nk) = ;
L(nk) = MAX (L(),L()) + 1;
/*Compute closeness measure for nk*/
for all do
;
;
endfor
endfor

Varijacija u odnosu na metod hijerarhiskog grupisanja je metod više-stepenog grupisanja


(multi-stage clustering) koji se koristi kod arhitekturnih particija. Ovaj algoritam obavlja grupisanje
u nekoliko stepena (koraka). Svaki stepen grupisanja koristi različite kriterijume o srodnosti, kave
su sličnost operatora, srodnost povezivanja, ili konkurentnost operacija. Stepeni grupisanja se
primenjuju sukcesivno, tako da svaki stepen koristi grupe (clusters) generisane od strane
prethodnog stepena.
Tako na primer na slici 6.4 (a) i (b) prikazan je graf i njegovo odgovarajuće stablo grupisanja
zasnovano na Criterion_A i Criterion_B, respektivno. Da bi se uzeli u obzir različiti kriterijumi,
algoritam za više-stepeno grupisanje prvo implementira proceduru grupisanja zasnovanu na
kriterijumu najvišeg prioriteta, zatim na drugom po redosledu kriterijumu najvišeg prioriteta, i td.
Na primer, usvojimo da Criterion_A ima veći prioritet od Criterion_B, pa će shodno tome
algoritam prvo generisati grupno-stablo na osnovu Criterion_A. Algoritam zatim preseca
rezultantno grupno-stablo na prvom nivou generišući pri tome četiri nove grupe, { f , c} , {a , e} ,
{d }, i {b} . Nakon ovoga algoritam grupiše ove grupe (clusters) na osnovu Criterion_B (vidi sliku 4
(c). Ali ako je Criterion_B većeg prioriteta od Criterion_A, tada algoritam može da generiše
grupno-stablo zasnovano na Criterion_B (vidi sliku 6.4 (b)). Algoritam zatim preseca rezultantno
grupno-stablo na prvom nivou i generiše grupe {c , e} , { f }, {b} i {a , d } . Nakon toga algoritam
grupiše ove grupe na osnovu Criterion_A (vidi sliku 6.4 (d)). Mi, možemo takođe da
108
implementiramo nad grupama na različitim nivoima grupnog-stabla. Na primer, slika 6.4 (e)
prikazuje rezultat presecanja grupnog-stabla na osnovu Criterion_A na prvom i drugom nivou, i
nakon toga nastavljajući sa Criterion_B.

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.

Glavna prednost više-stepenog algoritma grupisanja je ta što se kriterijum o grupisanju može


razbiti na nekoliko stepena. Kada se grupisanje obavlja u jedan-nivo (single stage), veoma je teško
odrediti korektno težine za različite kriterijume kod različitih stilova projektovanja. Ipak, više-
stepeno grupisanje pruža mogušnost korišćenja hijerarhije kriterijuma koji se primenjuju po
redosledu kako se zadovoljvaju različita ograničenja. Na primer, ako iskoristimo metod jedno-
stepenog grupisanja da bi grupisali skup čvorova na bazi merila o srodnosti-stabla (tj. funkcionalnoj
sličnosti, srodna povezljivost, i konkurentnost operacija) istovremeno, mi mora da odredimo
korektne težine za svaku meru srodnosti. Ova metoda zahteva dosta proba i testiranja radi
otkrivanja grešaka ako želimo da dobijemo dobar rezultat. Sa druge strane, ako koristimo metod
više-stepenog grupisanja, mi možemo primeniti različite mere srodnosti na različitim nivoima
grupne (cluster) granularnosti.

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.

Slika 6.5: Dvostruka particija

Posmatrajmo particiju grafa G = (V , E ) sa 2n čvorova u dva podgrafa G1 i G2 sa po n čvorova


svaki. Cenu svakog potega ei , j ∈ E označimo sa ci , j . Za svaki čvor vi ∈ V1 definišimo spoljnu cenu
kao

EC i = ∑c
vk ∈V2
i ,k (6.1)

i internu cenu kao

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:

gain (vi , v j ) = Di + D j − 2 ci , j (6.3)

gde su Di i D j definisani jednačinama (6.1) i (6.2).

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

Algoritam za particiju sa minimalnim presekom (Algoritam_3) međusobno razmenjuje


favorizovanu grupu čvorova umesto da u jednom trenutku međusobno-razmeni jedan par čvorova.
Algoritam prvo proizvoljno podeli čvorove na dve grupe iste veličine. Nakon toga određuje spoljne
cene, interne cene, razlike između ovih cena za sve čvorove. Algoritam određuje par čvorova, po
jedan iz svake grupe, kojim se generiše maksimalna dobit putem međusobne-razmene. On zapamti
dobit, preudesi cenu i zabrani izabrani par da bude ponovo razmatran za međusobnu-razmenu. Ova
procedura produžava sve dok se svi n čvorova iz svakog podskupa ne upare i ne generiše niz dobiti
gain 1, gain 2 ,… , gain n . Ukupna dobit međusobnom razmenom prvih k-parova čvorova, gde je
1 ≤ k ≤ n se izračunava kao

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.

6.2.6 Simulirano očvršćavanje


Veliki broj algoritama koji imaju za cilj poboljšanje koriste gramzivu (greedy) strategiju
upravljanja kod koje se par čvorova međusobno-razmene samo ako razmena rezultira poboljšanju
particije. Ovakva gramziva strategija može da dá rešenja tipa lokalni-optimum. Da bi se izbeglo
zaglavljivanje kod lokalnog optimuma potreban je neki mehanizam kojim bi se izbegao lokalni
optimum. Algoritam minimalnog-preseka izbegava lokalni minimum prihvatajući niz uzastopnih
izmena kod kojih neka od izmena negativnu dobit, a to traje onoliko dugo sve dok je ukupna
akumulirana dobit cele sekvence pozitivna. Algoritam simuliranog očvršćavanja se zasniva na
drugačijoj strategiji upravljanja koja izbegava lokalno minimalna rešenja. Uočeno je da je
kombinatorni optimizacioni proces analogan procesu očvrščavanja u prirodi, kod koga se materijal
topi tako da se njegovo minimalno energetsko stanje određuje sporim smanjivanjem temperature.
Ista ideja se može primeniti na kombinatornu optimizaciju kako bi se odstranilo lokalno minimalno
rešenje, a išlo ka globalno minimalnom rešenju.
Algoritam za simulirano očvrščavanje startuje proizvoljnom inicijalnom particijom. Tada
algoritam generiše razmeštaje proizvoljno. Razmeštaj se definiše kao relokacija objekta sa jedne
particije na drugu. Kod svakog razmeštaja, algoritam izračunava novu cenu i proverava da li nova
cena zadovoljava prihvatljivi kriterijum zasnovan na temperaturi T. Naglasimo da je prihvatanje
razmeštaja proporcionalno tekuće simuliranoj temperaturi. Kako se simulirana temperatura snižava,
verovatnoća da se razmeštaj prihvati se smanjuje.
Neka procedura GENERATE generiše novu particiju ( Snew ) na osnovu stare particije ( Sold )
nakon razmeštaja čvora. Funkcija F predstavlja strategiju prihvatanja i definiše se kao

Δ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

Tnew = α Told (6.6)


Za pojedinu temperaturu očvršćavanja, algoritam pokušava da poboljša rešenje sve dok se ne
zadovolji inner loop criterion. Ovaj kriterijum je zadovoljen kada se ne poboljšava za određeni broj
iteracija. Temperatura očvršćavanja se ažurira, a algoritam pokušava da poboljša rešenje za novu
temperaturu očvršćavanja sve dok se kriterijum o zaustavljanja ne zadovolji. Kriterijum o
zaustavljanju je zadovoljen kada je T aproksimativno 0. Algoritam simuliranog očvršćavanja je
oblika.

Algoritam 6-4: Simulirano očvršćavanje

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

Teoretska ispitivanja su pokazala da algoritam simuliranog očvršćavanja može da izbegne


lokalni minimum i odredi globalno optimalno rešenje ako stohastički proces dostigne ravnotežno
stanje pri svakoj temeperaturi, i ako se temperatura veoma sporo smanjuje. Oba prethodna uslova
ukazuju da se beskonačan broj iteracija mora obaviti u svakom temeperaturnom koraku. S obzirom
da je nepraktično odrediti optimalno rešenje obavljanjem beskonačnog broja iteracija, predloženo je
nekoliko heuristika za upravljanje procesom simuliranog-očvršćavanja. Ove heuristike određuju
kada će se ravnotežno stanje dostići i kako da snizimo temperaturu. U opštem slučaju, simulirano
očvršćavanje generiše veoma dobre rezultate, ali ima nedostatak koji se odnosi na dugo vreme
izračunavanja.

6.3 Particija kod HLS-a

Particija se može primeniti na CDFG radi planiranja izvršenja (scheduling), alokacije i


selekcije jedinice, ili kod opisa sistema kada se vrši njegova dekompozicija na čipove i module.
114
Algoritmi za planiranje izvršenja dodeljuju operacije u CDFG-u da bi upravljali koracima pri
čemu teži da se sačuvaju upravljačke zavisnosti kao i zavisnosti po podacima između operacija.
Planiranje izvršenja operacija u upravljačkim koracima se može sagledati kao particija operacija na
skup grupa kod kojih se operacije u istoj grupi izvršavaju u istom uptravljačkom koraku. Na sličan
način, alokacija se može formulisati kao opšti graf particioni problem. Kod alokacije, svaka grupa
operacija predstavlja pojedini resurs koji je deljiv od strane svih operacija dodeljenih toj grupi. Na
primer, behavioral opis može da koristi operaciju add 100 puta, dok odgovarajući realni dizajn
može da ima samo dva sabirača. Zbog ovoga sve operacije add se moraju podeliti u dve grupe, pri
čemu se operacije u svakoj grupi izvršavaju na jednom sabiraču.
Najčešće algoritmi za particiju kada je reč o HLS-u se primenjuje kod selekcije-jedinice (unit
selection), koja definiše da se funkcionalne jedinice koriste za planiranje izvršenja i povezivanja
(binding). Operacije kod CDFG-a su podeljene (obavljena je particija) na grupe u saglasnosti sa
njihovom funkcionalnom sličnošću, pri čemu svaka grupa definiše funkcionalnu jedinicu koja
izvršava sve operacije u grupi. Selektovane funkcionalne jedinice se koriste da se dobije prcena o
površini i kvalitetu performansnih mera koje se koriste za izbor algoritma planiranja i algoritma
povezivanja.
Druga aplikacija particije kod HLS-a ogleda se u dekompoziciji behavioral opisa na skup
međusobno povezanih procesa. Ovi procesi se mogu preslikati na FSMD ili na skup FSMD-ova koji
međusobno komuniciraju. Ova particija je slična procesima planiranja izvršenja na različitim
procesorima kod ultiprocesorskih sistema. Algoritmi za particiju grupišu ove procese na grupe tako
da se svaka grupa izvršava sekvencijalno na jednom od procesora. Glavni cilj ovog grupisanja je da
se cela grupa (cluster) izvrši od strane jedne upravljačke jedinice, a da se pri tome zadovolje
projektantska ograničenja koja se tiču obima čipa, broja pinova, taktne frekvencije, sistemsko
kašnjenje, i poptrošnja energije. Ovakva particija može da zahteva modifikaciju protokola-pristupa
ako postoji ekstra kašnjenje od spoljne komunikacije. Na sličan način, ograničenje koja se javlja
zbog broja pinova može da zahteva za uvođenjem multipeksiranje u komunikacionim kanalima
između različitih komponenata. Zbog svega pomenutog particija se mora konkurentno obaviti sa
sintezoim interfejsa.
U daljem tekstu opisaćemo particiju kod HLS-a koja se odnosi na selekciju modula i particiju
na nivou čipa.

6.3.1 Selekcija-jedinica radi planiranja izvršenja i povezivanja


Jedan od pristupa za selekciju jedinice zasniva se na hijerarhijskom grupisanju. Ovaj algoritam
deli operacije CDFG-a na grupe na osnovu njihove sličnosti i konkurentnosti. U opoštem slučaju,
sličnost dva objekta se meri brojem njihovih zajedničkih osobina. Ako su A1 i A2 skupovi osobina
dva objekta, tada se procena sličnosti ova dva objekta može izmeriti kao A1 ∩ A2 A1 ∪ A2 , što
predstavlja odnos broja zajedničkih osobina u odnosu na broj svih osobina ova dva objekta. Neka
sličnost se može koristiti za definisanje funkcionalnosti i zajedničke bliskosti dve operacije u
CDFG-u. Neka f cos t (o1 ,o2 ,… , on ) predstavlja cenu funkcionalne jedinice koja izvršava operacije
o1 ,o2 ,… ,on . Funkcionalna sličnost ili funkcionalna bliskost dve operacije oi i o j se definiše kao

f cos t (oi ) + f cos t (o j ) − f cos t (oi , o j )


fp (oi , o j ) = (6.7)
f cos t (oi , o j )

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 .

Potencijalna konkurentnost ili paralelizam dve operacije oi i o j se definiše kao

⎧1 ako se oi i o j se mogu parale ln o izvršavati


ppar (oi , o j ) = ⎨ (6.9)
⎩ 0 u osta lim slučlučaje a

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

dist (oi , o j ) = −(α 1 ∗ fp (oi , o j )) − (α 2 ∗ Cp (oi , o j )) + (α 3 ∗ ppar (oi , o j )) (6.10)

gde su α 1 ,α 2 iα 3 težine za svaku meru.


Na primer, razmotrimo rastojanje između o1 i o2 na slici 6.8. Pošto su obe o1 i o 2 operacije
sabiranja, potreban nam je najmanje jedan sabirač za izvršenje obe operacije. Neka Cadd
predstavlja površinu sabirača. To znači da f cos t (o1 ) = f cos t (o 2 ) = f cos t (o1 , o2 ) = Cadd i
fp (o1 , o 2 ) je 1. Ukupan broj veza za o1 i o2 je 6, a broj zajedničkih veza između o1 i o 2 je jedan.
Shodno prethodnom Cp (o1 , o 2 ) je 1 6 . Pored toga, ppar (o1 , o 2 ) je jedan jer o1 i o2 se mogu
paralelno izvršavati. Shodno tome rastojanje između o1 i o 2 se izračunava kao
dist (o1 , o2 ) = α 3 − α 1 − (1 6)α 2 .
Kao drugi primer razmotrimo rastojanje između o1 i o3 . S obzirom da nam je u najmanju ruku
potreban jedan sabirač i jedan množač da bi izvršili o1 i o3 bilo sekvencijalno, bilo paralelno.
Ukupan broj veza za o1 i o3 je 6, a broj zajedničkih veza između o1 i o3 je jedan jer je izlaz o1
ulaz u o3 . Zbog toga, Cp (o1 ,o3 ) je 1 6 . Pored toga, ppar (o1 ,o3 ) je nula, a rastojanje
dist (o1 ,o3 ) = (1 6)α 2 .

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.

6.3.2 Čip particionisanje


Particionisanje na čip nivou se može obaviti na nivou CDFG-a ili na behavioral nivou. Prva
dva pristupa opisana u ovoj sekciji odnose se na particiju CDFG-a dok se treći pristup odnosi na
particiju behavioral opisa.
Jedan od pristupa za multičip particiju se koristi kod CHOP-a. U ovom slučaju korisnik prvo
ručno dekomponuje čvorove DFG-a na particije. Prediktor zatim procenjuje površinu i kašnjenje
svake particije za različite implementacije. Konačno, iterativnim heurističkim pristupom bira se
prihvatljva implementacija particije koja zadovoljava date performanse i fizička ograničenja.
Gupta i De Micheli predložili su hipergraf particionu tehniku koja se koristi za sintezu multičip
sistema polazeći od behavioral opisa. Njihov pristup polazi od toga da se svaki čvor CDFG-a
implementira kao FSM ili kombinacioni blok. Ova pretpostavka dozvoljava direktno preslikavanje
CDFG-a u hipergraf. Kod hipergrafa, svaki hiperčvor predstavlja funkcionalnu jedinicu ili
kombinaciono kolo. Operacije bulovog tipa koje su dodeljene istom hiperčvoru dele isti hardver.
Svaki hiperpoteg predstavlja vezu između dva hiperčvora. Algoritmi tipa minimalni presek i
simulirano očvršćavanje se koriste za dekompoziciju hipergrafa na skup subhipergrafova tako da
sva ograničenja, kakva su površina-cena za svaki subhipergraf, broj pinova za svaki subhipergraf
kao i cena kašnjenja između operacija predstavljaju kriterijume koji moraju da se zadovolje.
Jedan različiti pristup particije je opisan u SpecSyn. U ovom slučaju behavioral opis se
posmatra kao skup ponašanja, kakvi su procesi, procedure, i druga kodna grupisanja uslovljena
jezikom, kao i skup memorijskih elemenata, uključujući registre, memorije, magacine, i redove
čekanja. Ovo ponašanje i memorijski elementi se zatim grupišu u jedan čip. Ovaj pristup koji
grupiše ponašanja u suprotnosti je sa pristupom koji konvertuje opis u CDFG, a zatim grupiše
podatke i upravljačke čvorove; što znači, razlika između CDFG-a i behavioral particije se ogleda u
granulaciji particionisanih objekata. Kod CDFG particije, objekti su čvorovi tipa podaci ili
119
upravljanje, dok kod behavioral particije objekti su programske (kodne) grupe koje sadrže iskaze
dodele, funkcije, procedure i procese. Ovi behavioral objekti se definišu od strane jezika i
omogućavaju da se sistem opiše kao hijerarhija konkurentnih i sekvencijalnih ponašanja u koje se
ulazi i izlazi nakon pojave događaja.
Svako ponašanje u opisu preslikava u čvor hipergrafa, za svako ponašanje se usvaja da se
implementira kao jedinstveni FSMD. Metrike o površini i performansama za svako ponašanje
(behavioral) se procenjuju koristeći FSMD implementaciju sa jednom funkcionalnom jedinicom od
svakog tipa. Veze koje su potrebne za komunikaciju između različitih ponašanja se preslikavaju u
hiperpotege. Broj žica za svaku vezu se procenjuje na osnovu deklaracije portova i protokola koji se
koriste za komunikaciju, kao i tip podataka koji se prenosi. Hipergraf model koji odgovara opisu se
zatim particioniše ili deli kako bi zadovoljio fizička i performansna ograničenja. Fizička
ograničenja, kakva su površina čipa ili broj pinova pakovanja, predstavljaju primerni cilj, tako da
algoritmi za particiju optimizuju deobu (zajedničko korišćenje) komponenata po cenu dužeg
vremena izvršenja koje je uslovljeno prenosom podataka i upravljačkih signala ka jedinstvenoj
komponenti (jednom FSMD-u) koja obavlja željenu funkciju. Kada su performansna ograničenja
primarni cilj, algoritmi za particiju minimiziraju komunikaciju između različitih ponašanja.
Komunikacija se minimizira korišćenjem jedinstvenog FSMD-a. To znači, da cilj performansne
optimizacije se sastoji u klasterisanju nekonkurntnih ponašanja i njihovom preslikavanju u što
manji broj FSMD-ova koji međusobno komuniciraju preko deljive memorije.
Nakon što je dobijeno zadovoljavajuće particionisanje, zadnji korak se sastoji u kreiranju
prefinjenijeg opisa koji se odnosi na odluke particionisanja. Prefinjeni opis čini skup međusobno
povezanih čipova, pri čemu svaki čine behavioral i memorijski element.
Kao primer, razmatraćemo behavioral opis telefonske sekretarice prikazane na slici 6.11 a).
Mašina se sastoji od hijerarhijskog skupa behaviorala koji se odazivaju na telefonske pozive, pri
čemu mašina odgovara na svaki poziv, daje obaveštenje, zapisuje poruke, ili se daljinski programira
nakon provere identifikacionog broja korisnika. Ponašanje čvora list nazvanog check_user_id je
prikazano na slici 6.11 b).

120
Slika 6.11:

Usvojimo da čvorovi main, respond_to_machine_button, monitor, check_user_id,


respond_to_cmds, num_msgs, i user_id_ram predstavljaju ponašanja i memorijske elemente koji su
izabrani kao objekti particionisanja. Uglavnom main kontroliše (aktivira i deaktivira) pomenuta
ponašanja. Procena cena veze se izračunava na osnovu deklaracije memorijskih elemenata i toka
podataka između ponašanja. Na primer, posmatrajmo poteg između check_user_id i user_id_ram. S
obzirom da user_id_ram predstavlja memorijski element od četiri reči svake kapaciteta četiri bita,
estimator usvaja da su dva bita dovoljna kao adresa, četiri kao podaci, i jedan za upravljanje. Jedan
primer particije hipergrafa koja odgovara ovom slučaju je prikazan na slici 6.12 i naznačen je
tačkastim linijama.

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

Planiranje izvršenja (Scheduling)

7.1 Definicija problema

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.

7.2 Osnovni algoritmi za planiranje izvršenja

U cilju pojednostavljenja osnovnih algoritama za ShA kao i njihovo objašnjenje usvojićemo da


važe sledeća ograničenja:

a) behavioral opisi ne sadrže Conditional i Loop iskaze


b) svaka operacija se izvršava u toku jednog upravljačkog koraka
c) svaki tip operacije se obavlja od strane jedne i samo jedne FU

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

Slika 7.1: HAL primer: (a) tekstualni opis, (b) DFG

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

Algoritam 7-2: 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.

7.2.1 Vremensko ograničeno ScH


Vremensko ograničeno ScH je važno za projektovanje ciljnih aplikacija kod sistema za rad u
realnom vremenu. Na primer kod velikog broja DSP sistema brzina uzorkovanja ulaznog niza
podataka diktira maksimalno dozvoljeno vreme za izvođenje DSP algoritma (sve operacije nad
tekućim uzorkom podataka mora da se obave pre nego što pristigne naredni). Imajući u vidu da je
brzina uzorkovanja fiksna glavni cilj je da se minimizira cena hardvera. Za datu dužinu upravljačke
sekvence, brzina semplovanja se može izraziti u funkciji broja upravljačkih koraka koji su potrebni
za izvršenje DSP algoritma.
Vremensko ograničeni ShA-ovi mogu da koriste tri različite tehnike: matematičko
programinranje, konstruktivne heuristike i iterativno detaljne razrade. U daljem tekstu metod
baziran na linearnom integer programiranju koristićemo kao primer matematičkog programiranja,
force-directed ScH metod kao primer metodologije konstruktivne heuristike, a iterativna
rescheduling tehnika kao primer iterativne metode.

Metod integer linarnog programiranja


Metod integer linearno programiranje (ILP) određuje optimalni plan izvršenja koristeći branch-
and-bound algoritam pretraživanja koji uključuje praćenje traga unazad (backtracking), tj. neke
odluke koje su donešene u inicijalnim delu algoritma se preispituju kako pretraživanje napređuje.
Neka sEk i sLk budu upravljački koraci u toku kojih je operacija Ok ScH-ovana od strane ASAP i
ALAP algoritama. Nešto konkretnije, E k ≤ Lk . Za slučaj da je ScH izvodljivo, ok mora da počne sa
izvršenjem u koraku koji nije ranije od s Ek , i ne kasnije od s Lk .
Broj upravljačkih koraka između s Ek i s Lk se zove opseg pokretljivosti operacije ok (tj.
mrange (o k ) = {s j E k ≤ j ≤ Lk }). Na slici 7.3 a) prikazan je opseg svake operacije u DFG-u za HAL
primer, proračunat na osnovu ASAP i ALAP labela sa slike 7.2. Na primer, opseg operacije o4 je
{s1 , s 2 , s3 }, pošto su njene ASAP i ALAP labele E 4 = 1 i L4 = 3 .
Mi možemo da koristimo ASAP, ALAP i opseg vrednosti operacija kako bi formulisali ScH
problem koristeći pri tome ILP. Koristićemo sledeće notacije kod formulacije ILP-a.

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 + <

Slika 7.3: Primer ILP ScH-a: a) opseg operacija, b) konačni ScH

Neka OP = {oi 1 ≤ i ≤ n} predstavlja skup operacija u flowgraph-u, a t i = type(oi ) predstavlja


tip svake operacije oi . Neka T = {t k 1 ≤ k ≤ m} predstavlja skup mogućih tipova operacija. Skup
OPtk čine operacije iz skupa OP koje su tipa t k (tj. OPtk = {oi oi ∈ OP ∧ type (oi ) = t k }). Neka
INDEX tk definiše skup svih indeksa operacija u OPtk (tj. INDEX tk = {i oi ∈ OPk }). Neka N tk
predstavlja broj jedinica koje obavljaju operaciju t k i neka C tk predstavlja cenu te jedinice. Neka
S = {s j 1 ≤ j ≤ r} predstavlja skup upravljačkih koraka koji je dostupan za ScH-ovanje operacija.
Neka xi j predstavlja 0-1 celobrojna promenljiva, koja ima vrednost 1 ako je operacija oi ScH-
avona u koraku s j , inače ima vrednost 0.
Problem ScH se može forulisati na sledeći način:

∑ (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:

min imize C m × N m + C a × N a + C s × N s + C c × N c (7.5)

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

Ako usvojimo da C m = 2 , a C a = C s = C c = 1 , funkcija cene se minimizira i sve nejednakosti


su zadovoljene kada promenjive uzimaju sledeće vrednosti. N m = 2 , N a = N s = N c = 1 ,
x1,1 = x 2 ,1 = x3 ,2 = x 4 ,3 = x5 ,2 = x6 ,3 = x 7 ,3 = x8 ,4 = x9 ,4 = x10 ,4 = x11,4 = 1 i ostali x s = 0 . Ovo rešenje
ILP formulacije problema ScH je prikazano na slici 7.3 b). Kao što se vidi sa slike operacija oi je
ScH-aovana u upravljačkom koraku s j , ako i samo ako je xi , j postavljeno na 1.
Ovim ILP formulacije se značajno raste sa povećanjem broja upravljačkih koraka. Na primer,
ako povećamo broj upravljačkih koraka za 1, imaćemo n dodatnih x promenljivih u
nejendačinama jer treba za svaku operaciju da razmatramo dodatno još jedan upravljački korak. Šta
više broj nejednačina zbog uslova (7.3) povećaće se za iznos koji zavisi od strukture zadatog DFG-
a. Pošto vreme izvršenja algoritma rapidno raste sa brojem promenljivih ili brojem nejednačina, u
praksi ILP pristup je pogodan samo za rešavanje problema manjeg obima.
Imajući u vidu da je ILP metod nepraktičan za opise velikog obima razvijeni su heuristički
metodi koji se u suštini brže izvršavaju, ali po ceni lošije optimalnosti dizajna. Poboljšana
efikasnost heurističkih metoda se ostvaruje zahvaljući eliminaciji backtracking-a kod ILP metode.
Backtracking se može eliminisati ako se operacije istovremeno ScH-uju imajući pri tome u vidu
kriterijum da one generišu korektno odluku u najvećem delu vremena. Kod heurističkih pristupa
cena ScH dizajna zavisi u velikoj meri od izbora naredne operacije koja treba da se ScH-uje i dodele
te operacije najboljem upravljačkom koraku.

Force-directed heuristički metod


Force-directed heuristički ScH (FDS) je dobro poznata heuristika za ScH pri zadatim
vremenskim ograničenjima. Ukazaćemo sada na pojednostavljenu verziju FDS algoritma. Glavni
cilj algoritma je da redukuje ukupan broj FU-ova koji se koriste u implementaciji dizajna.
Algoritam postiže svoj cilj uniformnom distribucijom operacija istog tipa (kao na primer množenje)
u svim dostupnim stanjima. Uniformna distribucija obezbeđuje da se FU-ovi dodeljeni radi
obavljanja operacija u jednom upravljačkom koraku takođe efikasno koriste u svim ostalim
upravljačkim koracima, što rezultira visokom procentu iskorišćenja FU-ova.
Kao i kod ILP formulacije, i FDS algoritam koristi kako ASAP tako i ALAP ShA-ove da bi
odredio broj upravljačkih koraka za svaku operaciju (tj. mrange (oi ) ). Algoritam usvaja da za svaku
operaciju oi postoji uniformna verovatnoća da će ista biti ScH-ovana u bilo kom koraku datog
opsega, a imati verovatnoću 0 ako se ona ScH-auje u bilo koji drugi upravljački korak. To znači, da

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).

COST (S ) = ∑ max EOC j , k (7.6)


1≤ j ≤ s
1≤ k ≤ m

Cena se izračunava koristeći ASAP (Ei) i ALAP (Li) za sve čvorove.


U toku svake iteracije, cena dodeljivanja svake ne ScH-aovane operacije mogućim stanjima u
okviru opsega (tj. mrange (oi ) ) se izračunava koristeći Swork. Dodela koja vodi minimalnoj ceni se
pri tome prihvata a ScH Scurrent se ažurira. Zbog toga u toku svake iteracije operacija oi se dodeljuje
u upravljačkom koraku s k , gde Ei ≤ k ≤ Li . Verovatnoća distribucije za operaciju oi se menja na
p k (oi ) = 1 i p j (oi ) = 0 za sve j koje su različite od k . Operacija oi ostaje fiksna i ne premešta se
u kasnijim iteracijama.
Vraćajući se na naš primer, počev od inicijalne distribucije verovatnoće za operaciju množenja
koja je prikazana na slici 7.4 (b), određuju se cene za dodelu svake neScH-ovane operacije u
mogućim upravljačkim koracima. Dodela operacije o3 upravljačkom koraku s 2 rezultira

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

Iterativni metod za finu razradu


Algoritmi koji su slični FDS-u zvaćemo „konstruktivnim“ jer oni daju rešenje u jednom
prolazu. Odluka da se planira izvršenje operacije u jednom upravljačkom koraku se čini na osnovu
parcijalno planiranog DFG-a, jer on ne vodi računa o budućim dodelama operatora u istom
upravljačkom koraku. Najsličnije rezultujuće rešenje zbog toga nije optimalno zbog nedostatka
lookahead šeme i nedostatka kompromisa između ranijih i kasnijih odluka. Moguće je izaći na kraj
sa ovim nedostacima putem ponovnog planiranja izvršenja nekih od operacija u datom planu
izvršenja.
Ključne stavke u ponovnom planiranju izvršenja su: izbor kandidata za ponovno planiranje
izvršenja, procedura ponovnog planiranja i upravljanje procesom radi postizanja boljih performansi.
Opisaćemo metod koji se zasniva na problemu bisekcije grafa (podele grafa na dva dela).
Bilo koji algoritam planiranja se može koristiti da bi se odredio inicijalni plan izvršenja. Novi
planovi izvršenja se mogu dobiti prostim replaniranjem operacija koje se izvršavaju u datom
trenutku. Operacija se može replanirati radi izvršenja u neki od ranijih ili kasnijih koraka sve dok
ona ne narušava ograničenja koja se odnose na zavisnosti po podacima. Tako na primer, postoji pet
mogućih kopiranja ( o6 to s3, o9 to s3, o9 to s4, o11 to s3, o11 to s4), kako je to naznačeno isprekidanim
potezima u planu izvršenja datog na slici 7.5 (a). Svako kopiranje stvara novi plan. Na primer
operacija kopiranja o6 ka stanju s3 rezultiraće novim planom izvršenja prikazanim na slici 7.5 (b).
Naredna moguća kopiranja su naznačena isprekidanim potezima na slici 7.5 (b). Operacija koja je
već jedanput kopirana (kao na primer o6 na slici 7.5 (b) ) se zaključava i ne može se više premeštati
(kopirati). Nakon sekvence od m ≤ n kopiranja i zaključavanja, sve operacije postaju zaključane.
Moguće je naći kraću sekvencu (subsekvencu) od k ≤ m kopiranja i zaključavanja koja maksimizira
kumulativni dobitak, pri čemu se dobitak definiše kao smanjenje cene u implementaciji novog plana
izvršenja. Ako dobitak nije negativan (tj. da se cena smanjuje) izvršena je promena inicijalnog
plana izvršenja u saglasnosti sa prvih k kopiranja, operacijama deblokiranja i procesa iterativnog
poboljšanja. Ako se dobije nenegativni kumulativni dobitak proces se zaustavlja.

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).

7.2.2 ScH ograničeno po resursima


Problem ScH kada postoji ograničenje po resursima srećemo kod velikog broja aplikacija gde
postoje ograničenja sa aspekta površine silicijuma. Ograničenje se obično zadaje u funkciji broja
funkcionalnih jedinica ili ukupno alociranoj površini silicijuma. Kada ograničenje predstavlja
ukupnu površinu, ScH algoritam određuje tip funkcionalnih jedinica koje će se koristiti u dizajnu.
Cilj ovog algoritma je da generiše dizajn sa najboljim mogućim perfomansama koji će
zadovoljavati zadata ograničenja površine.
Kod ScH koje je ograničeno sa aspekta resursa, postepeno se konstruiše ScH, po jednu
operaciju u datom trenutku, tako da ograničenja po resursima ne premašuju a zavisnosti po
podacima se ne narušavaju. Ograničenja po resursima su zadovoljena ako je obezbeđeno da ukupni
broj operacija koji je u datom upravljačkom kortaku ScH-aovan ne premaši postavljena ograničenja.
Ograničenja sa aspekta površine su zadovoljena ako je obezbeđeno da površina svih FU-ova
pojedinačno ili zbirna površina (floorplan) na silicijumu ne premaši ograničenja. Ograničenja koja
se odnose na FU se mogu proveravati u svakom upravljačkom koraku, dok se ograničenja u odnosu
na ukupnu površinu mogu proveriti samo za ceo dizajn. Ograničenja koja se odnose na zavisnost se
mogu zadovoljiti ako se obezbedi da svi prethodnici čvora budu ScH-aovani pre nego što se čvor
ScH-auje. Na ovaj način kada se ScH-auje operacija oi u upravljačkom koraku sj, mi treba da
obezbedimo da su hardverski zahtevi za oi i hardverske zahtevi za druge operacije već ScH-ovane
u sj i da ne narušavaju zadata ograničenja, kao i da su svi prethodnici čvora oi već ScH-aovani.
Opisaćemo dva algoritma za ScH koji uzimaju u obzir ograničenje po resursima: List-Based
ScH i list-Static ScH .

List-Based ScH metod


List ScH je jedan od najpopularnijih metoda za ScH-ovanje operacija kada postoje ograničenja
po resursima. U osnovi on predtsvalja generalizaciju ASAP ScH tehnike sobzirom da generiše isti
rezultat za slučaj kada ne postoje ograničenja po resursima.
List-Based ScH algoritam kreira listu prioriteta spremnih čvorova. Spremni čvor predstavlja
operacija zakoju su svi njeni prethodnici već ScH-ovani. U toku svake iteracije operacije koje su na
početku liste spremnosti planiraju se sve dok se u tom stanju svi resursi ne zauzmu. Prioritetna lista
se uvek sortira u odnosu na prioritet funkcija. To znači da prioritetna funkcija rešava proiblem
sudaranja zbog resursa koji postoje između operacija. Uvek kada postoje konflikti između spremnih
operacija koji se odnose na korišćenje resursa (kao na primer, tri operacije sabiranja su spremne, ali
samo dva sabirača postoje što predstavlja ograničenje po reursima), operacija koja ima najviši
prioret se ScH-uje. Operacije sa nižim priritetom biće odgođene za naredni ili kasnije upravljačke
korake. ScH-ovanje operacije može da učini da neke druge ne-spremne operacije postanu spremne.
Ove operacije se ubacuju u listu u saglasnosti sa prioritetom funkcije. Kvalitet rezultata generisan
od strane List-Based ScH prvenstvenoo zavisi od prioriteta funkcija.
Algoritam 7-5 prikazuje List ScH metod. Algiratam koristi prioritetniu listu PList za svaku
operaciju tipa (t k ∈ T ) . Ove liste se označavaju promenljivima PList t1 , PList t2 ,… , PList tm .
Operacije u ovim listama se ScH-uju u upravljačkim koracima na osnovu N tk koja predstavlja broj
funkcionalnih jedinica koje obavljaju operacije tipa t k . Funkcija INSERT_READY_OPS analizira

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.

Algoritam 7-5: List Scheduling

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.

Statički list ScH metod


Umesto da se u toku svakog upravljačkog koraka dinamički kreira lista prioriteta, moguće je
kreirati jedinstvenu veliku listu pre početka ScH-a. Ovaj pristup je različit u odnosu na prethodni ne
samo po principu selekcije kandidat operacija, nego i po dodeli kandidat ciljnim koracima.
Algoritam sortira sve operacije koristeći ALAP oznake u rastućem redosledu kao primarni ključ, a
zatim ASAP oznake u opadajućem redosledu kao sekundarni ključ. Ako oba ključa imaju istu

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.

7.3.1 Funkcionalne jedinice sa promenljivim kašnjenjem


Realni FU-ovi, u zavisnosti od tipa dizajna, mogu da imaju različito propagaciono kašnjenje.
Na primer, 32-bitni FPU množač je značajno sporiji u odnosu na FxPU sabirač koji manipuliše sa
istom dužinom reči. Zbog toga mi ćemo usvojiti da se svaka operacija ne završava u jednom
upravljačkom koraku. Ova pretpostavka ukazuje da se taktni interval produžava tako da se prilagodi
najsoporijoj jedinici u dizajnu, kako je to prikazano na slici 7.8 (a), kod koje množaču su potrebna
tri taktna intervala više u odnosu na oduzimač i sabirač. Kao rezultat, jedinica koja ima kraće
kašnjenje za deo vremena ostaće neiskorišćena. Obezbeđenje da FU –e operišu sa proizvoljnim
kašnjenjima dovodi do pobljšanja iskorišćenja FU-a. Sobzirom da FU sa proizvoljnim kašnjenjima
neće celo vreme biti aktivne u toku jednog taktnog ciklusa neminovno nameće potrebu da se
koriste:
a) model rada multiciklusni (polifazni) režim,
b) protočni režim.
Ako se taktni period skrati tako da omogući da se najbrža operacija izvršava za jedan taktni
ciklus, tada će najsporija operacija da se izvršava za nekoliko ciklusa. Sporije operacije nazivamo
multiciklusne i njih moramo ScH-ovati u dva ili veći broj upravljačkih koraka (vidi sliku 7.8 (b)).
Na ovaj način se povećava iskorišćenje bržih FU-a jer dve ili više operacija se mogu ScH-ovati u
toku jedinstvene operacije koju obavlja multiciklusna jedinica. Ipak, potrebnu su ulazni lečevi koji
se nalaze ispred multiciklusnih FU-a, a koriste se za čuvanje operanada sve dok rezultati ne treba da
budu dostupni za nekoliko koraka kasnije. (Slično kao kod superskalarnih procesora-potrebno je
sačuvati semantiku programa da bi rezultati bili korektni). Takođe kraći taktni interval rezultira u
pojavi većeg broja upravljačkih koraka koje treba obaviti u CDFG-u, što u suštini povećava obim
upravljačke logike.
Drugi metod za povećanje iskorišćenje FU-a sastoji se u tome da se dve ili veći broj operacija u
okviru jednog koraka obaljaju serijski, tj. koristi ulančavanje. Mi možemo dovesti rezultat jedne FU
direktno na ulaz nekih drugih FU –ova slika 7.8 (c). Ovaj metod zahteva da postooje direktne veze
između FU-ova pored veza koje postoje između FU-a i memorijske jedinice.

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.

7.3.2 Multifunkcionalne jedinice


U prethodnoj sekciji proširi smo ScH problem na FU-ove sa ne-uniformnim propagacionim
kašnjenjima i različitim brojem protočnih stepena. Ipak i dalje smo se pridržavali principa da svaka
FU može da obavi samo jednu operaciju. Ova pretpostavka je nerealna sobzirom da je u praksi cena
multifunkcionalne FU niža u odnosu na skupFU-ova koje obavljaju iste operacije. Tako na primer, i
pored toga što komponenta sabirač/oduzimač košta 20 % više u odnosu na sabirač ili oduzimač
posebno, evidentno je da je opravdanije koristiti multifunkcionalnu FU a ne posebne FU-ove.
Imajući ovo u vidu realno je očekivati da će projektanti što je moguće više koristiti
multifunkcionalne FU-ove. U tom smislu ScH algoritme treba reformulisati kako bi se
manipulisalo sa multifunkcionalnim FU-ovima.
Mi smo takođe pretpostavili da se svaka FU fizički samo jedanput implementira. U realnim
situacijama svaka bibliotečka komponenta ima više implementacija iste komponente, pri čemu
svaka implementacija ima različite karakteristike u pogledu površina/kašnjenje. Na primer sabiranje
se može izvesti brže sa većim brojem (skupljim) carry-lookahead sabiračem ili sporije sa manjim
(jeftinijem) ripple- carry sabiračem. Za zadatu biblioteku sa većim brojem implementacija iste
jedinice, ScH algoritmi moraju simultano da obave sledeća dva važna zadatka: (a) ScH-ovanje
operacija, tj. koje operacije se dodeljuju odgovarajućim upravljačkim koracima; (b) selekcija
komponente – algoritam, iz biblioteke komponenata, selektuje najefikasniju implementaciju FU-a
za svaku operaciju.
Izbor implementacije komponente iz biblioteke komponenata moguće je koristiti uz pomoć
tehnološki-zasnovanog ScH algoritma. Za datu biblioteku koja ima veći broj implementacija FU-
ova, glavni cilj algoritma je da implementira dizajn, uz minimalnu cenu, u okviru specificiranog
vremenskog ograničenja. Za svaku operaciju flowgraph-a bira se efikasna komponenta tako da se
operacije na kritičnom putu implementiraju sa bržim komponentama, a operacije koje nisu na
kritičnom putu implementiraju se sporijim komponentama. Istovremeno algoritam obezbeđuje da će

142
se operacije ScH-ovati u odgovarajuće upravljače korake što će obezbediti deobu FU-ova u
različitim stanjima.

7.3.3 Realističniji opisi dizajna


Pored blokova sa serijskim kôdom (straight line code), behavioral opisi u opštem slučaju
sadrže kako uslovne (conditional) tako i loop konstrukcije. Na ovaj način realni ScH algoritmi
moraju biti u stanju da korektno operišu nad oba od ovih modela iskaza (konstrukcija).

Slika 7.9: CDFG za behavioral opis sa uslovnim iskazom

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

7.4 Druge ScH formulacije

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.

7.4.1 Simulirano očvršćavanje


Simulirano očvršćavanje (opisano algoritmom 6-4 u sekciji 6.2.6) se takođe može koristiti za
ScH DFG-a. ScH-ovi se pretstavljaju koristeći dvodimenzionalnu tabelu pri čemu jedna dimenzija
odgovara upravljačkim koracima, a druga dimenzija dostupnim FU-ovima. Mi smatramo ScH kao
146
problem razmeštaja kod koga se operacije smeštaju u ulazima tabele. Smeštanjem operacionih
čvorova u tabeli mi definišemo upravljački korak u kome se operacija izvršava i FU koja će
obavljati tu operaciju. Pošto FU može da obavi samo jednu operaciju u upravljačkom koraku, ulaz u
tabelu ne može da zauzme više od jedne operacije. Na primer, slika 7.13 (a) prikazuje ScH za 5
operacija u tri upravljačka koraka pri čemu se koriste tri ALU jedinice.

Slika 7.13: Planiranje korišćenjem simuliranog očvršćavanja: (a) inicijalni raspored, (b) nakon
zamene dve operacije, (c) nakon razmeštanja jedne operacije

Počevši od inicijalnog ScH-a, procedura očvršćanje poboljšava ScH-a iterativnom


modifikacijom evaluirajući modifikaciju. Mera kvaliteta za dati ScH se izračunava kao ponderisana
suma broja FU-a, registara, magistrala i broja upravljačkih koraka.
Algoritam simuliranog očvršćavanja modifikuje ScH premeštanjem neke proizvoljne operacije
sa jednog ulaza u tabelu u drugi ili međusobnom razmenom mesta dve operacije. Tako na primer,
slika 7.13 (b) ukazuje ScH koji rezultuje nakon međusobne razmene mesta dve operacije ScH-a
opisan na slici 7.13 (a): (v1=v2+v3) i (v4=v2*v3). Modifikacija se prihvata za narednu iteraciju ako
rezultira boljem ScH-u. Ako modifikacija ne rezultira boljem ScH-u, njeno prihvatanje se zasniva
na funkciji proizvoljnosti kvaliteta poboljšanja i temperaturi kaljenja.
I pored toga što pristup simuliranog očvršćavanja je robustan i lak za implementaciju, ozbiljni
njegovi nedostaci sudugo vreme izračunavanja i komplikovano podešavanje parametara kaljenja.

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).

7.4.3 DFG restruktuiranje


Performanse (u funkcijim broja upravljačkih koraka) koje se ostvaruju ScH tehnikama koje
smo prethodno opisali ograničene su dužinom kritičnog puta u DFG-u. Na slici 7.15 (a), dužina
kritičnog puta je četiri (tj. operacije 1, 2, 3 i 4). Zbog toga nijedna od tehnika koje smo prethodno
opisali ne može da ostvari bolji ScH od četiri upravljačka koraka. Ipak, mi možemo smanjiti ovu
granicu modifikovanjem strukture DFG-a. Dve tehnike, redukcija visine stabla i uvođenje

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

U ovoj sekciji opisali smo nekoliko algoritama za ScH-ovanje operacija u upravljačkim


koracima.Prvo smo ukazali na dva tipa ScH problema: ScH kod kojih postoje vremenska
ograničenja i ScH kada postoje ograničenja po resursima. Pristup integer linearnog programiranja
optimalno rešava problem sa vremenskimograničenjem, ali ima nedostatak što se algoritam suviše
dugo izvršava. Sa druge strane, force-directed heuristika generiše brže ScH , ali ne garantuje
optimalno rešenje. Iterativne refinement pristup poboljšava kbvalitet dizajna inicijalnog ScH-a
generisanog od strane bilo kog ScH algoritma. Opisan je takođe List ScH sa različitim funkcijama
prioriteta koje se odnose na resursno ograničenu formulaciju ScH problema. Inicijalno koristili smo
restriktivne metode za ulazne opise i ciljnu arhitekturu kako bi objasnili osnovne algoritme. Zatim
smo diskutovali realistična proširenja koja se odnose na osnovne formulacije ScH-a. Konačno smo
diskutovali tehnike za poboljšanje performansi za ekspoloataciju paralelizma u okviru granica petlji
kao i restruktuiranjem ulaznih opisa.
Kod ScH-a neophodno je da se uloži dosta truda kako bi se koristile znatno realističnije
biblioteke, ciljne arhitekture i cene funkcija. Za zadatu biblioteki FU-ova ScH algoritam treba da
bude u stanju da selektuje FU-ove kako bi optimizovao kako ScH tako i cenu. Na ovaj način, ScH
algoritmi koji kombinuju kako ScH tako i selekciju modula moraju biti razvijeni. Na sličan način,
ScH algoritmi moraju se kombinovati sa alokacijom (dodelom), jer su ScH i alokacija nezavisni.
Šta više, cena funkcija koja se koristi kod ScH mora da bude realna. Jednostavna kvalitetna
merila, kao što su broj operatora ili broj RT komponenti često nije zadovoljavajući. Cena funkcija
mora da uključi i layout parametre, posebno informaciju o mogućem floorplan i kašnjenja usled
rutiranja kod ocene performansi ScH-ova.
Najveći broj ScH algoritama je namenjem straight-line kôdovi. Nekoliko algoritama postoji za
ScH-ovanje proizvoljnih opisa koji sadrže conditional i loop konstrukcije. Tehnike koje se koriste
kod optimizacije kompajlera, kao što su loop-pipelining i redukcija visine stabla se mogu integrisati
u ScH za projektovanje datapath-a. ScH algoritmi mogu takođe biti prošireni kako bi uključili polja
(vektori, matrice i itd.) i druge strukture u ulazni opis kao i memorije sa višetaktnim vremenom
pristupa u ciljnu arhitekturu.
ScH algoritmi se mogu proširiti da uključe različite ciljne arhitekture, na primer RISC
arhiitekturu sa velikim RF poljem, i nekoliko FU-ova, za koje minimizacija Load i Store
instrukcija iz glavne memorije predstavlja primarni cilj. Ovakva arhitekura se može proširiti na
VLIW arhitekure, kod kojih nekoliko RISC datapath-a rade paralelno. Na sličan način potrebni su i
ScH algoritmi za druge specifične arhitekture kakve su one koje se mogu sresti kod DSP aplikacija.

151
Poglavlje 8

Alokacija

8.1 Definicija problema

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.

Slika 8.1: Preslikavanje behavioral objekata u RT komponente

Uprkos korektnoj implementaciji behavior-a, alocirana datapath mora da ispuni ukupna


projektantska ograničenja koja se odnose na metrike koje smo prethodno definisali (na primer,
površina, kašnjenje, disipacija itd.). Da bi pojednostavili problem alokacije datapath-a mi ćemo
koristiti dve mere kvaliteta: ukupni obim (tj. površina silicijuma) dizajna i registar kašnjenje u
dizajnu za najgori slučaj (tj. taktni interval).
Problem alokacije možemo da rešimo na tri načina: gramzivi (greedy), koji progresivno
konstruiše dizajn dok prolazi kroz CDFG; pristupi dekompozicije, koji dekomponuju problem
alokacije na sastavne delove i rešavaju svaki deo posebno; i iterativni metodi koji kombinuju i
prepliću rešenja alokacionih subproblema. U ovoj sekciji prodiskutovaćemo osobine tipične
arhitekture datapath-a, i ukazaćemo na efekte problema datapath alokacije. Koristićemo
jednostavni dizajn model, i ukazaćemo na tri tehnike alokacije datapath-a: greedy konstruktivni
pristup, pristup dekompozicije i pristup iterativne razrade.

8.2 Datapath arhitekture

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:

s1 : r3 ⇐ ALU 1(r1 , r2 ); r1 ⇐ ALU 2(r3 , r4 );


s 2 : r1 ⇐ ALU 1(r5 , r6 ); r6 ⇐ ALU 2(r2 , r5 );

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

Da bi pojednostavili problem povezivanja (binding), usvojićemo da se svi registarski prenosi


ostvaruju preko FU-ova i da nisu dozvoljene direktne sprege između dve FU-e. Zbog toga, nama su
potrebne samo sprežne jedinice koje povezuju izlazne portove memorijskih jedinica sa ulaznim
154
portovima FU-ova (tj. ulazna sprežna mreža) i izlazne portove FU-ova sa ulaznim portovima
memorijskih jedinica (tj. izlazna sprežna mreža).
Kompleksnost ulaznih i izlaznih sprežnih mreža ne treba da bude ista. Jedna može biti prostija
od druge. Tako na primer, selektori ne mora da budu dozvoljeni da se nalaze ispred ulaznih portova
memorijskih jedinica. Ovo rezultira nešto komplikovanoj ulaznoj sprežnoj mreži, a shodno tome,
debalansu između vremena upisa i čitanja memorijskih jedinica. Pored toga mogućnost testabilnosti
arhitekture ima dodatni uticaj na algoritam alokacije. Šta više, broj magistrala koje svako RF polje
pobuđuje može biti ograničen. Ako je dodeljena jedinstvena magistrala svakom od izlaza RF polja,
tada trostačke drajvere magistrale nije potrebno instalirati između registara i magistrala. Ovo
ograničenje koje se odnosi na izlaze RF polja uslovljava ugradnju većeg broja multipleksera na
ulaznim portovima FU-a. Šta više, neke od promenljivih treba duplicirati u različita RF polja kako
bi se pojednostavila selektorska kola koja se instaliraju između magistrala i FU-a.
Jedna druga sprežna šema koja se standardno koristi kod procesora bazira se na particiji
magistrala na segmente tako da se svaki segment magistrale u datom vremenskom trenutku koristi
od strane jedne FU-e. FU-e i memorijske jedinice su uređeni kao jedinstvena vrsta sa magistralnim
segmentima koji se nalaze na drugoj strani, tako da sve izgleda kao arhitektura sa dve magistrale.
Prenos podataka između segmenata se ostvaruje preko komutatora koji se nalaze između segmenata
magistrale. Na ovaj način ostvarujemo alokaciju sprege upravljanjem komutatora koji su locirani
između segmenata magistrale i koji omogućavaju ili ne dozvoljavaju prenos podataka.
Analizirajmo kašnjenja koja postoje zbog registarsko-registarskih prenosa za pet prenosa
prikazanih na slici 8.2. Relativni tajming aktivnosti čitanja (Read), aktivnosti izvšenja (Execute)i
aktivnosti upisa (Wrrite) koje se odnose na mikro-operacije u prva dva taktna ciklusa primera sa
slike 8.2 su prikazani na slici 8.3. Neka tr predtsavlja vreme kašnjenja koje postoji kod čitanja
izlaznih podataka iz registara kao i njihovu propagaciju duž ulazne sprežne mreže; te predstavlja
propagaciono kašnjenje kroz FU; tw je propagaciono kašnjenje od FU-ova preko izlazne sprežne
mreže i upisa u registar. U ciljnim arhitekturama koje smo prethodno opisali, sve komponente koje
se nalaze na putu od izlaznih portova registara do ulaznih portova registara (tj. ulazne sprežne
mreže, ALU-ove i izlazne sprežne mreže) su kombinacione. Zbog toga taktni period biće jednak ili
veći od tr+te+tw.

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.5: Preklapanje između čitanja i upisa kod prenosa podataka

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.

8.3 Zadaci alokacije

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.

8.3.1 Selekcija jedinice


Kod jednostavnog modela koga ćemo razmatrati postoji samo po jedan tip FU za svaku
behavioral operaciju. Ipak, realne RT bibliotečke komponente sadrže više tipova FU-ova, svaka sa
različitim karakteristikama (tj. funkcionalnost, obim, kašnjenje i disipacija snage), pri čemu svaka
implementira jednu ili nekoliko različitih operacija u RT opisu. Na primer, sabiranje se može izvesti
bilo pomoću malog ali sporog ripple-carry adder ili velikog ali brzog carry-lookahead adder. Šta
više danas mi možemo da koristimo nekoliko različitih tipova komponenata, kakav je sabirač,
sabirač/oduzimač, ili celu ALU, sa ciljem da obivimo operaciju sabiranja. To znači da jedinica za
selekciju bira broj i tipove različitih FU-ova i memorijskih jedinica iz biblioteke komponenata.
Osnovni zahtev za selekciju jedinice je da broj jedinica koji obavlja određeni tip operacija mora biti
jednak ili veći od maksimalnog broja operacije tog tipa koje treba da se obave u bilo kom
upravljačkom koraku. Selekcija jedinice se češće kombinuje sa binding-om u jedan zadatak koji se
naziva alokacija.

8.3.2 Povezivanje FU-e


Nakon što su svi FU-ovi odabrani operacije u behavioral opisu moraju biti preslikane u skup
selektovanih FU-ova. Kad kog imamo slučaj da se operacije mogu preslikati u više od jednu FU ,
potrebna nam je usluga algoritma za povezivanje FU-ov koji će tačno odrediti preslikavanje
operacija u FU-a. Na primer, operacije o1 i o3 na slici 1 se preslikavaju u sabirač ADD1, dok
operacije o2 i o4 se preslikavaju u sabirač ADD2.

8.3.3 Povezivanje memorije


Povezivanje memorije preslikava nosioce podataka (ograničenja, premnljive, strukture
podataka kakvi su vektori i matrice itd.) u behavioral opisu na memorijske elemente (ROM-ovi,
registri, memorijske jedinice) u datapath. Konstante, kakvi su koeficijenti kod DSP algoritama,
obično se memorišu u ROM. Promenljive se čuvaju u registrima ili memorijama. Promenljive čiji
intervali vremena života se ne preklapaju sa drugim mogu da dele isti registar ili memorijsku
lokaciju. Vreme života promenljive je vremenski interval između prvog dodeljivanja vrednosti
(kada se promenljiva po prvi put javi na levoj strani iskaza dodele) i njenog zadnjeg korišćenja
(zadnje pojavljivanje promenljive na desnoj strani iskaza dodele). Nakon što su promenljive
dodeljene registrima, registri se mogu uzajamno ugraditi u RF polje koje ima samo jedan port za
pristup u slučaju kada se registrima u RF polju ne pristupa simultano. Slično, refistri se mogu
ugraditi u multiportno RF polje u slučaju kada se većem broju registra u datom upravljačkom
koraku istovremeno pristupa, ali pri tome broj portova ne sme da bude manji od broja pristupa.

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.

8.3.5 Međuzavisnost i uređenje


Svi zadaci za sintezu datapath-a (ScH, selekcija jedinice, povezivanje FU, povezivanje
memorijskih elemenata i povezivanje sprežnih elemenata) su međusobno zavisni. Posebno, FU,
memorijsko i sprežno povezivanje su čvrsto povezani jedni sa drugim. Na primer slika 8.8 prikazuje
na koji način povezivanje funkcionalnih i memorijskih elemenata utiče na alokaciju sprežnih
elemenata. Pretpostavimo da postoje 8 promenljivih (od a do g) u DFG-u sa slike 8.8 (a) koje su
dodeljene četirima registrima na sledeći način: r1 ← {a} , r2 ← {b ,e , g } , r3 ← {c , f , h} i r4 ← {d }.

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:

(1) ADD1 ← {o1 ,o4 } , ADD2 ← {o2 ,o3 }, ili

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.

8.4 Gramzivo (greedy) konstruktivni pristup

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.

Algoritam 8-1: Konstruktivna alokacija

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

Intuitivni pristup koji je baziran na konstruktivnoj metodi spada u kategoriju gramzivih


algoritama. Mada su gramzivi algoritmi jednostavni rešenja do kojih se dolazi često mogu da budu
ne baš optimalni. Sa ciljem da se poboljša kvalitet rezultata neki od istraživača su predložili pristup
zasnovan na dekompoziciji, pri čemu se proces alokacije deli na sekvence nezavisnih zadataka, pri
čemu se svaki zadatak transformiše u odgovarajući problem teorije grafova a zatim se dokazuje
pomoću poznatih metoda.
Dok gramzivi konstruktivni pristup, kao onaj opisan u algoritmu 8-1 može u alokacionim
koracima na principu interlive da koristi memoriju, FU i sprege, metodi dekompozicije završavaju
jedan zadatak pre nego što počnu da obavljaju drugi. Na primer, sve dodele promenljiva-u-registar
mogu se kompletirati pre nego što se obavi dodela tipa operacija-u-FU, i obratno. Zbog međusobne
zavisnosti ovih zadataka, ne garantuje se optimalno rešenje čak i u slučaju kada se svi zadaci
pojedinačno reše optimalno. Na primer, dizajnu koji koristi tri sabirača može biti potreban jedan
multiplekser više u odnosu na onaj koji koristi dva sabirača. Zbog toga, strategoja alokacije koja
minimizira korišćenje sabirača je opravdana samo kada je cena sabirača veća od cene multipleksera.
U ovoj sekciji opisaćemo tehnike alokacije koje se zasnivaju na tri graf teoretska metoda:
Clique Partitioning (CP), Left-Edge Algorithm (LEA) i Weighted Bipartite Matching Algorithm
(WBMA). Pojednostavljenja radi ilustrovaćemo alokacione tehnike primenjujući ih na behavioral
opise koji se sastoje samo od sekvencijalnog kôda bez conditional grananja.

8.5.1 Clique partitioning


Sva tri zadatka, alokacija memorije, alokacija FU i alokacija sprega, se mogu rešiti nezavisno
preslikavajući svaki zadatak na problem graf clique partitioning.
Počećemo definicijom CP problema. Neka G=(V, E) označava graf gde V predstavlja skup
čvorova, a E skup potega. Svaki čvor eij ∈ E povezuje dva različita čvora vi i vj ∈ V. Podgraf SG
{ }
od G se definiše kao (SV,SE), gde SV ⊆ V i SE = ei , j ei , j ∈ E , vi , v j ∈ SV . Graf je kompletan ako i
samo ako za svaki par njegovih čvorova postoji poteg kojih ih povezuje. Clique G-a je kompletan
podgraf G-a. Problem particije grafa na minimalan broj clique-ova se sastoji u tome da svaki čvor
pripada samo jednom clique-u koji se naziva clique partitioning. CP problem je klasični NP-
kompletan problem za koga se obično koriste heurističke procedure.
Algoritam 8-2 opisuje jedan heuristički pristup koji se koristi za rešavanje CP problema. Super-
graf G' (S,E') se izvodi iz početnog grafa G(V,E). Svaki čvor si∈ S je super-čvor koji može da sadrži
skup od jednog ili većeg broja čvorova vi∈ V. E' je identično sa E sa izuzetkom da potezi u E' sada
povezuju super-čvorove u S. Super-čvor si∈ S je zajednički sused dva super-čvora sj i sk ∈ S ako
postoje potezi ei,j i ei,k ∈ E'. Funkcija COMMON_NEIGHBOR (G’, si, sj), vraća skup super-čvorova
koji su zajednički čvorovi za si i sj u G'. Procedura DELETE_EDGE(Е’, si) izbacuje sve čvorove u
E' koji imaju si kao svoj krajnji super-čvor.

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.

8.5.2 Left-Edge algoritam


Left-Edge algoritam je veoma poznat i koristi se kod aplikacija za rutiranje veza u procesu
automatizacije fizičkog dizajna. Cilj rešavanja problema rutiranja kanala (veza) je da minimizira
broj traka koje se koriste da povežu tačke na granicama kanala. Dve tačke na granicama kanala su
povezane pomoću jednog horizontalnog (tj. paralelno kanalu) i dva vertikalna (tj. ortogonalna
kanalu) žičana segmenta. S obzirom da širina kanala zavisi od broja korišćenja horizontalnih traka,

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

8.5.3 Ponderisani bipartit-ni matching algoritam


Oba problema alokacije registara i alokacije FU-ova se mogu transformisati u ponderisani
bipartit-ni matching algoritam (WBMA – Weightet Bipartite-Matching Algorithm). Nasuprot Left-
edge algoritmu koji u dato trenutku sekvencijalno povezuje promenljive registru WBMA
istovremeno povezuje veći broj promenljivih većem broju registara. Šta više on uzima u obzir i
cenu povezivanja u toku alokacije registara FU-a. Algoritam 8-4 opisuje WBMA metod. Neka L
prdstavlja listu promenljivih kao što je definisano u opisu left-edge algoritma. Broj zahtevanih
registara, num_reg, odgovara maksimalnoj gustini intervalima vremena života (tj. maksimalnom
broju preklapajućih vremena života promenljivih). Neka R predstavlja skup čvorova koji
odgovaraju registrima {r1, r2, …, rnum_reg} u kojem se skup promenljivih, V, preslikava. Skup
promenljivih se deli na klastere promenljivih čija se vremena života uzajmno preklapaju. Funkcija
OVERLAP(Clusteri, v) vraća vrednost true ako je bilo Clusteri prazan ili se vreme života
promenljive v preklapa sa vremenima života svih promenljivih koje su dodeljenje u Clusteri.
Funkcija BUILD_GRAPH (R, V) vraća skup potega R koji sadrži potege između čvorova oba skupa
R, koji odgovaraju registrima i V koji odgovaraju promenljivima u pojedinom cluster-u. Poteg ei,j∈E
predstavlja ostvarljivu dodelu promenljive vj registru ri ako i samo ako vreme života vj se ne
preklapa sa vremeno života bilo koje promenljive koja je već dodeljenja ri-u. Procedura
MATCHING (G ( R ∪ V , E )) pronalazi podskup E ′ ⊆ E , koja predstavlja rešenje bipartit-og
uparivanja grafa G. Svaki poteg ei,j u E' odgovara dodeljivanje promenljive vj∈V registru ri∈R. Dva
čvora u E' ne mogu da dele zajednički krajnji čvor (tj. dve promenljive u istom klasteru se ne mogu
dodeliti istom registru). Polje MAP, procedura SORT i DELETE i funkcija FIRST su identične kao
i kod left-edge algoritma.
Nakon sortiranja liste promenljivih u saglasnosti sa njihovim intervalima vremena života na isti
način kao i kod left-edge algoritma, ovaj algoritam ih deli u cluster-e promenljivih. Vreme života
svake promenljive u cluster-u preklapa se sa vremenima života svih drugih promenljivih u istom
cluster-u (vidi sliku 8.13 (a)). Ka što se vidi sa slike, maksimalan broj vremena života koje se
preklapaju je pet. To znači, da skup registara, R, imaće pet registara (r1, r2, r3, r4 i r5) u koje će se
sve promenljive preslikavati. Cluster promenljivih se istovremeno dodeljuje skupu registara. Na
primer, prvi cluster od pet promenljivih v1, v10, v4, v6 i v2 prikazan na slici 8.13 (b) se dodeljuje

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.

Algoritam 8-4: Alokacija registra koja koristi bipartit-ni matching

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.

8.6 Iterativni pristup refinement

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.

Algoritam 8-5: Pairwise Exchange

174
Poglavlje 9

Modeli i arhitekture

9.1 Uvod

Projektovanje sistema predstavlja proces implementacije željene funkcionalnosti koristeći skup


fizičkih komponenata.
Prvi korak u projektovanju sistema predstavlja specifikacija njegove funkcionalnosti.
Specifikacija funkcionalnosti nije lak zadatak. Primera radi, razmotrićemo specifikaciju
kontrolera lifta. Odmah se projektantu postavlja sledeće pitanje: Na koji način opisati
funkcionalnost sistema sa dovoljno detalja koji će pri tome sa apsolutnom preciznošću predvideti
šta će se desiti nakon što je pritisnuta određena sekvenca tastera? Ako je specifikacija zadata u u
opisno-jezičkoj (kakva je na srpskom,engleskom, francuskom, i dr) formi tada ona može biti
nedovoljno jasna, a šta više i nekompletna. U principu je potrebno usvojiti neki precizniji pristup za
specifikaciju.
Najčešći način da se postigne zadovoljavajući nivo preciznosti je da se razmišlja o sistemu kao
o kompoziciji (skupu) jednostavnih podsistema (delova). Na globalnom nivou postoje pet metoda
(biće kasnije objašnjeni) za dekompoziciju funkcionalnosti na jednostavnije nivoe. Pri tome, metodi
se razlikuju u odnosu na tipove delova i pravila koja važe za kompoziciju ovih delova u fazi
kreiranja sistemske funkcionalnosti. Metod nazivamo model.
Da bi bio koristan, model mora da poseduje sledeće kvalitete:
1. mora biti formalan i da ne sadrži nejasnoće,
2. mora biti kompletan, tj. da opisuje ceo sistem,
3. mora biti sveobuhvatan, tj. da se sagledaju svi detalji
4. mora biti lak za modifikaciju u određenom delu (tački) u slučaju kada projektanti žele da
promene njegovu sistemsku funkcionalnost
5. mora biti razumljiv
Svrha modela je da pruži jedan apstraktan pogled na sistem. Na slici 9.1 prikazana su dva
različita modela kontrolera lifta čiji je opis na srpskom jeziku prikazan na slici 9.1 (a). Razlika
između ova dva modela je ta što model sa slike 9.1 (b) predstavlja kontroler kao skup programskih
iskaza, dok onaj na slici 9.1 (c) kao konačni automat.

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 i arhitekture predstavljaju konceptualni i implementacioni pogledi sa najvišeg nivoa


apstrakcije. Modeli opisuju kako je sistem realizovan. Proces projektovanja predstavlja skup
zadataka koji transformišu model u arhitekturu. Na početku procesa projektovanja poznata je samo
funkcionalnost na nivou sistema. Zadatak projektanta je da opiše (transformiše) ovu funkcionalnost
na nekom od jezika. Napredak u procesu projektovanja dovodi do arhitekture. U toku faze
projektovanja projektanti zaključuiju da su određene arhitekture pogodnije za implementaciju
određenih modela, a takođe i da tehnologija ima veliki uticaj na izbor arhitekture. Zbog ovoga
projektanti pre nego što završe proces projektovanja, mora da sagledaju uticaj većeg broja različitih
implementacija.

9.2 Taksonomija modela

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.

9.3 Modeli orijentisani stanju

FSM je primer modela orijentisan-stanju. To je najpopularniji model za opisivanje upravljačkih


sistema, iz razloga što se vremensko ponašanje ovakvih sistema najprirodnije predstavlja u obliku
stanja I prelaza između ta stanja.
FSM model čine skup stanja, skup prelaza između stanja, kao i skup akcija koje prate stanja i
prelaze. Formalno, FSM se opisuje kao petorka na sledeći način:

< S , I , O, f : S × I → S , h : S × I → O > (9.1)

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

Slika 9.3: FSM model kontrolera lifta

9.3.1 FSM sa stazom podataka


FSM model je efikasan kada broj stanja ne prelazi nekoliko stotina. Iznad te vrednosti on
postaje nepraktičan za projektante. Šta više, i komponente male-kompleksnosti kakvi su U/I
interfejsi, i kontroleri magistrale, kada se uzmu u obzir svi memorijski elementi, mogu imati i po
nekoliko stotina stanja. Sa ciljem da se FSM model učini korisnim i za najsloženija rešenja uvodi se
skup od integer i floating point promenljivih koje se čuvaju u registrima, registarskim poljima
(register files), i memorijama. Svaka promenljiva zamenjuje 216 ili 65536 različitih stanja, što znači
da se uvođenjem 16-bitne promenljive redukuje broj stanja kod FSM modela za 65536.
Korišćenjem promenljivih usmerava nas ka konceptu proširenog FSM-a koji se naziva FSM sa
stazom-podataka (FSM with datapath). Formalno FSMD se definiše na sledeći način: Definišimo
skup izraza EXP = { f (x, y, z, …) ⏐x, y, z, … ∈ VAR}, i skup memorijskih dodeljivanja A = { X
⇐ e⏐ X ∈ VAR, e ∈ EXP}. Zatim, definišimo skup statusnih izraza kao logičke relacije između
dva izraza na osnovu skupa EXP, kao STAT = { Real (a, b) ⏐ a, b ∈ EXP}. Na osnovu ovih
definicija, FSMD se može definisati kao petorka

< S , I ∪ STAT , O ∪ A, f , h > (9.2)

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

Slika 9.4: FSMD model kontrolera lifta

U suštini, FSM model je pogodan za modeliranje upravljačko-dominantnih sistema, dok je


FSMD pogodan za modeliranje kako upravljačko- tako računarsko-dominantnih sistema.
Ipak treba naglasiti da kako FSM tako i FSMD model nije pogodan za kompleksne sisteme, jer
ni jedan od njih ne podržava konkurentnost i hijerarhiju. Bez eksplicitne podrške konkurentnosti,
kod kompleksnih sistema dolazi do ogromnog porasta (eksplozije) broja stanja. Tako na primer,
razmotrimo sistem koga čine dva konkurentna podsistema, svaki sa po 100 mogućih stanja. Ako
ovakav sistem želimo da predstavimo jedinstvenim FSM-om ili FSMD-om, tada je potrebno
predstaviti sva moguća 100 ∗ 100 = 10000 stanja. Istovremeno, izostanak hijerarhije dovodi do
povećanja broja potega. Primera radi, ako postoji 100 stanja, pri čemu se svakom stanju pridružuje
sopstveni poteg prelaza za pojedinu ulaznu vrednost, tada će biti potrebno 100 potega, nasuprot
jednom potegu koji je potreban od strane modela koji hijerarhijski može grupisati ovih 100 stanja u
jedno stanje.
Problem sa ovakvim modelima je taj da kada je broj stanja ili potega reda nekoliko stotina, tada
ovi modeli postaju glomazni i nerazumljivi čoveku.

9.3.2 Petri mreže


Model baziran na Petri-mrežama je jedan alternativni tip modela orijentisan stanju, posebno
pogodan za modeliranje sistema kod kojih egzistira interakcija izme|u konkurentnih zadataka.
Model Petri-mreže čini skup lokacija (places), skup tranzicija (transitions), i skup znakova (tokens).
Znaci se nalaze u lokacijama i cirkulišu kroz Petri mrežu trošeći se i generišući se kad god do|e do
opaljivanja prelaza.
Formalno Petri mreža se definiše kao:

< P, T , I , O, u > (9.3)

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.

9.3.3 Hijerarhijski konkurentni FSM-ovi


Hijerarhijski konkurentni FSM.ovi (HCFSM) u suštini prestavljaju proširenje FSM modela,
kod koga postoji podrška za hijerarhiju i konkurentnost, čime se eliminiše za potencijalno enormno
povećanje broja stanja i potega koje postoji kada se opisuju hijerarhijski konkurentni sistemi
pomoću FSM-ova.
Kao i kod FSM-ova HCFSM model čini skup stanja i skup tranzicija. Nasuprot FSM-u, kod
HCFSM svako stanje se može dalje razložiti na skup podstanja, čime se ostvaruje hijerarhijsko
modeliranje. Štaviše, svako stanje se može razložiti na konkurentna podstanja, koja se izvršavaju
paralelno i komuniciraju preko globalnih promenljivih. Tranzicije kod ovog modela mogu da budu
strukturne i nestrukturne, pri čemu su strukturne tranzicije dozvoljene samo između dva stanja na
istom nivou hijerarhije, dok se nestrukturne tranzicije javljaju između dva stanja nezavisno od nivoa
hijerarhije.
Jedan jezik koji je posebno dobro prilagođen HCFSM modelu je Statecharts, on može lako da
podrži hijerarhiju, konkurentnost i komunikaciju između konkurentnih stanja. Statecharts koristi
nestrukturne tranzicije i broadcast komunikacioni mehanizam, kod koga događaji emitovani od
strane bilo kog stanja se mogu detektovati od strane svih drugih stanja.
Statecharts jezik je grafički jezik. Specifično, koriste se zaobljeni pravougaonici za
označavanje stanja na bilo kom nivou, a enkapsulacija da se izrazi hijerarhijski odnos između ovih
stanja. Isprekidane linije između stanja predstavljaju konkurentnost, strelice označavaju tranzicije
između stanja, svaka strelica ukazuje na događaj a opciono sadrži uslov u zagradi ili akciju.
Slika 9.7 prikazuje nam primer sistema predstavljen pomoću statecharts-a. Kao što se vidi sa
slike stanje Y se razlaže na dva konkurentna stanja A i D, pri čemu se A razlaže na B i C a D se
sastoji od postanja E, F i G. Podebljana tačka na slici ukazuje na početno stanje. U saglasnosti sa
jezikom Statecharts, kada se javi događaj d a nalazimo se stanju C, A će preći u stanje B. Ako, sa
druge strane, se javi događaj A dok smo u stanju B, A će preći u stanje C, ali samo pod uslovom da
p važi u trenutku pojave događaja. U toku prelaza od B ka C, postoji akcija c koja prati tranziciju
koja se obavlja.
182
Slika 9.7: Statechart: hijerarhijski konkurentna stanja

Zbog svojih hijerarhijskih i konkurentnih konstrukcija, HCFSM model je veoma pogodan za


predstavljanje složenih upravljačkih sistema. Problem sa ovim modelom slično kao i sa drugim
state-oriented modelima se sastoji u tome što se on koncentriše isključivo na modeliranje
upravljanja (kontrole), što znači da se on može pridružiti samo jednostavnim akcijama kakve su
dodele. Kao rezultat HCFSM nije pogodan za modeliranje određenih karakteristika kod složenih
sistema koji mogu zahtevati kompleksne strukture podataka i mogu u svakom koraku da obavljaju
proizvoljno složene aktivnosti. Kod ovakvih sistema ovaj model verovatno neće biti najbolje
rešenje.

9.4 Activity-oriented modeli

9.4.1 Data Flow Graph (DFG)


State-oriented modeli koje smo prethodno razmatrali najčešće se koriste kod reaktivnih
sistema, tj. kod sistema gde se stanje sistema menja kao odziv na neki spoljni događaj. Nasuprot
tome DFG-ovi se uglavnom koriste kod sistema koji vrše transformacije tj. kod onih sistema gde su
izlazi određeni pomoću skupa izračunavanja nad ulazima u sistem. Zbog toga DFG-ovi nemaju
stanja i nemaju spoljne događaje pomoću kojih se okidaju promene stanja. Umesto toga oni se
sastoje od skupa aktivnosti (transformacije) povezane pomoću skupa potega koji predstavljaju
tokove podataka (data flow).
Nešto preciznije, DFG čini skup čvorova i skup potega. Postoji nekoliko tipova čvorova u
DFG-u. Jedan tip čvora se naziva input (takođe nazvan izvorište) i output (takođe nazvan i
odredište), što odgovara ulazima i izlazima podataka. Drugi tip čvora se naziva activity (proces), i
on predstavlja aktivnost koja transformiše ili manipuliše nad podacima. Ove aktivnosti se mogu
opisati na različite načine od strane programa, pomoću procedura, funkcija ili jedne instrukcije ili
čak jedne aritmetičke operacije. Konačni tip čvora je datastore tip, koji odgovara različitim
formama memorisanja podataka, kakvi su zapisi u bazi podataka, fajl u operativnom sistemu, ili
promenljiva u memoriji ili registru. Svi ovi različiti čvorovi u DFG-u su međusobno povezani
usmerenim potezima koji su obično označeni u funkciji podataka koji se prenosi između dva čvora.
Ovaj model podržava hijerarhiju, s obzirom da se svaki activity čvor može predstaviti drugim
DFG-om.
Grafička prezentacija DFG-a standardno koristi pravougaonike za čvorove tipa input i output,
krugove za čvorove tipa activity i otvorene (nezavršene) pravougaonike za čvorove tipa datastore.
Tok podataka se predstavlja potezima koji se označavaju pridruženim podacima. Jedan tipičan
primer je prikazan na slici 9.8. Kao što se može videti ovaj sistem čine dve aktivnosti, A1 i A2, pri
183
čemu se A2 dalje razlaže na aktivnosti A2.1, A2.2 i A2.3. Kod ovog sistema, podatak X prolazi od ulaza
u A1 dok podatak V treba da se izračuna od strane A1 i smesti u File. Podatak V’ se uzima iz File i
koristi kao ulaz u A2, zajedno sa podatkom Y koji je bio generisan od strane A1. Podaci Z i W su
izlazi generisani od strane A2.
Data flow model je koristan iz razloga što se može koristiti u različitim aplikacionim
domenima ili u različitim fazama projektovanja istog domena, zbog toga što se može jednostavno
vršiti pridruživanje različitih objekata čvorovima i potezima u grafu. Na primer kod DSP domena,
čvorovi u DFG-u mogu da predstavljaju promenljive i aritmetičke operacije kakve su sabiranje i
množenje dok potezi DFG-a mogu da ukazuju na zavisnosti po podacima (vidi sliku 9.8 (b) ). Kod
ovog primera, operacija ‘+’, zavisna je od podataka X i Y a operacija ‘*’ zavisi od podatka Z i izlaza
operacije ‘+’.

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.

9.4.2 Dijagrami toka


Dijagrami toka (flowcharts), takođe poznati kao CFG (Control Flow Graph) su activity-
orijentisani modeli koji su u velikoj meri slični DFG-ovima, mada se oni razlikuju u načinu
korišćenja potega. Kod DFG-a, potezi se koriste da ukažu na tok podataka, dok dijagram tok koristi

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.

Slika 9.9: Reprezentacija algoritma za nalaženje maximuma pomoću dijagrama toka

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.

9.5 Strukturno orijentisani modeli

9.5.1 Dijagram povezivanja komponenata


Dijagram povezivanja komponenata (CCD – Component Connectivity Diagram) predstavlja
klasa strukturno orijentisanih metoda koje se koriste za opis fizičke strukture sistema, a ne njegove
funkcionalnosti. Nasuprot DFG-ovima i dijagramima toka, koji predstavljaju skup sistemskih
aktivnosti povezanih bilo zavisnostima po podacima ili upravljanjem, CCD predstavlja skup
sistemskih komponenata i njihovih međusobnih veza. Drugim rečima, on modelira strukturni
pogled sistema.
CCD se sastoji od skupa čvorova i skupa potega. Čvorovi predstavljaju različite komponente,
koje se definišu kao strukturni objekti sa definisanim skupom ulaza i izlaza, kakva su logička kola,

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

9.6.1 Entity relationship dijagram (ERD)


Data orijentisani model je dosta različit u odnosu na state orijentisani ili activity orjentisane
modele koje smo prethodno razmatrali, uglavnom zbog toga jer se fokusira na prezentaciju
podataka, masuprot prezentaciji aktivnosti i manipulisanju podacima. Data orjentisani modeli se u
opštem slučaju koriste kod projektovanja informacionih sistema, iz razloga što kod ovog tipa
sistema organizacija podataka je od veće važnosti u odnosu na ostale aspekte dizajna. Na primer,
klasičan tip data orjentisanog modela entity-relationship dijagram (ERD) koji definiše sistem u
funkciji skupa celina (entity) i različitog odnosa između njih.
Kod ERD-a svaka celina je obično grafički predstavljena pomoću pravougaonika, dok se odnos
predstavlja rombom. Pretpostavimo, na primer, da želimo predstaviti informaciju o skladištenju
različitih produkata u nekok magacinu. Kod ERD modela potrebne su nam sledeće četiri celine:
Potrošač, Broj fakture, Proizvod i Dobavljač (vidi sliku 9.11). Zatim, treba da predstavimo odnos
između ovih celina, koji je definisan činjenicom da potrošač traži određene proizvode, u datom
trenutku iz magacina se izdaje faktura o porudžbini ka jednom od proizvođača koji proizvodi ovaj
proizvod. U datom dijagramu, ovi odnosi su naznačeni na sledeći način: Dostupnost specificira sve
dobavljače i proizvode koje oni fabrikuju, Zahtevi povezuje potrošače sa proizvodima koji su njima
potrebni i P.O su instance koje povezuju pojedini proizvod sa zahtevom koji izdaje potrošač a
usmerene su proizvođaču.

Slika 9.11: Primer entity-relationship dijagrama

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.

9.6.2 Džeksonov dijagram


Drugi tip data orjentisanog modela je Džeksonov dijagram koji ima svoje posebne prednosti.
Nasuprot ERD-u, koji teži da istakne atribute i međusobne odnose podataka u modelima,
Džeksonov dijagram modelira svaki individualni podatak u zavisnosti od njegove strukture,
dekomponujući taj podatak na podpodatke. Na primer, Džeksonov dijagram je pogodan za
187
modeliranje zapisa koji se sastoji od nekoliko podpolja. U suštini, Džeksonov dijagram je pogodan
za podatke koje treba razložiti na način koji je složeniji u odnosu na odgovarajući koji se odnosi na
jednostavne zapise.
Podaci kod Džeksonovog dijagrama se dekomponuju pomoću strukture tipa stablo, kod koje
čvorovi tipa list predstavljaju osnovni tipovi podataka a čvorovi tipa ne-list predstavljaju
kompozitni tip podataka koji se dobijaju pomoću različitih operacija kakve su kompozicija (AND),
selekcija (OR), i iteracija (*). Kompozicija, na primer, generiše tip podataka koji sadrži dva ili veći
broj podtipova. Selekcija, sa druge strane generiše podatak selekcijom samo jednog od ovih
podtipova. Konačno iteracija generiše podatak ponavljanjem određenih elemenata podtipa.

Slika 9.12: Džeksonov dijagram

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.

9.7 Heterogeni modeli

9.7.1 Control/Data Flow graf (CDFG)


CDFG je heterogeni model koji je projektovan da kombinuje prednosti dijagrama toka
upravljanja (CFG-a) sa modelom toka podatka (DFG-om). Drugim rečima, CDFG inkorporira
DFG-ove da bi predstavio tok podataka između aktivnosti, kao i CFG, koji može da predstavi
sekvenciranje DFG-ova. To znači, da je CDFG model u stanju da eksplicitno prikaže kako
zavisnosti po podacima tako i sekvencu upravljanja sistema jedinstvenom prezentacijom.

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

Na slici 9.14 prikazan je primer CDFG-a na nivou aktivnosti. U saglasnosti sa ovom


prezentacijom, kada je CFG u stanju S0 i pojavi se događaj start, dozvoljava se rad aktivnostima A1
i A2 a sistem ulazi u stanje S1. Sa druge strane, ako je sistem u stanju S1 i javi se događaj W = 10,
aktivnost A1 se brani, aktivnost A3 se dozvoljava a sistem prelazi u stanje S2. Konačno, ako je sistem
u stanju S2 a javi se događaj stop, aktivnosti A2 i A3 biće zabranjene a sistem se vraća u stanje S0. W,
X, Y, Z su podaci koji se koriste u okviru različitih aktivnosti a specificirani su od strane DFG-a.
Osnovna prednost CDFG-a se sastoji u tome što on koriguje nemogućnost DFG-a da predstavi
upravljanje radom sistema, kao i nemogućnost CFG-a da predstai zavisnost po podacima. Shodno
tome, CDFG predstavlja jedno kompletno rešenje koje je veoma pogodno za veći broj različitih
dizajn domena, kakvi su sistemi za rad u realnom vremenu i behavioral sinteza ASIC čipova.

9.7.2 Strukturni dijagram


Modul strukturnog dijagrama je jedan drugi oblik heterogenog modela, projektovan da
specificira podatke, aktivnosti, i upravljačke pristupe sistema preko jedne jedinstvene prezentacije.
Njegov sveobuhvatni karakter je koristan za projektante koji uglavnom koriste programe.
U osnovi strukturni dijagram se sastoji od skupa čvorova, koji predstavljaju aktivnosti, i skupa
potega, koji predstavljaju procedurne ili funkcijske pozive u programskom jeziku. Podaci koji se
prenose između aktivnosti naznačeni su na potezima. Aktivnosti koje su vezane za upravljanjem
izvršenja opisuju se pomoću skupa upravljačkih struktura uključujući grananje, iteracija i poziv
potprograma.
Grafički, sve ove aktivnosti sistema predstavljaju se pravougaonicima, dok sve razmene
podataka između ovih aktivnosti predstavljaju se pomoću označenih potega. Strukturni dijagrami
specificiraju takođe da pozivi procedura između aktivnosti treba da se predstave pomoću potega,
dok konstrukcije tipa grananje treba da se naznače pomoću simbola romb a konstrukcije tipa
iteracija treba da se prikažu pomoću self-looping (povratnih u sebe) potega.

190
Slika 9.15: Primer strukturnog dijagrama

Na slici 9.15 prikazan je primer strukturnog dijagrama. U zavisnosti od sekvence aktivosti,


omogućava se da modul Main prvo poziva modul Get da bi dobio podatke A i B. U tom trenutku,
Get pozvaće Get_A i Get_B jedan za drugim. Modul Main će zatim predati podatke A i B modulu
Transform, koji će zatim pozvati Change_A da bi transformisao A u A’, ili pozvati modul Change_B
da bi transformisao B u B’, u zavisnosti od vrednosti određenih uslova. Nakon dobijanja A’ i B’ iz
Transform, modul Main predće podatke modulu Compute, koji će zatim pozvati dva iterativna
modula, Loop1 i Loop2. Kada oba modula završe svoje zadatke, Compute će vratiti podatke C i D
modulu Main, koji će zatim predati podatak C modulu Out_C.
Kao što je bio slučaj sa CDFG-om, i strukturni dijagram može da predstavi informaciju koja se
odnosi na upravljanje i tok podataka. Ipak, treba naglasiti da strukturni dijagram u potpunosti ne
specificira sekvencu izvršenja. Tako na primer, ne zna se redosled po kome će se Get_A i Get_B
pozivati, jer je redosled izvršenja ovih modula ograničen samo zavisnošću po podacima. Sa druge
strane, model strukturnog dijagrama prikazuje konstrukcije koje mogu da predstave uslove
grananja, iteracija i proceduralnih poziva između modula. Imajući u vidu da ovaj model može da
specificira u određenom iznosu redosled izvršenja, za strukturne dijagrame kažemo da se uglavnom
koriste kao preliminarni koraci kod projektovanja sekvencijalnih programa.

9.7.3 Paradigme programskih jezika


Na sličan način kao i strukturni dijagram programski jezici obezbeđuju heterogene modele koji
podržavaju modele podataka, modele aktivnosti i modele upravljanja. Nasuprot strukturnom
dijagramu programski jezici koriste tekstualni a ne grafički način predstavljanja.
Postoje dva glavna tipa programskih jezika: imperativni i deklarativni. Imperativnu klasu čine
jezici kakvi su C i Pascal, koji koriste control-driven model izvršenja, i kod kojih se iskazi
izvršavaju po redosledu kako su u programu specificirani. Lisp i Prolog, nasuprot tome, su primeri
deklarativnih jezika pošto oni modeliraju izvršenje pomoću demand-driven ili pattern-driven
izrašunavanja. Ključna razlika pri ovom je da deklarativni jezici ne specificiraju eksplicitni jezik
izvršenja fokusirajući se pri tome na cilj izračunavanja koristeći se skupom funkcija ili logičkih
pravila.
Sa spekta modeliranja podataka, imperativni programski jezici podsećaju na Džeksonov
dijagram po tome što oni poseduju različite strukture podataka. Ove strukture podataka sadrže na
primer, osnovne tipove podataka, kakve su integer i real, kao i kompozitne tipove podataka kakva
su polja i zapisi. Programski jezik treba da modelira “male” aktivnosti pomoću iskaza, a “velike”
aktivnosti pomoću funkcija ili procedura, koje se takođe mogu koristiti kao mehanizam za podršku
hijerarhije u okviru sistema. Ovi programski jezici mogu takođe modelirati tokove programskog
upravljanja, koristeći upravljačke konstrukcije specificranjem redosled u kome se aktivnosti
obavljaju. Upravljačke konstrukcije mogu da sadrže sekvencijalne kompozicije (često označene
pomoću “;”), grananje (if i case iskazi), petlje (while, for i repeat), kao i pozivi potprograma.
191
Prednost korišćenja imperativnog programskog jezika se sastoji u tome što ova paradigma je
veoma pogodna za modeliranje računsko dominantnog ponašanja, kod koga se određeni problemi
rešavaju pomoću algoritma, kao na primer u slučaju kada treba da sortiramo skup memorisanih
brojeva u polju.
Veći broj programskih jezika, kakvi su CSP, Ada, i VHDL(Verilog) su razvijeni sa ciljem da
podrže konkurentno izvršenje. Ovi jezici koriste različite komunikacione mehanizme. Kod CSP-a,
na primer, komunikacija između konkurentnih procesa se ostvaruje pomoću prenosa poruka, gde se
podatak od jednog procesa šalje preko kanala drugom procesu. Kod Ade, sa druge strane,
konkurentni zadaci komuniciraju pomoću Randevu-a, pri čemu svaki zadatak treba da čeka u nekoj
tački sinhronizacije kada treba da dobije podatak od drugog zadatka. Kod VHDL-a konkurentni
procesi komuniciraju preko deljive memorije, pri čemu globalni signali se mogu čitati i postavljati
od strane različitih procesa.
Glavni problem sa programskim jezicima je u tome što i pored toga što su veoma povoljni za
modeliranje podataka, aktivnosti, i upravljačkih mehanizama sistema, oni ne modeliraju eksplicitno
stanje sistema što predstavlja i glavni nedostatak kod modeliranja embedded sistema.

9.7.4 Objektno orjentisani model


Objektno orjentisani model evoluirao je od data orjentisanog modela a karakteriše se time što
sistem treba posmatrati kao skup objekata. Kod ovog modela svaki objekat se sastoji od skupa
podataka i skupa operacija za transformisanje tih podataka. U određenom smislu, objektno
orjentisani modeli slični su sistemima iz realnog života koji čine celinu, s obzirom da svaku celinu u
sistemu obično čini skup definisanih operacija pomoću kojih ona interaguje sa drugim celinama i
pruža bilo kakve usluge ostalim celinama.
Objektno orjentisani modeli imaju nekoliko karakteristika koje ne srećemo kod drugih modela.
Prvo, oni su u stanju da podrže apstrakciju podataka ili sakrivanje informacije inkapsuliranjem
podataka u okviru objekta čime se podaci čine nevidljivim drugim objektima. Ova mogućnost znači
da kada jedan objekat želi da razmeni podatak sa drugim objektom, prvi mora da zahteva
opsluživanje od drugog. Zbog ovog zahteva, interna razmena u jednom objektu neće uticati na
druge objekte sistema. Pored toga objektno orjentisani model je takođe u stanju da predstavi
konkurentnost na prirodni način, jer bilo koji objekat koji je kreiran kao deo sistema produžava da
koegzistira sa drugim objektima u toku njegovog vremena života, izvršavajući svoje zadatke
nezavisno od drugih objekata.
Na slici 9.16 vidi se, da pored svojih objekata, sistem može da sadrži i skup transformacija koje
se koriste da definišu ponašanje sistema u toku vremena. Kao što smo prethodno napomenuli ove
transformacije ne mogu da promene direktno podatke ali mogu da zahtevaju od svakog objekta da
obave pojedine operacije koje bi se odnosile na razmenu podataka.
Prosto kazano, objektno orjentisani model ima veći broj prednosti. No nezavisno od toga,
sistemski projektanti često puta dolaze do zaključka da kod sistema kod kojih su neophodne
sofisticiranije transformacione funkcije, ovaj model ne daje zadovoljavajuće rezultate, osim ako se
ne kombinuje sa nekim drugim modelima pomoću koji se na adekvatan način mogu predstaviti ove
transformacije.

192
Slika 9.16: Sistem sa objektnim i transformacionim funkcijama

9.7.5 Program-state mašina (PSM)


PSM je jedna druga instanca heterogenog modela koja integriše HCFSM sa paradigmom
programskog jezika. Ovaj model u suštini čini hijerahiju programskih stanja, kod koje svako
programsko stanje odgovara različitom načinu izračunavanja. U datom trenutku aktivan je samo
podskup programskih stanja tj. stanja koja izvode izračunavanja.
U okviru hijerarhije, model se sastoji kako od kompozitnih tako i programskih stanja tipa list.
Programsko stanje kompozit je ono koje se može dalje dekomponovati kako na konkurentna tako i
na sekvencionalna programska stanja. Kada su ona konkurentna, sva programska podstanja biće
aktivna uvek kada je programsko stanje aktivno, a kada su sekvencijalna, programska podstanja su
aktivna samo u datom trenutku kada je aktivno to programsko stanje. Sekvencionalno
dekomponovano programsko stanje sadrži skup potega prelaza, koji odgovaraju sekvenciranju
između programskih podstanja. Postoje dva tipa tranzicionih potega. Prvi je transition-on-
completion arc (TOC) koji će se izvršiti samo kada je izvorno programsko podstanje završilo svoje
izračunavanje a odgovarajuća procena uslova nakon izvršenja programskog podstanja ukazuje da je
uslov ispunjen. U drugom slučaju transition-immediately arc (TI) izvršiće se neposredno kad god
uslovni poteg postaje istinit nezavisno od toga da li je izvorno programsko podstanje izvršilo svoje
izračunavanje. Konačno, na dnu hijerahije postoje programska stanja tipa list čija se izračunavanja
opisuju pomoću iskaza programskih jezika.
Kada koristimo program-state mašinu kao model sistem kao celina biće grafički predstavljen
pomoću pravougaonika, dok programska stanja u okviru celine biće predstavljena pomoću
zaobljenih pravougaonika. Konkuretni odnos između programskih podstanja se naznačava
isprekidanom linijom između tih stanja. Tranzicije se predstavljaju usmerenim strelicama. Početno
stanje se označava trouglom, a završetak individualnih programskih stanja se naznačuje
tranzicionim potegom koji ukazuje na tačku završetka, predstavljenu kao mali kvadrat u okviru
stanja. TOC potezi su oni koji polaze od kvadrata unutar izvornog podstanja dok TI potezi polaze
od ivica izvornog podstanja.

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.

9.7.6 Model čekanja


Model čekanja je u izvesnom smislu različit od modela prethodno opisanih u tom pogledu što
se oni uglavnom koriste za projektovanje sistema, dok se model čekanja koristi za analizu sistema,
kao na primer kada želimo da odredimo performanse ili uska grla resursa u sistemu.

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.

9.8 Arhitekturne taksonomije

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.

9.9 Aplikaciono specifične arhitekture

9.9.1 Kontroler arhitekture


Najjednostavnija aplikaciono specifična arhitektura je kontroler, koji predstavlja direktna
implementacija FSM modela definisan pomoću petorke < S, I, O, f, h >. Kontroler čini registar i dva
kombinaciona bloka vidi sliku 2.20. Registar, obično nazvan State register je namenjen za
memorisanje stanja u S, dok oba kombinaciona bloka, nazvana Next-state function i Output
function, implementiraju funkcije f i h. Inputs i Outputs su reprezentacije Bool-ovih signala koji su
definisani skupovima I i O.

Slika 9.19: Opšti blok dijagrama FSM-a

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.

9.9.2 Datapath arhitekture


Datapath arhitekture se koriste kod velikog broja aplikacija gde se fiksno izračunavanje mora
repetitivno obavljati nad različitim skupovima podataka. Konkretnije, kod DSP sistema kakvi su oni
koji se odnose na digitalno filtriranje, procesiranje slike, i video kompresiju. Datapath arhitektura se
često sastoji od veoma brzih aritmetičkih jedinica, koje su paraleleno povezane, i koje koriste
protočnu obradu kako bi postigli visoku propusnost. Na slici 9.20 prikazana su dva tipa Datapath
arhitektura, pri čemu su obe projektovane za impelementaciju FIR filtara, čiji se rad može definisati
jednačinom

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.

9.9.3 FSM sa datapath


FSM sa datapath (FSMD) je tip arhitekture koji kombinuje FSM kontroler sa datapath-om,
kako je to prikazano na blok dijagramu slika 9.21. Napomenimo da control unit sadrži State register
i dva kombinaciona bloka, koji predstavljaju Next state function i Output function. Sama datapath
sadrži funkcionalne jedinice kakve su: ALU-ovi, množači, pomerački registri, memorijske
komponente kakve su registri i memorija, kao i selektori i magistrale tako projektovane da povežu
sve ove različite komponente. Ulazi u control unit su Status signali datapath-a, a izlazi su Control
signali za upravaljanje radom funkcionalnih i memorijskih komponenata datapath-a. Datapath
inputs i Datapath outputs su povezani na jednu ili veći broj memorija preko kojih se dobavljaju
podaci za izračunavanje o Datapath-u kao i memorisanje dobijenih rezultata.

Slika 9.21: Opšti blok dijagram FSMD-a

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

Specifikaciju sistema čine fukcionalni objekti kakvi su behaviors, promenljive (variables), i


komunikacioni kanali. U toku projektovanja sistema projektanti grupišu funkcionalne objekte u
skup sistemskih komponenata kakvi su procesori, ASIC-kola, memorije, i magistrale. Ažuriranje
specifikacije, sa ciljem da odrazi transformaciju funkcionalnih objekata u sistemske komponente,
naziva se razrada specifikacije (specification refinement).
Razrada specifikacije je važan korak u fazi projektovanja sistema iz nekoliko razloga. Prvo,
razrada čini specifikaciju konzistentnu u odnosu na sve aspekte ažuriranja kai i odluke grupisanja
koje se donose u toku particije sistema. Na primer, kada se promenljive grupišu radi dodeljivanja
jedinstvenoj memoriji, potrebno je obaviti deklarisanje i referenciranje ovih promenljivih. Drugo,
razrada će učiniti specifikaciju pogodnom za simulaciju, čime se omogučava projektantu da
verifikuje funkcionalnu korektnost dizajna. Konačno, generisana razrađena specifikacija koristi se
kao ulaz za verifikaciju, sintezu, i kompilaciona stredstva pomoću kojih se može slediti
projektovanje sistema.

10.2 Razrada promenljivih i grupisanje

U fazi razrade specifikacije sistema memorija u koju se preslikava grupa promenljivih se


modelira kao polje odgovarajuće veličine i bit-obima. Dva ključna zadatka koja se tiću razrade
specifikacije, a obavljaju se u toku grupisanja su:
a) usklađivanje promenljivih (variable folding)
b) prevođenje memorijske adrese (memory address translation)

10.2.1 Usklađivanje promenljivih


Sistemskom particijom preslikava se grupa promenljivih koji se alociraju memoriji, pri čemu
memorija ima fiksiran broj kako reči tako i obim reči. Različite promenljive mogu imati različit
obim (tj, broj bitova). Usklađivanje promenljivih se odnosi na dodeljivanje bitova koji pripadaju
promenljivoj bitovima reči koje pripadaju memoriji.

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)).

10.2.2 Prevođenje memorijske adrese


Dodeljivanje adresa promenlivima koje se preslikavaju u memoriji kao i modifikacija svih
obraćanja ovim promenljivim definisanih u specifikaciji naziva se prevođenje memorijske adrese
(memory address translation).
Da bi dodelili memorijske adrese, promenljive možemo sagledati u bilo kakvom redosledu
(uređenju). Neka je recimo data skalarna promenljiva V koja pripada grupi promenljivih koje su
predstavljene vektorom MEM, i neka je u okviru MEM promenljivoj V dodeljena adresa 30. Sva
obraćanja promenljivoj V u specifikaciji, se zamenjuju sa MEM(30).
Ako se sada vektor promenljiva grupiše sa drugim promenljivim, u fazi definisanja adresa toj
promenljivoj, adrese koje indeksiraju promenljivu moraju se ažurirati. Na primer, za vektor
promenljivu V(63 downto 0) koja je u MEM-u dodeljena adresama od 100 do 163, moramo voditi
računa o nekoliko stavki u trenutku dok vršimo obraćanje promenljivoj V.

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

10.3 Razrada kanala

Konkurentna ponašanja u specifikaciji međusobno komuniciraju slanjem poruka preko


abstraktnih komunikacionih kanala. Da bi minimizirali cenu međusobnog povezivanja, kanali u
sistemu se grupišu na takav način da se svaka grupa kanala implementira pomuću zajedničkog
fizičkog medijuma koji se naziva magistrala. Magistrala (bus) se sastoji od skupa žica (veza) preko
kojih se uz pomoć protokola magistrale ostvaruje aktuelni prenos podataka. Zadatak generisanja
magistrala i odgovarajućih protokola za svaku grupu kanala se naziva razrada-interfejsa (interface
refinement). U nastavku ovog teksta opisaćemo metode za razradu-interfejsa. Termin behavior,

201
koga ćemo u daljem delu ovog teksta sretati, odnosiće se na skup konkurentnih ponašanja, nazvanih
proces.

10.3.1 Karaktrerizacija kanala i magistrala


Kod bilo kog kanala, samo jedan master (master behavior - Mbh) inicira i upravlja prenosom
podataka, dok jedan ili veći broj sluga (slave behaviors - Sbh) se odazivaju na komunikaciju
iniciranu od strane Mbh-a. Ako Mbh predaje/prima podatke preko kanala, tada smer koji odgovara
kanalu je upis/čitanje. Kanali su obično jednosmerni, što ukazuje da, ako jedan behavior opis čita i
upisuje promenljivu iz/u drugi behavior opis, tada su potrebni različiti kanali kako bi se preneli
podaci u svakom od smerova.
Kanali se karakterišu pomoću sledeća četiri parametra:

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:

a) obim-magistrale (buswidth), buswidth(B), odgovara broju linija podataka magistrale B


pomoću kojih se prenose podaci između behavior-a.
b) svaku magistralu prati odgovarajući protokol koji definiše tačnu sekvencu operacija koja
implementira prenos poruke preko skupa linija za podatke. protokol-kašnjenje (protocol
delay), protdelay(B), odgovara ukupnom kašnjenju protokola koji se koristi za prenos jedne
poruke po magistrali.
c) prosečna-brzina-prenosa-magistrale (average bus rate), avgrate(B), predstavlja brzinu
prenosa sa kojom se podaci prenose po magistrali u toku ukupnog vremena života sistema.
d) vršna-brzina-prenosa-magistrale (peak bus rate), peakrate(B), odgovara maksimalnoj
brzini kojom se podaci mogu prenositi po magistrali. Između vršne-brzine-prenosa i obima-
magistrale postoji sledeći odnos

buswidth( B)
peakrate( B) = (10.1)
protdelay( B)

10.3.2 Definicija problema


Za datu grupu abstraktnih komunikacionih kanala, razrada interfejsa se odnosi na određivanje
obima-magistrale i protokola-magistrale koji će implementitati te kanale. Razrada-interfejsa
određena je od strane dva najčešće konfliktna cilja. Prvo, razrada-interfejsa pokušava da minimizira
cenu međusobnog povezivanja između sistemskih komponenata koji koriste magistralu, putem
redukcije buswidth(B)-a. Kao drugo, težnja je da se maksimiziraju komunikacione performanse
magistrale putem povećanje peakrate(B), a saglasno tome i povećaju buswidth(B)-i.
Razrada interfejsa čine sledeća dva zadatka: generisanje-magistrale, i generisanje-protokola. Za
zadati skup ograničenja, generisanje-magistrale (bus generation) određuje obim magistrale koji će
implementirati grupu kanala. Nakon izbora magistrale, generisanje- protokola (protocol
202
generation) izabira i generiše komunikacioni protokol koji će u suštini implementirati željeni
prenos podataka preko magistrale. U daljem tekstu ukazaćemo na ova dva problema izdvijeno.

10.3.3 Generisanje magistrale


Jedno jednostavno rešenje generisanja obima-magistrale predstavlja slučaj kod koga se po svim
kanalima u grupi prenose poruke istog obima. Kod ovakvog slučaja, kanali su uređeni tako da se svi
kanali u bilo kojoj grupi, u toku vremena, isključivo koriste za komunikaciju između dva ista
behavior-a. Shodno tome, svaka kanalna grupa se implementira tako da je obim-magistrale
identičan obimu kanala.
U opštem slučaju, behavior-i koji komuniciraju preko kanala, koji su grupisani zajedno, mogu
simultano hteti da prenose podatke preko deljivog fizičkog medijuma. Pored toga, različiti kanali
mogu između različitih behavior-a prenositi poruke različitog obima. Ovakav scenario je prikazan
na slici 10.3. Behavior-i P, Q, R i S komuniciraju preko kanala X, Y i Z koji su grupisani u fazi
particije sistema kako bi se prenos implementirao jedinstvenom magistralom B. Sva tri kanala
prenose, preko magistrale, podatke različitih obima- 8; 16 i 12 bitova-, respektivno. Pored toga, P
može da zahteva prenos podataka ka R u istom trenutku kada behavior Q treba da šalje podatke
behavior-u S.

Slika 10.3: Tipična magistrala formirana objedinjavanjem kanala koji između nekoliko behavior-a
prenose podatke različitih po obimu

Određivanje brzine prenosa po magistrali


Posmatrajmo dva kanala X i Y, koji prenose 8- i 16-bitne poruke, respektivno (vidi sliku 10.4).
Broj bitova koji prati svaki prenos poruke naznačen (obeležen) je iznad poruke. Radi
pojednostavljenja, usvojimo da vremenski period od 4 s (vidi sliku 10.4) odgovara vremenu-života
behavior-a koji komuniciraju preko kanala X i Y. Prosečne brzine prenosa kanala X i Y su 4 i 12
bps-a, respektivno. Ako su kanali X i Y objedinjeni u jedinstvenu magistralu B, tada magistrala
mora biti u stanju da prenosi podatke brzinom koja nije manja od 16 bps-a, kako bi se zadovoljili
zahtevi za prenos podataka po oba kanala. Prenos individualnih poruka preko kanala je obeležen na
slici 10.4 kako bi se lakše uočio njihov prenos preko deljive magistrale. Uočimo sada poruku
označenu sa Y2 koja se prenosi po magistrali B počev od trenutka t=1,5s. I pored toga što prenos
individualnih poruka može biti zakašnjen, zbog konfliktnih pristupa po magistrali, ukupan broj
bitova koji se prenosi po individualnoim kanalima pre objedinjavanja kanala mora ostati isti kao i
broj bitova koji se šalje po deljivoj magistrali za isti vremenski period.
Kod sinteze magistrale B (vidi sliku 10.4) treba imati u vidu činjenicu da individualni kanali neće
biti celo vreme zauzeti prenosom podataka. Vremensko-pasivni kanalni slotovi koriste se za prenos
podataka drugih kanala, sintetizujući magistralu tako da se prenos podataka vrši kontinualno uz
konstantnu brzinu.

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:

peakrate( B) = avgrate( B) (10.3)

Ograničenje kod generisanja magistrale


Za dati skup kanala koji je grupisan sa ciljem da se implementira kao jedinstvena magistrala,
moguće je specificirati ograničenja i relativne težine za nekoliko parametara magistrale i kanala.
Ograničenje koje se odnosi na minimalni / maksimalni obim-magistrale (buswidth) se može izvesti
na osnovu ograničenja za ukupnim brojem pinova koji su specificirani kod modula ili čipova preko
kojih behavior-i komuniciraju uz pomoć magistrale.
Prosečnu-brzinu-prenosa-kanala (channel average rate) je takođe moguće ograničiti i
obezbediti da behavior-i nisu mnogo usporeni zbog postojanja komunikacionih kašnjenja duž
magistrale. Za zadata ograničenja, koja se odnose na vreme izvršenja bahavior-a koji komuniciraju
preko nekoliko kanala, projektant može da dodeli ili odredi iznos potrebnog vremena za
komuniciranje preko različitih kanala, na osnovu čega se može izvesti ograničenje o minimalnoj
prosečnoj brzini. Maksimalna prosečna brzina kanala se može specificirati u slučajevima kada se
jedan od behavior-a koji komunicira preko kanala je u suštini spor uređaj koji nije u stanju da prima
i predaje podatke brzinom koja je veća od određene.
U određenim slučajevima, vršnu-brzinu-kanala (channel peak rate) je moguće specificirati
kako bi se obezbedilo da prenos jedne poruke preko kanala ne traje mnogo dugo. Na primer,
posmatrajmo kanal X na slici 10.5 (a), koji prenosi 16-bitnu poruku u svakom od prva dva
vremenska slota, t = 0 i t = 1. Ostala dva vremenska slota se koriste za obavljanje internih
izračunsavanja od strane behavior-a koji komunicira preko kanala X. Ako implementiramo kanal
kao magistralu, na osnovu jednačine (10.2), tada prosečna brzina prenosa biće 8 bps-a, što rezultira

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

peakrate( B) > peakrate(C ) (10.4)

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

Algoritam za određivanje obima-magistrale


Analiziraćemo sada strukturu algoritma za određivanje obima magistrale. Algoritam polazi od
pretpostavke da su linije za prenos podataka i upravljačkih signala raznorodne. To znači da u
datom trenutku, samo jedan kanal može da prenosi podatke po magistrali. Ako je obim magistrale
veći od broja bitova adrese i podataka, tada se adresni bitovi kao i bitovi podataka simultano
predaju preko magistrale, inače, oba tipa bitova se šalju izdvojeno u dva različita prenosa. U
zadnjem slučaju, adresne bitove je potrebno lečovati na strani behavior-a. Kada je obim magistrale
manji od obima poruke koja se predaje, tada se poruka predaje u više navrata (veći broj prenosa, tj.
više puta).
Za sve behavior-e koji komuniciraju preko jednog od kanala sa magistrale, kažemo da koriste
sinhronu implementaciju. Na ovaj način, za prenos poruke preko magistrale potreban je celobrojni
(integer) umnožak taktnih impulsa. Varijabli kojoj se pristupa preko magistrale modeliramo kao
poseban behavior, koji predaje i prima svoju vrednost preko magistrale kao odziv na zahtev upućen
od strane drugih behavior-a. Na ovaj način, dok određujemo vreme izvršenja master-behavior-a
koji pristupa promenljivoj preko magistrale, za behavior-sluga (slave) koji modelira tu promenljivu
kažemo da je uvek spreman za prenos podataka, tj. ne postoje sinhronizaciona kašnjenja koja se
javljaju zbog pristupa promenljivoj preko magistrale.
Ulaz u algoritam za generisanje obima-magistrale čini:
a) skup kanala koji se implementiraju na jedinstvenu magistralu;
b) ograničenja koja se odnose na brzinu prenosa podataka po kanalu;
c) obim-magistrale
205
Izlaz algoritma predstavlja širina magistrale koja implementira tu grupu kanala.
Algoritam za generisanje obima-magistrale ispituje opseg potencijalnih vrednosti za obim-
magistrale. Za svaki obim-magistrale izračunava se vršna brzina prenosa kao i individualne brzine
prenosa po kanalu. Kod sinteze magistrale koja obavlja konstantni prenos podataka, na osnovu
jednačina (10.2) i avgrate( B) ≥ ∑ avgrate(C ) (10.2)(10.3), zahteva se da vršna brzina prenosa
C∈B
bude veća od sume prosečnih brzina kanala. Svaki obim-magistrale, za koji važi pomenuti uslov,
moguće je implementirati. Iz skupa ostvarljivih implementacija magistrale, bira se ona čija je cena
najniža. U slučaju kada se ne specificiraju ograničenja, za prenos podataka se bira serijska
magistrala. Za generisanje obima-magistrale uobičajeno se koristi algoritam 10-1.

Algoritam 10-1: Generisanja obima magistrale

Kao prvo, određuje se opseg obima-magistrale. Najveći obim-magistrale, maxwidth, odgovara


najvećem obimu (size) poruke koja se prenosi po bilo kom kanalu. Najmanji obim-magistrale,
minwidth, je 1.
206
Promenljiva currwidth predstavlja tekući obim-magistrale kiji se procenjuje od strane
algoritma. Za svaku vrednost currwidth, na osnovu jednačine (10.1), izračunava se vršna brzina
prenosa koja se nalazi u opsegu (minwidth, maxwidth).
Da bi procenili prosečnu brzinu prenosa uvešćemo sledeće pojednostavljenje: Usvojićemo da
behavior P ima samo jedan kanal C preko koga se prenose poruke. U slučaju kada je tekući obim-
magistrale manji od broja bitova u poruci potreban za implementaciju jedinstvenog prenosa poruke,
⎡ bits (C ) ⎤
tada je potrebno obaviti nekoliko prenosa ( ⎢ ). Komunikaciono vreme za behavior P se
⎢ currwidth ⎥⎥
izračunava na slrdeći način:

⎡ bits (C ) ⎤
commtime( P) = access( P, C ) × ( ⎢ × protdelay( B)) (10.5)
⎢ currwidth ⎥⎥

Koristeći izračunatu vrednost za commtime(P) moguće je odrediti prosečnu brzinu prenosa po


kanalu C na osnovu sledeće relacije

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

Na osnovu dobijene vrednosti za commtime(P) moguće je proceniti prosečnu brzinu prenosa za


svaki kanal koji se preslikava na magistralu. Zbir prosečnih brzina kanala za specifičnu vrednost
currwidth smešta se u avgratesum.
Ako je vršna brzina prenosa po magistrali, koja se predstavlja kao peakrate(B), manja od sume
prosečnih brzina svih kanala, tada currwidth predstavlja neizvodljivu implementaciju za tu
magistralu. U daljem toku rada postupka ponavlja se izračunavanje za vršnu brzinu prenosa po
magistrali koja se odnosi na vrzinu kanala za naredni veći obim-magistrale u opsegu (minwidth,
maxwidth).
Ako je vršna brzina prenosa veća od sume individualnih brzina prenosa po kanalu, tada
currwidth predstavlja izvodljivu implementaciju magistrale. Za bilo koja ograničenja koja se odnose
na obim-magistrale, kao i specificirana prosečna izvršna brzina prenosa podataka po magistrali,
procedura ComputeCost izračunava cenu izvodljive implementacije magistrale kao sumu kvadrata
bilo kog narušenog ograničenja ponderisanog relativnom težinom specificiranu za to ograničenje.
Primera radi, usvojimo da jedino ograničenje koje se specificira predstavlja maksimalni obim-
magistrale, a ono je specificirano preko maxwires. Neka k predstavla relativnu težinu specificiranu
ovim ograničenjem. Za bilo koju vrednost obima-magistrale, currwidth, cenu funkcije za magistralu
treba definisati kao

⎧(k × (currwidth − max wires )) 2 currwidth > max wires


cos t = ⎨ (10.7)
⎩0 otherwise

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.

Primer generisanja obima magistrale


Ilustriraćemo algoritam za generisanje obima magistrale, razmatrajući temperaturni kontroler.
Kontroler ima dva ulaza preko kojih „oseća” temperaturu i vlažnost u sobi a na osnovu toga
evaluira skup od četiri pravila za upravljanje radom erkondišn sistema. Particioniranje sistema
preslikava ponašanja promenljivih na dva različita tipa sistemskih komponenata, kreirajući nekoliko
kanala između njih. Dva ponašanja P1 i P2, kontrolera temperature pristupaju polju promenljivih,
V1 i V2, respektivno preko komunikacionih kanala ch1 i ch2, koji su zajedno grupisani sa ciljem da
implementiraju jedinstvenu magistralu, B. Slika 10.6 prikazuje listu kanalnih bitova, vremena
izračunavanja i broj kanalnih pristupa za ova dva kanala kod temperaturnog kontrolera. U cilju
pojednostavljenja, sva vremena izvršenja i brzine prenosa podataka su izražena u funkciji
upravljačkih koraka. Algoritam za generisanje obima magistrale se može sada koristiti sa ciljem da
odredi obim magistrale kod magistrale koja se formira objedinjavanjem ova dva kanala. Usvojimo
da je jedino ograničenje specificirano za implementaciju magistrale ono koje se odnosi na
minimalnu vršnu brzinu prenosa od 10 bitova po taktnom intervalu za kanal ch2 sa relativnom
težinom 10.

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

Odredićemo brzine prenosa za magistralu i kanal za currwidth = 18. Usvojićemo da se koristi


full-handshake protokol kod implementacije magistrale i da je odgovarajuće protokol kašnjenje
jednako dva taktna intervala, t.j., protdelay(B) = 2 takta. U saglasnosti sa jednačinom (10.1) važi:

peakrate(B) = 18 ÷ (2) = 9 bita/taktu.

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

cos t = (10 × (10 − 9)) 2 = 100

209
Slika 10.8: Temperaturni kontroler: vreme izvršenja u odnosu na obim magistrale

Ponavljajući prethodna izračunavanja za druge vrednosti obima magistrale u opsegu od <1,23>,


izvodi se graf tipa cena u odnosu na obim magistrale, kako je to prikazano na slici 10.7. U
saglasnosti sa grafom, minimalna cena je nula što se javlja ako je obim magistrale 20. Ovaj obim
magistrale se bira za implementaciju magistrale koju čine kanali ch1 i ch2.
Slika 10.8 prikazuje kako performanse oba ponašanja, P1 i P2, koja prenose podatke preko
magistrale B imaju uticaj na različite obime magistrale koje se mogu koristiti za implementaciju
magistrale. Za svaki obim magistrale, estimator performansi je bio korišćen da bi se dobilo vreme
izvršenja tog ponašanja. Konkretno, kako se obim magistrale povećava, vreme izvršenja ponašanja
se smanjuje. Za određena performansa ograničenja ovih ponašanja, projektant može da selektuje
odgovarajući obim za implementaciju magistrale. Na primer, usvojimo da ponašanje P2 ima
ograničenje koje se odnosi na maksimalno vreme izvršenja od 2500 taktnih intervala, kako je to
prikazano isprekidanom linijom na slici 10.8. Sa mesta gde ova linija preseca graf za P2, mi
možemo zaključiti da samo obim magistrale veći od 4 bita treba razmatrati kada treba
implementirati magistralu.

10.3.4 Generisanje protokola


Nakon što je izabran odgovarajući obim magistrale kojim se implementira kanalna grupa,
generisanje protokola definiše egzaktni mehanizam za prenos podataka po magistrali. Magistrala se
sastoji od tri skupa veza.
Data linije koriste se za prenos podataka po magistrali. Broj linija podataka (tj. propusnost)
koji je potreban može se odrediti shodno algoritmu koji generiše obim magistrale, ili se može
specificirati od strane sistemskog projektanta.
Control linije su neophodne za sinhronizaciju behavior-a koji komuniciraju preko magistrale.
Broj potrebnih kontrolnih linija zavisi od tipa izabranog protokola koji implementira prenose
podataka. Na primer, standardi handshake protokol iziskuje dva kontrolna signala, START i
DONE. Signal START se setuje/resetuje od strane master behavior-a, dok DONE se setuje/resetuje
od strane slave behavior-a koji je povezan na taj kanal. Skup upravljačkih linija je deljiv za sve
kanale koji su mapirani na istoj magistrali.
Identification ili mode linije su potrebne radi identifikacije pojedinog kanala preko kog se
prenose podaci preko magistrale ka bilo kojoj tački u datom trenutku. S obzirom da su kontrolne
linije magistrale deljive za sve kanale ovakve identifikacione (ID) linije su esencijalne jer
obezbeđuju behavioral-ima da prepoznaju kada upravljački signali koji se prenose preko magistrale
prenose informaciju koja je upućena njima. Svakom kanalu na magistrali se dodeljuje jedinstveni
ID, koji se koristi kao njegova adresa. Svakog trenutka kada master behavior inicira prenos
podataka preko magistrale, on postavlja odgovarajući ID relevantnog kanala na ID linijama
magistrale tako da će se samo odgovarajući slave behavior odazvati na ove kontrolne signale. ID

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.

Slika 10.10: Definisanje magistrale B i send i receive protokola za kanal CH0

5. Generisanje procesa za promenljive: sa ciljem da se dobije sistemska specifikacija u vidu


simulacione tabele, za svaku grupu promenljivih kojoj se pristupa preko kanala kreira se
poseban behavior. U okviru behavior-a uključeni su odgovarajući pozivi za send i receive
procedure koji odgovaraju zahtevanom pristupu toj promenljivoj preko magistrale. Na slici
10.9 promenljive X i MEM su dodeljene različitim sistemskim komponentama, što je prikazano
isprekidanim linijama. Na slici 10.11, za ove dve promenljive kreirani su behavior-i Xproc i
MEMproc.

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.

10.4 Rešavanje konflikta kod pristupa

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.

10.4.1 Modeli arbitraže


Resursi najčešće imaju veći broj portova za pristup i podržavaju ograničeni broj konkurentnih
pristupa. Primeri takvih resursa mogu biti multiportne memorije sa fiksnim brojem portova. Ako
broj behavior-a koji simultano pristupaju ovom resursu premašuje broj portova za pristup,
neophodno je da budemo u stanju da rešimo konflikt simultanih pristupa. Za ovu namenu
standardno se koriste sledeća dva standardna arbitražna modela – statička arbitraža i dinamička

213
arbitraža. Ovi modeli su ilustrovani sa primerom prikazanim na slici 10.12 kod koga behavior-i
pristupaju dvoportnoj memoriji.

Slika 10.12: Modeli arbitraže: (a) statička, i (b) dinamička

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.

10.4.2 Šeme za arbitražu


Kao što smo prethodno naglasili kada veći broj behavior-a pristupa deljivim resursima
pristupima se mora dodeliti prioritet. Arbitražna šema je rešenje koje određuje relativni prioritet i
rešava potencijalne konflikte kod pristupa. Arbitražne šeme se mogu klasifikovati kao one sa
fiksnim i one sa dinamičkim prioritetima. Analiziraćemo sada svaku od ovih šema.

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.

10.4.3 Generisanje arbitra


Nakon što smo izabrali arbitražnu šemu, pristupi od strane različitih behavior-a deljivim
resursima se mogu prioritizovati na osnovu arbitražne šeme. Nakon toga se generiše arbitar
behavior i on inkorporira u specifikaciji kako bi arbitrirao između konkurentnih pristupa. U ovoj
sekciji, ilustrovano je generisanje arbitra za slučaj kod koga se prioritizuju konkurentni pristupi od
strane behavior-a na bazi arbitražne šeme sa fiksnim prioritetom.
Arbitražni mehanizam za svaki deljivi resurs predstavljen je posebnim behavior-om
konkurentnim sa svim behavior pristupima tom resursu. Svaki pristup deljivom resursu u behavior-
u se modifikuje sa ciljem da se ugradi handshake mehanizam između behavior-a i arbitra. Kada
behavior zahteva pristup resursu on će generisati zahtev arbitru kojim se traži dozvola pristupa a to
izvodi aktiviranjem signala Req. Arbitar ispituje pristigle zahteve od nekoliko behavior-a i
dodeljuje pristup behavior-u sa najvišim prioritetom generišući odgovarajući Grant signal.

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

Arbitar behavior B_arbiter generisan za magistralu B je prikazan na slici 10.13. Odgovarajuće


dodele handshake signala (prikazani kao bold) kojim se zahteva pristup magistrali su insertovani u
master behavior-ima P i Q. Kada behavior-i P i Q treba da prenose podatke preko magistrale, oni
zahtevaju pristup magistrali aktiviranjem Req_P i Req_Q respektivno. Behavior B_arbiter
dodeljuje prava pristupa magistrali P aktiviranjem Grant_P. Q-u se dodeljuje pristup magistrali
samo kada P istovremeno ne zahteva pristup.

10.5 Razrada nekompatibilnih interfejsa

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.

Slika 10.14: Efekat povezivanja behavior-a sa standardnom komponentom urađenom po porudžbini

Pored situacija u kojima su behavior-i povezani na standardne komponente, u određenim


situacijama može biti potrebno da se ugradi i interfejs proces. Na primer, ograničenje broja pinova
kod dve sistemske komponente može da uzrokuje da broj pinova za podatke kod svake sistemske
komponente bude različit. Nejednak broj pinova za podatke može da dovede do postojanja
nekompatibilnih komunikacionih protokola. Interfejs proces je zbog toga neophodan da bi se
ostvarila sprega između ova dva protokola.

10.5.1 Definicija problema


Generisanje interfejs procesa je zadatak koji definiše interfejs proces između dva behvior-a koji
međusobno komuniciraju sa fiksnim ali nekompatibilnim protokolima. Cilj generisanja interfejs
procesa je da kreira interfejs proces koji će na odgovarajući način rešiti probleme koje se odnose na
generisanje upravljačkih signala oba protokola i sekvenciranje prenosa podataka između njih.
Drugim rečima, interfejs procesi prevode jedan protokol u drugi. Na primer, protokol jedne
komponente može da prenosi 16 bitne podatke istovremeno dok protokol druge komponente može
da prima samo 8 bitne podatke istovremeno. Interfejs proces će primiti 16 bitne podatke od prve
komponente i poslati ih drugoj komponenti u dva 8 bitna transfera. Drugi cilj generisanja interfejs
procesa je da se dobije razrađena specifikacija rada sistema.

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:

1. čekanje na događaj na ulaznoj kontrolnoj liniji


2. dodela vrednosti izlaznoj kontrolnoj liniji
3. čitanje vrednosti sa ulaznih linija za podatke
4. dodela vrednosti izlaznoj liniji za podatke
5. čekanje za fiksni vremenski interval

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:

6. pomoću konačnih automata


7. pomoću vremenskih dijagrama
8. HDL-ovima

Ukazaćemo na svaki od ovih pristupa pomoću primera prikazanog na slici 10.15.


Na slici 10.15 (a), dva behavior-a A i B mapirani su u standardne komponente. Behavior A čita
memoriju kapaciteta 64K x 16, modeliranu promenljivom MemVar u behavior-u B. Oba behavior-a
imaju fiksne protokole Pa i Pb. Protokol Pa ima 8 adresnih linija, 16 linija za podatke i 4
upravljačke linije, dok protokol Pb ima 16 adresnih linija, 16 linija za podatke i jednu upravljačku
liniju. Promenljive AddrVar i DataVar koje se koriste u protokolu Pa, i promenljiva MemVar koja
se koristi u protokolu Pb su lokalne za odgovarajuće behavior-e i prihvataju relevantne vrednosti
podataka koje su dodeljene (čitaju se sa) linijama za podatke. Na primer, promenljiva AddrVar u
protokolu Pa ima 16 bitnu adresu koja se tiče lokacije u memoriji kojoj se pristupa od strane master
behavior-a A. Za lakšu identifikaciju sva podimena su naznačena sufiksom „p“.
Slika 10.15 (b) prikazuje prezentaciju konačnog automata koji se odnosi na fiksne protokole Pa
i Pb, pridruženi behavior-ima A i B respektivno. Prelazi između stanja ukidaju se pojavom događaja
na bilo kom ulaznom signalu. Na primer, kod automata za Pa, pojavljivanje događaja na ARCVp, tj.
generisanje logičke „1“ uzrokuje prelaz iz stanja a2 u a3. Pri ovome u svakom stanju moguće je neke
vrednosti pročitati sa porta a neke vrednosti dodeliti portu. Na slici 10.15 (b) stanje a1 dodeljuje
vrednost adresnom portu ADDRp i upravljačkom portu ARDYp. Kašnjenja između sukcesivnih
događaja se mogu direktno specificirati kao uslov tranzicije, kao što je slučaj sa kašnjenjem od
100ns između stanja b2 i b3 u konačnom automatu za Pb. Drugi pristupi mogu koristiti specijalne
tajming poteze pomoću kojih se sagledavaju inter-događajna vremenska ograničenja između bilo
koja dva događaja u protoku.

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

Opisi protokola pomoću tajming dijagrama standardno se sreću u katalozima za


poluprovodničke komponente. Opis tajming dijagrama protokola za behavior-e A i B je prikazan na
slici 10.15 (c). Svaki port protokola ima odgovarajući talasni oblik u vremenskom dijagramu.
Vremenski redosled događaja se određuje na osnovu relativne pozicije tranzicija u tajming
dijagramu. Eksplicitni redosled se može specificirati korišćenjem usmerenih potega između ulaznih
događaja i izlaznih dodela. Na primer, kod tajming dijagrama za protokol Pa, usmereni poteg
obezbeđuje da DREQp je potvrđen samo nakon što je stanje na ulaznoj liniji ARCVp postalo „1“.
Kašnjenja između događaja se mogu specificirati kako je to priazano u tajming dijagramu za
protokol Pb, gde se kašnjenje od 100 ns specificira između usponske tranzicije na RDp i generisanja
podataka na izlazu kod DATAp.
Glavna prednost tajming dijagrama je jednostavnost sa kojom se protokol može sagledati u
funkciji relativnog rešavanja operacija protokola. Pored toga ovaj pristup obezbeđuje direktnu

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.

10.5.3 Generisanje interfejs procesa


Opisaćemo sada jednu tehniku za generisanje interfejs procesa. Ulazi za generisanje interfejs
procesa su HDL opisi dva fiksna protokola koji specificiraju detalje koji se odnose na broj
upravljačkih linija, broj linija za podatke i sekvencu prenosa podataka preko ovih linija. Izlaz je
HDL opis interfejs procesa i informacija koja se odnosi na prozivanje portova oba protokola.
Ilustrovaćemo generisanje interfejs procesa na primeru dva behavior-a, A i B prikazanih na slici
10.15 (a) koji su preslikani u standardne komponente. Oba behavior-a imaju fiksne protokole, Pa i
Pb, i HDL opise koji su prikazani na slici 10.15 (b).

Predstavljanje protokola kao uređene relacije


Prvi korak u generisanju interfejsa procesa odnosi se na predstavljanje svakog od ovih
protokola kao uređeni skup relacija. Relacija definiše skup dodela izlaznim upravljačkim linijama i
linijama za podatke, kao i čitanje vrednosti sa ulaznih linija za podatke, nakon što se pojavi
određeni događaj. Uslov može biti događaj na ulaznoj upravljačkoj liniji ili fiksno kašnjenje u
odnosu na neki prethodno definisan događaj.
Na slici 10.16 (a) prikazano je kako se može izvesti skup relacija na osnovu HDL opisa
protokola Pa. Prva dva iskaza dodele ne prethode bilo kakvom uslovu. Stoga, prva relacija,
označena A1 predstavlja po definiciji true uslov i dodele portovima ADDRp i ARDYp. Naredni iskaz
wait until (ARCVp = „1“) predstavlja uslov koji mora biti istinit pre nego što protokol može da
obavi bilo koju drugu operaciju. Druga relacija, označena kao A2, sastoji se od uslova (ARCVp =
„1“) i narednih dodela portu podataka ADDRp i upravljačkom portu DREQp. Konačno, treća
relacija, označena kao A3, čini uslov (DRDYp = „1“) i dodela vrednosti koja se čita sa porta
podataka DATAp promenljivoj DataVar.
Na sličan način, dve relacije su konstruisane za protokol Pb, kako je to prikazano na slici 10.16
(b). Prva relacija, B1, čini uslov RDp = „1“ i dodela internoj promenljivoj MaddrVar, koja čuva
vrednost adrese pročitane sa porta MADDRp. Kašnjenje od 100 ns koje se specificira pomoću wait
221
iskaza predstavlja uslov za narednu operaciju. Stoga, relacija B2 čini uslov kašnjenja od 100 ns iza
čega sledi dodela MDATAp.

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.

Relacije particionisanja u blokove


Interfejs proces se može generisati ako i samo ako podatak (tj. stavka podataka) određenog
obima se šalje od strane jednog behavior-a dok drugi behavior očekuje podataka identičnog obima.
Na primer, behavior A na slici 10.15 (a) predaje 16 - bitnu adresu dok behavior B očekuje 16-bitnu
adresu. Sve dok ukupni obim adrese koji se šalje od strane behavior-a A je identičan onom koji
očekuje behavior B, irelevantno je da behavior A šalje adresu u dva 8-bitna transfera dok behavior
B prime tu adresu kao jedinstveni blok od 16 bita. Na sličan način behavior B predaje 16-bitni
podataka pribavljen iz memorije, koji je identičan sa obimom podatka koji se očekuje od strane
behavior-a A. Nakon što smo izveli skup relacija za ova dva protokola, potrebno je da grupišemo
relacije u oba protokola u skup relacionih grupa. Relaciona grupa je uređeni podskup skupa relacija
koje predstavljaju prenos jediničnog podatka između dva behavior-a. Relacione grupe se kreiraju na
takav način da obim podatka generisan relacijama u grupi od jednog protokola je identičan sa onim
očekivanim od strane relacija u grupi od drugog protokola.
Na slici 10.16 (c) prikazano je kako se relacije oba protokola particionišu u relacione grupe.
Relacije oba protokola su izlistane sa brojem bitova koji se prenosi od strane svake operacije u
svakoj relaciji i uokvireni su u zagradama. Relacija B1 protokola Pb čita 16 bita podataka sa
MADDRp. Pregledom liste relacija za Pa, vidimo da ove relacije A1 i A2 zajednički generišu 16-bitni
podatak. Stoga, prva relaciona grupa, G1, se sastoji od relacija A1, A2 i B1. Uređenje relacija koje
222
pripadaju i jednom i drugom protokolu u okviru relacione grupe određuju se od strane zavisnosti
podataka između relacija. B1 može da čita 16-bitnu adresu samo kada su je A1 i A2 generisali. Zbog
toga A1 i A2 prethode B1 u relacionoj grupi G1:

G1 = (A1, A2, B1).

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).

Generisanje interfejs procesa


Nakon što smo kombinovali relacije u skup relacionih grupa, moguće je sada generisati
interfejs proces koji bi učinio ova dva protokola kompatibilnim. Skup operacija u relacionim
grupama koje se uzimaju po redosledu predstavljaju sekvencu atomiziranih operacija po oba
protokola. Interfejs proces se može dobiti jednostavnim invertovanjem svake operacije u relacionoj
grupi. „Invertovanje“ atomizirane operacije znači njena zamena sa tačnom dualnom ili
komplementarnom operacijom.
Na slici 10.17 prikazana je odgovarajuća dualna operacija za svaku od 5 atomiziranih protokol
operacija. Na primer, čekanje za događaj na ulaznom upravljačkom portu, Cp je predstavljeno u
interfejs procesu pomoću njegovog dvojnika, tj. dodela kontrolnog signala Cp. Atomizirana
operacija koja dodeljuje vrednost upravljačkoj liniji Cp ima, kao i svoj dvojnik u interfejs procesu,
operacija koja čeka da ista upravljačka linija dobije tu vrednost. Dodele portu podataka od strane
protokola predstavljeni su kao čitanja vrednosti porta podataka i smeštanje u lokalne promenljive,
interno u odnosu na interfejs procesa. Čitanje vrednosti sa porta podataka od strane protokola je
predstavljeno u interfejs procesu dodelom portu podataka podatka iz interne promenljive.

Slika 10.17: Dualnost atomiziranih protokol operacija

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’)

Zamenom svake operacije u gornjim relacijama odgovarajućim dvojnicima, dobijamo interfejs


proces sa slike 10.18 (a).
Na primer, posmatramo relaciju A1, koju čine operacije koje predstavljaju prva dva iskaza
protokola Pa sa slike 10.16 (a)

ADDRp <= AddrVar(7 downto 0);


ADDRYp <= ‘1’;

A1’ je dvojnik ove dve operacije što rezultuje u sledeća dva iskaza:

TempVar(7 downto 0) := ADDRp;


wait until (ARDYp = ‘1’);

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.

Procena generisanog interfejs procesa


Algoritam 10-3 sumira rezultate koraka koji su uključeni u generisanju interfejs procesa. Za
dati opis protokola na HDL nivou, CreateRelations generiše skup relacija koje predstavljaju
protokol. Procedura GroupRelations particioniše skup relacija Ra i Rb u relacione grupe
predstavljene od strane skupa G. Za svaku atomiziranu relacionu operaciju u relacionoj grupi koja
se izvršava po redosledu, procedura AddDualStatement dodaje odgovarajući dualni iskaz, kao što je
to naznačeno na slici 10.17, interfejsu procesa IP. Nakon što je iskaz za interfejs proces generisan,
CreateAndOptimizePorts generiše skup portova između dva protokola i interfejs proces, i
optimizira ih ako je to moguće.
Glavna prednost tehnike predstavljene u ovoj sekciji se sastoji u tome da ona može da
predstavlja interfejs između bilo koja dva protokola koji se mogu predstaviti pomoću sekvencijalnih
HDL iskaza.

225
Algoritam 10-3: Generisanje interfejs procesa

Generisani interfejs proces se može simulirati sa ostatkom specifikacije sistema sa ciljem da se


verifikuje sistemska funkcionalnost nakon izvršenog povezivanja grupnih i funkcionalnih objekata
standardne komponente. Metod je optšti po tome što podržava spregu dva protokola kod kojih su
portovi za podatke različitog obima. Tajming informacija koja se podržava ovom metodom oblika
je sa nepreklapajućim kašnjenjima između operacija protokola. Ipak, pošto samo je HDL opis za
interfejs definisan, minimalna i maksimalna tajming ograničenja između događaja nisu podržana.
Ova ograničenja se mogu preneti u nadležstvo sredstvima za sintezu koja će generisati hardver za
interfejs proces.

10.5.4 Drugi pristupi za kompatibilnost kod protokola


Opisaćemo sada jedan pristup koji se odnosi na stavke bitne za kompatibilnost protokola
između standardnih komponenata.

Sinteza primopredajnika (transducer-a)


Transducer se definiše kao interfejs logika koja povezuje dva bloka. Tajming dijagrami dva
nekompatibilna interfejsa se specificiraju kao ulaz. Izlaz je logička specifikacija transducer kola.
Demonstriraćemo sintezu logičkog kola na osnovu tajming dijagrama primera FIFO
magacinske upravljačke ćelije prikazane na slici 10.19. Ćelija ima dva ulaza i tri izlaza, kako je to
prikazano na slici 10.19 (a). Ćelija sa slike radi asinhrono, tj. ne postoji eksterni klok koji
sinhronizira rad u okviru ćelije.
Na slici 10.19 (b) prikazan je tajming dijagram koji se odnosi na ulaze i izlaze ćelije.
Isprekidane strelice ukazuju na redosledna ograničenja između različitih događaja u ćeliji. Prvi
korak generiše event graf (graf događaja) na osnovu tajming dijagrama. Za svaki događaj u tajming
dijagramu, kakav je usponska ili opadajuća ivica, postoji čvor u grafu događaja. Potezi između
čvorova u grafu događaja odgovaraju uređenju ili minimalnim i maksimalnim vremenskim
ograničenjima između odgovarajućih događaja u tajming dijagramu. Na slici 10.19 (c) prikazan je
graf događaja konstruisan za tajming dijagram sa slike 10.19 (b). Na primer, za svaku od obe
opadajuće i usponske tranzicije izlaza L u tajming dijagramu, postoje čvorovi u grafu događaja,
označeni kao L↑ i L↓, respektivno. S obzirom da se prva rastuća tranzicija na L trigeruje rastućom
tranzicijom na Ri, postoji poteg koji egzistira u grafu događaja od čvora Ri↑ ka čvoru L↑.

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.

10.6 Fina razrada interfejsa koji se odnosi na hardver/softver

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.

Slika 10.20: Arhitektura hardversko softverskog sistema

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.

10.6.1 Ciljna arhitektura


Sa ciljem da objasnim sprezanje hardver – softver koristićemo primer arhitekture prikazane na
slici 10.20. Ova arhitektura je veoma jednostavna i čini je jedan procesor i nekoliko ASIC-a. Razlog
zašto smo se ograničili na samo jedan procesor je taj što to čini razradu hardversko softverskog
interfejsa lakšom za objašnjenje. Kompleksnija arhitektura zahteva da se sagleda i sinhronizacija
interprocesorske komunikacije kao i problem zaštite memorije što je izuzetno težak problem pa se
zbog toga u tu analizu nećemo upuštati.
Standardno, sa razradom hardversko/softverskih interfejsa startujemo od particionisane
specifikacije, kao što je ona prikazana na slici 10.21. Kod ove specifikacije, v1 do v6 predstavljaju
promenljive, B1 do B4 su behavior-i a p1 do p3 su portovi. Potezi na slici odgovaraju pristupima
podacima od strane behavior-a, promenljivima ili portovima. Behavior koji se preslikava u
softversku particiju naziva se softver behavior, na sličan način, onaj koji se preslikava u hardversku
particiju naziva se hardver behavior.

229
Slika 10.21: Particionisana specifikacija

U datom primeru, B1 i B2 su softverski behavior-i, dok B3 i B4 su hardverski behavior-i.


Softverske promenljive ili softverski portovi se definišu kao one promenljive ili portovi kojima se
isključivo pristupa od strane softverskih behavior-a. Na primer, v1 je softverska promenljiva a p1 je
softverski port. Na sličan način onim promenljivim ili portovima kojima se pristupa samo od strane
hardverskih behavior-a nazivamo hardverske promenljive ili hardverski portovi. U našem primeru,
v3, v5 i v6 su hardverske promenljive, a p3 je hardverski port. Konačno, promenljivima i portovima
kojima se pristupa od strane kako hardverskih tako i softverskih behavior-a se nazivaju deljive
promenljive ili portovi respektivno, kakav je slučaj sa v2 i v4 koje su deljive promenljive i p2 koje
je deljivi port.

10.6.2 Distribucija promenljive


Proces distribucija promenljive odnosi se na dodelu promenljivih u hardverskoj i softverskoj
specifikaciji – drugim rečima, memoriji ili ASIC-u. Obično sve softverske promenljive treba
dodeliti memoriji, jer je ona obimna da ih zapamti. Alternativno možemo da dodelimo softverske
promenljive memoriji u ASIC-u, ali ovaj pristup ima nedostatke, jer povećava cenu ASIC-a zbog
dodatne površine silicijuma. Za hardverske promenljive najbolje je dodeliti ih memoriji, ali mi
moramo da realizujemo ovaj tip dodele tako da se smanji saobraćaj na magistrali i ne uspori rad
ASIC-a jer ASIC može da se takmiči za pristup memoriji sa procesorom. Ova razmatranja su
posebno kritična kada ASIC često pristupa promenljivima. Treba takođe biti svestan da postoje
slični kompromisi između performansi i cene za bilo koje deljive promenljive koje se mogu dodeliti
memoriji ili smestiti u ASIC registrima.

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

Zatim, za svaku distribuciju promenljive D, određujemo zahtevanu brzinu prenosa podataka po


izabranoj magistrali B, i označavamo je kao datarate(D, B), putem izračunavanja zbira prosečne
brzine prenosa po kanalu (avgrate(C)) za sve kanale C koji se preslikavaju na magistralu B
(definiciju za ovo avgrate(C) smo opisali u **** sekciji 7.2.3 **** ). Na ovaj način moguće je
odrediti da li željena brzina prenosa po magistrali, rate(B) može da zadovolji zahtevanu brzinu
prenosa podataka za pojedinu konfiguraciju. Algoritam će zatim vratiti kao rezultat konfiguraciju za
koju magistrala zadovoljava željenu brzinu prenosa podataka a ukupna cena biće minimalna. Cena
uključuje kako cost(B) i cost(D), što predstavlja cenu magistrale i cenu pristupa promenljivoj
respektivno. Uočimo da se privremene promenljive mincost, mincost_bus i mincost_var_dist koriste
za pamćenje najbolje konfiguracije koju smo pronašli.
Kompleksnost algoritma je O(N x M), gde N predstavlja broj magistrala, a M broj distribuiranih
promenljivih. Važno je napomenuti da, s obzirom da se rate(B) najčešće zadaje kao vršna brzina
magistrale B, algoritam će odrediti ovo datarate(D, B) kao sumu vršnih brzina, peakrate(C), za sve
kanale C koji se preslikavaju na magistralu B (definicija peakrate(C) je data u **** sekciji 7.2.3
**** ). Ipak, u najvećem broju slučajeva, koristeći vršnu brzinu prenosa po kanalu biće mnogo
konzervativno i može dovesti do neefikasnog korišćenja magistrale, s obzirom da se za najveći deo
vremena po kanalima ne prenose podaci sa vršnom brzinom. Izbor peakrate(C) u odnosu na
avgrate(C) kod izračunavanja datarate(D, B) zahteva analizu profila prenosa podataka.

10.6.3 Generisanje interfejsa


Kao što smo prethodno pomenuli, projektant će ponekad uzeti u obzir situaciju kada su
komunikacioni protokoli za selektovanu magistralu i selektovane komponente nekompatibilni, i da
ne postoje standardne komponente koje su dostupne da bi se koristile za interfejs. U ovakvim
situacijama neophodno je da se generiše interfejs koji će konvertovati jedan protokol u drugi,
232
koristeći proces sličan onom opisanom u sekciji 10.5. U toj sekciji mi smo predstavili jednu tehniku
za generisanje interfejsa između dve nekompatibilne komponente koga čine sledeći koraci: (1)
predstaviti protokole komponenata koje treba spregnuti kao uređene relacije; (2) particionisati
relacije na relacione grupe; (3) generisati interfejs opis putem invertovanja svake operacije u
relacionoj grupi, što se izvodi zamenom svake operacije u relacionoj grupi sa njenom dualnom
operacijom.

Slika 10.23: Sprega između: (a) dve komponente, (b) komponente i magistrale

Tehnika koja se koristi za generisanje interfejsa između komponente i magistrale slična je


metodi koju smo pomenuli za sprezanje dve komponente, sa izuzetkom jedne neznatne razlike.
Iskoristimo primer na slici 10.23 da bi ilustrovali ovu razliku. Usvojimo da komponenta A sa slike
10.23 (a) šalje podatak koristeći svoj protokol komponenti B, koja prima podatak koristeći svoj
sopstveni protokol. Interfejs između njih usklađuje ova dva nekompatibilna protokola komponenata
A i B, putem prihvatanja podataka od A koristeći protokol koji je uperen sa A, a zatim predajom
podataka ka B koristeći protokol koji je uperen sa B. Ovi upareni protokoli u interfejsu
komponovani su od operacija koje su dualne onim koje postoje u A i B, kako je to prikazano u
sekciji 10.5.3. Na slici 10.23 (b) ono što je potrebno je interfejs između komponente A i magistrale
koja mora da prihvati podatak od A koristeći protokol uparen sa A i da preda podatak ka magistrali
koristeći protokol isti kao protokol magistrale. Na sličan način, neophodan je interfejs između
magistrale i komponente B, koji prima podatak koristeći protokol magistrale, zatim ga predaje
komponenti B po protokolu koji je uparen sa B. Naglasimo da ako je potrebno da se koristi interfejs
tada treba da postoji uparivanje između komponente i protokola i ono će sadržati dualne operacije
za obe komponente protokola. Sa druge strane ako je potrebno da interfejs koristi protokol isti kao
komponenta, on će sadržati iste operacije kao i komponenta protokola. Zbog toga interfejs između
komponenata i magistrale sadržaće operacije koje su dualne onim koje pripadaju protokolu
komponente, ali iste kao one koje pripadaju protokolu magistrale.
Na slici 10.24 prikazan je primer interfejsa generisan za read operaciju komponente koja je
povezana na magistrali i koji predstavlja pojednostavljena verzija magistrale VMEbus. Mi vidimo
da se rezultujući interfejs, predstavljen na slici 10.24 (d) sastoji od operacija koje su dualne onim
komponentama protokola a iste onim koje se odnose na protokol magistrale, pri čemu su one koje
su iste kao i magistrale boldovane. Naglasimo da zvezdica pridružena signalu AS ukazuje da je AS
aktivno na niskom nivou. Detalji generisanja protokola su već opisani u sekciji 10.5.3.

233
Slika 10.24: Komponente interfejsa magistrale: (a) relacije za komponente protokola, (b) relacije za
protokol magistrale, (c) relacije grupa, (d) generisani interfejsi

10.6.4 Razrada pristupa podacima


Kada dodeljujemo behavior a promenljiva kojoj on pristupa je usmerena ka različitim
particijama, neophodno je da detaljno razradimo pristup promenljivoj u opisu jer se definicija
promenljive nalazi van behavior-a. Vratimo se na specifikaciju prikazanu na slici 10.21, i usvojimo
da su nakon distribucije promenljive, deljiva promenljiva v2 i hardverska promenljiva v5 dodeljene
memoriji, dok deljiva promenljiva v4 je dodeljena ASIC-ovom dual port baferu, kako je to
prikazano na slici 10.25. Pristupi podacima u okviru iste particije ne predstavljaju problem jer će se
o njima voditi računa od strane softvera za kompilaciju, kakav je slučaj sa promenljivom v1 na slici
10.25, ili od strane sredstava za sintezu hardvera kakav je slučaj sa v3 i v6. Zbog toga, zadatak
razrade pristupa podacima je da se tačno odrede pristupi podacima kroz particije kakav je slučaj sa
v2,v4 i v5.
Na slici 10.25, svaka lokacija u memoriji ili u ASIC baferu ima jedinstvenu adresu u
globalnom adresnom prostoru koji je vidljiv bilo kom gospodaru magistrale (master-u). S obzirom
da procesor ima fiksirani broj pinova, bez ekstra pinova za portove, portovi kojima se pristupa od
strane softverskih behavior-a moraju da se preslikaju na lokaciju globalnog adresnog prostora i u

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.

Slika 10.25: Specifikacija preslikavanja na ciljnu arhitekturu

Postoje 4 tipa pristupa podacima:

1. Softverski behavior-i pristupaju memorijskim lokacijama: ovi tipovi pristupa podacima se


izvode pomoću procesorskih load/store instrukcija. Na slici 10.25 B2 pristupa promenljivoj
v2 na ovaj način.
2. Hardverski behavior-i pristupaju memorijskim lokacijama: s obzirom da se ovaj tip pristupa
podacima izvodi od strane ASIC-a pomoću mehanizma DMA nazvaćemo ovo DMA
operacijom. DMA operacije su slične load/store operacijama, sa izuzetkom da ASIC mora
prvo da dobije pravo upravljanja magistralom. Na slici 10.25 B3-ov pristup promenljivoj v2
i B4-ov pristup promenljivoj v5 pripada ovom tipu.
3. Softverski behavior-i pristupaju portovima ili ASIC baferima: ovaj tip pristupa se izvodi
preko procesorskih in/out ili mov instrukcija. Na slici 10.25 B2-ov pristup p1, p2 i p4
pripada ovom tipu.
4. Hardverski behavior-i pristupaju ASIC-ovom baferu: s obzirom da se ovaj tip pristupa
podacima izvodi od strane ASIC-ovog pristupa ka svojim sopstvenim baferskim lokacijama,
ovaj način pristupa zvaćemo bafer operacije. Ove operacije koriste posebnu magistralu
ASIC-a. Na slici 10.25 B3-ov pristup promenljivoj v4 pripada ovom tipu.
Zadaci razrade pristupa podacima se specificiraju na sledeći način:
1. Dodeljuju se adrese promenljivima ili portovima koje su preslikane u globalnom adresnom
prostoru.
2. Zamenjuju se softverski pristupi onim promenljivim koje su dodeljene memoriji od strane
load/store operacija. Na sličan način, zamenjuju se hardverski pristupi onim promenljivim sa
DMA operacijama

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.

10.6.5 Razrada pristupa upravljanju


Nasuprot kanalu za pristup podacima koji postoji između behavior-a i promenljive, između dva
behavior-a postoji kontrolni ili upravljački kanal koji ima za cilj da ukaže na početak ili završetak
behavior-a. Slika 10.26 (a) prikazuje jedan primer kod koga se behavior-i B1, B2 i B3 planiraju radi
izvršenja na sekvencijalni način, što znači da B2 startuje nakon što B1 završi, a B3 startuje nakon što
B2 završi. Zbog toga postoji kontrolni kanali između B1 i B2, B2 i B3. Ako, behavior B2 je dodeljen
hardverskoj implementaciji, tada upravljački kanali povezani na B2 moraju da se prerade kako bi se
uskladili sa hardversko softverskim interfejsom.
Jedno od rešenja ovog problema sastoji se u uvođenju handshaking protokola, koji koriste dve
deljive promenljive: start i done. U ovom slučaju, ubacuju se protokol iskazi na mesto B2, a sam B2
biće proširen iskazima za uparivanje protokola, kako je to prikazano na slici 10.26 (b). Ako nakon
toga preslikamo promenljive start i done u dual port bafer, specifikacija sa slike 10.26 (b) se može
preslikati u ciljnu arhitekturu prikazanu na slici 10.26 (c). Razrada upravljanja biće kompletirana
nakon što se obavi razrada koja se odnosi na pristup podacima deljivim promenljivima start i done.

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

You might also like