+ All Categories
Home > Technology > Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on...

Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on...

Date post: 02-Jul-2015
Category:
Upload: stefan-marr
View: 777 times
Download: 0 times
Share this document with a friend
Description:
Supporting all known abstractions for concurrent and parallel programming in a virtual machines (VM) is a futile undertaking, but it is required to give programmers appropriate tools and performance. Instead of supporting all abstractions directly, VMs need a unifying mechanism similar to INVOKEDYNAMIC for JVMs. Our survey of parallel and concurrent programming concepts identifies concurrency abstractions as the ones benefiting most from support in a VM. Currently, their semantics is often weakened, reducing their engineering benefits. They require a mechanism to define flexible language guarantees. Based on this survey, we define an ownership-based meta-object protocol as candidate for VM support. We demonstrate its expressiveness by implementing actor semantics, software transactional memory, agents, CSP, and active objects. While the performance of our prototype confirms the need for VM support, it also shows that the chosen mechanism is appropriate to express a wide range of concurrency abstractions in a unified way.
28
!"#$%&'($) + ,$(&'($) -#./+$(01 &23 4/# !156#1#$4+%2$ 2& 72$.833#$.' 9:043+.%2$0 2$ -86%;<+$)8+)# =-0 >4#&+$ -+33? @/#2 ABC2$"4 >2DE+3# <+$)8+)#0 <+: @FF<> G8325#? HI 4/ 2& -+' JIKJ
Transcript
Page 1: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#$%&'($)*+**

,$(&'($)*-#./+$(01*&23*4/#*!156#1#$4+%2$*2&**

72$.833#$.'*9:043+.%2$0*2$*-86%;<+$)8+)#*=-0*

>4#&+$*-+33?*@/#2*ABC2$"4*>2DE+3#*<+$)8+)#0*<+:*

@FF<>*G8325#?*HI4/*2&*-+'*JIKJ*

Page 2: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

9)#$"+*

•  9556(.+%2$0*($*4/#*186%.23#*+)#*

•  9*>83L#'M*E/+4*0/286"*E#*0855234N*

•  9*,$(&'($)*9:043+.%2$*

•  GL+68+%2$*

!"#"$#%&' &'

Page 3: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

7O,0*"2$B4*)#4*P+04#3*Q84*-86%56'*

!"#"$#%&' !'()*'+,-.')/*'011*'+,-.'

"2&'

%2$'

!23'!2!!'

I*

K*

J*

H*

R*

KSSI* KSST* JIII* JIIT* JIKI*

4'516,.'

UCV*

%'516,'

=-0*42"+'*

O#3&231+$.#* -#123'*-+$+)#1#$4*

7!"

-86%;<+$)8+)#*G.2*>'04#1* O6+W231*!$"#5#$"#$4*

Page 4: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' 8'

9*,):';1*,:<'#L#$4;62250*23*+.4230*

C2E*42*(156#1#$4*+*-+(6*.6(#$4N*

,0#3*!$4#3&+.#*+0'$./32$280*#L#$4;"3(L#$*

Page 5: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' $'

!"#$%&'&(")'$*+,-.*$/01,2340*56073809,,:;#$/0,40&-$53,1<=<=<>-.*$/0?,<-@A0B',,CD2EF2,FEG#2,'88&0--0-,HDIJ7K,$3/L,'88&0--L,@5BB03/MN,

,

CD2EF2,FEG#2,B0--'O0-,HDIJ7K,$3/L,B0--'O0P$8L,85@QB03/P$8L,$3P&06*(P/5L,&0B5/0P$8,$3/L,-0380&,$3/RMN,

C2E*42*(156#1#$4*+*-+(6*.6(#$4N*

A+4+*>423+)#* .2$0(04#$.'*3#X8(3#"*43+$0+.%2$+6*:+.Y#$"0*

9*,):';1*,:<'43+$0+.%2$+6*6+$)8+)#*12"#6*

Page 6: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' 4'

C2E*42*(156#1#$4*+*-+(6*.6(#$4N*

A+4+*9$+6'0(0*+$"*O32.#00($)* 5#3&231+$.#*0#$0(%L#*

9*,):';1*,:<'"+4+;5+3+66#6*X8#3(#0?*1+5Z3#"8.#?*&23YZ[2($*

Page 7: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

72$.833#$.'*>855234*($*-86%;<+$)8+)#*=-0*@2"+'N*

!"#"$#%&' ='

ECMA-335 4th Edition / June 2006

Common Language Infrastructure (CLI)

Partitions I to VI

@/3#+"0* <2.Y0* >./#"86($)*

@/#*:+0(.0*2$6'M*C+3"*42*:8(6"*2$*425\*

Page 8: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>?@ABC']/+4*"2*E#*$##"*&23*+*-86%;<+$)8+)#*=(348+6*-+./($#N*

!"#"$#%&' 3'

Page 9: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' D'

Page 10: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*>8:[#.40M*@2*("#$%&'*72$.#540*

•  J*083L#'0M*Q3(24*#4*+6^_H`?*>Y(66(.23$*a*@+6(+*_HI`*•  <+$)8+)#0*b($"8043'*c*3#0#+3./d*•  O+5#30?*&23*2:L(280*)+50*

!"#"$#%&' %%'

9.%L#*F:[#.40*_Ke`* 7/+31cc** P2343#00*** F..+1;5(*** >(156#*f+L+***9"+* 7(6Y*** U2*** F5#$7<* >Y(66(.23$a@+6(+*_HI`*9("+*_JI`*** 762[83#*** !2*** F5#$-O*** >6'***96(.#*** 72Q2g#0*_Je`*** f7>O*** F36#+$0*_T`*** >43#+1!@***91:(#$4@+6Y*** 72$.833#$4*C+0Y#66*** f+L+*=(#E0*_e`*** FV*** >E($)***94#[(*Oh*** 72$.833#$4*-<*** f2($*f+L+*** O9-*_Ji`*** ,O7***9g81*** 72$.833#$4*F:[#.40* <($"+*_KK`*** j#+.%L#*F:[#.40*_JT`*hKI*Q3(24*#4*+6^*_H`*** 72$.833#$4*O+0.+6*** -O!*** >7FFO*_JR`* h7***7k*** G36+$)*** -+5j#"8.#*_JK`* >@-*_JS`* **7/+5#6*** P2343+$*JIIe*** -86%<(05*_KH`*** >(156#*7Z7cc*** **

Page 11: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*l8#0%2$0*

N9( *7+$*(4*:#*(156#1#$4#"*+0*+*6(:3+3'N*

>B; *A2#0*(4*3#X8(3#*38$%1#*0855234*42*)8+3+$4##*(40*0#1+$%.0N*

OB@7 *]286"*38$%1#*0855234*#$+:6#*0()$(m.+$4*5#3&231+$.#*(1532L#1#$40N*

OP *!0*(4*0855234#"*:'*021#*=-*+63#+"'N*

!"#"$#%&' %&'

Page 12: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*j#08640*

O6L16'P6H' OP' N9(' >B;' OB@7'PH1QL5'O6LQLRS,.' h* ;* ;* h*J1T61ER/,.' h* ;* ;* h*J1/*LR1/'A)6L)F:,.' h* h* ;* h*J6LR5):'>,5R1/.' h* h* ;* h*0:1F):'P**6,..'>I)5,.' h* h* ;* h*06,,/'UV6,)*.' h* ;* ;* ;*9QQEH)FL:LHW' h* ;* h* h*X1L/' h* ;* ;* ;*N15Y.' h* h* ;* h*;,Q16W';1*,:' h* ;* h* h*;,HV1*'9/S15)R1/' h* ;* ;* h*@)5,TP/*T@,I)L6' h* h* ;* ;*UV6,)*'O11:.' h* h* ;* ;*UV6,)*T:15):'A)6L)F:,.' h* h* ;* h*UV6,)*.' h* h* ;* ;*A1:)R:,.' h* ;* h* ;*Z6)II,6'[FG,5H.' h* h* ;* h*

!"#"$#%&' %!'

•  eJ*.2$.#540*("#$%m#"?*nI*.2$0("#3#"*"(0%$.4*NLF6)6W'>1:ER1/.' OP' N9(' >B;' OB@7'PK,/H.' ;* \' ;* ;*PO0P>' ;* \' ;* ;*PH1Q.' ;* \' ;* ;*J1/5E66,/H'[FG,5H.' ;* \' ;* ;*BS,/HTN11I' ;* \' ;* ;*BS,/H.' ;* \' ;* ;*7)6T@,],6,/5,.' ;* \' ;* ;*716Y#X1L/' ;* \' ;* ;*7EHE6,.' ;* \' ;* ;*0E)6*.' ;* \' ;* ;*;,..)K,'^E,E,' ;* \' ;* ;*[/,T.L*,*'J1QQE/L5)R1/' ;* \' ;* ;*

O)6)::,:'(E:Y'[I,6)R1/.' ;* \' ;* ;*

O0P>' ;* \' ;* ;*@,*E5,6.' ;* \' ;* ;*>L/K:,'(:15Y.' ;* \' ;* ;*>H)H,'@,51/5L:L)R1/' ;* \' ;* ;*

Page 13: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*j#08640*@,_EL6,'A;'>EII16H' OP' N9(' >B;' OB@7'

P5RS,'[FG,5H.' ;* h* h* ;*

P5H16.' ;* h* h* h*

P.W/5V61/1E.'9/S15)R1/' ;* h* h* h*

P`EQTa1Q)L/.' ;* h* h* ;*

()66L,6.' ;* h* ;* h*

(WTA):E,' ;* h* h* h*

JV)//,:.' ;* h* h* h*

J:15Y.' ;* h* ;* h*

a)H)';1S,Q,/H' ;* ;* ;* h*

a)H)'>H6,)Q.' ;* h* h* h*

9QI:L5LH'O)6)::,:L.Q' ;* h* ;* h*

9.1:)R1/' ;* h* h* h*

N15):LHW' ;* ;* ;* h*

!"#"$#%&' %8'

@,_EL6,'A;'>EII16H' OP' N9(' >B;' OB@7'

;)I#@,*E5,' ;* h* h* ;*

;,..)K,'.,/*.' ;* h* h* h*

;L6616.' ;* h* ;* h*

+1T9/H,65,..L1/' ;* h* h* h*

[-/,6.VLI' ;* ;* ;* h*

O,6.L.H,/H'a)H)'>H6E5HE6,.' ;* h* h* ;*

@,I:L5)R1/' ;* h* h* ;*

>L*,TBb,5H'76,,' ;* ;* h* h*

>I,5E:)RS,'B`,5ER1/' ;* ;* h* h*

U6)/.)5R1/.' ;* h* h* h*

UEI:,'>I)5,.' ;* h* h* ;*

A)H.' ;* h* h* h*

A,5H16'[I,6)R1/.' ;* h* ;* h*

Page 14: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*72$.680(2$*

•  O+3+66#6*.2$.#540*+0*6(:3+3(#0*– b23*&23*L#3'*05#.(m.*25%1(V+%2$0d*

•  72$.833#$.'*.2$.#540*3#X8(3#*=-*0855234*– P23*5#3&231+$.#*– G$&23.#*#$.+5086+%2$?*(1184+:(6(4'*– G$&23.#*+0'$.^*#g#.8%2$?*o*

!"#"$#%&' %$'

Page 15: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

A#"8.#"*j#X8(3#1#$40*&23*=-0*

!"#"$#%&' %4'

-+$+)#"*-84+%2$*

-+$+)#"*Gg#.8%2$*

p2%2$*2&*FE$#30/(5*

72$43266+:6#*G$&23.#1#$4*

Page 16: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

J[+J?@@B+JC'a[;P9+>'G$&23.($)*>#1+$%.0*E(4/*+*-#4+;2:[#.4*O3242.26*

!"#"$#%&' %='

Page 17: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

72$.833#$.'*A21+($0M*FE$#30/(5;:+0#"*-#4+2:[#.4*O3242.26*

!"#"$#%&' %3'

readField(obj, idx)writeField(obj, idx, val)reqExec(obj, method, args)newThread(closure)readGlobal(glob)writeGlobal(glob, val)primitiveCopy(obj)primitive*(...)

DomainObject

10..*

owned by

10..*

runs inenforced : bool

Thread

Page 18: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

A21+($*#$&23.($)*!1184+:(6(4'*

!"#"$#%&' %D'

Main Cell with #foo Immutable Domain

enforced

cell.set(#bar)

cell.set(#bar) → reqExec(cell, set, #bar)

writeToField(cell, 1, #bar)

ImmutabilityError(cell, 1, #bar)

cell = new Cell()

cell.set(#foo)

domain.adopt(cell)

enforced()

Page 19: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

A21+($*A#m$(%2$*@*'--,7BBK5B'$3,09/038-,K5B'$3,_,,,,45$8,!"#$%&'(#%)*H5%`L,$89L,4'*M,_,,,,,/A&5U,30U,7BBQ/'%$*$/(2&&5&H5%`L$89L4'*MN,,,a,,,,45$8,+"#,-.$/0$15%`L,$89L,4'*M,_,,,,,/A&5U,30U,7BBQ/'%$*$/(2&&5&H5%`L$89L4'*MN,,,a,,,"",R,'**,BQ/'/$3O,560&'/$53-,b,6&$B$/$40-,a,

!"#"$#%&' &%'

Page 20: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

BAPN?PU9[+'9$"?*"2#0*(4*0.+6#N*

!"#"$#%&' &&'

Page 21: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

Gg53#00(L#$#00M*762[83#B0*9)#$40*J:)..' c;,HV1*.' N[J'PK,/H'd)*TV15ef' e* HK*

!"#"$#%&' &!'

J:)..' c;,HV1*.' N[J'PK,/H' e* RK*PK,/Ha1Q)L/' R* HR*9QQEH)F:,a1Q)L/' n* Ki*

%3' D&'

qE(4/284*#$&23.#1#$4*2&*0#1+$%.0*

Page 22: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

Gg53#00(L#$#00*($*<F7*

P*TV15' [-/,6.VLITF).,*';[O'

PK,/H.' HKq* iH*>U;' een** Kni*PQFL,/HU):Y>U' KnH* KKT*P5RS,[FG,5H.' ;* iH*J>Ogπ' ;* HS*-FO*:+0#*0'04#1* KIne*

!"#"$#%&' &8'

qE(4/284*#$&23.#1#$4*2&*0#1+$%.0*

Page 23: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

O#3&231+$.#*!156#1#$4+%2$M*Q'4#.2"#*@3+$0&231+%2$*

!"#"$#%&' &$'

Bina

ry T

rees

(AT)

Fann

kuch

Redu

x (A

T)

Fast

a (A

T)

NBod

y (A

T)

Bina

ry T

rees

(LR)

Fann

kuch

Redu

x (L

R)

Fast

a (L

R)

NBod

y (L

R)

0.0

0.2

0.4

0.6

0.8

1.0

1.2

Kernel Benchmarks

Spee

d Ra

tio: A

d−ho

c/M

OP−

base

d

Arra

y Ac

cess

(AT)

Inst

ance

Var

. (AT

)

Loca

l Sen

ds (A

T)

Rem

ote

Send

s (A

T)

Rem

ote

Send

s (A

T)wi

th 1

0 ar

gum

ents

Arra

y Ac

cess

(LR)

Inst

ance

Var

. (LR

)

Send

s (L

R)

Send

s (L

R)wi

th 1

0 ar

gum

ents

0.0

0.2

0.4

0.6

0.8

1.0

1.2

Microbenchmarks

Spee

d Ra

tio: A

d−ho

c/M

OP−

base

d

91:(#$4@+6Y>@* >@-*

Page 24: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

J[+JN?>9[+>'

!"#"$#%&' &4'

Page 25: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#$%m#"*j#X8(3#1#$40*&23*,$(&'($)*9:043+.%2$*

!"#"$#%&' &='

-+$+)#"*-84+%2$*

-+$+)#"*Gg#.8%2$*

p2%2$*2&*FE$#30/(5**

7436^*G$&23.#1#$4*j#X8(3#1#$40*:+0#"*2$*083L#'*

Page 26: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

FE$#30/(5;:+0#"*-FO*+0*72$.833#$.'*9:043+.%2$*&23*=-0*

!"#"$#%&' &3'

FE$#30/(5;:+0#"*-FO*+0*.2112$*&28$"+%2$*

9)#$40*

91:(#$4@+6Y>@*

7>Ocπ*

>@-*

9.%L#F:[#.40*

readField(obj, idx)writeField(obj, idx, val)reqExec(obj, method, args)newThread(closure)readGlobal(glob)writeGlobal(glob, val)primitiveCopy(obj)primitive*(...)

DomainObject

10..*

owned by

10..*

runs inenforced : bool

Thread

Page 27: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

P8483#*]23Y*

•  =-*>855234*– U2+6M*:#*5#3&231+$.#*$#843+6*– Q+0#"*2$*7O,B0*-#123'*-+$+)#1#$4*,$(4*– >E##4*0524M*7>O?*9.4230?*9.%L#*F:[#.40?o*

•  !$4#3+.%$)*72$.833#$.'*-2"#60*– 9.4230*c*>@-?o*– >#1+$%.0*

!"#"$#%&' &D'

Page 28: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

l*a*9'


Recommended