51
Weak Memory Models: A Tutorial Jade Alglave University College London February 3rd, 2014

Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Weak Memory Models: A Tutorial

Jade Alglave

University College London

February 3rd, 2014

Page 2: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Sequential Consistency

A comfortable model for concurrent programming would beSequential Consistency (SC), as defined by Leslie Lamport in 1979:

The result of any execution is the same as if theoperations of all the processors were executed in somesequential order, and the operations of each individualprocessor appear in this sequence in the order specifiedby its program.

Jade Alglave WMM Tutorial February 3rd, 2014 2 / 33

Page 3: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Example

Consider the following example, where initially x = y = 0:

sb

P0 P1

(a) x← 1 (c) y← 1

(b) r1← y (d) r2← x

r1=?; r2=?;

Following SC, we expect three possible outcomes:

(a)(b)(c)(d) r1 = 0 ∧ r2 = 1

(c)(d)(a)(b) r1 = 1 ∧ r2 = 0

(a)(c)(b)(d)(a)(c)(d)(b) r1 = 1 ∧ r2 = 1(c)(a)(b)(d)(c)(a)(d)(b)

Jade Alglave WMM Tutorial February 3rd, 2014 3 / 33

Page 4: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Example

Consider the following example, where initially x = y = 0:

sb

P0 P1

(a) x← 1 (c) y← 1

(b) r1← y (d) r2← x

r1=?; r2=?;

Following SC, we expect three possible outcomes:

(a)(b)(c)(d) r1 = 0 ∧ r2 = 1

(c)(d)(a)(b) r1 = 1 ∧ r2 = 0

(a)(c)(b)(d)(a)(c)(d)(b) r1 = 1 ∧ r2 = 1(c)(a)(b)(d)(c)(a)(d)(b)

Jade Alglave WMM Tutorial February 3rd, 2014 3 / 33

Page 5: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Example

Consider the following example, where initially x = y = 0:

sb

P0 P1

(a) x← 1 (c) y← 1

(b) r1← y (d) r2← x

r1=0; r2=?;

Following SC, we expect three possible outcomes:

(a)(b)(c)(d) r1 = 0 ∧ r2 = 1

(c)(d)(a)(b) r1 = 1 ∧ r2 = 0

(a)(c)(b)(d)(a)(c)(d)(b) r1 = 1 ∧ r2 = 1(c)(a)(b)(d)(c)(a)(d)(b)

Jade Alglave WMM Tutorial February 3rd, 2014 3 / 33

Page 6: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Example

Consider the following example, where initially x = y = 0:

sb

P0 P1

(a) x← 1 (c) y← 1

(b) r1← y (d) r2← x

r1=0; r2=?;

Following SC, we expect three possible outcomes:

(a)(b)(c)(d) r1 = 0 ∧ r2 = 1

(c)(d)(a)(b) r1 = 1 ∧ r2 = 0

(a)(c)(b)(d)(a)(c)(d)(b) r1 = 1 ∧ r2 = 1(c)(a)(b)(d)(c)(a)(d)(b)

Jade Alglave WMM Tutorial February 3rd, 2014 3 / 33

Page 7: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Example

Consider the following example, where initially x = y = 0:

sb

P0 P1

(a) x← 1 (c) y← 1

(b) r1← y (d) r2← x

r1=0; r2=1;

Following SC, we expect three possible outcomes:

(a)(b)(c)(d) r1 = 0 ∧ r2 = 1

(c)(d)(a)(b) r1 = 1 ∧ r2 = 0

(a)(c)(b)(d)(a)(c)(d)(b) r1 = 1 ∧ r2 = 1(c)(a)(b)(d)(c)(a)(d)(b)

Jade Alglave WMM Tutorial February 3rd, 2014 3 / 33

Page 8: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Experiment

On an Intel Core 2 Duo:

{x=0; y=0;}

P0 | P1 ;

MOV [y],$1 | MOV [x],$1 ;

MOV EAX,[x] | MOV EAX,[y] ;

exists (0:EAX=0 /\ 1:EAX=0)

Certain instructions appear to be reordered w.r.t. the programorder.Let us check that on my machine.

Jade Alglave WMM Tutorial February 3rd, 2014 4 / 33

Page 9: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Weak memory models

For performance reasons, modern architectures provide severalfeatures that are weakenings of SC:

For some applications, achieving sequential consistencymay not be worth the price of slowing down theprocessors. In this case, one must be aware thatconventional methods for designing multiprocessalgorithms cannot be relied upon to produce correctlyexecuting programs.

Jade Alglave WMM Tutorial February 3rd, 2014 5 / 33

Page 10: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

How can we make sure that we write correct programs?

◮ We need to understand precisely what memory modelsguarantee to write correct concurrent programs.

◮ This problem spreads to high level languages and is potentiallymuch worse, due to compiler optimisations.

Jade Alglave WMM Tutorial February 3rd, 2014 6 / 33

Page 11: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Surely there are specs?

Documentation is (at least) ambiguous, since written in naturallanguage.

Jade Alglave WMM Tutorial February 3rd, 2014 7 / 33

Page 12: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Surely there are specs?

“all that horrible horribly incomprehensible andconfusing [. . . ] text that no-one can parse or reason with— not even the people who wrote it”

Anonymous Processor Architect, 2011

Jade Alglave WMM Tutorial February 3rd, 2014 7 / 33

Page 13: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Describing executions

Jade Alglave WMM Tutorial February 3rd, 2014 8 / 33

Page 14: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Style of modelling

Memory models roughly fall into two classes:

◮ Operational

◮ Axiomatic

Jade Alglave WMM Tutorial February 3rd, 2014 9 / 33

Page 15: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Building an execution

rlns

P0 P1

(a) x← 2 (b) x← 1

(c) r1← x

Allowed: 1:r1=1; x=2;

Jade Alglave WMM Tutorial February 3rd, 2014 10 / 33

Page 16: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Building an execution : Events E and program order po

rlns

P0 P1

(a) x← 2 (b) x← 1

(c) r1← x

Allowed: 1:r1=1; x=2;

a:W[x]=2 b:W[x]=1

c:R[x]=1

po

We write E , (E, po) for such a structure.

Jade Alglave WMM Tutorial February 3rd, 2014 10 / 33

Page 17: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Building an execution : Coherence co

rlns

P0 P1

(a) x← 2 (b) x← 1

(c) r1← x

Allowed: 1:r1=1; x=2;

a:W[x]=2 b:W[x]=1co

c:R[x]=1

po

The coherence co orders totally all the write events to the samememory location.

Jade Alglave WMM Tutorial February 3rd, 2014 10 / 33

Page 18: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Building an execution : Read-from rf

rlns

P0 P1

(a) x← 2 (b) x← 1

(c) r1← x

Allowed: 1:r1=1; x=2;

a:W[x]=2 b:W[x]=1co

c:R[x]=1

porf

The read-from map rf links a write and any read that reads fromit.

Jade Alglave WMM Tutorial February 3rd, 2014 10 / 33

Page 19: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Building an execution : From-read map fr

rlns

P0 P1

(a) x← 2 (b) x← 1

(c) r1← x

Allowed: 1:r1=1; x=2;

a:W[x]=2

c:R[x]=1fr

b:W[x]=1co

porf

We derive the from-read map fr from co and rf.

Jade Alglave WMM Tutorial February 3rd, 2014 10 / 33

Page 20: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Building an execution : Execution witness X , (co, rf)

rlns

P0 P1

(a) x← 2 (b) x← 1

(c) r1← x

Allowed: 1:r1=1; x=2;

a:W[x]=2

c:R[x]=1fr

b:W[x]=1co

porf

We define an execution witness as X , (co, rf).

Jade Alglave WMM Tutorial February 3rd, 2014 10 / 33

Page 21: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Describing architectures

Jade Alglave WMM Tutorial February 3rd, 2014 11 / 33

Page 22: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Four axioms

◮ Uniproc

◮ No thin air

◮ Causality

◮ Propagation

Jade Alglave WMM Tutorial February 3rd, 2014 12 / 33

Page 23: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Uniproc (Coherence)

All the models I have studied preserve SC per location.

a: W[x]=1

b: W[x]=2

poco

Jade Alglave WMM Tutorial February 3rd, 2014 13 / 33

Page 24: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Uniproc (Coherence)

All the models I have studied preserve SC per location.

a: R[x]=1

b: W[x]=1

porf

Jade Alglave WMM Tutorial February 3rd, 2014 13 / 33

Page 25: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Uniproc (Coherence)

All the models I have studied preserve SC per location.

a:W[x]=1 b:R[x]=1rf

c:W[x]=2

poco

Jade Alglave WMM Tutorial February 3rd, 2014 13 / 33

Page 26: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Uniproc (Coherence)

All the models I have studied preserve SC per location.

a:W[x]=1 b:W[x]=2co

c:R[x]=1rf

pofr

Jade Alglave WMM Tutorial February 3rd, 2014 13 / 33

Page 27: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Uniproc (Coherence)

All the models I have studied preserve SC per location.

a:W[x]=1 b:R[x]=1rf

c:R[x]=0

pofr

Jade Alglave WMM Tutorial February 3rd, 2014 13 / 33

Page 28: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Uniproc (Coherence)

All the models I have studied preserve SC per location.

This ensures that non-relational analyses are sound on weakmemory.

Jade Alglave WMM Tutorial February 3rd, 2014 13 / 33

Page 29: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

No thin air

All the models I have studied define a happens-before relation:

a: Rf[0]=0

b: Wf[1]=1

po

c: Rf[1]=1rf

d: Wf[0]=0

porf

Jade Alglave WMM Tutorial February 3rd, 2014 14 / 33

Page 30: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

No thin air

All the models I have studied define a happens-before relation:

a: Rf[0]=0

b: Wf[1]=1

po

c: Rf[1]=1rf

d: Wf[0]=0

porf

which should be acyclic

Jade Alglave WMM Tutorial February 3rd, 2014 14 / 33

Page 31: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Causality (mp)

This happens-before relation determines which message passingidioms work as intended:

a: Wf[1]=1

b: Wl[1]=1

po

c: Rl[1]=1rf

d: Rf[1]=0

pofr

Jade Alglave WMM Tutorial February 3rd, 2014 15 / 33

Page 32: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Causality (wrc)

This happens-before relation determines which write-to-readcausality idioms work as intended:

a: Wx=1 b: Rx=1rf

c: Wy=1po

d: Ry=1

rfe: Rx=0fr po

Jade Alglave WMM Tutorial February 3rd, 2014 16 / 33

Page 33: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Propagation (2+2w)

Fences constrain the order in which writes to different locationspropagate:

a: Wx=1

b: Wy=2po

d: Wx=2co

c: Wy=1co

po

Jade Alglave WMM Tutorial February 3rd, 2014 17 / 33

Page 34: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Propagation (w+rw+2w)

Fences constrain the order in which writes to different locationspropagate:

a: Wx=2 b: Rx=2rf

c: Wy=1po

d: Wy=2

coe: Wx=1co po

Jade Alglave WMM Tutorial February 3rd, 2014 18 / 33

Page 35: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

A real-world excerpt

Jade Alglave WMM Tutorial February 3rd, 2014 19 / 33

Page 36: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

PostgreSQL developers’ discussions

Jade Alglave WMM Tutorial February 3rd, 2014 20 / 33

Page 37: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Synchronisation in PostgreSQL

1 void worker( int i )2 { while(! latch [ i ]);3 for (;;)4 { assert (! latch [ i ] || flag [ i ]);5 latch [ i ] = 0;6 if ( flag [ i ])7 { flag [ i ] = 0;8 flag [( i+1)%WORKERS] = 1;9 latch [( i+1)%WORKERS] = 1;

10 }11 while(! latch [ i ]);12 }13 }

Each element of the arraylatch is a shared booleanvariable dedicated tointerprocess communication.

A process waits to have itslatch set then should havework to do, namely passingaround a token via the arrayflag (line 8).

Once the process is done, itsets the latch of the processthe token was passed to(line 9).

Jade Alglave WMM Tutorial February 3rd, 2014 21 / 33

Page 38: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Synchronisation in PostgreSQL

1 void worker( int i )2 { while(! latch [ i ]);3 for (;;)4 { assert (! latch [ i ] || flag [ i ]);5 latch [ i ] = 0;6 if ( flag [ i ])7 { flag [ i ] = 0;8 flag [( i+1)%WORKERS] = 1;9 latch [( i+1)%WORKERS] = 1;

10 }11 while(! latch [ i ]);12 }13 }

Starvation seemingly cannotoccur: when a process iswoken up, it has work to do.

Yet, the developers observedthat the wait in line 11would time out,i.e. starvation of the ring ofprocesses.

The processor can delay thewrite in line 8 until after thelatch had been set in line 9.

Jade Alglave WMM Tutorial February 3rd, 2014 21 / 33

Page 39: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Message passing idiom in PostgreSQL

This corresponds to the message passing idiom

pgsql (mp)

Worker 0 Worker 1

(8) f[1]=1; (2) while(!l[1]);

(9) l[1]=1; (6) if(f[1])

Observed: l[1]=1; f[1]=0

a: Wf[1]=1

b: Wl[1]=1

po

c: Rl[1]=1rf

d: Rf[1]=0

pofr

Jade Alglave WMM Tutorial February 3rd, 2014 22 / 33

Page 40: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Message passing idiom in PostgreSQL

This corresponds to the message passing idiom

which requires synchronisation to behave as on SC

pgsql (mp)

Worker 0 Worker 1

(8) f[1]=1; (2) while(!l[1]);lwsync dependency

(9) l[1]=1; (6) if(f[1])

Forbidden: l[1]=1; f[1]=0

a: Wf[1]=1

b: Wl[1]=1

po

c: Rl[1]=1rf

d: Rf[1]=0

pofr

Jade Alglave WMM Tutorial February 3rd, 2014 22 / 33

Page 41: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Verification

Jade Alglave WMM Tutorial February 3rd, 2014 23 / 33

Page 42: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Porte ouverte a deux battants

We propose two ways of verifying concurrent software running onweak memory:

◮ we instrument the program to embed the weak memorysemantics inside it, then feed the transformed program to anSC verification tool;

◮ we explicitly build partial order models representing thepossible executions of the program on weak memory.

Jade Alglave WMM Tutorial February 3rd, 2014 24 / 33

Page 43: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Independent Reads of Independent Writes

iriw

P0 P1 P2 P3

(a) r1← x (c) r3← y (e) x← 1 (f ) y← 2

(b) r2← y (d) r4← x

r1=1; r2=0; r3=2; r4=0;

(a) Rx1

(b) Ry0

(c) Ry1

(d) Rx0

(e)Wx1 (f )Wy1

po po

rf

fr

rf

fr

Jade Alglave WMM Tutorial February 3rd, 2014 25 / 33

Page 44: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

iriw on SC

iriw

P0 P1 P2 P3

(a) r1← x (c) r3← y (e) x← 1 (f ) y← 2

(b) r2← y (d) r4← x

r1=1; r2=0; r3=2; r4=0;

(a) Rx1

(b) Ry0

(c) Ry1

(d) Rx0

(e)Wx1 (f )Wy1

po po

rf

fr

rf

fr

Jade Alglave WMM Tutorial February 3rd, 2014 26 / 33

Page 45: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

iriw on Power

iriw

P0 P1 P2 P3

(a) r1← x (c) r3← y (e) x← 1 (f ) y← 2

(b) r2← y (d) r4← x

r1=1; r2=0; r3=2; r4=0;

(a) Rx1

(b) Ry0

(c) Ry1

(d) Rx0

(e)Wx1 (f )Wy1

po po

rf

fr

rf

fr

Jade Alglave WMM Tutorial February 3rd, 2014 27 / 33

Page 46: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Validity of an execution

◮ An execution is valid on an architecture if it does not showcertain cycles.

◮ So we assign a clock to each event

◮ Then see if we can order these clocks w .r .t. less-than over N

Jade Alglave WMM Tutorial February 3rd, 2014 28 / 33

Page 47: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

On iriw

(a) Rx1

(b) Ry0

(c) Ry1

(d) Rx0

(e)Wx1 (f )Wy1

po po

rf

fr

rf

fr

(po P0) cab (po P1) ccd(rf x) sea ∧ si0d (rf y) sfc ∧ si1b(ws x) ci0e (ws y) ci1f

(fr x) (si0d ∧ ci0e)⇒ cde (fr y) (si1b ∧ ci1f )⇒ cbf(grf x) (sea ⇒ cea) (grf y) (sfc ⇒ cfc)

(1)

Jade Alglave WMM Tutorial February 3rd, 2014 29 / 33

Page 48: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

iriw on SC

(a) Rx1

(b) Ry0

(c) Ry1

(d) Rx0

(e)Wx1 (f )Wy1

po po

rf

fr

rf

fr

(po P0) cab (po P1) ccd(rf x) sea ∧ si0d (rf y) sfc ∧ si1b(ws x) ci0e (ws y) ci1f

(fr x) (si0d ∧ ci0e)⇒ cde (fr y) (si1b ∧ ci1f )⇒ cbf(grf x) (sea ⇒ cea) (grf y) (sfc ⇒ cfc)

(2)

Jade Alglave WMM Tutorial February 3rd, 2014 30 / 33

Page 49: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

iriw on Power

(a) Rx1

(b) Ry0

(c) Ry1

(d) Rx0

(e)Wx1 (f )Wy1

po po

rf

fr

rf

fr

(po P0) cab (po P1) ccd(rf x) sea ∧ si0d (rf y) sfc ∧ si1b(ws x) ci0e (ws y) ci1f

(fr x) (si0d ∧ ci0e)⇒ cde (fr y) (si1b ∧ ci1f )⇒ cbf(grf x) (sea ⇒ cea) (grf y) (sfc ⇒ cfc)

(3)

Jade Alglave WMM Tutorial February 3rd, 2014 31 / 33

Page 50: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Tools

Testing hardware, simulating models:http://diy.inria.fr

Verifying software:www.cprover.org/wmm

Jade Alglave WMM Tutorial February 3rd, 2014 32 / 33

Page 51: Weak Memory Models: A TutorialWeak Memory Models: A Tutorial Jade Alglave UniversityCollegeLondon February 3rd, 2014. Sequential Consistency A comfortable model for concurrent programming

Thanks!

Jade Alglave WMM Tutorial February 3rd, 2014 33 / 33