ssPss rs s - - PowerPoint PPT Presentation

ss p ss r s s
SMART_READER_LITE
LIVE PREVIEW

ssPss rs s - - PowerPoint PPT Presentation

ssPss rs s r tr r sss sr


slide-1
SLIDE 1

▼❡ss❛❣❡✲P❛ss✐♥❣ ❙❡r✈✐❝❡s ✭❛❦❛ ❈❤❛♥♥❡❧s✮

❙❤❛♥❦❛r ❙❡♣t❡♠❜❡r ✶✽✱ ✷✵✶✹

slide-2
SLIDE 2

❖✈❡r✈✐❡✇✿ ▼s❣✲♣❛ss✐♥❣ s❡r✈✐❝❡ ✭❛❦❛ ❈❤❛♥♥❡❧✮

access system (e.g., mac, ip, url, ...) address v[1] 1 v[i] v[n] n i Channel( ... )

❉✐str✐❜✉t❡❞ s❡r✈✐❝❡✿ ❛❞❞r❡ss❡s ❛♥❞ ❛❝❝❡ss s②st❡♠s ❈♦♥♥❡❝t✐♦♥✲❧❡ss✿ t① ❛♥❞ r① ✇✐t❤♦✉t ❛♥② ♣r✐♦r ✐♥t✐♠❛t✐♦♥ ✐♥♣✉t ❢♥s ❛t v[i]✿

tx✱ rx

❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞✿ t① ❛♥❞ r① ♦♥❧② ❛❢t❡r ❝♦♥♥❡❝t✐♦♥ ❡st❛❜❧✐s❤❡❞ ✐♥♣✉t ❢♥s ❛t v[i]✿

connect✱ accept✱ close✱ tx✱ rx✱ · · ·

◗✉❛❧✐t②✿ ✜❢♦✱ ❧♦ss②✱ ▲❘❉ ✭❧♦ss✱ r❡♦r❞❡r✱ ❞✉♣❧✐❝❛t❡✮✱ · · · ❇❡♥❡✜ts ♦❢ ✐♥t❡r♥❛❧ ♥♦♥❞❡t❡r♠✐♥✐s♠

slide-3
SLIDE 3

❖✉t❧✐♥❡

❝♦♥♥❡❝t✐♦♥✲❧❡ss ✜❢♦

❈♦♥♥❡❝t✐♦♥✲❧❡ss ❋✐❢♦ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲♦ss② ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲❘❉ ✭▲♦ss✱ ❘❡♦r❞❡r✐♥❣✱ ❉✉♣❧✐❝❛t✐♦♥✮ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❋✐❢♦ ❈❤❛♥♥❡❧s ▼✉❧t✐♣❧❡①✐♥❣ P♦rts ♦♥t♦ ❈❤❛♥♥❡❧s

slide-4
SLIDE 4

❋✐❢♦ ❈❤❛♥♥❡❧ ✕ ✶

❝♦♥♥❡❝t✐♦♥✲❧❡ss ✜❢♦

❙❡r✈✐❝❡ FifoChannel (ADDR)

ADDR✿ s❡t ♦❢ ❛❞❞r❡ss❡s

✴✴ ADDR.size > 0 ✐♥♣✉t ❢♥s ❛t j✿ s.tx(k,msg)✱ s.rx() ✴✴ s✿ ❛❝❝❡ss s②st❡♠ ♠s❣s ❛r❡ Seq ▼❛✐♥✿

txhj,k ← []

✴✴ s❡q ♦❢ ♠s❣s s❡♥t ❛t j t♦ k

rxhj,k ← []

✴✴ s❡q ♦❢ ♠s❣s r❝✈❞ ❛t k ❢r♦♠ j

vj ← sid()

✴✴ ❛❝❝❡ss s②st❡♠ ❛t j

return {vj}

✴✴ ♠❛♣ ❢r♦♠ ADDR t♦ s✐❞s ■♥ ❛♥ ✐♠♣❧❡♠❡♥t❛t✐♦♥ s❡♣❛r❛t❡ r❡t✉r♥ ❢♦r ❡❛❝❤ vj ❜✉t t❤❡ ❝♦❧❧❡❝t✐♦♥ ♦❢ r❡t✉r♥s ✐s ❡✛❡❝t✐✈❡❧② ❛t♦♠✐❝ ✴✴ ❲❤②❄

slide-5
SLIDE 5

❋✐❢♦ ❈❤❛♥♥❡❧ ✕ ✷

❝♦♥♥❡❝t✐♦♥✲❧❡ss ✜❢♦

✐♥♣✉t void vj.tx(k,msg) ✴✴ ❛t j✱ t① msg t♦ k ✐❝ ④k = j ❛♥❞ ♥♦ ♦♥❣♦✐♥❣ vj.tx(.)⑥ ❛♣♣❡♥❞ msg t♦ txhj,k❀ ♦❝ ④true⑥ r❡t✉r♥ ✐♥♣✉t Seq vj.rx() ✴✴ ❛t j✱ r① ♠s❣ ✐❝ ④♥♦ ♦♥❣♦✐♥❣ vj.rx()⑥ ♦✉t♣✉t msg, k ✴✴ r❝✈❞ ♠s❣✱ s❡♥❞❡r ❛❞❞r ♦❝ {rxhk,j ◦ [msg] ♣r❡✜①✲♦❢ txhk,j⑥ ❛♣♣❡♥❞ msg t♦ rxhk,j❀ r❡t✉r♥ msg❀

k ✐s ✐♥t❡r♥❛❧ ♣❛r❛♠ → ✐♥t❡r♥❛❧ ♥♦♥❞❡t❡r♠✐♥✐s♠

✴✴ ❆✈♦✐❞❛❜❧❡❄

slide-6
SLIDE 6

❋✐❢♦ ❈❤❛♥♥❡❧ ✕ ✸

❝♦♥♥❡❝t✐♦♥✲❧❡ss ✜❢♦

❛t♦♠✐❝✐t② ❛ss✉♠♣t✐♦♥✿ ✐♥♣✉t ♣❛rts ❛♥❞ ♦✉t♣✉t ♣❛rts ♣r♦❣r❡ss ❛ss✉♠♣t✐♦♥ ♦♥❣♦✐♥❣ vj.tx(.) ❧❡❛❞s✲t♦ ♥♦t ♦♥❣♦✐♥❣ vj.tx(.) ✴✴ t①

txhk,j.size ≥ i

❧❡❛❞s✲t♦

// rx rxhk,j.size ≥ i ♦r ♥♦t ♦♥❣♦✐♥❣ vj.rx() sum (txhk,j.size: k in ADDR) ≥ i

❧❡❛❞s✲t♦

// weaker rx sum (rxhk,j.size: k in ADDR) ≥ i ♦r

♥♦t ♦♥❣♦✐♥❣ vj.rx()

slide-7
SLIDE 7

❋✐❢♦ ❈❤❛♥♥❡❧ ■♥✈❡rs❡ ✕ ✶

❝♦♥♥❡❝t✐♦♥✲❧❡ss ✜❢♦

Pr♦❣r❛♠ FifoChannelInverse (ADDR, Map<ADDR,Sid> v) ♠❛✐♥✿

txhj,k✱ rxhj,k✱ vj

♦✉t♣✉t ❢♥s✿

doTx(j,k,msg)✱ doRx(j)

♣r♦❣r❡ss ❝♦♥❞✐t✐♦♥✿ ♥♦ ❝❤❛♥❣❡ ♦✉t♣✉t doTx(j, k, msg) ♦❝ ④k = j ❛♥❞ ♥♦ ♦♥❣♦✐♥❣ vj.tx(.)⑥ ❛♣♣❡♥❞ msg t♦ txhj,k❀

vj.tx(k, msg)

✐❝ ④true⑥

slide-8
SLIDE 8

❋✐❢♦ ❈❤❛♥♥❡❧ ■♥✈❡rs❡ ✕ ✷

❝♦♥♥❡❝t✐♦♥✲❧❡ss ✜❢♦

♦✉t♣✉t doRx(j) ♦❝ ④♥♦ ♦♥❣♦✐♥❣ vj.rx()⑥

[msg, k] ← vj.rx()

✴✴ ❧♦❝❛❧ ✈❛rs ✐❝ {rxhk,j ◦ [msg] ♣r❡✜①✲♦❢ txhk,j⑥ ❛♣♣❡♥❞ msg t♦ rxhk,j❀ ❘❡❝❛❧❧ k✿ ✐♥t❡r♥❛❧ ♣❛r❛♠ ✐♥ s❡r✈✐❝❡ ♥♦t ♣r❡s❡♥t ✐♥ r❡❣✉❧❛r ✐♠♣❧❡♠❡♥t❛t✐♦♥ ❜✉t r❡t✉r♥❡❞ ❜② ❛❜♦✈❡ ✐♠♣❧❡♠❡♥t❛t✐♦♥ vj.rx() ❛✉❣♠❡♥t r❡❣✉❧❛r ✐♠♣❧❡♠❡♥t❛t✐♦♥ ✇✐t❤ ❛✉①✐❧✐❛r②

slide-9
SLIDE 9

❖✉t❧✐♥❡

❝♦♥♥❡❝t✐♦♥✲❧❡ss ❧♦ss②

❈♦♥♥❡❝t✐♦♥✲❧❡ss ❋✐❢♦ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲♦ss② ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲❘❉ ✭▲♦ss✱ ❘❡♦r❞❡r✐♥❣✱ ❉✉♣❧✐❝❛t✐♦♥✮ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❋✐❢♦ ❈❤❛♥♥❡❧s ▼✉❧t✐♣❧❡①✐♥❣ P♦rts ♦♥t♦ ❈❤❛♥♥❡❧s

slide-10
SLIDE 10

▲♦ss② ❈❤❛♥♥❡❧

❝♦♥♥❡❝t✐♦♥✲❧❡ss ❧♦ss②

▲♦ss② ❝❤❛♥♥❡❧ ✐s ❛ ✜❢♦ ❝❤❛♥♥❡❧ ❡①❝❡♣t ♠s❣s ❝❛♥ ❜❡ ❧♦st

LossyChannel(.)✿ FifoChannel(.) ✇✐t❤ t✇♦ ❝❤❛♥❣❡s t♦ vj.rx

♦✉t♣✉t ❝♦♥❞✐t✐♦♥✿

{rxhk,j ◦ [msg]

♣r❡✜①✲♦❢ s✉❜s❡q✉❡♥❝❡✲♦❢

txhk,j⑥

♣r♦❣r❡ss ✕ ♦♣t✐♦♥ ✶✿ ✭msg r❡♣❡❛t❡❞❧② s❡♥t t♦ j✮ ❛♥❞ ✭j r❡♣❡❛t❡❞❧② ❝❛❧❧s rx✮ ⇒

j r❡❝❡✐✈❡s msg

♣r♦❣r❡ss ✕ ♦♣t✐♦♥ ✷ ✭♠s❣s ❢r♦♠ msgset r❡♣❡❛t❡❞❧② s❡♥t t♦ j✮ ❛♥❞ ✭j r❡♣❡❛t❡❞❧② ❝❛❧❧s rx✮ ⇒ j r❡❝❡✐✈❡s ♠s❣ ❢r♦♠ msgset

slide-11
SLIDE 11

▲♦ss② ❝❤❛♥♥❡❧✿ ❢♦r♠❛❧✐③✐♥❣ r① ♣r♦❣r❡ss

❝♦♥♥❡❝t✐♦♥✲❧❡ss ❧♦ss②

Pr♦❣r❡ss ✕ ♦♣t✐♦♥ ✶ ❤❡❧♣❡r ❢✉♥❝t✐♦♥s nbr✭txh✱ msg✮✿ ★ ♦❢ txh ❡♥tr✐❡s t❤❛t ❡q✉❛❧ msg increasing(txh, msg)✿ nbr✭txh✱ msg✮ = i ❧❡❛❞s✲t♦ nbr✭msg✱ txh✮ > i increasing(txhj,k, msg) ❛♥❞ ✭♥♦t ♦♥❣♦✐♥❣ vj.rx ❧❡❛❞s✲t♦ ♦♥❣♦✐♥❣ vj.rx✮ ⇒ increasing(rxhj,k, msg) Pr♦❣r❡ss ✕ ♦♣t✐♦♥ ✷ ❛❜♦✈❡ ❡①❝❡♣t nbr✭txh✱ msgset✮✿ ★ ♦❢ txh ❡♥tr✐❡s t❤❛t ❛r❡ ✐♥ msgset

slide-12
SLIDE 12

❖✉t❧✐♥❡

❝♦♥♥❡❝t✐♦♥✲❧❡ss ❧r❞

❈♦♥♥❡❝t✐♦♥✲❧❡ss ❋✐❢♦ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲♦ss② ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲❘❉ ✭▲♦ss✱ ❘❡♦r❞❡r✐♥❣✱ ❉✉♣❧✐❝❛t✐♦♥✮ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❋✐❢♦ ❈❤❛♥♥❡❧s ▼✉❧t✐♣❧❡①✐♥❣ P♦rts ♦♥t♦ ❈❤❛♥♥❡❧s

slide-13
SLIDE 13

▲❘❉ ❈❤❛♥♥❡❧

❝♦♥♥❡❝t✐♦♥✲❧❡ss ❧r❞

▲❘❉ ❝❤❛♥♥❡❧ ❝❛♥ ❧♦s❡✱ r❡♦r❞❡r ❛♥❞ ❞✉♣❧✐❝❛t❡ ♠s❣s ❛♥② ♠❡ss❛❣❡ s❡♥t ✐♥ t❤❡ ♣❛st ❝❛♥ ❜❡ ✭❛❣❛✐♥✮ r❡❝❡✐✈❡❞ ❙❡r✈✐❝❡ ♣r♦❣r❛♠✿ ♦♣t✐♦♥ ✶

LossyChannel(.) ✇✐t❤ vj.rx.oc ❝❤❛♥❣❡❞ t♦ {rxhk,j ◦ [msg]

s✉❜s❡q✉❡♥❝❡✲♦❢ ✐♥

txhk,j⑥

❙❡r✈✐❝❡ ♣r♦❣r❛♠✿ ♦♣t✐♦♥ ✷

txhj✿ s❡q ♦❢ ♠s❣s s❡♥t t♦ j ❢r♦♠ ❛♥②✇❤❡r❡ rxhj✿ s❡q ♦❢ ♠s❣s r❝✈❞ ❛t j ❢r♦♠ ❛♥②✇❤❡r❡

❛♥② msg ✐♥ txhj ❝❛♥ ❜❡ r❡❝❡✐✈❡❞

slide-14
SLIDE 14

❙❡r✈✐❝❡ LrdChannel (ADDR)

❝♦♥♥❡❝t✐♦♥✲❧❡ss ❧r❞

▼❛✐♥✿

txhj✱ rxhj✱ r❡t✉r♥ ④vj⑥

✐♥♣✉t void vj.tx(k,msg) ✐❝ {...} ❛♣♣❡♥❞ msg t♦ txhk❀ ♦❝ {true} r❡t✉r♥ ✐♥♣✉t Seq vj.rx() ✐❝ {...} ♦✉t♣✉t msg ♦❝ {msg in txhj} ❛♣♣❡♥❞ msg t♦ rxhj❀ r❡t✉r♥ msg❀ Pr♦❣r❡ss ❛ss✉♠♣t✐♦♥ ❢♦r r① increasing(txhj, msg) ❛♥❞ ✭♥♦t ♦♥❣♦✐♥❣ vj.rx ❧❡❛❞s✲t♦ ♦♥❣♦✐♥❣ vj.rx✮ ⇒ increasing(rxhj, msg) ◆♦ ✐♥t❡r♥❛❧ ♥♦♥❞❡t❡r♠✐♥✐s♠

slide-15
SLIDE 15

❖✉t❧✐♥❡

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

❈♦♥♥❡❝t✐♦♥✲❧❡ss ❋✐❢♦ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲♦ss② ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲❘❉ ✭▲♦ss✱ ❘❡♦r❞❡r✐♥❣✱ ❉✉♣❧✐❝❛t✐♦♥✮ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❋✐❢♦ ❈❤❛♥♥❡❧s ▼✉❧t✐♣❧❡①✐♥❣ P♦rts ♦♥t♦ ❈❤❛♥♥❡❧s

slide-16
SLIDE 16

❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❝❤❛♥♥❡❧ ✕ ✶

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

❈♦♥♥❡❝t✐♦♥ ♠❛♥❛❣❡♠❡♥t ✰ ❞❛t❛ tr❛♥s❢❡r ✇✐t❤✐♥ ❝♦♥♥❡❝t✐♦♥s ❙✐♠♣❧✐st✐❝ ❝♦♥♥❡❝t✐♦♥ ♠❣♠t ❆❞❞r j ❝❧♦s❡❞✿ ✐♥❛❝t✐✈❡ ❛❝❝❡♣t✐♥❣✿ ✇❛✐t✐♥❣ ❢♦r ❛♥② r❡♠♦t❡ ❝♦♥♥❡❝t r❡q✉❡st ♦♣❡♥✐♥❣✿ ✇❛✐t✐♥❣ ❢♦r r❡s♣♦♥s❡ t♦ ❧♦❝❛❧ ❝♦♥♥❡❝t r❡q✉❡st ♦♣❡♥✿ ❝♦♥♥❡❝t❡❞ t♦ ❛ r❡♠♦t❡ ❛❞❞r❡ss ■♥♣✉t ❢✉♥❝t✐♦♥s

j.accept()✿ ❝❧♦s❡❞ → ❛❝❝❡♣t✐♥❣ → ♦♣❡♥

✴✴ s❡r✈❡r

j.connect(k)✿ ❝❧♦s❡❞ → ♦♣❡♥✐♥❣ → ♦♣❡♥✴❝❧♦s❡❞

✴✴ ❝❧✐❡♥t

j.close()✿ ♦♣❡♥ → ❝❧♦s✐♥❣ → ❝❧♦s❡❞ j.tx(msg)✿ ♦♥❧② ✇❤✐❧❡ ♦♣❡♥ j.rx()✿ ♦♥❧② ✇❤✐❧❡ ♦♣❡♥

slide-17
SLIDE 17

❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❝❤❛♥♥❡❧ ✕ ✷

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

❘❡q✉✐r❡ ♠s❣s ♦❢ ♦♥❡ ❝♦♥♥❡❝t✐♦♥ t♦ ♥♦t s❤♦✇ ✉♣ ✐♥ ❛♥♦t❤❡r t❛❣ ❡❛❝❤ ❝♦♥♥❡❝t ❛tt❡♠♣t ✇✐t❤ ❛ ✉♥✐q✉❡ ❝♦♥♥❡❝t ♥✉♠❜❡r ✭✏❝♥✑✮ ❝♥ ✐❞❡♥t✐❢❡s ❝♦♥♥❡❝t✐♦♥ ❛♥❞ ✐ts t①❤✴r①❤ ❆❞❞ r❡♠♦t❡ ❛❞❞r ❛♥❞ ❝♥ t♦ ✏♦♣❡♥✐♥❣✑ ❛♥❞ ✏♦♣❡♥✑ ♦♣❡♥✐♥❣ t♦ ❛❞❞r ❦ ✇✐t❤ ❝♥ ♥ ♦♣❡♥ t♦ ❛❞❞r ❦ ✇✐t❤ ❝♥ ♥ ❇❡❝♦♠❡ ❝❧♦s❡❞ ♦♥❧② ✇❤❡♥ ✴✴ ❣r❛❝❡❢✉❧ ❝❧♦s✐♥❣ r❡♠♦t❡ ❤❛s ❝❧♦s❡❞ ❝♦♥♥❡❝t✐♦♥ ♦r ✐s ❝❧♦s✐♥❣ ❛❧❧ ✐♥❝♦♠✐♥❣ ❞❛t❛ r❡❝❡✐✈❡❞ ♥♦ ♦♥❣♦✐♥❣ r① ♦r t①

slide-18
SLIDE 18

ConnFifoChannel (ADDR)

✕ ✶

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

▼❛✐♥ ♥❝ ← ✵ ✴✴ ❝♦♥♥❡❝t ♥✉♠❜❡r ❝♦✉♥t❡r ❥✬s st❛t✉s ← ❝❧♦s❡❞ ✴✴ ❝♦♥♥❡❝t✐♦♥ st❛t✉s ♦❢ ❥

txhj,n ← rxhj,n ← []

✴✴ t①✴r① ❤✐st♦r✐❡s ❢♦r ❥ ✇✐t❤ ❝♥ ♥

vj ← sid()

✴✴ ❛❝❝❡ss s②st❡♠ ✐♥♣✉t ADDR ❥✳❛❝❝❡♣t✭✮ ✐❝ ④j ✐s ❝❧♦s❡❞⑥

j ❜❡❝♦♠❡s ❛❝❝❡♣t✐♥❣❀

♦✉t♣✉t k ♦❝ ④❦ ✐s ♦♣❡♥✐♥❣ t♦ j⑥

j ❜❡❝♦♠❡s ♦♣❡♥ t♦ ❦ ✇✐t❤ ❦✬s ❝♥❀

r❡t✉r♥ ❦

slide-19
SLIDE 19

ConnFifoChannel (ADDR)

✕ ✷

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

✐♥♣✉t ❜♦♦❧ ❥✳❝♦♥♥❡❝t✭❦✮ ✐❝ ④ ❥ ✐s ❝❧♦s❡❞ ⑥ ♥ ← ♥❝ + +❀ ❥ ❜❡❝♦♠❡s ♦♣❡♥✐♥❣ t♦ ❦ ✇✐t❤ ❝♥ ♥ ♦✉t♣✉t ❜♦♦❧ r✈❛❧ ♦❝ ④r✈❛❧ ⇔ ❦ ✐s ♦♣❡♥ t♦ ❥ ✇✐t❤ ❝♥ ♥⑥ ✐❢ ✭r✈❛❧✮ ❥ ❜❡❝♦♠❡s ♦♣❡♥ t♦ ❦ ✇✐t❤ ❝♥ ♥❀ ❡❧s❡ ❥ ❜❡❝♦♠❡s ❝❧♦s❡❞❀ r❡t✉r♥ r✈❛❧❀

slide-20
SLIDE 20

ConnFifoChannel (ADDR)

✕ ✸

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

✐♥♣✉t ✈♦✐❞ ❥✳❝❧♦s❡✭✮ ✐❝ ④❥ ✐s ♦♣❡♥ ❛♥❞ ✐s ♥♦t ❝❧♦s✐♥❣⑥ ❦ ← ❥✬s r❡♠♦t❡ ❛❞❞r❀ ♥ ← ❥✬s ❝♥❀ ♦❝ ④✭❦ ✐s ❝❧♦s✐♥❣ ♦r ♥♦t ♦♣❡♥ t♦ ❥ ✇✐t❤ ❝♥ ♥✮ ❛♥❞

rxhj,n ❂ txhk,n ❛♥❞

✭❥ ❤❛s ♥♦ ♦♥❣♦✐♥❣ t① ♦r r①✮ ⑥ ❥ ❜❡❝♦♠❡s ❝❧♦s❡❞❀ r❡t✉r♥❀

slide-21
SLIDE 21

ConnFifoChannel (ADDR)

✕ ✹

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

✐♥♣✉t ✈♦✐❞ ❥✳t①✭♠s❣✮ ✐❝ ④ ❥ ❤❛s ♥♦ ♦♥❣♦✐♥❣ t①✱ ✐s ♦♣❡♥✱ ❛♥❞ ✐s ♥♦t ❝❧♦s✐♥❣ ⑥ ♥ ← ❥✬s ❝♥❀

txhj,n✳❛♣♣❡♥❞✭♠s❣✮❀

♦❝ ④tr✉❡⑥ r❡t✉r♥❀

slide-22
SLIDE 22

ConnFifoChannel (ADDR)

✕ ✺

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

✐♥♣✉t ❙❡q ❥✳r①✭✮ ✐❝ ④ ❥ ✐s ♦♣❡♥ ❛♥❞ ❤❛s ♥♦ ♦♥❣♦✐♥❣ r① ⑥ ❦ ← ❥✬s r❡♠♦t❡ ❛❞❞r❀ ♥❪ ← ❥✬s ❝♥❀ ♦✉t♣✉t r✈❛❧✱ ♠s❣ ♦❝ ④✭r✈❛❧ ❂ ❬−✶❪ ❛♥❞ rxhj,n ❂ txhk,n ❛♥❞ r❡♠♦t❡ ✐s ❝❧♦s✐♥❣ ♦r ♥♦t ♦♣❡♥ t♦ ❦ ✇✐t❤ ❝♥ ♥✮ ♦r ✭r✈❛❧ ❂ ❬✵✱♠s❣❪ ❛♥❞ ✭rxhj,n ◦ ❬♠s❣❪✮ ♣r❡✜①✲♦❢ txhk,n✮ ⑥ ✐❢ ✭r✈❛❧❬✵❪ ❂ ✵✮

rxhj,n✳❛♣♣❡♥❞✭♠s❣✮❀

r❡t✉r♥ r✈❛❧❀

slide-23
SLIDE 23

ConnFifoChannel (ADDR)

✕ ✺

❝♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❧r❞

Pr♦❣r❡ss ❛ss✉♠♣t✐♦♥ ♦♥❣♦✐♥❣ ❥✳❛❝❝❡♣t ❛♥❞ ❄❄ ❧❡❛❞s✲t♦ ♥♦t ♦♥❣♦✐♥❣ ❥✳❛❝❝❡♣t ♦♥❣♦✐♥❣ ❥✳❝♦♥♥❡❝t ❧❡❛❞s✲t♦ ♥♦t ♦♥❣♦✐♥❣ ❥✳❝♦♥♥❡❝t ✴✴ ❄❄ ♦♥❣♦✐♥❣ ❥✳t① ❧❡❛❞s✲t♦ ♥♦t ♦♥❣♦✐♥❣ ❥✳t① ♦♥❣♦✐♥❣ ❥✳r① ❛♥❞ ✭❥ ♦♣❡♥ t♦ ❦ ✇✐t❤ ❝♥ ♥✮ ❛♥❞

rxhj,n✳s✐③❡ ❁ txhk,n✳s✐③❡ ♦r

✭rxhj,n✳s✐③❡ ❂ txhk,n✳s✐③❡ ❛♥❞ ✭❦ ❝❧♦s✐♥❣ ♦r ♥♦t ♦♣❡♥ t♦ ❥ ✇✐t❤ ♥✮✮ ❧❡❛❞s✲t♦ ✭♥♦t ♦♥❣♦✐♥❣ ❥✳r①✮ ♦♥❣♦✐♥❣ ❥✳❝❧♦s❡ ❛♥❞ ✭❥ ♦♣❡♥ t♦ ❦ ✇✐t❤ ❝♥ ♥✮ ❛♥❞ ✭❦ ❝❧♦s✐♥❣ ♦r ♥♦t ♦♣❡♥ t♦ ❥ ✇✐t❤ ♥✮ ❛♥❞ ✭❥✳r① r❡♣❡❛t❡❞❧② ❝❛❧❧❡❞✮ ❧❡❛❞s✲t♦ ♥♦t ♦♥❣♦✐♥❣ ❥✳❝❧♦s❡

slide-24
SLIDE 24

❖✉t❧✐♥❡

♠✉①✐♥❣ ♣♦rts

❈♦♥♥❡❝t✐♦♥✲❧❡ss ❋✐❢♦ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲♦ss② ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲❧❡ss ▲❘❉ ✭▲♦ss✱ ❘❡♦r❞❡r✐♥❣✱ ❉✉♣❧✐❝❛t✐♦♥✮ ❈❤❛♥♥❡❧s ❈♦♥♥❡❝t✐♦♥✲♦r✐❡♥t❡❞ ❋✐❢♦ ❈❤❛♥♥❡❧s ▼✉❧t✐♣❧❡①✐♥❣ P♦rts ♦♥t♦ ❈❤❛♥♥❡❧s

slide-25
SLIDE 25

❉✐str✐❜✉t❡❞ ♠✉❧t✐♣❧❡①♦r ♣r♦❣r❛♠

♠✉①✐♥❣ ♣♦rts

program MuxorDist (ADDR, PORT) // st❛rt ❝♦♥♥❡❝t✐♦♥✲❧❡ss ❝❤❛♥♥❡❧ {cj} ← startSystem ( FifoChannel (ADDR)); // st❛rt ♠✉①♦r s②st❡♠ ❛t ❡❛❝❤ ❛❞❞r❡ss for (j in ADDR) vj ← startSystem ( Muxor (ADDR, PORT, j, cj)); // r❡t✉r♥ ♠✉①♦r s②st❡♠ s✐❞s return {vj};

slide-26
SLIDE 26

▼✉❧t✐♣❧❡①♦r ♣r♦❣r❛♠ ✕ ✶

♠✉①✐♥❣ ♣♦rts

♣r♦❣r❛♠ Muxor (ADDR, PORT, aL, cL)

// aL: ❧♦❝❛❧ ❛❞❞r❡ss. cL: ❧♦❝❛❧ ❝❤❛♥♥❡❧ s②st❡♠ rbuffp ← []; // r① q✉❡✉❡ ❢♦r ♣♦rt p startThread(doRx()); // t❤r❡❛❞ t♦ r❡❝❡✐✈❡ ♠s❣s

✐♥♣✉t mysid.tx (pR, aR, msg)

// r❡♠♦t❡ ♣♦rt✴❛❞❞r pR/aR await (true) cL.tx(aR, [pR, msg]) return

✐♥♣✉t Seq mysid.rx (pR)

// ❧♦❝❛❧ ♣♦rt p

  • await (rbuff[pR] = [])

msg ← rbuff[pR][0]; rbuff[pR].remove(); return msg;

slide-27
SLIDE 27

▼✉❧t✐♣❧❡①♦r ♣r♦❣r❛♠ ✕ ✷

♠✉①✐♥❣ ♣♦rts

// r❡❝❡✐✈❡ ♠s❣ ❢r♦♠ ❝❤❛♥♥❡❧✱ ❛♥❞ ❜✉✛❡r❀ ❧♦❝❛❧ t❤r❡❛❞

❢✉♥❝t✐♦♥ doRx()

while (true)

  • msg ← cL.rx();

await (true) rbuff[msg[0]].append(msg[1]); atomicity assumption {awaits} progress assumption {weak fairness of threads}