26
6. Optimalizácia návrhu primárnych architektúr A. Rozvrhovanie agentov do riadiacich taktov (scheduling) B. Priradenie (alokácia) pamäťových prvkov stavovým premenným C. Priradenie (alokácia) funkčných jednotiek a multiplexných obvodov A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov na vykonanie v jednotlivých riadiacich cykloch. Pri syntéze systému na RT úrovni ide o zaradenie do mikrocyklov (pri synchónnych riešeniach do hodinových cyklov) riadiacej jednotky primárnej architektúry. V ďalšom sa dotkneme iba najpodstatnejších myšlienok a budeme pracovať s agentami cieľovej špecifikácie (t.j. s mikrooperáciami). Procedúra rozvrhovania agentov do riadiacich cyklov má za cieľ zostaviť podmnožiny mikrooperácií, ktoré sa môžu vykonať súbežne v jednotlivých riadiacich cykloch a optimálne ich rozvrhnúť do sekvencie takýchto cyklov a to s rešpektovaním údajových závislostí medzi mikrooperáciami, ktoré priamo vyplývajú z tokov údajov a riadenia, principiálnej možnosti súbežnej exekúcie mikrooperácií zoskupených do jedného cyklu, ktorá vyplýva z predpokladanej štruktúry operačnej časti (OČ) s danými funkčnými jednotkami, štruktúry toku riadenia (globálneho procesu) pokiaľ ide o cykly a rozvetvenia. Ako výsledok tohto postupu bude každá mikrooperácia z danej cieľovej špecifikácie zaradená do jedného cyklu alebo, ak to bude výhodné, aj do viacerých za sebou nasledujúcich cyklov. V druhom prípade bude cyklus agenta - interval medzi es a ef, v ktorom sa realizuje agent, presahovať rámec jedného riadiaceho cyklu.

A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

6. Optimalizácia návrhu primárnych architektúr

A. Rozvrhovanie agentov do riadiacich taktov (scheduling) B. Priradenie (alokácia) pamäťových prvkov stavovým premenným C. Priradenie (alokácia) funkčných jednotiek a multiplexných obvodov

A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov na vykonanie v jednotlivých riadiacich cykloch. Pri syntéze systému na RT úrovni ide o zaradenie do mikrocyklov (pri synchónnych riešeniach do hodinových cyklov) riadiacej jednotky primárnej architektúry. V ďalšom sa dotkneme iba najpodstatnejších myšlienok a budeme pracovať s agentami cieľovej špecifikácie (t.j. s mikrooperáciami). Procedúra rozvrhovania agentov do riadiacich cyklov má za cieľ zostaviť podmnožiny mikrooperácií, ktoré sa môžu vykonať súbežne v jednotlivých riadiacich cykloch a optimálne ich rozvrhnúť do sekvencie takýchto cyklov a to s rešpektovaním

• údajových závislostí medzi mikrooperáciami, ktoré priamo vyplývajú z tokov údajov a riadenia,

• principiálnej možnosti súbežnej exekúcie mikrooperácií zoskupených do jedného cyklu, ktorá vyplýva z predpokladanej štruktúry operačnej časti (OČ) s danými funkčnými jednotkami,

• štruktúry toku riadenia (globálneho procesu) pokiaľ ide o cykly a rozvetvenia. Ako výsledok tohto postupu bude každá mikrooperácia z danej cieľovej špecifikácie zaradená do jedného cyklu alebo, ak to bude výhodné, aj do viacerých za sebou nasledujúcich cyklov. V druhom prípade bude cyklus agenta - interval medzi es a ef, v ktorom sa realizuje agent, presahovať rámec jedného riadiaceho cyklu.

Page 2: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Cieľom je obvykle minimalizácia počtu riadiacich cyklov, ktoré sú potrebné na vykonanie globálneho procesu (pri dodržaní daných obmedzení, ako je napr. údajová závislosť) a to cestou maximálnej možnej súbežnosti agentov. Pritom sa môžu vyskytnúť aj ďalšie optimalizačné kritériá. Je potrebné znova zdôrazniť, že dva agenty sa môžu vykonávať súbežne v jednom cykle iba vtedy, ak nenastavujú spoločne tú istú výstupnú alebo operačnú stavovú premennú.

Údajová závislosť agentov Agent A' je priamo údajovo závislý od agenta A (čo označíme A –dd A') ak A' sa v toku riadenia vykonáva za A a existujú vstupy A' (t.j. vstupné alebo stavové premenné A' v grafe toku údajov), ktoré sú zároveň výstupmi A (t.j. stavové premenné, ktorých hodnoty agent A nastavuje). Agent A' je údajovo (nepriamo) závislý od agenta A (čo označíme A –d A') práve vtedy ak platí A –dd A', alebo existujú agenty A1, A2, ..,Ak ( k > 1 ), že platí: A –dd A1, A1 –dd A2,……, Ak –dd A' Zrejme ak agent A' je údajovo závislý od agenta A, tak A musí byť umiestnený v toku riadenia a teda aj v rozvrhu agentov v predchádzajúcich riadiacich cykloch pred agentom A', prípadne v tom istom riadiacom cykle. Agentov A a A’ možno umiestniť v rovnakom cykle ak exekúciu (zreťazenie) agentov A' a A možno realizovať v rámci jedného riadiaceho cyklu.

Page 3: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

POZNÁMKA: Pri určovaní poradia vo vykonávaní agentov v toku riadenia v procesnom cykle (slučke) treba analýzu urobiť v rozvinutom procesnom cykle. Procedúra rozvrhovania agentov do riadiacich cyklov môže začať už zo zostaveného toku riadenia (globálneho procesu PS). Pri rozvrhovaní agentov bude treba rešpektovať spravidla aj iné obmedzenia. Vyplývajú z požiadaviek štruktúrnej implementácie a to aj na úrovni elektronickej realizačnej baze. Ide tu napr. o obmedzenia maximálneho stupňa súbežnosti (paralelizmu) v riadiacom cykle (daného maximálnym počtom agentov, ktorí sa umiestňujú do podmnožín v jednom cykle), čo súvisí s rýchlosťou, výkonnosťou budúceho zariadenia. Patria sem aj obmedzenia spotreby energie a všetky obmedzenia súvisiace s cenou, zložitosťou a zaberanou plochou (na čipe). Tieto aspekty nemožno, bohužiaľ, na danej úrovni uplatniť precízne. Uprednostnia sa niektoré kritéria pred inými a často treba hľadať kompromisné riešenie . Vo vývoji v ostatných asi dvadsiatich rokoch vznikol rad algoritmov rozvrhovania agentov (operácií). Tieto algoritmy sa začali rozvíjať v súvislosti s rozvrhovaním procesov (zložitejších agentov) v operačných systémoch a tiež v súvislosti s kompakciou mikroprogramov v oblasti mikroprogramového riadenia. Najčastejšie používaným a zároveň najjednoduchším je algoritmus typu ASAP (z anglického As-Soon-As-Possible). Aplikuje sa na lineárne úseky procesov - na telá procesných cyklov v procese PS a na lineárne úseky po rozvetvení procesu. Tento algoritmus sa uplatňoval pri plánovaní operácií aj v oblasti tvorby operačných systémov

Page 4: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Princíp algoritmu ASAP: Začneme od začiatočného (prvého) riadiaceho cyklu lineárneho úseku a analyzujeme možnosť umiestnenia jednotlivých agentov (z hľadiska ich údajovej závislosti a možnosti súbežnosti). Agentov umiestňujeme v najbližšom možnom cykle od začiatočného (t.j. najskôr ako je to možné). Ide o jednoduchú stratégiu, ktorá vedie na maximálny stupeň súbežnosti. Použitie tejto metódy ukážeme na príkladoch. PRÍKLAD 1: Vezmime systém VSYS a z cieľovej špecifikácie vyplývajúce GTU a GTR (globálny proces PS) a uvažujme už zostavenú OČ. Nájdeme globálny riadiaci proces s minimálnym počtom riadiacich cyklov. Obmedzenia špecifikácie na poradie ReadIn a Compute (restr) za účelom zjednodušenia vypustíme. Prvotné rozvrhnutie agentov (mikrooperácií) sme už vlastne urobili predtým v toku riadenia, t.j. v globálnom procese PS. Jednotlivé riadiace cykly

PS ==> L0: EA / RD: L1, CO: C1, (RD nor CO): L0 L1: Reset / L2; L2: ACK: L3, L4 L3: EA / L2 L4: SetReq / L5; L5: EA / ACK: L6, L5; L6: ResReq / L7 L7: WriteM / L8; L8: InkrI / L9; L9: (I /=0)and(ACK=0): L4, (I /=0)and(ACK=1): L3, (I=0): L10; L10: SetRR /L0

1:Reset / C2; 2:Add / C3; 3:InkrI / C4; 4:(I/=0): C2, C5; 5:SetCR / L0;

zodpovedajú stavom riadiacej jednotky (13 cyklov) - návestiam L0 - C5, s výnimkou návestí L2, L9 a C4 (v príkazoch ktorých sa nenachádzajú žiadne agenty).

CCCCC

Page 5: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Prvotný rozvrh agentov, ktorý je priamo viditeľný v PS, resp. v GTR je takýto:

cyklus: agent: L0 EA L1 Reset L3 EA

Ide o rozvrh s minimálnym stupňomsúbežnosti. Je zrejmé, že dvojiceSetReq a Reset, SetReq a ResReq,Reset a Add, Reset a InkrI nemôžubyť vykonávané súbežne (pretožejednotlivé dvojice nastavujú tú istú stavovúpremennú Req, DO, resp. I )

L4 SetReq L5 EA L6 ResReq L7 WriteM L8 InkrI L10 SetRR C1 Reset C2 Add C3 InkrI C5 SetCR

Page 6: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Z GTU a GTR vyplývajú nasledujúce údajové závislosti agentov v rozvinutých procesných cykloch (slučkách) #1 a #3 : WriteM d- Reset, InkrI ←

InkrI d- Reset ←

Add d- InkrI, Reset ←

Page 7: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

ASAP algoritmus možno aplikovať v Ps iba v rámci tela jedného procesného cyklu (slučke). Z tohto dôvodu nemôžme posúvať agentov zdola hore do vnútra slučiek { L3 → L3 → ...} a {L5 → L5→ ...} s exekúciou EA, ktoré sú vnorené do tela procesného cyklu #1. Ďalej agentov z cyklu #1 nemožno presunúť hore do procesného cyklu #2, do ktorého je cyklus #1 vnorený, a pod. V rámci daných slučiek v GTR podľa ASAP môžeme urobiť nasledujúce presuny a redukciu riadiacich cyklov: @ SLUČKA # 1: Možno urobiť posun do skoršieho riadiaceho cyklu:

→WriteM L6 InkrI L6 →

a teda vytvoriť množinu súbežných agentov { ResReq, WriteM, InkrI}, ktorá sa vykoná v riadiacom cykle L6. Takéto riešenie neporušuje požiadavku údajovej závislosti a v štruktúre navrhnutej OČ je možné. Pretože riadiace cykly L7 a L8 ostanú po tomto presune prázdne (t.j. ostanú v nich iba EA), môžeme ich vypustiť.

Page 8: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

@ SLUČKA # 3: Možno posunúť

→InkrI C2 a teda vytvoriť množinu súbežných agentov {Add,InkrI}, ktorá sa vykoná v riadiacom cykle C2; cyklus C3 potom vypadne. Takéto riešenie neodporuje zachovaniu údajových závislostí v rozložených lineárnych úsekoch spomenutých slučiek a ani obmedzeniam daným štruktúrou OČ (funkčné jednotky "+1" a "+" sú samostatné). @ SLUČKY # 2 # 4: V týchto slučkách je rozvetvenie procesu, ktoré

vytvára v procese dva lineárne úseky L1 - - - -> L8, resp. C1 - - -> C5. Podľa algoritmu ASAP by bolo možné presunúť z obidvoch lineárnych úsekov Reset → L0, avšak toto riešenie zmení správanie voči špecifikácií a preto ho nemôžeme urobiť.

C1

Mohli by sme reorganizovať tok riadenia s vyňatím Reset do spoločného cyklu pre oba lineárne úseky, ale to z hľadiska rýchlosti (výkonnosti) neprinesie nič, ušetríme iba 1 stav RJ.

Page 9: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Výsledný rozvrh mikrooperácií je teda takýto: cyklus: agent: L0 EA L1 Reset L3 EA L4 SetReq L5 EA L6 ResReq, WriteM, InkrI L10 SetRR Znížili sme počet riadiacich cyklov (stavov RČ)

o tri, voči pôvodnému rozvrhu. C1 Reset C2 Add, InkrI C5 SetCR Napokon zostavíme proces Ps':. L0: EA / RD: L1, CO: C1, (RD nor CO): L0 L1: Reset / L2; L2: ACK: L3, L4 L3: EA / L2 L4: SetReq / L5; L5: EA / ACK: L6, L5; L6: ResReq, WriteM, InkrI / L9; L9: (I /=0)and(ACK=0): L4, (I /=0)and(ACK=1): L3, (I=0): L10; L10: SetRR / L0 C1: Reset / C2; C2: Add , InkrI / C4; C4: (I /=0): C2, C5; C5: SetCR / L0

Page 10: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

V tomto prípade RJ potrebuje iba 10 stavov. V kap.5 sme zostavili stavový stroj RJ s 11 stavmi. Vzhľadom nato, že ide o jednoduchý prípad je aj malý zisk zaujímavý. Pri zložitých procesoch možno dosiahnuť aj vyšší pomerný zisk. Úloha na riešenie: Upravte špecifikáciu a syntézu RJ-VSYS na základe tu získaných poznatkov.

Page 11: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

PRÍKLAD 2: Vezmime určitý lineárny segment P1 východiskového procesu Ps špecifikácie niektorého systému: P1= N1:M1(Z1,Z2;Va) / N2; N2:M2(Z6,Va;Vb) / N3; N3:M3(Va,Z4;Vc) / N4; N4:M4(Vb,Z1;Vd) / N5; N5:M5(Va,Vc;Ve) / N6; N6:M6(Vc,Z10;Vf) / N7; N7:M7(Vd,Z1;Z2) / N8; N8:M8(Ve,Vf;Z1) / -; kde Mi(X,Y; Z) sú jednocyklové agenty - mikrooperácie so vstupmi X,Y a s výstupom Z (operačnou stavovou premennou). Agenty nastavujú hodnoty operačných stavových premenných systému priraďovacími príkazmi Z := X # Y, kde # je daná algebrická alebo logická operácia (*, +, -, /, OR, AND) nad vstupmi mikrooperácii. Operácie (#) obsiahnuté v jednotlivých mikrooperáciach M1,..,M8 sú vyznačené v GTU (zjednodušený zápis). V zjednodušenom GTU sme explicitne nevyznačili vrcholy grafu priradené premenným (kôli zjednodušeniu). Vyznačili sme iba vrcholy agentov - mikrooperácií. Z3,...,Z10 sú operačné stavové premenné, ktorých hodnoty sa v P1 nenastavujú, iba čítajú, ale treba ich bez ohľadu na daný segment procesu v Ps uchovávať. Proces P1 nastavuje, zrejme, iba stavové premenné Z1 a Z2, a lokálne stavové premenné "V", ktoré si systém nemusí pamätať. Sú zaujímavé iba pre daný proces P1.

Page 12: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

V procese P1, ktorý sme uviedli na začiatku nie je paralelizmus - súbežnosť mikrooperácií v jednotlivých riadiacich cykloch. V každom riadiacom cykle sa vykoná práve jedna mikrooperácia. Funkčné jednotky v OČ môžeme združiť do jednej ALU, pretože sa vykonáva vždy iba jedna operácia. Vychádzajúc z údajových závislostí v GTU, môžeme mikrooperácie Mi rozvrhnúť do riadiacich cyklov s vyšším stupňom súbežnosti. Predpokladajme, že z hľadiska funkčných jednotiek nie sú v štruktúre OČ žiadne obmedzenia (t.j. každej aritmetickej a logickej operácii možno priradiť v štruktúre OČ jednu autonómnu funkčnú jednotku), maximálne možný stupeň paralelizmu je možný. Použijeme algoritmus ASAP. Začneme prvým riadiacim cyklom (návestím, stavom N1 riadiacej jednotky) a označíme ho L1. Do tohto cyklu umiestnime M1. Žiadna ďalšiu mikrooperáciu nie je možné umiestniť do L1, pretože všetky sú údajovo závislé od M1. Mikrooperácie M2 a M3 sú (priamo) údajovo závisle od M1 - podľa algoritmu ASAP ich umiestnime do cyklu L2. Agentov M4, M5, M6 umiestnime do nasledujúceho cyklu L3 a agentov M7, M8 umiestnime do cyklu L4. Na umiestnenie všetkých mikrooperácií potrebujeme teda štyri riadiace cykly L1,..,L4 (namiesto ôsmych).

Page 13: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Proces P1' reprezentuje upravený tok riadenia. P1' = L1: M1 / L2;

Vykonanie P1' bude vyžadovať podstatne kratší čas. OČ si vyžaduje dvesamostatné funkčné jednotky pre operáciu "+" v M4 a M5 (čo je pomernemalé zvýšenie ceny). Funkčné jednotky môžeme združiť do 3 ALU.

L2: M2, M3 / L3; L3: M4, M5, M6 /L4; L4: M7, M8 / -;

P2= R1: M1 / R2; R2: M2, M3 / R3;R3: M5, M6 / R4;R4: M4, M8 / R5;R5: M7 / -;

Pre prípad, že potrebujeme znížiť stupeň paralelizmu, môžeme napr. obmedziť počet mikrooperácií v jednom riadiacom cykle na najviac dve. Musíme niektorú mikrooperáciu z cyklu L3 presunúť nižšie. Vedie to na zväčšenie počtu cyklov a dĺžky procesu. Jedno riešenie je potom takéto: Presúvanie agentov sa môže riadiť aj ďalšími obmedzeniami. Kritériom môže byť aj minimálny čas trvania cyklu pri daných časových oneskoreniach jednotlivých aritmetických a logických operácií.

Page 14: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

POZNÁMKA: V prípade spontánnej neriadenej realizácie aritmetických a logických operácií (v kombinačných logických obvodoch), možno mikrooperácie spriahnuť do sekvenčnej exekúcie (t.j. možno ich zreťaziť) v rámci jedného riadiaceho cyklu. Tak napríklad, ak sa v M7 a M8 operácie OR a AND realizujú spontánne v kombinačnej logike, potom možno namiesto dvoch cyklov L3 a L4 použiť iba jeden, L3. Dostaneme nasledujúce riešenie: P1'' = L1: M1 / L2 L2: M2, M3 / L3 L3: M4,M5,M6,M7,M8 / - Môže však vzniknúť potreba predlženia trvania cyklu L3, v ktorom sa M4 s M7 a tiež M5 a M6 s M8 realizujú zreťazenín v jednom cykle.

Page 15: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Nevýhodou algoritmu ASAP je to, že nedáva žiadnu prioritu agentom v kritickej trase (najdlhšej, najviac riadiacich cyklov vyžadujúcej) procesu, ktoré by mali byť rozvrhnuté najskôr. Ak je daný limit na stupeň paralelizmu, môžu byť iní nekritickí agenti posunutí do skorších cykloch a tak blokovať umiestnenie kritických operácií. Napr. majme GTU pre šesť agentov - mikrooperácií, ktoré máme rozvrhnúť do riadiacich cyklov, pričom je limitovaný stupeň paralelizmu na dvoch agentov v cykle.

Z2Z1GTU

M2 *M1 + M3 + M4 *

M5 +

M6 *

Z3 Z4 Z5 Z6 Z7 Z8

Z9Z10

S použitím algoritmu ASAP sa do prvého cyklu umiestnia mikroperácie M1 a M2. Dostaneme tento výsledok: L1: M1, M2 / L2; L2: M3, M4 / L3, L3: M5 / L4; L4: M6 / - Je vidieť, že mikrooperácia M1, ktorá nie je v kritickej ceste, zaberá skorší cyklus L1, čo neumožnilo umiestniť mikrooperáciu M3, ktorá je v kritickej cieste, v skoršom cykle. Vedie to k väčšiemu počtu riadiacich cyklov ako pri stanovení priority výberu mikrooperácii z kritickej cesty.

Page 16: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Spomenutú nevýhodu algoritmu ASAP odstraňuje algoritmus známy pod menom "list scheduling" (rozvrhnutie podľa zoznamu). Vytvára sa zoznam agentov, ktorý určuje ich poradie pri umiestňovaní. Používajú sa pritom dve globálne kritéria umiestňovania:

(1) príslušnosť agenta ku kritickej ceste (trase) a (2) a mobilita agenta.

Podľa (1) sa umiestňujú agenty z dlhšej cesty do skorších riadiacich cyklov ako agenti z kratších ciest, pretože dlhšie cesty potrebujú viacej riadiacich cyklov. Mobilita agenta v (2) sa definuje ako počet riadiacich cyklov, do ktorých ho môžeme umiestniť. Agenty s menšou mobilitou sa umiestňujú do skorších cyklov. Použitím algoritmu list scheduling budú agenti z vyššie uvedeného GTU automaticky rozvrhnuté do troch taktov napr. takto: L1: M2, M3 / L2; L2: M4, M5 / L3; L3: M6, M1 / - Je zrejmé, že v danom prípade nemôžeme vybrať podľa prvého ani druhého kritéria M1 do prvého riadiaceho cyklu (nie je v kritickej ceste a má najväčšiu mobilitu). Vo vývoji od aplikácií v operačných systémoch a od kompakcie mikroprogramov dodnes boli vypracované mnohé algoritmy, ktoré rozmiestňujú podľa ďalších kritérií a zavádzajú iné princípy. Problém optimálneho rozvrhnutia agentov je NP-úplný, t.j. s počtom agentov exponenciálne narastá zložitosť.

Page 17: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Štruktúra operačnej časti je závislá od rozvrhovania agentov a úzko súvisí s optimalizáciou syntézy riadiacej jednotky. Pri rozvrhovaní sa formuje optimálny proces (mikroprogram) a stavový stroj, ktoré špecifikujú správanie (a aj počet stavov) riadiacej jednotky a teda určujú aj jej štruktúru. Úloha na riešenie: Preverte, či rozvrhnutie mikrooperácií do riadiacich cyklov, ktoré sme použili v kap.5 pri procesore CPU vedie pri zvolenej štruktúre OČ na stavový stroj s najmenším počtom stavov.

Page 18: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

B. Priradenie (alokácia) pamäťových prvkov stavovým premenným Všeobecný úvod Priradenie (alokácia) štruktúrnych prvkov predstavuje jeden z významných krokov pri syntéze východiskovej štruktúry OČ. Úloha spočíva v priradení

• pamäťových prvkov (registrov, RAM a iných pamäťových systémov) stavovým premenným

• funkčných jednotiek funkciám obsiahnutým v agentoch toku údajov (v GTU) a • údajovo väzobných (multiplexných) prvkov (multiplexorov a zberníc) existujúcim

údajovým väzbám v GTU. Pri riešení týchto úloh sa požaduje optimalizovať celkovú zložitosť štruktúry OČ a dodržať dané obmedzenia. Takto sa stáva úloha náročnou. Hlavným prostriedkom pre dosiahnutie optimálnej alokácie (podľa uvažovaných kritérií) je spoločné využitie štruktúrnych (pamäťových, funkčných a multiplexných) prvkov pre viaceré stavové premenné, funkcie rovnakého typu a údajové väzby, ktoré vyplývajú priamo zo špecifikácie a zostaveného GTU. Kvôli zložitosti optimálnej alokácie sa táto procedúra rozdeľuje na tri relatívne samostatné časti: alokácia (1) registrov a iných pamäťových prvkov, (2) funkčných jednotiek a (3) multiplexných prvkov. Sú známe viaceré úspešne aplikované metódy a algoritmy alokácie. Treba však poznamenať, že takýto lokálny prístup k optimalizácii, pri existujúcej previazanosti uvedených častí, nemusí viesť k optimálnej štruktúre celej primárnej architektúry. Objavili sa aj komplexnejšie prístupy, ktoré používajú globálny prístup.

Page 19: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

V ďalšom sa sústredíme na formulovanie základných problémov. Optimalizáciu budeme ilustrovať na metóde pôvodne publikovanej Tsengom a Sewiorekom (Tseng,C.J., Sewiorek,D.P.: Automated synthesis of data paths in digital systems, IEEE Transactions on Computer Aided Design, CAD-5, 1986, č.3). Prehľad možno nájsť aj v odporúčanej knihách (autor: Gajski,D., resp. DeMicheli) V tejto časti (B) sa budeme venovať optimalizácii prvej úlohy: alokácii pamäťových prvkov. Pri alokácií pamäťových prvkov sa obmedzíme na registre, ktoré predstavujú základ prípadných zložitejších pamäťových štruktúr (napr. pamätí typu RAM, zásobníka, frontu a pod.)

Page 20: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Alokácia registrov Alokácia registrov rieši problém optimálneho priradenia registrov v budúcej štruktúre stavovým premenným systému. Tu si treba uvedomiť, že nie každá stavová premenná vyžaduje svoj register, v ktorom sú uchovávané jej hodnoty. Viaceré z nich môžu za určitých podmienok využívať spoločný register. Pre pamätanie údajov zobrazených v stavových premenných platí toto tvrdenie: Údaj, hodnota operačnej stavovej premennej, ktorá sa nastavuje (zapisuje) v jednom riadiacom cykle a používa sa potom v inom riadiacom cykle, sa musí uchovať v registri. Ak chceme stanoviť podmienky pre spoločné využívanie registrov na uchovanie údajov generovaných vo viacerých operačných stavových premenných, treba definovať niekoľko pojmov. Aktívny interval IZ danej stavovej premennej Z (ďalej len premennej) je súvislá sekvencia riadiacich cyklov, pre ktorú platí: Prvý cyklus intervalu IZ je ten cyklus, v ktorom je premennej Z priradená určitá hodnota. Posledným cyklom je ten cyklus, ktorý predchádza cyklu, v ktorom sa premenná Z naposledy používa (ako vstup niektorého agenta, alebo ako výstup digitálneho systému a vyžaduje sa v jeho okolí).

Page 21: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

V danom systéme daná stavová premenná Z môže mať viac aktívnych intervalov. V množine riadiacich cyklov možno pre každú premennú Z zostaviť množinu aktívnych intervalov MIZ={I1Z, I2Z,.., ImZ}, ktorými Z prebieha pri činnosti systému ( m >= 1 ). Je zrejmé, že nevyhnutnou podmienkou preto, aby hodnoty Zi a Zj bolo možné ukladať do jedného registra je prázdny prienik množín MIZi a MIZj. Východiskovou informáciou pre alokáciu registrov je MI - množina množín MIZ aktívnych intervalov všetkých operačných stavových premenných MI = { MIZ | Z je stavová premenná systému }. Jedným z prostriedkov na riešenie problému alokácie registrov je tzv. incidenčný graf premenných. Ide o neorientovaný graf GZ = (V,H), v ktorom množina V vrcholov je priradená množine operačných stavových premenným a hrany v množine H hrán zostavíme takto: Hrana (Zi,Zj) je v grafe práve vtedy, ak prienik množín MIZi a MIZj je prázdny (teda ak hodnoty Zi a Zj môžu využívať spoločný register). Z incidenčného grafu GZ možno určiť, ktoré premenné môžu mať spoločný register. Sú to práve tie stavové premenné, ktorých vrcholy tvoria úplný podgraf (tzv. kliku) grafu GZ. Úlohu alokácie minimálneho počtu potrebných registrov možno exaktne vyriešiť tak, že v GZ nájdeme jeho rozklad na minimálny počet úplných podgrafovov (klík), ktoré zahrňujú všetky jeho vrcholy (triviálnym subgrafom je jeden vrchol). Riešenie tejto úlohy predstavuje NP-úplný problém. V udanej literatúre (Tseng-Sewiorek) sa nájde jej heuristické riešenie.

Page 22: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

PRÍKLAD 3: Vráťme sa ku GTU a k lineárnemu segmentu P1' (určitého cyklu) v globálnom procese, ktorý sme uviedli v PRÍKLADE 2 v časti A tejto kapitoly.

P1'= L1: M1 / L2; L2: M2, M3 / L3; L3: M4, M5, M6/ L4; L4: M7, M8/ -; Pri zjednodušenom zápise mikrooperácií možno proces P1' prepísať takto: L1: Va :=Z1+Z2 / L2; L2: Vb := Va* Z6, Vc := Va - Z4 / L3; L3: Vd := Vb+ Z1, Ve := Va+ Vc, Vf := Vc / Z10/ L4; L4: Z2 := Vd or Z1, Z1 := Ve and Vf/-; Určime minimálny počet registrov využívaných stavovými premennými Z1, Z2, Va, Vb, Vc, Vd, Ve, Vf. Predpokladáme, že premenné Z4, Z6, Z10 majú už pridelené svoje registre. Množiny aktívnych intervalov premenných sú: MIZ1= {(L4,L1,L2,L3)}, MIZ2= {(L4)} MIVa= {(L1, L2)}, MIVb = MIVc = {(L2)}, MIVd = MIVe = MIVf = {(L3)}. Premenná Z1 sa nastavuje na novú hodnotu v mikrooperácií M8 v cykle L4 a pri rozvinutej slučke segmentu P1' sa musí uchovávať v nasledujúcich cykloch L1, L2 a L3 (posledné použitie Z1 je v cykle L4 a teda aktívny interval IZ1 končí v L3). Hodnotu premennú Z2 nastavuje mikrooperácia

Page 23: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

M7 v cykle L4. Posledné použitie je v cykle L1. Teda aktívny interval IZ2 začína a tiež končí v cykle L4, t.j. v cykle pred posledným použitím Z2 v danej procesnej slučke. Podobne stanovíme aktívne intervaly aj pre ostatné premenné. Po zostavení množiny hrán dostaneme takýto incidenčný graf GZ:

Z2 *

Vb %

Vd %

$ Z1

Ve &

Va * Vf *

Vc &

V grafe možno nájsť rozklad na 4 kliky,napr. na tieto: Jedna klika je triviálna,obsahuje iba samotný vrchol (Z1).Ostatné 3 sú: (Z2,Va,Vf), (Vc,Ve),(Vb,Vd). Kliky sú vyznačené farebne aznakmi $, *, &, % vo vrcholoch.

V algoritme pre hľadanie rozkladu na minimálny počet klík sa postupuje tak, že v grafe GZ sa vyhľadá najväčší úplný podgraf - klika ( v danom prípade napr. {Z2,Va,Vf}); tento podgraf sa z grafu vyjme (odstránia sa hrany medzi týmto podgrafom a ostatnými vrcholmi). Na redukovaný graf sa aplikuje rovnaký postup až do zahrnutia všetkých vrcholov do klík. V danom prípade redukovaný graf ma vrcholy Vb, Vc, Vd, Ve, Z1.

Page 24: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

V tomto grafe ostanú dva netriviálne maximálne úplné podgrafy. Jeden z možných rozkladov je: {Vb,Vd}, {Vc,Ve} a vrchol Z1 ako triviálny podgraf - klika. Z nájdeného rozkladu priamo vyplýva, že mame možnosť alokovať 4 registre takto:

V danom prípade sme automaticky predpokladali, že premenné v jednej klike majú kompatibilné údajové typy.

Page 25: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

PRÍKLAD 4 : Vráťme sa k systému VSYS. Pri zostavovaní množín aktívnych intervalov vychádzame z GTR po rozvrhovaní mikrooperácii (globálneho procesu, mikroprogramu). L0: EA / RD: L1, CO: C1, (RD nor CO): L0; L1: Reset / L2; L2: ACK: L3, L4 ; L3: EA / L2; L4: SetReq / L5; L5: EA / ACK: L6, L5; L6: ResReq, WriteM, InkrI / L9; L9: (I /=0)and(ACK=0): L4, (I /=0)and(ACK=1): L3, (I=0): L10; L10: SetRR / L0; C1: Reset / C2; C2: Add, InkrI / C4; C4: (I /=0): C2, C5; C5: SetCR/L0; Množiny MI-DO,..,MI-RC aktívnych intervalov operačných stavových premenných DO, I, REQ, RR, CR sú (s registrami v poli M, ktoré zahrnieme v implementácií do pamäti RAM tu nerátame): MI-DO = { (C2, C5, L0),(C1), (C2)}, [ DO je v časti L1,..,L10 nezaujímavé ] MI-I = { (C1), (C2), (C2, L5, L0), (L1,L3, L4, L5), (L6, L3, L4, L5), (L6, L10, L0) }, MI-REQ = { (L1, L3), (L4, L5), (L6, L3), (L6, L10, L0)}, MI-RR = { (L1, L3,.., L6), (L10, L0) }, [ RR je v časti C1,..,C5 nezaujímavé] MI-CR = { (C1,C2), (C5,L0) } [ CR je v časti L1,..,L10 nezaujímavé]

Page 26: A. Rozvrhovanie agentov do riadiacich taktov (scheduling ...jelemenska/NCS/SLIDE11web.pdf · A. Rozvrhovanie agentov do riadiacich taktov (Scheduling) = vhodné zaradenie agentov

Uvedené stavové premenné majú priradené rozdielne údajové typy a zdá sa, že zaoberať sa alokáciou je zbytočné. Nie je to tak, pretože principiálne možno spoločne využiť aj časti registrov. Napríklad ak by nebol prienik MI-REQ a MI-DO, tak jeden bit z registra RDO, ktorý mienime priradiť premennej DO, možno využiť spoločne s REQ. Takýto prístup vyžaduje, pravda, prídavné multipexné obvody. S množín MI vidno, že incidenčný graf GZ je v danom prípade triviálny - má množinu hrán prázdnu. Potrebujeme teda samostatné pamäťové prvky pre všetky premenné. Treba upozorniť, že L0 sa nachádza v aktívnych intervaloch premenných DO, REQ, RR a CR preto, lebo v špecifikácii systému sa takáto aktivita premenných vzhľadom na okolie vyžaduje. Prítomnosť L0 zabraňuje potom napr. spoločnému využitiu bitu v DO s REQ. Úloha na riešenie: Zostavte množiny MI pre stavové premenné procesora CPU a preverte možnosť spoločného využitia registrov!