Введение в моделирование и верификацию аппаратных и...

36

Transcript of Введение в моделирование и верификацию аппаратных и...

Page 1: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ââåäåíèå â ìîäåëèðîâàíèå è âåðè�èêàöèþàïïàðàòíûõ è ïðîãðàììíûõ ñèñòåìËåêöèÿ 7: Äâîè÷íûå ðàçðåøàþùèå äèàãðàììû (BDD).Ñèìâîëüíàÿ ïðîâåðêà ìîäåëåéÁîðèñ Þðüåâè÷ Êîíåâkonev�liverpool.a .ukLiverpool UniversityÎêòÿáðü-Íîÿáðü 2007 1 / 32

Page 2: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïëàí ïðîøëûé ðàçÑèñòåìû ïåðåõîäîâ êàê ìîäåëè âû÷èñëåíèéËîãè÷åñêèé �îðìàëèçì äëÿ îïèñàíèÿ ñâîéñòâLTLCTLÀëãîðèòì ïðîâåðêè CTL ìîäåëåé ñ ÿâíûì ïðåäñòàâëåíèåìNuSMVÑåãîäíÿÑòðóêòóðû äàííûõ è àëãîðèòìû äëÿ ý��åêòèâíîéðåàëèçàöèè 2 / 32

Page 3: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ñèñòåìà ïåðåõîäîâS = (Q,T , q0,L)

Q � êîíå÷íîå ìíîæåñòâî ñîñòîÿíèéT ⊆ Q × Q � ìíîæåñòâî ïåðåõîäîâq0 � íà÷àëüíîå ñîñòîÿíèåL : Q → 2P rop � ïîìåòêà ïðîïîçèöèîíàëüíûìèïåðåìåííûìè

3 / 32

Page 4: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðîâåðêà CTL ìîäåëåéÏî äàííîé ñèñòåìå ïåðåõîäîâ S = (Q,T , q0,L) è CTL�îðìóëå ϕ ïðîâåðèòü, âåðíî ëè, ÷òî S |= ϕ.Ìû ïðåäñòàâèëè äèíàìè÷åñêèé àëãîðèòì, êîòîðûéïîìå÷àåò ñîñòîÿíèÿ ñèñòåìû ïåðåõîäîâ S �îðìóëàìèòàêèì îáðàçîì, ÷òî ñîñòîÿíèå p ïîìå÷àåòñÿ �îðìóëîé ψòîãäà è òîëüêî òîãäà, êîãäà (S , p) |= ψ.Ïðîáëåìà: Ìíîæåñòâà ñîñòîÿíèé ìîæåò áûòü ÷ðåçâû÷àéíîâåëèêî > 1020

4 / 32

Page 5: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

ÈäåÿÏðè ÿâíîì ïðåäñòàâëåíèè, òðåáóåòñÿ õîòÿ áû îäèí îáúåêòäëÿ ïðåäñòàâëåíèÿ îäíîãî ñîñòîÿíèÿ ñèñòåìû ïåðåõîäîâÄëÿ ïðåäñòàâëåíèÿ n ñîñòîÿíèé n îáúåêòîâ�Óíàðíàÿ çàïèñü�×òîáû çàïèñàòü íîìåð ñîñòîÿíèÿ, òðåáóåòñÿ log n áèòÏðåäñòàâèì ñèñòåìû ïåðåõîäîâ ñ ïîìîùüþ áóëåâûõ �óíêöèé

5 / 32

Page 6: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðåäñòàâëåíèå ìíîæåñòâ áóëåâûìè �óíêöèÿìèÏóñòü Σ � íåêîòîðîå ìíîæåñòâî; |Σ| 6 2nÏðåäñòàâèì ýëåìåíòû Σ êàê âåêòîðà èç n áèòÏðèìåð: V = {ÄÄ : 1..31,ÌÌ : 1..12,���� : −4000..4000}n = log 31 + log 12 + log 8001 = 5 + 4 + 13 = 22Ïðåäñòàâèì S ⊆ Σ êàê �óíêöèþ {0, 1}n → {0, 1}(õàðàêòåðèñòè÷åñêóþ �óíêöèþ S)

fS(s) =

{1, åñëè s ∈ S

0, åñëè s 6∈ SÏðèìåð: D ⊆ V ðåàëüíûå äàòûfD(00001

︸ ︷︷ ︸

1

0001︸︷︷︸ÿíâàðü 0

︸︷︷︸

+

011111000110︸ ︷︷ ︸

1980

) = 1

fD(11111︸ ︷︷ ︸

31

0010︸︷︷︸�åâðàëü 0

︸︷︷︸

+

011111000110︸ ︷︷ ︸

1980

) = 0 6 / 32

Page 7: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ñèìâîëüíîå ïðåäñòàâëåíèå ñèñòåì ïåðåõîäîâÄàíà ñèñòåìà ïåðåõîäîâ (Q,T , q0,L)Ïóñòü n = log Q, m = log L

Q ïðåäñòàâèì êàê fQ : {0, 1}n → {0, 1}

T ⊆ Q × Q ïðåäñòàâèì êàê fT : {0, 1}n × {0, 1}n → {0, 1}

q0 ïðåäñòàâèì êàê âåêòîð èç n áèòL : Q → 2Prop ïðåäñòàâèì êàê M : Prop → 2Q

fM : {0, 1}m × {0, 1}n → {0, 1}

7 / 32

Page 8: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðq0 = 01T = {(01, 00), (00, 11), (00, 10),(11, 10), (10, 11),(10, 10)} 00 01

1011

fT = (¬x0 ∧ x1 ∧ ¬x ′0 ∧ ¬x ′1) ∨ (¬x0 ∧ ¬x1 ∧ x ′0 ∧ x ′1) ∧ . . .

8 / 32

Page 9: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Âû÷èñëåíèå Pre è Post äèíàìè÷åñêîì àëãîðèòìå íàì áûëè íåîáõîäèìûPre(P) = {q ∈ Q | ∃p ∈ P ,∃e ∈ E : (q, e, p) ∈ T}Post(P) = {q ∈ Q | ∃p ∈ P ,∃e ∈ E : (p, e, q) ∈ T}Äîïóñòèì, P ⊆ Q è T ïðåäñòàâëåíû õàðàêòåðèñòè÷åñêèìè�óíêöèÿìè:fP(x1, . . . , xn) : {0, 1}n → {0, 1}

fT (x1, . . . , xn, x′

1, . . . , x′

n) : {0, 1}n × {0, 1}n → {0, 1}ÒîãäàfPre(P)(x1, . . . , xn) = ∃x ′1, . . . , x

n(fP(x ′1, . . . , x′

n)∧

fT (x1, . . . , xn, x′

1, . . . , x′

n))èfPost(P)(x

1, . . . , x′

n) = ∃x1, . . . , xn(fP(x1, . . . , xn)∧

fT (x1, . . . , xn, x′

1, . . . , x′

n)) 9 / 32

Page 10: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Òðåáîâàíèÿ ê ïðåäñòàâëåíèþ áóëåâûõ �óíêöèéÊîìïàêòíîñòüÁûñòðîå âû÷èñëåíèå f1 ∧ f2, f1 ∨ f2, ¬f1Áûñòðîå âû÷èñëåíèå g(x) = ∃yf (x , y)Íå áûâàåòÍà ïðàêòèêå, äâîè÷íûå ðàçðåøàþùèå äèàãðàììû (binaryde ision diagrams, BDD) ý��åêòèâíî ðåàëèçóþò ýòè îïåðàöèè

10 / 32

Page 11: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

BDDÄâîè÷íàÿ ðàçðåøàþùàÿ äèàãðàììà ýòî àöèêëè÷åñêèéîðèåíòèðîâàííûé ãðà� ñ êîðíåì, ñîäåðæàùèé âåðøèíû äâóõòèïîâÒåðìèíàëüíûå âåðøèíû � âåðøèíû âûõîäíîé ñòåïåíè 0,ïîìå÷åííûå 0 èëè 1Íåòåðìèíàëüíûå âåðøèíû, ïîìå÷åííûåïðîïîçèöèîíàëüíûìè ïåðåìåííûìè, èìåþùèå äâåèñõîäÿùèå äóãè, ïîìå÷åííûå 0 è 1 (èëè low è high)

11 / 32

Page 12: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðf (x , y) = (¬x ∧ y) ∨ (x ∧ y)

xy 0

00 11 y1

00 11 12 / 32

Page 13: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðf (x , y) = (¬x ∧ y) ∨ (x ∧ y)

xy0 1 y0 1 12 / 32

Page 14: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðf (x , y) = (¬x ∧ y) ∨ (x ∧ y)

xy0 1 y0 1xy 1 y0 12 / 32

Page 15: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðf (x , y) = (¬x ∧ y) ∨ (x ∧ y)

xy0 1 y0 1xy 1 y0

xy0 1 12 / 32

Page 16: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðf (x , y) = (¬x ∧ y) ∨ (x ∧ y)

xy0 1 y0 1xy 1 y0

xy0 1y0 112 / 32

Page 17: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Redu eÏîâòîðÿòü, ïîêà âîçìîæíîÓäàëèòü ïîâòîðíûå âõîæäåíèÿ òåðìèíàëüíûõ âåðøèí èïåðåíàïðàâèòü äóãèÓäàëèòü ïîâòîðÿþùèåñÿ íåòåðìèíàëüíûå âåðøèíû: Åñëèäëÿ íåòåðìèíàëüíûõ âåðøèí u è v ìû èìååìvar(u) = var(v), low(u) = low(v), high(u) = high(v),óäàëèòü îäíó èç íèõ è ïåðåíàïðàâèòü âõîäÿùèå äóãè íàäðóãóþ âåðøèíóÓäàëèòü èçáûòî÷íûå ïðîâåðêè: åñëè äëÿ íåòåðìèíàëüíîéâåðøèíû v ìû èìååì low(v) = high(v), óäàëèòü v èïåðåíàïðàâèòü âñå âõîäÿùèå äóãè íà low(v).Ñëîæíîñòü: O(|B | · log |B |) 13 / 32

Page 18: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Óïîðÿäî÷åííûå áèíàðíûå ðàçðåøàþùèå äèàãðàììûÓïîðÿäî÷åííûå áèíàðíûå ðàçðåøàþùèå äèàãðàììû (OrderedBinary De ision Diagrams, OBDD)Íè îäíà ïåðåìåííàÿ íå ïîâòîðÿåòñÿ íè íà îäíîì ïóòèÏåðåìåííûå âñòðå÷àþòñÿ â îäíîì è òîì æå ïîðÿäêå íàëþáîì ïóòè îò êîðíÿ ê òåðìèíàëüíîé âåðøèíåÍàïðèìåð, x3 < x1 < xn−1 < · · · < x2Òåîðåìà (Áðèàí)Äëÿ ëþáîé áóëåâîé �óíêöèè f (x1, . . . , xn) : {0, 1}n → {0, 1} èëþáîãî ïîðÿäêà íà ïåðåìåííûõ x1, . . . , xn ñóùåñòâóåòåäèíñòâåííàÿ ðåäóöèðîâàííàÿ OBDD, ïðåäñòàâëÿþùàÿ f . 14 / 32

Page 19: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Îïåðàöèè íàä OBDD: îãðàíè÷åíèå (Restri t)f |xi←b(x1, . . . , xn) = f (x1, . . . , xi−1, b, xi+1, . . . xn)Àëãîðèòì:Åñëè xi = var(root), âçÿòü low -ïîäãðà�, åñëè b = 0, èëè

high-ïîäãðà�, åñëè b = 1Èíà÷å äëÿ êàæäîé OBDD âåðøèíû v ò.÷. ñóùåñòâóåò äóãàv → w , ãäå var(w) = xi ïåðåíàïðàâèòü äóãó íà low(w),åñëè b = 0, èëè high(w), åñëè b = 1,Ïðèìåíèòü Redu e ê ïîëó÷åííîé OBDD

15 / 32

Page 20: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðx1

x2

x3

0 y3 1y2

y1

f |x3←0 =? f |x3←1 =?16 / 32

Page 21: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Îïåðàöèè íàä BDDÄàíû: OBDD äëÿ f1 è f2.Ïóñòü ⋆ = ∧,∨,→ . . .�åêóðñèâíàÿ �óíêöèÿ Apply(root(f1), root(f2), ⋆) ñòðîèòOBDD äëÿ f1 ⋆ f2Èñïîëüçóåì ðàçëîæåíèå Øåííîíà:Äëÿ ëþáîé áóëåâîé �óíêöèè f âåðíîf = (¬x ∧ f |x←0) ∨ (x ∧ f |x←1)(ñì. òàêæå Áóëü, 1854) ÷àñòíîñòè,

f1 ⋆ f2 = (¬x ∧ (f1|x←0 ⋆ f2|x←0)) ∨ (x ∧ (f1|x←1 ⋆ f2|x←1)) 17 / 32

Page 22: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Apply(v1, v2, ⋆)Åñëè è v1 è v2 � òåðìèíàëüíûå âåðøèíû, âåðíóòü v1 ⋆ v2Åñëè var(v1) = var(v2), ïîñòðîèòüBDD0 = Apply(low(v1), low(v2), ⋆)BDD1 = Apply(high(v1), high(v2), ⋆)âåðíóòü Redu e ïðèìåíåííûé ê var(v1)

BDD0 BDD1Åñëè var(v1) < var(v2), òî f2 íå çàâèñèò îò var(v1)ÏîñòðîèòüBDD0 = Apply(low(v1), v2, ⋆)BDD1 = Apply(high(v1), v2, ⋆)âåðíóòü Redu e ïðèìåíåííûé ê var(v1)

BDD0 BDD1Ñëó÷àé var(v1) > var(v2) àíàëîãè÷åí 18 / 32

Page 23: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåða2

a1

a0

0 1

f

a2

a1 a1

a0

0 1

g 19 / 32

Page 24: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåíåíèå îòðèöàíèÿÕîòÿ OBDD äëÿ îòðèöàíèÿ B ìîæåò áûòü ïîñòðîåíàïðèìåíåíèåì �óíêöèè Apply , åñòü ãîðàçäî áîëåå ý��åêòèâíûéìåòîä: ïîìåíÿòü ìåñòàìè 1 è 0

20 / 32

Page 25: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Êâàíòè�èêàöèÿ∃xi f (x1, . . . , xn) = f |xi←0 ∨ f |xi←1

∀xi f (x1, . . . , xn) = f |xi←0 ∧ f |xi←1

21 / 32

Page 26: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðèìåðx1

x2

x3

0 y3 1y2

y1

∃x3f =? ∃x2∃x3f =?22 / 32

Page 27: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

ÑëîæíîñòüÀëãîðèòì Âõîä Âûõîä ÑëîæíîñòüRedu e B redu ed BDD O(|B | · log |B |)Restri t B B |x←0 èëè B |x←1 O(|B | · log |B |)Apply∗ B1,B2 B1 ⋆ B2 O(|B | · |B2|)Exists∗ B ∃xB O(|B |2)∗ ñ êýøèðîâàíèåì ïðîìåæóòî÷íûõ ðåçóëüòàòîâÇàìåòèì, ÷òî ñëîæíîñòü çàâèñèò îò ðàçìåðà èñõîäíîé BDD. . .

23 / 32

Page 28: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

À íàñêîëüêî êîìïàêòíû ñàìè BDD?Çàâèñèò îò ïîðÿäêàx1

y1

0

y2 y2

x2

1

y1

x1

x2

y1 y1y1 y1

x2

1 0

y2 y2

Ñóùåñòâóþò áóëåâû �îðìóëû äëÿ êîòîðûõ íàèìåíüøàÿ OBDDèìååò ýêñïîíåíöèàëüíûé ðàçìåð 24 / 32

Page 29: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

ÊîììåíòàðèéÇäåñü ëåêöèÿ ìîæåò êîí÷èòñÿ.  òàêîì ñëó÷àå,ïðîäîëæåíèå áóäåò ðàññêàçàíî çàâòðà.Åñëè æå îñòàíåòñÿ âðåìÿ, ìû ïðîäîëæèì.

25 / 32

Page 30: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ñèìâîëüíîå ïðåäñòàâëåíèå ñèñòåì ïåðåõîäîâ ïðèïîìîùè OBDDÏðåäñòàâèì ñèñòåìó ïåðåõîäîâ (Q,T , q0,L) ïðè ïîìîùè OBDDÏóñòü n = log Q, m = log L

Q ïðåäñòàâèì êàê BfQ : {0, 1}n → {0, 1}

T ⊆ Q × Q ïðåäñòàâèì êàê BfT : {0, 1}n × {0, 1}n → {0, 1}

q0 ïðåäñòàâèì êàê âåêòîð èç n áèòL : Q → 2Prop ïðåäñòàâèì êàê BM : Prop → 2Q

BM : {0, 1}m × {0, 1}n → {0, 1}

26 / 32

Page 31: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ñèìâîëüíûé äèíàìè÷åñêèé àëãîðèòìÀëãîðèòì ðàáîòàåò ïî èíäóêöèè ïî ïîñòðîåíèþ �îðìóëûíà÷èíàÿ ñ íàèáîëåå âëîæåííûõ ïîä�îðìóë.Äëÿ êàæäîé ïîä�îðìóëû ψ, àëãîðèòì ñòðîèò OBDD Bψò.÷. Bψ(x1, . . . , xn) = 1 òîãäà è òîëüêî òîãäà, êîãäà áèòîâûéâåêòîð x1, . . . , xn ïðåäñòàâëÿåò ýëåìåíò q òàêîé ÷òî(S , q) |= ψ.�àññìîòðèì ñëó÷àè â çàâèñèìîñòè îò �îðìû ψ

ψ = false: Bfalse = 0ψ = p: Ïóñòü z1, . . . , zm ïðåäñòàâëÿåò p.Bp = BM |x1 ← z1, . . . , xm ← zm

ψ = ψ1 ∧ ψ2: Bψ = Apply(Bψ1 ,Bψ2 ,∧)ψ = ¬ψ1: B¬ψ1 = Not(Bψ1)ψ = EXψ1: BEXψ =∃x ′

1, . . . , x′

n(BfT (x1, . . . , xn, x′

1, . . . , x′

n) ∧ Bψ1(x′

1, . . . , x′

n)) 27 / 32

Page 32: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ñèìâîëüíûé äèíàìè÷åñêèé àëãîðèòì: AFψ1

ψ = AFψ1

BAFψ1 = B ′ = Bψ1repeatB ′ = BAFψ1

BAFψ1 = B ′∨∀x ′

1, . . . , x′

n(BfT (x1, . . . , xn, x′

1, . . . , x′

n)→ B ′(x ′

1, . . . , x′

n))until BAFψ1 6= B ′

AFψ1

AFψ1

AFψ1

AFψ1

AFψ1

AFψ1

AFψ1

28 / 32

Page 33: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ñèìâîëüíûé äèíàìè÷åñêèé àëãîðèòì: Eψ1Uψ2

ψ = Eψ1Uψ2

BEψ1Uψ2 = B ′ = Bψ2repeatB ′ = BEψ1Uψ2

BEψ1Uψ2 = B ′∨∃x ′

1, . . . , x′

n(BfT (x1, . . . , xn, x′

1, . . . , x′

n)∧Bψ1(x1, . . . , xn) ∧ B ′(x ′

1, . . . , x′

n))until BAFψ1 6= B ′

Eψ1Uψ2Eψ1Uψ2

ψ1ψ1

Eψ1Uψ2

29 / 32

Page 34: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Íà ïðàêòèêåÏðîâåðêà En ore Gigamax Ca he SystemÌóëüòèïðîöåññîð ñ ðàñïðåäåëåííîé ïàìÿòüþ1 .0 0 E+ 0 8

1 .0 0 E+ 0 9

1 .0 0 E+ 1 0

1 .0 0 E+ 1 1

1 .0 0 E+ 1 2

1 .0 0 E+ 1 3

1 .0 0 E+ 1 4

0 1 2 3 4 5 6 7Caches per cluster

Reach

ab

le s

tate

s

Ýêñïîíåíöèàëüíûé ðîñò ÷èñëà ñîñòîÿíèé 30 / 32

Page 35: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

�àçìåð BDD0

5 0 0 0 0

1 0 0 0 0 0

1 5 0 0 0 0

2 0 0 0 0 0

2 5 0 0 0 0

0 1 2 3 4 5 6 7Caches per cluster

BD

D n

od

es

�îñò ðàçìåðà ëèíååí 31 / 32

Page 36: Введение в моделирование и верификацию аппаратных и программных систем, осень 2007: Двоичные разрешающие

Ïðîèçâîäèòåëüíîñòü BDD0

2 0 0

4 0 0

6 0 0

8 0 0

1 0 0 0

0 1 2 3 4 5 6 7Caches per cluster

s

Execut ion

t im e

�îñò âðåìåíè êâàäðàòè÷åí 32 / 32