SLIDE 1
strt ts s sts - - PowerPoint PPT Presentation
strt ts s sts - - PowerPoint PPT Presentation
strt ts s sts r r t rr strt sst sys 1 sys n
SLIDE 2
SLIDE 3
❖✉t❧✐♥❡
ts ♠❡❝❤❛♥✐s♠
❚✐♠❡st❛♠♣ ♠❡❝❤❛♥✐s♠ ❉✐str✐❜✉t❡❞ ♦r❞❡r✐♥❣ ♦❢ ❝♦♥✢✐❝t✐♥❣ r❡q✉❡sts ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ❛❧❣♦r✐t❤♠ ❧❡✈❡❧ ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ♦✈❡r✈✐❡✇ ❈②❝❧✐❝ t✐♠❡st❛♠♣s
SLIDE 4
❚✐♠❡st❛♠♣ ♠❡❝❤❛♥✐s♠ ✇✐t❤♦✉t ❛❝❦s
ts ♠❡❝❤❛♥✐s♠
❊❛❝❤ s②st❡♠ j ❤❛s ✐♥t❡❣❡r ✏❝❧♦❝❦✑ clk✱ ✐♥✐t✐❛❧❧② ✵ ❲❤❡♥ j ❞♦❡s ❛♥ ❡✈❡♥t x t♦ ❜❡ ♦r❞❡r❡❞✿ ✐♥❝r❡♠❡♥t clk✱ ❜r♦❛❞❝❛st [x, clk, j] clk value✿ t✐♠❡st❛♠♣ ✭ts✮ ♦❢ x [clk value, id]✿ ❡①t❡♥❞❡❞ t✐♠❡st❛♠♣ ✭❡ts✮ ♦❢ x ❲❤❡♥ j r❡❝❡✐✈❡s ♠s❣ [y, t, k]✿ clk ← ♠❛①(t, clk) + ✶ x✳❡ts < y✳❡ts✿ ✭x✳ts < y✳ts✮ ♦r ✭x✳ts = y✳ts ❛♥❞ x✳✐❞ < y✳✐❞✮ ❊✈❡♥t x ♦r❞❡r❡❞ ❜❡❢♦r❡ ❡✈❡♥t y ✐❢ x✳❡ts < y✳❡ts ❋♦r ♠♦st ❛♣♣❧✐❝❛t✐♦♥s✱ ♥❡❡❞ ❛❝❦s t♦ t✐♠❡st❛♠♣s
SLIDE 5
❚✐♠❡st❛♠♣ ♠❡❝❤❛♥✐s♠ ✭✇✐t❤ ❛❝❦s✮
ts ♠❡❝❤❛♥✐s♠
❊❛❝❤ s②st❡♠ j ❤❛s ✐♥t❡❣❡r ❝❧♦❝❦ clk✱ ✐♥✐t✐❛❧❧② ✵ rtsk✱ k = j✱ ✐♥✐t✐❛❧❧② ✵ ✴✴ ❧❛st ts r❝✈❞ ❢r♦♠ k ❧❡t αRts✿ ♠✐♥([rtsk, k] : k = j) ✴✴ ♥♦ ♥❡✇ ❡ts < αRts ❲❤❡♥ j ❞♦❡s ❛♥ ❡✈❡♥t x t♦ ❜❡ ♦r❞❡r❡❞✿ ✐♥❝r❡♠❡♥t clk✱ ❜r♦❛❞❝❛st [x, clk, j] ❲❤❡♥ j r❡❝❡✐✈❡s ♠s❣ [y, t, k]✿ clk ← ♠❛①(t, clk) + ✶ rtsk ← t✱ s❡♥❞ [❛❝❦, clk, j] t♦ k ❲❤❡♥ j r❡❝❡✐✈❡s ♠s❣ [❛❝❦, t, k]✿ clk ← ♠❛①(t, clk)✱ rtsk ← t
SLIDE 6
Pr♦♣❡rt✐❡s
ts ♠❡❝❤❛♥✐s♠
❉❡✜♥❡ ❛✉①✐❧✐❛r② q✉❛♥t✐t✐❡s hst✿ s❡q ♦❢ ❛❧❧ ❡ts✬s ✐♥ ❡ts✲♦r❞❡r ✴✴ ✐♥✐t✐❛❧❧② [ [✵, ✵] ] j.hst✿ s❡q ♦❢ ❡ts✬s s❡❡♥ ❜② j ✐♥ ❡ts✲♦r❞❡r ✴✴ ✐♥✐t✐❛❧❧② [ [✵, ✵] ] j.αhst✿ ♣r❡✜① ♦❢ j.hst ♦❢ ❡ts✬s ≤ j.αRts ❙❛❢❡t② ♣r♦♣❡rt✐❡s ■♥✈ j.hst s✉❜s❡q✉❡♥❝❡✲♦❢ hst ■♥✈ j.αhst ♣r❡✜①✲♦❢ hst Pr♦❣r❡ss ♣r♦♣❡rt✐❡s ✭❛ss✉♠✐♥❣ ♥♦ s②st❡♠ st♦♣s r❝✈✐♥❣✮ j.αRts = z < hst.last ❧❡❛❞s✲t♦ j.αRts > z j.αhst.size = z < hst.size ❧❡❛❞s✲t♦ j.αhst.size > z
SLIDE 7
❖✉t❧✐♥❡
r❡q✉❡st ♦r❞❡r✐♥❣
❚✐♠❡st❛♠♣ ♠❡❝❤❛♥✐s♠ ❉✐str✐❜✉t❡❞ ♦r❞❡r✐♥❣ ♦❢ ❝♦♥✢✐❝t✐♥❣ r❡q✉❡sts ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ❛❧❣♦r✐t❤♠ ❧❡✈❡❧ ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ♦✈❡r✈✐❡✇ ❈②❝❧✐❝ t✐♠❡st❛♠♣s
SLIDE 8
❘❡q✉❡st ♦r❞❡r✐♥❣ ♣r♦❜❧❡♠
r❡q✉❡st ♦r❞❡r✐♥❣
❈♦❧❧❡❝t✐♦♥ ♦❢ s②st❡♠s ❛tt❛❝❤❡❞ t♦ ❛ ✜❢♦ ❝❤❛♥♥❡❧ ❯s❡rs ✐ss✉❡ ❝♦♥✢✐❝t❛❜❧❡ r❡q✉❡sts t♦ t❤❡ s②st❡♠s ❊❛❝❤ s②st❡♠ s❤♦✉❧❞ s❡r✈❡ ✐ts r❡q✉❡sts s♦ t❤❛t ❝♦♥✢✐❝t✐♥❣ r❡q✉❡sts ❛r❡ ♥♦t s❡r✈❡❞ s✐♠✉❧t❛♥❡♦✉s❧② ✭❡✈❡♥ ❜② ❞✐✛❡r❡♥t s②st❡♠s✮ ❙♦♠❡ s♣❡❝✐❛❧ ❝❛s❡s ♦❢ t❤❡ ♣r♦❜❧❡♠ ❞✐str✐❜✉t❡❞ ❧♦❝❦ ❡✈❡r② t✇♦ r❡q✉❡sts ❝♦♥✢✐❝t ❞✐str✐❜✉t❡❞ r❡❛❞❡rs✲✇r✐t❡rs ❧♦❝❦ ❝❧❛ss✐❢② r❡q✉❡sts ✐♥t♦ r❡❛❞s ❛♥❞ ✇r✐t❡s ✇r✐t❡ ❝♦♥✢✐❝ts ✇✐t❤ ❡✈❡r② ♦t❤❡r r❡q✉❡st
SLIDE 9
❙♦❧✉t✐♦♥ ♦✈❡r✈✐❡✇
r❡q✉❡st ♦r❞❡r✐♥❣
❙②st❡♠ j ❛✉❣♠❡♥ts t❤❡ ts ♠❡❝❤❛♥✐s♠ ❛s ❢♦❧❧♦✇s ▼❛✐♥t❛✐♥ ✈❛r✐❛❜❧❡ req✿ s❡t ♦❢ ✏♦♥❣♦✐♥❣✑ r❡q✲❡ts t✉♣❧❡s ❯♣♦♥ ❧♦❝❛❧ r❡q✉❡st x✿ ❛ss✐❣♥ ts✱ ❛❞❞ [x,ts,j] t♦ req ❯♣♦♥ r❝✈✐♥❣ [y,t,k]✿ ♣r♦❝❡ss ts✱ ❛❞❞ [y,t,k] t♦ req ❙❡r✈❡ [x,t,j] ✐♥ req ✇❤❡♥✿
[t,j] < αRts ❛♥❞ [t,j] < [u,k] ❢♦r ❡✈❡r② ❝♦♥✢✐❝t✐♥❣ [y,u,k] ✐♥ req
❆❢t❡r s❡r✈✐♥❣ [x,t,j]✿ r❡♠♦✈❡ ✐t ❢r♦♠ req✱ ❜❝❛st [REL,x,t,j] ❯♣♦♥ r❝✈✐♥❣ [REL,y,t,k]✿ r❡♠♦✈❡ [y,t,k] ❢r♦♠ req
SLIDE 10
❙♦❧✉t✐♦♥✿ ✈❛r✐❛❜❧❡s ❛♥❞ ♠❡ss❛❣❡s
r❡q✉❡st ♦r❞❡r✐♥❣
❙②st❡♠ j ✈❛r✐❛❜❧❡s
clk✿ ✐♥✐t✐❛❧❧② 0
✴✴ ❝❧♦❝❦
rtsk✿ ✐♥✐t✐❛❧❧② 0
✴✴ ❤✐❣❤❡st ts r❝✈❞ ❢r♦♠ k αRts✿ ♠✐♥(rtsk, k]: k = j) ✴✴ ♠✐♥ ❡ts ✐♥❞✉❝❡❞ ❜② rts
req✿ ✐♥✐t✐❛❧❧② ❡♠♣t②
✴✴ s❡t ♦❢ ♦✉tst❛♥❞✐♥❣ r❡q✉❡sts✲❡ts ▼❡ss❛❣❡s
[REQ,x,t,k]
✴✴ r❡q✉❡st ♠s❣
[ACK,t,k]
✴✴ ❛❝❦ ♠s❣
[REL,x,t,k]
✴✴ r❡❧❡❛s❡ ♠s❣
SLIDE 11
❙♦❧✉t✐♦♥✿ s②st❡♠ j r✉❧❡s ✕ ✶
r❡q✉❡st ♦r❞❡r✐♥❣
❯s❡r ✐s✉❡s r❡q✉❡st x
clk + +
s❡♥❞ [REQ,x,clk,j] t♦ ❡✈❡r② s②st❡♠ ❛❞❞ [x,clk,j] t♦ req ❘❡❝❡✐✈❡ [REQ,x,t,k]✿
clk ← max(clk, t+1) rts[k] ← t
s❡♥❞ [ACK,clk,j] t♦ k ✴✴ ♦♠✐t ✐❢ ❡ts > [t,k] ❛❧r❡❛❞② s❡♥t t♦ k ❛❞❞ [x,t,k] t♦ req ❙t❛rt s❡r✈✐♥❣ r❡q✉❡st [x,t,j] ✐♥ req ✇❤❡♥
[t,j] ≤ αRts
❢♦r ❡✈❡r② [y,s,k] ✐♥ req st x ❝♦♥✢✐❝ts ✇✐t❤ y✿ [t,j] ≤ [s,k]
SLIDE 12
❙♦❧✉t✐♦♥✿ s②st❡♠ j r✉❧❡s ✕ ✷
r❡q✉❡st ♦r❞❡r✐♥❣
❋✐♥✐s❤ s❡r✈✐♥❣ r❡q✉❡st [x,t,j]✿ r❡♠♦✈❡ [x,t,j] ❢r♦♠ req❀ s❡♥❞ [REL,x,t,j] t♦ ❡✈❡r② ♦t❤❡r s②st❡♠✳ ❘❡❝❡✐✈❡ [ACK,t,k]✿
clk ← max(clk, t); rts[k] ← t
❘❡❝❡✐✈❡ [REL,x,t,k]✿ r❡♠♦✈❡ [x,t,k] ❢r♦♠ req ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ r✉❧❡s ❛r❡ ❛t♦♠✐❝ ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥✿ ✇❡❛❦ ❢❛✐r♥❡ss
SLIDE 13
❖✉t❧✐♥❡
❞✐st ❧♦❝❦✿ ❛❧❣✲❧❡✈❡❧
❚✐♠❡st❛♠♣ ♠❡❝❤❛♥✐s♠ ❉✐str✐❜✉t❡❞ ♦r❞❡r✐♥❣ ♦❢ ❝♦♥✢✐❝t✐♥❣ r❡q✉❡sts ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ❛❧❣♦r✐t❤♠ ❧❡✈❡❧ ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ♦✈❡r✈✐❡✇ ❈②❝❧✐❝ t✐♠❡st❛♠♣s
SLIDE 14
❉✐str✐❜✉t❡❞ ❧♦❝❦✿ ❛❧❣♦r✐t❤♠ ❧❡✈❡❧
❞✐st ❧♦❝❦✿ ❛❧❣✲❧❡✈❡❧
❉✐str✐❜✉t❡❞ ♣r♦❣r❛♠ t❤❛t ✐♠♣❧❡♠❡♥ts ❛ ❞✐str✐❜✉t❡❞ ❧♦❝❦ ❈♦❧❧❡❝t✐♦♥ ♦❢ s②st❡♠s ❛tt❛❝❤❡❞ t♦ ❛ ✜❢♦ ❝❤❛♥♥❡❧ ❙♣❡❝✐❛❧✐③❡ t❤❡ r❡q✉❡st✲♦r❞❡r✐♥❣ s♦❧✉t✐♦♥ ❢♦r ❛ ❧♦❝❦ ❆t ♠♦st ♦♥❡ ♦♥❣♦✐♥❣ r❡q✉❡st ♣❡r s②st❡♠ s♦ ❡❛❝❤ s②st❡♠ ✐s t❤✐♥❦✐♥❣✱ ❤✉♥❣r②✱ ♦r ❡❛t✐♥❣ ♥♦ ♥❡❡❞ ❢♦r ts ✐♥ r❡❧❡❛s❡ ♠s❣ ▲❛t❡r✱ r❡✜♥❡ t♦ ❛✇❛✐t ♣r♦❣r❛♠ ✐♠♣❧❡♠❡♥t✐♥❣ ❞✐st ❧♦❝❦ s❡r✈✐❝❡
SLIDE 15
❙♦❧✉t✐♦♥✿ ✈❛r✐❛❜❧❡s✱ ❢✉♥❝t✐♦♥s✱ ♠❡ss❛❣❡s
❞✐st ❧♦❝❦✿ ❛❧❣✲❧❡✈❡❧
❙②st❡♠ j ✈❛r✐❛❜❧❡s
clk✱ {rtsk} // ❛s ✐♥ r❡q✲♦r❞❡r✐♥❣ req ← [] // ♠❛♣ ✐♥❞❡①❡❞ ❜② ❛❞❞r❡ss // ❡♥tr② [j,t] ↔ ❡ts [t,j]
❙②st❡♠ j ❢✉♥❝t✐♦♥s αRts
// ♠✐♥ ❡ts ✐♥ {rtsk}
αReq✿ ♠✐♥([req[k], k]: k in req.keys)
// ♠✐♥ ❡ts ✐♥ req
▼❡ss❛❣❡s
[REQ,t,k]✱ [ACK,t,k]✱ [REL,k]
✴✴ ❛s ✐♥ r❡q✲♦r❞❡r✐♥❣ ✴✴ ♥♦t❡✿ ♥♦ ✏x✑ ✜❡❧❞
SLIDE 16
❙♦❧✉t✐♦♥✿ s②st❡♠ j r✉❧❡s ✕ ✶
❞✐st ❧♦❝❦✿ ❛❧❣✲❧❡✈❡❧
❇❡❝♦♠❡ ❤✉♥❣r② ♦♥❧② ✐❢ t❤✐♥❦✐♥❣
clk + +
s❡♥❞ [REQ,clk,j] t♦ ❡✈❡r② s②st❡♠
req[j] ← clk
❇❡❝♦♠❡ ❡❛t✐♥❣ ♦♥❧② ✐❢ ❤✉♥❣r② ❛♥❞ [reqj, j] = αReq ≤ αRts ❇❡❝♦♠❡ t❤✐♥❦✐♥❣ ♦♥❧② ✐❢ ❡❛t✐♥❣✿ r❡♠♦✈❡ ❡♥tr② ❢♦r j ❢r♦♠ req s❡♥❞ [REL,j] t♦ ❡✈❡r② s②st❡♠
SLIDE 17
❙♦❧✉t✐♦♥✿ s②st❡♠ j r✉❧❡s ✕ ✷
❞✐st ❧♦❝❦✿ ❛❧❣✲❧❡✈❡❧
❘❡❝❡✐✈❡ [REQ,t,k]✿
clk ← max(clk, t+1) rts[k] ← t req[k] ← t
s❡♥❞ [ACK,clk,j] t♦ k ❘❡❝❡✐✈❡ [ACK,t,k]✿
clk ← max(clk, t); rts[k] ← t
❘❡❝❡✐✈❡ [REL,k]✿ r❡♠♦✈❡ ❡♥tr② ❢♦r k ❢r♦♠ req ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ r✉❧❡s ❛r❡ ❛t♦♠✐❝ ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥✿ ✇❡❛❦ ❢❛✐r♥❡ss
SLIDE 18
❆♥❛❧②s✐s✿ s❛❢❡t②
❞✐st ❧♦❝❦✿ ❛❧❣✲❧❡✈❡❧
- ♦❛❧✿ ■♥✈ ❛t ♠♦st ♦♥❡ s②st❡♠ ✐s ❡❛t✐♥❣
■♥✈ A✶✕A✹ ❤♦❧❞s✱ ✇❤❡r❡ A✶ : (([j,s] in k.req) and j = k) ⇒
([j,s] in j.req) or ([REL,j] in transit to k)
A✷ : (j eating) ⇒
[j.req[j], j] = j.αReq ≤ j.αRts
A✸ : ((j eating) and (k eating)) ⇒
j = k
A✹ : ((j hungry) and [j.req[j], j] = j.αReq ≤ j.αRts) ⇒ (no one eating) ■♥✈ A✸ ✐♠♣❧✐❡s ❞❡s✐r❡❞ ♣r♦♣❡rt②
SLIDE 19
❆♥❛❧②s✐s✿ ♣r♦❣r❡ss
❞✐st ❧♦❝❦✿ ❛❧❣✲❧❡✈❡❧
- ♦❛❧✿ ✭✇❢❛✐r✱ ❜♦✉♥❞❡❞ ❡❛t✐♥❣✱ ♦♥❣♦✐♥❣ r①✱ ❝❤❛♥♥❡❧ ♣r♦❣r❡ss✮
⇒ j ❤✉♥❣r② ❧❡❛❞s✲t♦ j ❡❛t✐♥❣ ❉❡✜♥❡
hst✿ s❡q ♦❢ ❛❧❧ ❡ts✬s ✐♥ ❡ts✲♦r❞❡r // ✐♥✐t✐❛❧❧② [[0,0]] ne✿ # r❡q✉❡sts t❤❛t ❤❛✈❡ ✜♥✐s❤❡❞ ❡❛t✐♥❣
Pr♦♦❢ ✐❢ [j,s] ✐s ✐♥ j.req✱ ❡✈❡♥t✉❛❧❧② [s,j] ≤ j.αRts ❤♦❧❞s ❛❢t❡r t❤✐s ♣♦✐♥t
[j,s]✬s ✐♥❞❡① ✐♥ hst ✐s ✜①❡❞✱ ❛t s❛② n
❡♥tr✐❡s ✐♥ hst[ne + 1..n] ❡❛t ✐♥ ♦r❞❡r ❬❡♥tr② ne✬s r❡❧❡❛s❡ ♠s❣ ✐s ✐♥❝♦♠✐♥❣ t♦ ❡♥tr② ne+1✬s s②st❡♠✳ ✇❤❡♥ ✐t ❛rr✐✈❡s✱ t❤❡ ❧❛tt❡r ❡✈❡♥t✉❛❧❧② ❜❡❝♦♠❡s ❡❛t✐♥❣❪
SLIDE 20
❖✉t❧✐♥❡
❞✐st ❧♦❝❦✿ ❛✇❛✐t ♣r♦❣r❛♠
❚✐♠❡st❛♠♣ ♠❡❝❤❛♥✐s♠ ❉✐str✐❜✉t❡❞ ♦r❞❡r✐♥❣ ♦❢ ❝♦♥✢✐❝t✐♥❣ r❡q✉❡sts ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ❛❧❣♦r✐t❤♠ ❧❡✈❡❧ ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ♦✈❡r✈✐❡✇ ❈②❝❧✐❝ t✐♠❡st❛♠♣s
SLIDE 21
❉✐str✐❜✉t❡❞ ❧♦❝❦✿ ❛✇❛✐t✲❜❛s❡❞
❞✐st ❧♦❝❦✿ ❛✇❛✐t ♣r♦❣r❛♠
❉✐str✐❜✉t❡❞ ♣r♦❣r❛♠✿ ✐♠♣❧❡♠❡♥ts ❞✐str✐❜✉t❡❞ ❧♦❝❦ s❡r✈✐❝❡ st❛rts ❛ ✜❢♦ ❝❤❛♥♥❡❧ st❛rts ❛ LockTs s②st❡♠ ❛t ❡❛❝❤ ❛❞❞r❡ss
LockTs✿ ❛✇❛✐t ♣r♦❣r❛♠✱ r❡✜♥❡s ❛❧❣♦r✐t❤♠✲❧❡✈❡❧ s②st❡♠
✐♥♣✉t ❢✉♥❝t✐♦♥s acq ❛♥❞ rel ✴✴ ❝❛❧❧❡❞ ❜② ❧♦❝❦ ✉s❡rs ♦✉t♣✉t ❝❛❧❧s t♦ tx ❛♥❞ rx ♦❢ ❝❤❛♥♥❡❧ ❛❝❝❡ss s②st❡♠ ♦♥❡ ❧♦❝❛❧ t❤r❡❛❞ t♦ ❡①❡❝✉t❡ rx ♠✉❧t✐♣❧❡ acq ❝❛❧❧s ❝❛♥ ❜❡ ♦♥❣♦✐♥❣ ❜✉t ♦♥❧② ♦♥❡ ♣❛rt✐❝✐♣❛t❡s ✐♥ ts ♠❡❝❤❛♥✐s♠
SLIDE 22
Pr♦❣r❛♠ ▲♦❝❦❚s❉✐st
❞✐st ❧♦❝❦✿ ❛✇❛✐t ♣r♦❣r❛♠
♣r♦❣r❛♠ LockTsDist( ADDR ) {cj} ← st❛rt( FifoChannel(ADDR) ) ❢♦r j ✐♥ ADDR
vj ← st❛rt( LockTs(ADDR, j, cj) )
r❡t✉r♥ {vj}
SLIDE 23
Pr♦❣r❛♠ LockTs ( ADDR, j, cj) ✕ ✶
❞✐st ❧♦❝❦✿ ❛✇❛✐t ♣r♦❣r❛♠
▼❛✐♥
clk ← 0 rtsk ← 0✱ k in ADDR−{j}} req startThread ( doRx() )
✐♥♣✉t mysid.acq() ❛✇❛✐t (not (j in req.keys)
// ❛✶ clk + + ❀ reqj ← clk
❢♦r k ✐♥ ADDR−{j}
cj.tx(k, [REQ, clk, j])
❛✇❛✐t ([reqj, j] ≤ αReq
and // a2 (ADDR.size = 1
- r
[reqj, j] ≤ αRts))
r❡t✉r♥
SLIDE 24
Pr♦❣r❛♠ LockTs ( ADDR, j, cj) ✕ ✷
❞✐st ❧♦❝❦✿ ❛✇❛✐t ♣r♦❣r❛♠
✐♥♣✉t mysid.rel() ❛✇❛✐t (true)
req.remove(j)
❢♦r k ✐♥ ADDR−{j}
cj.tx(k, [REL, j])
❢✉♥❝t✐♦♥ doRx() ✴✴ ❡①❡❝✉t❡❞ ❜② ❛ ❧♦❝❛❧ t❤r❡❛❞ ✇❤✐❧❡ true
msg ← cj.rx()
✐❛ {msg ✐s [REQ, t, k]✱ [ACK, t, k]✱ ♦r [REL,k]} ❛✇❛✐t true ❞♦ ❛♣♣r♦♣r✐❛t❡ r①✲msg ❛❝t✐♦♥ ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥ {awaits} ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥ {✇❢❛✐r t❤r❡❛❞s✱ s❢❛✐r await ❛✶}
SLIDE 25
❆♥❛❧②s✐s
❞✐st ❧♦❝❦✿ ❛✇❛✐t ♣r♦❣r❛♠
▼❛♣ ❛❧❣✲❧❡✈❡❧ st❛t❡ t♦ ❛✇❛✐t✲♣r♦❣r❛♠ st❛t❡ ❛❧❣✲❧❡✈❡❧ ❛✇❛✐t✲♣r♦❣r❛♠
j ❤✉♥❣r②
↔ t❤r❡❛❞ ✐♥ j.acq.a2
j ❡❛t✐♥❣
↔
[j,.] ✐♥ j.req✱ ♥♦ t❤r❡❛❞ ✐♥ j.acq.a2 j t❤✐♥❦✐♥❣
↔ ♥♦ [j,.] ✐♥ j.req ❙❤♦✇ t❤❛t ❛❧❣✲❧❡✈❡❧ ♣r♦♣❡rt✐❡s ❛r❡ ♣r❡s❡r✈❡❞ ✭⋆✮ Pr♦✈❡✿ LockTsDist(ADDR) ✐♠♣❧❡♠❡♥ts DistLockService(ADDR) ❞❡✜♥❡ ♣r♦❣r❛♠ ♦❢ ✐♠♣❧❡♠❡♥t❛t✐♦♥ ❛♥❞ s❡r✈✐❝❡ ✐♥✈❡rs❡ ✐❞❡♥t✐❢② ❡✛❡❝t✐✈❡ ❛t♦♠✐❝✐t② ❜r❡❛❦♣♦✐♥ts ♦❜t❛✐♥ ❛ss❡rt✐♦♥s ♣r♦✈❡ ♣r♦❣r❛♠ s❛t✐s✜❡s ❛ss❡rt✐♦♥s
// ❡❛s② ❣✐✈❡♥ ⋆
SLIDE 26
❖✉t❧✐♥❡
❝②❝❧✐❝ t✐♠❡st❛♠♣s
❚✐♠❡st❛♠♣ ♠❡❝❤❛♥✐s♠ ❉✐str✐❜✉t❡❞ ♦r❞❡r✐♥❣ ♦❢ ❝♦♥✢✐❝t✐♥❣ r❡q✉❡sts ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ❛❧❣♦r✐t❤♠ ❧❡✈❡❧ ❉✐str✐❜✉t❡❞ ❧♦❝❦ ♣r♦❣r❛♠✿ ♦✈❡r✈✐❡✇ ❈②❝❧✐❝ t✐♠❡st❛♠♣s
SLIDE 27
❯s✐♥❣ ❝②❝❧✐❝ t✐♠❡st❛♠♣s
❝②❝❧✐❝ t✐♠❡st❛♠♣s
- ♦❛❧✿ ❝②❝❧✐❝ t✐♠❡st❛♠♣s ✐♥ t❤❡ ❞✐str✐❜✉t❡❞ ❧♦❝❦ s♦❧✉t✐♦♥
❊❛s✐❧② ❛❝❤✐❡✈❡❞ ❜② ♠♦❞✐❢②✐♥❣ s♦❧✉t✐♦♥ s❧✐❣❤t❧② ❊①✐st✐♥❣ s♦❧✉t✐♦♥✿ r❡q✉❡st [t,j] ❡❛ts ✇❤❡♥ ✶✳ [t,j] = j.αReq ✷✳ [t,j] ≤ j.αRts ■♠♣♦s❡ ❛❞❞✐t✐♦♥❛❧ r❡q✉✐r❡♠❡♥t✿ ✸✳ j ❡❛ts ♦♥❧② ❛❢t❡r r❝✈✐♥❣ ❛❝❦ ❢r♦♠ ❡✈❡r② s②st❡♠ ❘❡s✉❧t✐♥❣ s✐♠♣❧✐✜❝❛t✐♦♥ ❛❝❦✬s ts ❛❧✇❛②s ❤✐❣❤❡r t❤❛♥ r❡q✉❡st✬s ts s♦ ♥♦ ♥❡❡❞ ❢♦r ❛❝❦✬s ts ♥♦ ♥❡❡❞ ❢♦r {rtsk} s✉✣❝✐❡♥t t♦ tr❛❝❦ # ❛❝❦s r❝✈❞ ♥♦ ♥❡❡❞ ❢♦r ❛❝❦✬s s❡♥❞❡r ✐❞
SLIDE 28
❙♦❧✉t✐♦♥✿ ✈❛r✐❛❜❧❡s✱ ❢✉♥❝t✐♦♥s✱ ♠❡ss❛❣❡s
❝②❝❧✐❝ t✐♠❡st❛♠♣s
❙②st❡♠ j ✈❛r✐❛❜❧❡s
clk✱
{rtsk}✱
req na // # ❛❝❦s ❞✉❡
❙②st❡♠ j ❢✉♥❝t✐♦♥s αRts ✱ αReq ▼❡ss❛❣❡s
[REQ,t,k]✱ [ACK, t,k]✱ [REL,k]
SLIDE 29
❙♦❧✉t✐♦♥✿ s②st❡♠ j r✉❧❡s ✕ ✶
❝②❝❧✐❝ t✐♠❡st❛♠♣s
❇❡❝♦♠❡ ❤✉♥❣r② ♦♥❧② ✐❢ t❤✐♥❦✐♥❣
clk + + req[j] ← clk
s❡♥❞ [REQ,clk,j] t♦ ❡✈❡r② s②st❡♠
na ← 0
❇❡❝♦♠❡ ❡❛t✐♥❣ ♦♥❧② ✐❢ ❤✉♥❣r② ❛♥❞ [reqj, j] = αReq ❛♥❞ na = ADDR.size − 1 ❇❡❝♦♠❡ t❤✐♥❦✐♥❣ ♦♥❧② ✐❢ ❡❛t✐♥❣✿ r❡♠♦✈❡ ❡♥tr② ❢♦r j ❢r♦♠ req s❡♥❞ [REL,j] t♦ ❡✈❡r② s②st❡♠
SLIDE 30
❙♦❧✉t✐♦♥✿ s②st❡♠ j r✉❧❡s ✕ ✷
❝②❝❧✐❝ t✐♠❡st❛♠♣s
❘❡❝❡✐✈❡ [REQ,t,k]✿
clk ← max(clk, t+1) req[k] ← t
s❡♥❞ [ACK] t♦ k ❘❡❝❡✐✈❡ [ACK]✿
na + +
❘❡❝❡✐✈❡ [REL,k]✿ r❡♠♦✈❡ ❡♥tr② ❢♦r k ❢r♦♠ req ❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ r✉❧❡s ❛r❡ ❛t♦♠✐❝ ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥✿ ✇❡❛❦ ❢❛✐r♥❡ss
SLIDE 31
❆♥❛❧②s✐s✿ ❝♦♥✈❡♥t✐♦♥s
❝②❝❧✐❝ t✐♠❡st❛♠♣s
❆❜❜r❡✈✐❛t✐♦♥s ❢♦r r❡❛❞❛❜✐❧✐t②✿
hstj.ts t♦ ♠❡❛♥ hst[j][0] N t♦ ♠❡❛♥ ADDR.size
❉❡✜♥❡
hst✿ s❡q ♦❢ ❛❧❧ ❡ts✬s✱ ✐♥✐t✐❛❧❧② [[0,0]] // ❛s ❜❡❢♦r❡ ne✿ # r❡❧❡❛s❡s ❣❧♦❜❛❧❧②✱ ✐♥✐t✐❛❧❧② 0 // ❛s ❜❡❢♦r❡ j.ne✿ # r❡❧❡❛s❡s s❡❡♥ ❜② j // ♠❛② ❧❛❣ ne tse✿ ts ♦❢ ❧❛st r❡q✉❡st t♦ r❡❧❡❛s❡ // hstne.ts j.tse✿ ts ♦❢ ❧❛st r❡q✉❡st r❡❧❡❛s❡❞ ❛t j // hstj.ne.ts
SLIDE 32
❆♥❛❧②s✐s✿ ♦✈❡r✈✐❡✇
❝②❝❧✐❝ t✐♠❡st❛♠♣s
Pr♦✈❡✿ ❛♥② ts ✐♥ tr❛♥s✐t ✐s ✐♥ tse .. tse + 2 N Pr♦✈❡✿ j.tse ✐s ✐♥ tse − 2 N.. tse ❍❡♥❝❡✿ ❛♥② ts ✐♥ tr❛♥s✐t ✐s ✐♥ j.tse .. j.tse + 4 N ❍❡♥❝❡ ❝❛♥ ✉s❡ ♠♦❞✉❧♦✲M ts✱ ❢♦r M ≥ 4 N ▼♦❞✐❢② s②st❡♠ j t♦ ✉s❡ ❝②❝❧✐❝ ts ❛❞❞ ✈❛r✐❛❜❧❡ tse✱ ✐♥✐t✐❛❧❧② ✵ ✇❤❡♥ ❛ r❡q✉❡st ♠s❣ ✐s s❡♥t✱ s❡t ✐ts ts t♦ mod(clk, M) ✇❤❡♥ ❛ r❡q✉❡st ♠s❣ [REQ, ct, j] ✐s r❝✈❞✱ tr❡❛t ct ❛s ✉♥❜♦✉♥❞❡❞ ts tse + mod(ct−tse, M) ✇❤❡♥ [k,t] ✐s r❡♠♦✈❡❞ ❢r♦♠ req✱ s❡t tse t♦ t
SLIDE 33
❆♥❛❧②s✐s✿ ❜♦✉♥❞ ts ✇rt tse
❝②❝❧✐❝ t✐♠❡st❛♠♣s
❋♦❧❧♦✇✐♥❣ ❛r❡ ✐♥✈❛r✐❛♥t C✶ : ([REQ,t,j] rcvable) ⇒ hstne.ts ≤ t ≤ hst.last.ts C✷ : forsome(x in hst:
x.ts ≤ i.clk ≤ x.ts + 1)
C✸ : hstp.ts ≤ hstp+1.ts ≤ hstp.ts + 2 C✹ : ([REQ,t,j] rcvable) ⇒
hstne.ts ≤ t ≤ hstne.ts + 2×ADDR.size
■♥✈ C✶✿ [REQ,t,j] ✐♥ tr❛♥s✐t ✐♠♣❧✐❡s r❡q [t,j] ❤✉♥❣r② ■♥✈ C✷✿ C✷ s❛t✐s✜❡s ✐♥✈❛r✐❛♥❝❡ r✉❧❡ ■♥✈ C✸✿ C✸ s❛t✐s✜❡s ✐♥✈❛r✐❛♥❝❡ r✉❧❡ ❛ss✉♠✐♥❣ ■♥✈ C✷ ■♥✈ C✹✿ ❢♦❧❧♦✇s ❢r♦♠ ■♥✈ C✶, C✸
SLIDE 34