C. Procesy vyjadrujú spriahnutie agentov. Procesy môžu byť aj nekonečné, ale predpokladáme, že každý nekonečný proces možno opísať procesom typu (A) ω Pre konečný proces existuje agent ktorý ho šecifikuje. Prvkami procesov sú agenty a predikáty, definované na množine premenných a agentov systému. Procesné (programové) formuly Najvšeobecnejším spôsobom formálneho opisu procesov sú tzv. procesné formuly (napr. formuly z Milnerovho CCS - Calculus of Communicating Systems). Tu budeme používať "imperatívne" procesy, ktoré vyjadrujú riadiacu štruktúru programov s uzavretými cyklami typu "while p do proces P" a "repeat P until p" a výberovou alternatívou (rozvetvením). 1
Definícia procesných formúl pre konečné procesy (rekurzívne): 1. Meno agenta A je triviálna procesná formula (ďalej len formula) 2. Ak P1 a P2 sú dve formuly, potom P1. P2 je formula bodka vyjadruje sekvenčné spriahnutie, zreťazenie procesov, pri ktorom sa slová komunikačnej množiny procesu zreťazujú operáciou. 3. Ak P1,...,Pk (k>1) sú formuly a p1,...,pk sú predikáty definované na systéme ako celku, tvoriace úplný disjunktný systém predikátov (t.j. and (pi, pj) = 0 pre pi pj a zároveň or ( p1, p2,.., pk) = 1), potom p1:p1,...,pk:pk je formula vyjadruje alternatívne rozvetvenie procesov 4. Ak P je formula, potom aj p [P] a [P] p sú formuly vyjadrujú cykly "while p do P" a "repeat P until p" 5. Ak P je formula, potom aj [P]* a [P] n sú formuly vyjadrujú ľubovoľný konečný počet opakovaní P (Kleeneho unárna operácia hviezdička ), resp. n-násobné opakovanie P 6. Ak P1,...,Pk (k>1) sú formuly, potom P1... Pk je formula vyjadruje paralelné, súbežné spriahnutie procesov Nekonečné procesy opisujeme výrazom P1.[P] ω, v ktorom P1 a P sú konečne procesy prípadne agenty. Nekonečný proces je užitočným špecifikačným nástrojom. 2
PRÍKLADY 5: a. P1 = [(RD=1): ReadIn, (CO=1): Compute, ((RD=0)and(CO=0)):EA ] ω kde (RD=1) vyjadruje predikát nadobúdajúci hodnotu 1 práve vtedy ak RD=1. Podobný zmysel má aj (CO=1). Tretí predikát vykazuje hodnotu 1 ak obidva RD a CO sú nulové. Prípad, v ktorom RD = CO = 1 okolie systému vylučuje a nie je ani vo formule uvedený. Formula P1 opisuje proces na systéme VSYS s agentmi ReadIn a Compute. " ω " chápeme ako nekonečný počet opakovaní procesu daného formulou medzi zátvorkami [..., ]. Interpretáciu (sémantiku) formuly ilustruje vývojový diagram. Upozorňujeme, že v danom prípade sa zreťazujú agenty alebo procesy tak, že ich KM sa zreťazujú operáciou. 3
b. A1, A2,... sú agenty a c1, c2,.. sú predikáty definované na niektorom systéme. Formula P2 opisuje proces na tomto systéme ( "-c1" značí negáciu c1). P2 = [A1.A2.(c1:A2. c2 [A3], -c1:a1.a4)] c3.a5 4
Vzťah medzi procesmi a agentmi Konečný proces P implementuje niektorý agent A alebo naopak, agent A je špecifikáciou procesu P. PRÍKLAD 6: Nekonečný proces v systéme VSYS môžeme vyjadriť ako P1 = [PrGlob] ω, kde PrGlob = (RD=1): ReadIn, (CO=1): Compute, ((RD=0)and(CO=0)):EA je konečný proces, ktorý spriaha agenty ReadIn, Compute a EA a implementuje tak niektorý zložitejší agent Glob, ktorého komunikačnú množinu KM môžeme vyjadriť takto: (RD=1): KM ReadIn # (CO=1): KM Compute # (RD=0) and (CO=0): (u;;u).(u;ef;u) kde KM ReadIn a KM Compute sú komunikačné množiny agentov ReadIn a Compute a komunikačné slovo (u;es;u).(u;ef;u) predstavuje KM prázdneho agenta EA. Funkciu g, určujúcu lokálny operačný stav q na konci agenta Glob, môžeme vyjadriť pomocou priraďovacích príkazov takto: Ak (RD=1), tak M := d 1,...d 16 inak M := M Ak (CO=1), tak DO := M[0] +... + M[15] a M := M, inak DO := u Agent Glob môžeme chápať ako špecifikáciu procesu PrGlob, t.j. opis procesu zvonka, bez opisu vnútornej štruktúry procesu. Agent Glob teda vyjadruje iba to, aké celkové správanie proces PrGlob v systéme VSYS vykazuje, neopisuje vnútornú štruktúru procesu. 5
Programové schémy Na nižšej (RT) úrovni špecifikácie, použijeme na opis procesov tzv. programové schémy. Programová schéma je konečná postupnosť tzv. označených príkazov (anglicky: labeled statements ) - dvojíc b1:c1; b2:c2;... ; bn:cn, kde bi sú symboly nazývané návestia (angl. :labels) a Ci sú špeciálne formuly, interpretované ako príkazy (anglicky: statements). Príkazy sú formuly sú typu 1-4 : 1. A / b, kde A označuje agent a b je návestie z možnej množiny B = {b1,b2,..,bn} (v zostavovanej schéme) 2. c 1 :A 1 / bj 1,...,c k :A k / bj k, kde A 1,..,A k sú agenty, c 1,..,c k sú predikáty tvoriace úplný disjunktívný systém a bj 1,..,bj k sú návestia z množiny B. 3. c 1 :bj 1,...,c k : bj k, kde c 1,..,c k sú predikáty ako v 2. a bj i sú návestia z množiny B. V tomto príkaze namiesto agentov A 1,..,A k si možno predstaviť nulový agent NA (Pozor, nie prázdny agent EA) 4. stop je špeciálny symbol. Prvý príkaz (príkaz pri návestí b1) sa interpretuje ako (prvý) začiatočný na vykonanie. 6
Interpretácia ostatných príkazov je zrejmá z nasledujúcich obrázkov. 1. bi: A / bj 3. bi: c 1 :bj 1,...,c k : bj k (Vykonaj A a potom skoč na návestie bj ) (Iba rozvetvi podľa predikátov) 2. bi: c 1 : A 1 / bj 1,...,c k : A k / bj k (Vykonaj agenta Ai a rozvetvi podľa hodnôt predikátov) 4. bi: stop (Ukonči proces) bi stop 7
PRÍKLADY 7: Vezmime procesy P1 a P2 z príkladov 5. Verzie ich zápisov v programových schémach sú takéto: a. P1 = [(RD=1): ReadIn, (CO=1): Compute, (RD) nor (CO): EA ] ω N1: (RD): ReadIn / N1, (CO):Compute / N1, (RD) nor (CO): EA / N1, alebo N1: (RD): N2, (CO): N3, (RD) nor (CO): N4; N2: ReadIn / N1; N3: Compute / N1; N4: EA / N1 b. P2 = [A1.A2.(c1:A2. c2 [A3], -c1:a1.a4)] c3.a5 L1: A1 / L2; L2: A2 / L3; L3: c1: A2 / L4, -c1:a1 / L6; L4: c2:l5, -c2:l7; L5: A3 / L4 L6: A4 / L7; L7: c3: A5 / L8, -c3: A1 / L2; L8: stop 8
Zjednodušenia v zápise príkazov c 1 : A / bj 1,...,c k : A / bj k ==> A /c 1 :bj 1,...,c k :bj k c 1 : A 1 / b,...,c k : A k / b ==> c 1 :A 1,...,c k :A k / b (operačné rozvetvenie) c: A 1 / bj 1, -c: A 2 / bj 2 ==> c: A 1 / bj 1, A 2 / bj 2 (priame rozvetvenie) c: A / bj 1, -c: A / bj 2 ==> c:a / bj 1, bj 2 c:a 1 / b, -c:a 2 / b ==> c:a 1, -c:a 2 / b Posledný príkaz zodpovedá príkazu if then.else. 9
Zreťazenie agentov Základným typom spriahnutia agentov v procesoch je ich zreťazenie, ktoré obsahuje v sebe ako podstatnú časť zreťazenie komunikačných formúl, založené na princípe: Agenty A, B s komunikačnými množinami KM A a KM B sa v procese zreťazujú. Potom každé komunikačné slovo w z KM A sa zreťazuje so slovami z KM B tak, že sa zlúči koncová akcia slova w z KM A s prvou akciou príslušného slova z KM B. Počet d-bodov v zreťazených slovách bude o jeden d-bod menší ako je súčet d-bodov komunikačných slov pred zreťazením. Zreťazenie A.B ilustruje nasledujúci obrázok. 10
Špeciálna operácia +" tu značí "zlúčenie" akcií, ktoré je definované iba ak sú pre každú premennú hodnoty v akciách zlučiteľné, čiže rovnaké, ak sú špecifikované (DV a DH obsahujú aj u ). Pre zlúčenie dvoch hodnôt jednotlivých premenných v zlučovaných akciách platí: a + a = a a + u = a u + a = a u + u = u Nevyhnutnou podmienkou preto, aby zreťazenie agentov A a B bolo definované (a teda malo zmysel) je, aby platilo: (a) Koncová akcia v agente A je zlučiteľná so začiatočnou akciou v agente B, t.j. vstupné vektory (vn a r1) a tiež výstupné vektory (hn a t1) sú zlučiteľné (b) Zreťazenie A. B je definované iba pre taký globálny začiatočný stav s A (začiatočný stav agenta A) pre ktorý platí: FA w ε KM A : q A = g A (s A,w) ε SI B kde SI B je množina začiatočných stavov v agente B a q A je koncový stav agenta A pre w (teda kocový stav q A v A padne do množiny SI B ) 11
Napríklad, ako vyzerá zreťazenie formúl ( ) komunikačných množín agentov ReadIn a Compute v procese P2 = ReadIn. Compute vo VSYS. KM ReadIn (RD=1; ;REQ=0).(ACK=1; ;REQ=0) *.[(ACK=0; ;REQ=0)(ACK=0; ;REQ=1) +. (ACK=1, D=d; ;REQ=1).(ACK=1, D=d; ;REQ=0)(ACK=1; ;REQ=0) * ] 1-16(D). (u; ef; RR=1) KM Compute (u; es; u).(u; ef ; DO=do, CR=1) Výsledná formula opisujúca KM generovanú v procese P2 je: KM A KM B (RD=1; ;REQ=0).(ACK=1; ;REQ=0) *.[(ACK=0; ;REQ=0)(ACK=0; ;REQ=1) +. (ACK=1, D=d; ;REQ=1).(ACK=1, D=d; ;REQ=0)(ACK=1; ;REQ=0) * ] 1-16(D). ( u; ; RR=1)(u; ef; DO=do, CR=1) Pri zreťazení sme zlúčili koncovú akciu (u; ef; RR=1) v komunikačnej formule agenta ReadIn so začiatočnou akciou (u; es; u) v komunikačnej formule agenta Compute. Koncový operačný stav q v konečnom procese P2, ktorý vlastne zodpovedá koncovému stavu q agenta Global = ReadIn.Compute, ktorý P2 špecifikuje, sa určí funkciou g ReadIn (s A,w) agenta ReadIn a začiatočným stavom zreťazovaného agenta Compute, teda FA w ε KM ReadIn : q = g Compute (s B, w Compute ) = = (g Compute (g ReadIn (s A, w), w Compute )= g (s A, w w Compute ), 12
kde s A, je začiatočný stav agenta ReadIn, a s B je začiatočný stav agenta Compute (a teda koncový stav agenta ReadIn) a w Compute je každé nadväzujúce (zreťaziteľné) komunikačné slovo z KM Compute na slovo w z množiny KM ReadIn. KM Global = { w ReadIn w Compute w ReadIn ε KM ReadIn, w Compute ε KM Compute } Funkcia g agenta Global vracia nasledujúce hodnoty operačných stavových premenných: M := d1, d2,.,d16 ; DO := d1+ d2+.+d16; CR := 1 Funkcie vs, ktoré určujú hodnoty výstupov v jednotlivých kom slovách v Agentoch ReadIn a Compute sa prenášajú do výsledného zreťazeného agenta Global = ReadIn. Compute. 13
D. Špecifikácia časovania Korektné fungovanie číslicového systému v definovanom diskrétnom čase vyžaduje určitú disciplínu v časovaní rozličných udalostí (vrátane časovacích udalostí), t.j. ich vhodné vzájomnom rozmiestnenie na osi spojitého času. Disciplína časovania sa opisuje v špecifikáciách rozličným spôsobom. Jedna z možností je opis pomocou tzv. časovacích pravidiel. Ide o predikáty (ktoré sú pravdivé alebo nepravdivé, t.j. majú logickú hodnotu 1 resp. 0). t(e) značí čas udalosti e. 1. Pravidlá o oneskoreniach príčinne viazaných udalostí del(e1, e, d) <=> t(e) = t(e1) + d delm([e1,e2,...,er], e, [d1,d2,...,dr]) <=> t(e) = m(t(e1)+d1,..., t(er)+dr), kde [e1,e2,...,er ] je zoznam tzv. vstupných udalostí, e je tzv. výstupná udalosť, d a [d1,d2,...,dr ] sú kvantitatívne časove parametre reálne (racionálne) čísla, viazané na vstupné udalosti, a "m" značí typ výberovej funkcie; m ε {min, max} (najbližší resp. najvzdialenejší čas výskytu výstupnej udalosti e.) Časovacie pravidlá vyjadrujú oneskorenie výskytu výstupnej udalosti e voči vstupnej udalosti, pričom výstupná udalosť je príčinne viazaná na vstupné udalosti. Pevne stanovujú časové body výskytu výstupných udalostí vzhľadom na časové parametre "d" (vo 14
forme tvrdej rovnosti). 2. Obmedzovacie pravidlá (obmedzenia) aft(e1, e2, d) <=> t(e2) >= t(e1) + d bef(e1, e2, d) <=> t(e2) <= t(e1) d afto (e1, e2, d) <=> t(e2) > t(e1) + d befo(e1, e2, d) <=> t(e2) < t(e1) - d Je zrejmé, že platí: bef(e1,e2,d ) aft(e2,e1,d) afto (e2,e1,d) befo(e1,e2,d) Časovacie pravidlá typu aft a bef viažu čas výskytu dvoch udalostí s parametrom "d" vo forme nerovnosti. Pri afto a befo ide o ostré (angl. sharp) nerovnosti. Poznamenávame, že časovacie pravidlá bef a befo sme zaviedli iba z praktickych dôvodov. Po zavedení pravidiel aft a afto sú pravidlá typu bef redundantne. 3. Pravidlá o stabilite signálu v analyzovanom intervale Int stb(x=v) <=> pre všetky t Int je <X>=v stb(x) <=> premenná X ma stabilnú nešpecifikovanú hodnotu stbi(x=v, e, d1, d2) <=> pre všetky t <t(e)-d1, t(e)+d2) je <X>=v stbi(x, e, d1, d2) <=> detto avšak X má stabilnú ľubovoľnú hodnotu stbe(x=v, e1, e2) <=> pre všetky t <t(e1), t(e2)); <X>=v stbe(x, e1, e2) <=> detto len X má stabilnú ľubovoľnú hodnotu 15
Pravidlá sú ilustrované na nasledujúcich obrázkoch delmax ( [e1, e2, e3], e, [d1, d2, d3] ) aft(e1,e2, p) stbi(x, e, d1, d2) 16
PRÍKLAD 8: Predpokladajme záchytný preklápací obvod (latch) podľa obrázku. Všetky premenné sú boolovské. V tomto systéme definujeme agent Nastav takto: Dátové typy DV={(<D>,<CK>)}, DH = {<Q >} = {0,1} SI ={ <Q>} = {0,1} Časovacie udalosti { up(ck=1), up(d=d), up(q=d), dw(ck=1), ef } KM [(D=d,CK=0;;u)+(D=d, CK=1;;Q=d)]( CK=0,D=d;;Q=d)(u;ef;Q=d) g Q := d Poznámka: X = a, kde X je vtupný port značí, že časovacia udalosť je daná up(x=a). 17
Časovacie pravidlá stbi(d, dw(ck=1), Tset, Thold) aft (up(ck=1), dw(ck=1), Ti1) aft(up(ck=1, j), (up(ck=1, j+1)), Tck) delmax([up(ck=1), up(d=d)], up(q=d), [DcqM, DdqM]) del((up(ck=1), dw(d=d),dcqm) Tset, Thold sú známe časy predstihu a presahu vstupného údaja (d) pred resp. za udalosťou dw(ck=1), t.j. zadnou hranou impulzu 1 v CK; Ti1 a Tck sú minimálne časy trvania impulzu 1 v CK, resp. cyklu hodín CK (čas medzi udalosťami up(ck=1, j) a (up(ck=1, j+1)); DcqM a DdqM sú maximálne časy oneskorení zmeny výstupnej premennej Q (up(q=d)) vzhľadom na zmeny vstupných premenných CK a D (up(ck=1) a up(d=d)); Poznámka: Dcqm je rovnaký typ časového parametra ako DcqM, ide však o jeho minimálnu (m), rep. maximánu (M) hodnotu. 18
Časovacie pravidlá dopĺňajú špecifikáciu systému. V spojení s agentom, tvoria jeho súčasť. Vkladáme ich do agentov, keď je to potrebné, teda ak chceme rozšíriť (spresniť) špecifikáciu z cyklov na spojitý čas. V ďalšom, pri formálnom opise agentov, ak zahrnieme do nich aj množinu TR časovacích pravidiel, agent A opíšeme ako formálny systém A = def (S, SI, KMS, Q, g, TR) KMS = (SI, DV, DH, R,vs), kde TR je množina časovacích pravidiel. Pravidlá sú definované pri určitých časových parametroch. Vo všeobecnosti tieto parametre môžu byť funkcie rozličných fyzikálnych parametrov (ako sú napr. čas, teplota, počet rozvetvení - "fan-out" a pod.). Môžu mať: pevnú, známu číselnú hodnotu, hodnotu z daného intervalu <dmin, dmax>, kde dmin a dmax sú hraničné hodnoty parametra symbolickú hodnotu p, ktorá sa pri vývoji špecifikácie nahradí reálnym číslom 19
E. Štandardný zápis špecifikácie systému s agentmi a procesmi Zápis agentov Pri zápisoch agentov a pri beh. špecifikácii digitálneho podsystému ako celku, budeme používať určitý systém (rámec). Položky agenta označujeme nasledujúcimi symbolmi: SI.. zápis množiny SI začiatočných stavov vyjadrený pomocou začiatočných hodnôt stavových premenných (napr.<zj>=d) alebo charakteristickým logickým výrazom, ktorý jednoznačne definuje stavy v SI TE.. opis množiny TE typov časovacích udalostí v komunikačných výrazoch (formulách) min. es a ef KM opis komunikačnej množiny agenta komunikačnou formulou s trojicami typu (v; e ; h). Ak komunikačnej formule vvystupujú iba mená akcií namiesto samotných akcií musí nasledovať deklarácia akcií akcia meno akcie opis trojice akcia meno akcie opis trojice vs...výrazy určujúce symbolické hodnoty primárnych výstupov (výstupných portov) systému v komunikačných slovách g. priraďovacie výrazy určujúce hodnoty lokálnych stavových premenných (v budúcej operačnej časti) na konci exekúcie agenta TR... zápis časovacích pravidiel Nepotrebné položky obyčajne vynechávame (napr. vynecháme SI ak SI = S alebo od 20
začiatočného stavu sú výstupné slová nezávislé, alebo vynecháme vs ak hodnoty výstupov sú už uvedené komunikačných slovách a pod.). Predpokladáme, že opis množín DV a DH ako aj množiny operačných stavov Q systému, ktoré sú vo svojej podstate určené množinami primárnych vstupov, primárnych výstupov, resp. lokálnych stavových premenných a príslušnými údajovými typmi, sú dané v opise systému ako celku. Generický spôsob zápisu agenta: agent meno agenta (..,x i,..;...,y j,..;...,z r,..;...,t k ), kde x, y a z sú generické vstupné, výstupné a stavové premenné a T sú časové parametre daného generického agenta. 21
PRÍKLAD 3 (pokračovanie): Zápis agenta ReadIn systému VSYS s použitím uvedenej symboliky agent ReadIn SI <RR> = 0 // všetky stavy z S, pri ktorých je <RR>=0 TE es, up(clk=1), ef // es je začiatočná časovacia udalosť KM g TR (RD=1;es;REQ=0)(ACK=1;;REQ=0) * [(ACK=0;;REQ=0)(ACK=0;REQ=1) + (D=d j,ack=1;;req=1)(d=d j,ack=1;;req=0)(ack=1;;req=0) * 1-16 (D) ] (u; ef; RR=1) // hodnoty 0 alebo 1 relevantných výstupov REQ a RR sú // priamo uvedené v komunikačnom výraze KM, teda vs vynecháme M := d 1,...,d 16 ; RR := 1 del(up(rd=1), up(rr=1), T RD ); befo(up(rr=1), up(m=d 1,...,d 16 ), 0); //oneskorenie 0 špecifikuje len poradie afto(up(rr=1),ef,0) 22
Agent ReadIn zadaný ako generický (všeobecný) so všeobecnými premennými a parametrami:. agent ReadIn (Start, Data, Ack, Clk; Req, Signal; RAM, Signal; T StSi ) SI Signal = 0 TE es, up(clk=1), ef; KM // "es" a "ef" sú štandardné časovacie udalosti a Clk je // štandardné meno pre hodiny (Start=1;es;Req=0).(Ack=1; ;Req=0) * [(Ack=0 ;;Req=0).(Ack=0; ;Req=1) +.(Data=d j, Ack=1; ; Req=1) (Data=d j, Ack=1; ; Req=0 ). g TR.(Ack=1; ; Req=0) * ] 1-16(Data).(u; ef; Signal=1); RAM := d 1,...,d 16 ; Signal := 1; del(up(start=1), up(signal=1), T StSi ); befo(up(signal=1), up(ram=d 1,...,d 16 ), 0); afto(up(signal=1), ef, 0); Pri vytvorení konkrétnej inštancie agenta pri aplikácií sa potom uvedie s príslušným mapovaním premenných a časových parametrov ako ReadIn(RD, D,ACK, CLK; REQ, RR; M, RR; T RD ) 23
PRÍKLAD 4: Procesor CPU, agent Agent-1 (čítanie inštrukcie) agent Agent-1 SI Contr = RES; TE es, up(clk=1), ef; KM (Res=1;es;u) *.(Res=0;;u).(Wait=0;;u).(Wait=1;;A=PC,Rd/Wr=1,Req=1) +.(Wait=0,D=d;; Req=0).(Wait=0;; u) *.(Wait=1; ef; u); g IR := d; PC := PC+1; Contr := OD; 24