SLIDE 1
ssPss rs s - - PowerPoint PPT Presentation
ssPss rs s - - PowerPoint PPT Presentation
ssPss rs s r tr r sss sr
SLIDE 2
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
❋✐❢♦ ❈❤❛♥♥❡❧ ✕ ✶
❝♦♥♥❡❝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
❋✐❢♦ ❈❤❛♥♥❡❧ ✕ ✷
❝♦♥♥❡❝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
❋✐❢♦ ❈❤❛♥♥❡❧ ✕ ✸
❝♦♥♥❡❝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
❋✐❢♦ ❈❤❛♥♥❡❧ ■♥✈❡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
❋✐❢♦ ❈❤❛♥♥❡❧ ■♥✈❡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
❖✉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
▲♦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
▲♦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
❖✉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
▲❘❉ ❈❤❛♥♥❡❧
❝♦♥♥❡❝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
❙❡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
❖✉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
❈♦♥♥❡❝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
❈♦♥♥❡❝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
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
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
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
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
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
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
❖✉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
❉✐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
▼✉❧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
▼✉❧t✐♣❧❡①♦r ♣r♦❣r❛♠ ✕ ✷
♠✉①✐♥❣ ♣♦rts
// r❡❝❡✐✈❡ ♠s❣ ❢r♦♠ ❝❤❛♥♥❡❧✱ ❛♥❞ ❜✉✛❡r❀ ❧♦❝❛❧ t❤r❡❛❞
❢✉♥❝t✐♦♥ doRx()
while (true)
- msg ← cL.rx();