Top Banner
RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania
50

RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Dec 14, 2015

Download

Documents

Karlee Groft
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

RetCon: Transactional Repair without Replay

Colin Blundell, Arun Raghavan, and Milo M. K. Martin

University of Pennsylvania

Page 2: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

This work licensed under the Creative Commons

Attribution-Share Alike 3.0 United StatesLicense

• You are free:• to Share — to copy, distribute, display, and perform the work• to Remix — to make derivative works

• Under the following conditions:• Attribution. You must attribute the work in the manner specified by the author or

licensor (but not in any way that suggests that they endorse you or your use of the work).

• Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.

• For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to:

http://creativecommons.org/licenses/by-sa/3.0/us/• Any of the above conditions can be waived if you get permission from

the copyright holder.• Apart from the remix rights granted under this license, nothing in this

license impairs or restricts the author's moral rights.

[ 2 ][ 2 ]RetCon - Blundell - ISCA 2010

Page 3: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

A Troubling Example for Transactional Memory

RetCon - Blundell - ISCA 2010 [ 3 ][ 3 ]

atomic{ ... h->insert(k1,v1); ... h->insert(k2,v2); ...}

atomic{ ... ... h->insert(k3,v3); ...}

T1 T2

Even if keys hash to distinct buckets……T1 and T2 should execute in parallel

Shared hashtable

In reality, it doesn’t quite work out that way: The "modcount" field is bumped for every update … 'put' operations always have a true data conflict.

Cliff Click (Azul Systems), on Azul’s experiences with HTM

Page 4: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

insert(k,v){ size++; if (size > max_size) resize(); b = buckets[hash(k)]; b->insert(Entry(k,v));}

RetCon - Blundell - ISCA 2010 [ 4 ][ 4 ]

atomic{ ... h->insert(k1,v1); ... h->insert(k2,v2); ...}

atomic{ ... ... h->insert(k3,v3); ...}

T1 T2

…T1 and T2 should execute in parallelEven if keys hash to distinct buckets…

still conflict on h->size

A Troubling Example for Transactional Memory

Page 5: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

RetCon - Blundell - ISCA 2010 [ 5 ][ 5 ]

atomic{ ... h->insert(k1,v1); ... h->insert(k2,v2); ...}

atomic{ ... ... h->insert(k3,v3); ...}

T1 T2

A Troubling Example for Transactional Memory

“general pattern of updates to peripheral shared values … is very common and it kills the HTM.”Cliff Click (Azul Systems), on Azul’s experiences with HTM

One implication: put effort into devising smarter hashtablesHowever, hashtable example is part of broader problem:

Page 6: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

• Auxiliary data that serializes parallel operations• Hashtable size fields• Reference counts• Transaction ID’s allocated from a global counter• …

• Can significantly degrade performance• genome (STAMP): -DHASHTABLE_RESIZABLE 50% slower• python: reference counts serialize execution• specjbb: ID’s cause 60% performance loss [Chung+’06]

The Peripheral Data Problem

RetCon - Blundell - ISCA 2010 [ 6 ][ 6 ]

Our goal: mitigate impact in hardware

Page 7: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Our Approach: RetCon

• Peripheral data conflicts have limited impact• Often do not change control flow/dataflow

• Ignore these conflicts…repair state at commit• Inspired by selective replay [Srinivasan+’04,Sarangi+’05,…]

• RetCon: repair without replay• Maintain symbolic values of outputs• Track constraints on inputs• At commit: reacquire inputs, check, plug into outputs

[ 7 ][ 7 ]RetCon - Blundell - ISCA 2010

retcon, verb:“Deliberate changing of previously-established facts”

Wikipedia

Page 8: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Roadmap

• Repair via Symbolic Tracking• The RetCon Architecture• Evaluation• Future Work & Conclusions

[ 8 ][ 8 ]RetCon - Blundell - ISCA 2010

Page 9: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Repair via Symbolic Tracking: Motivation

insert(k,v){ size++; if (size > max_size) resize(); b = buckets[hash(k)]; b->insert(Entry(k,v));}

RetCon - Blundell - ISCA 2010 [ 9 ][ 9 ]

atomic{ ... h->insert(k1,v1); ... h->insert(k2,v2); ...}

atomic{ ... ... h->insert(k3,v3); ...}

T1 T2

…T1 and T2 still conflict on h->sizeEven if keys hash to distinct buckets…

Value of h->size incorrectInfrequently impacts control flowDoesn’t impact dataflow

What happens if T1 simply ignores T2’s update?

Ignore peripheral data conflicts during executionRepair peripheral data values at commitDetect more complex effects and abort

Page 10: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Repair via Symbolic Tracking

• Track symbolic values of outputs

• Control flow: generate constraint on input

• Complex dataflow: disallow input change

• At commit: reacquire inputs and use to repair• Constraints satisfied? Generate correct outputs

[ 10 ][ 10 ]RetCon - Blundell - ISCA 2010

size++;...size++;

// refct = 7refct--;if (refct <= 0){

// ptr = 0xbffft = ptr->task; process_task(t);

sizeout = sizein + 2

refctin > 1

ptrin == 0xbfff

Page 11: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

RetCon: Overview

• Foundation: baseline hardware TM• Uses read/written bits on L1 cache lines

• Selectively employs symbolic tracking• Via predictor that trains on history of conflicts

• New structures to maintain symbolic info• Shadow register file entries• Cache-like structures to track through memory• More specific in a bit

• During repair: enforces atomicity via R/W bits

[ 11 ][ 11 ]RetCon - Blundell - ISCA 2010

Page 12: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

RetCon: Example

Val

Regfile

0r1:

0r2:

Code sequence L1 cache

Val State

RetCon - Blundell - ISCA 2010 [ 12 ][ 12 ]

Predicted “problem block”During execution, conflict occurs

Via tracking, RetCon repairs outputs

2 Sa:

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 13: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Symbolic Tracking

Val

Regfile

0r1:

0r2:

Code sequence L1 cache

Val State

2 Sa:

RetCon - Blundell - ISCA 2010 [ 13 ][ 13 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 14: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Symbolic Tracking

Val

Regfile

2r1:

0r2:

Code sequence L1 cache

Val State

2 Sa:

RetCon - Blundell - ISCA 2010 [ 14 ][ 14 ]

Would normally set read bit

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 15: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Symbolic Tracking

Val

Input buf

Val

Regfile

2r1:

0r2:

Code sequence L1 cache

Val State

2 Sa:

2a:

RetCon - Blundell - ISCA 2010 [ 15 ][ 15 ]

Instead, buffer value of a……and track output

Would normally set read bit

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 16: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Symbolic Tracking

Val

Regfile

2r1:

0r2:

Code sequence L1 cache

Val State

2 Sa:

RetCon - Blundell - ISCA 2010 [ 16 ][ 16 ]

Sym

NIL

NIL

Val

Input buf

2a:

Instead, buffer value of a……and track output

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 17: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Symbolic Tracking

Val

Regfile

Sym

2r1:

0r2:

a

NIL

Code sequence L1 cache

Val State

2 Sa:

RetCon - Blundell - ISCA 2010 [ 17 ][ 17 ]

Instead, buffer value of a……and track output

Val

Input buf

2a:

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 18: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Executing Past Conflicts

Val

Input buf

2a:

Val

Regfile

Sym

2r1:

0r2:

a

NIL

Code sequence L1 cache

Val State

2 Sa:

inv a

Give up block without rollback

RetCon - Blundell - ISCA 2010 [ 18 ][ 18 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 19: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Computation on Symbolic Values

Val

Input buf

2a:

Val

Regfile

Sym

2r1:

0r2:

a

NIL

Code sequence L1 cache

Val State

RetCon - Blundell - ISCA 2010 [ 19 ][ 19 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 20: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Val

Input buf

2a:

Val

Regfile

Sym

3r1:

0r2:

a

NIL

Code sequence L1 cache

Val State

RetCon - Blundell - ISCA 2010 [ 20 ][ 20 ]

Computation on Symbolic Values

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 21: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Computation on Symbolic Values

Val

Input buf

2a:

Val

Regfile

Sym

3r1:

0r2:

a + 1

NIL

Code sequence L1 cache

Val State

RetCon - Blundell - ISCA 2010 [ 21 ][ 21 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 22: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Control Flow

Val

Input buf

2a:

Val

Regfile

Sym

3r1:

0r2:

a + 1

NIL

Code sequence L1 cache

Val State

RetCon - Blundell - ISCA 2010 [ 22 ][ 22 ]

Constraint: ?

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 23: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Control Flow

Val

Input buf

2a:

Val

Regfile

Sym

3r1:

0r2:

a + 1

NIL

Code sequence L1 cache

Val State

RetCon - Blundell - ISCA 2010 [ 23 ][ 23 ]

Constraint: ?

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 24: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Control Flow

Val

Input buf

2a:

Val

Regfile

Sym

3r1:

0r2:

a + 1

NIL

Code sequence L1 cache

Val State

Constraint: (a + 1) < 8

RetCon - Blundell - ISCA 2010 [ 24 ][ 24 ]

Cond

a < 7

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 25: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Symbolic Stores

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

3r1:

0r2:

Val

Sym store buf

Sym

a + 1

NIL

Code sequence L1 cache

Val State

RetCon - Blundell - ISCA 2010 [ 25 ][ 25 ]

Store concrete & symbolic val

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 26: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Symbolic Stores

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

3r1:

0r2:

Val

Sym store buf

Sym

3b: a + 1

a + 1

NIL

Code sequence L1 cache

Val State

Store concrete & symbolic val

RetCon - Blundell - ISCA 2010 [ 26 ][ 26 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 27: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Forwarding From Symbolic Stores

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

3r1:

0r2:

Val

Sym store buf

Sym

3b: a + 1

a + 1

NIL

Code sequence L1 cache

Val State

Forward concrete & symbolic val

RetCon - Blundell - ISCA 2010 [ 27 ][ 27 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 28: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Forwarding From Symbolic Stores

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

3r1:

3r2:

Val

Sym store buf

Sym

3b: a + 1

a + 1

a + 1

Code sequence L1 cache

Val State

Forward concrete & symbolic val

RetCon - Blundell - ISCA 2010 [ 28 ][ 28 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 29: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

And On We Go…

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

3r1:

3r2:

Val

Sym store buf

Sym

3b: a + 1

a + 1

a + 1

Code sequence L1 cache

Val State

Inc concrete & symbolic val

RetCon - Blundell - ISCA 2010 [ 29 ][ 29 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 30: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

And On We Go…

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

3r1:

4r2:

Val

Sym store buf

Sym

3b: a + 1

a + 1

a + 2

Code sequence L1 cache

Val State

Inc concrete & symbolic val

RetCon - Blundell - ISCA 2010 [ 30 ][ 30 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 31: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Repair

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

Val

Sym store buf

Sym

3b: a + 1

Code sequence

req a, S

L1 cache

Val State

req b, M

RetCon - Blundell - ISCA 2010

3r1:

4r2:

a + 1

a + 2

[ 31 ][ 31 ]

(Re)acquire all blocks

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 32: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Repair

Val

Input buf

Cond

a: a < 7

Val

Regfile

Sym

Val

Sym store buf

Sym

3b: a + 1

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

3r1:

4r2:

a + 1

a + 2

[ 32 ][ 32 ]

R/W bits ensure atomicity

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

(Re)acquire all blocks

req a, Sreq b, M

2

Page 33: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Initiating Repair

Val

Input buf

Cond

2a: a < 7

Val

Regfile

Sym

Val

Sym store buf

Sym

3b: a + 1

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

3r1:

4r2:

a + 1

a + 2

[ 33 ][ 33 ]

outdated

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Use new input value to repair

Page 34: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Checking Constraints

Val

Input buf

Cond

a: a < 7

Val

Regfile

Sym

Val

Sym store buf

Sym

3b: a + 1

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

3r1:

4r2:

a + 1

a + 2

[ 34 ][ 34 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 35: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Checking Constraints

Val

Input buf

Cond

a: 4 < 7

Val

Regfile

Sym

Val

Sym store buf

Sym

3b: a + 1

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

3r1:

4r2:

a + 1

a + 2

[ 35 ][ 35 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 36: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Repair

Val

Input buf

Cond

Val

Regfile

Sym

Val

Sym store buf

Sym

3b: a + 1

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

3r1:

4r2:

a + 1

a + 2

[ 36 ][ 36 ]

Step 1: update values

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 37: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Repair

Val

Input buf

Cond

Val

Regfile

Sym

Val

Sym store buf

Sym

3b: 4 + 1

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

3r1:

4r2:

4 + 1

4 + 2

[ 37 ][ 37 ]

Step 1: update values

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 38: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Repair

Val

Input buf

Cond

Val

Regfile

Sym

Val

Sym store buf

Sym

5b: 4 + 1

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

5r1:

6r2:

4 + 1

4 + 2

[ 38 ][ 38 ]

Step 1: update values✓

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 39: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Repair

Val

Input buf

Cond

Val

Regfile

Sym

Val

Sym store buf

Sym

5b:

Code sequence L1 cache

4 S Ra:

Val State

7 M Wb:

RetCon - Blundell - ISCA 2010

5r1:

6r2:

[ 39 ][ 39 ]

Step 2: perform stores

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 40: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Repair

Val

Input buf

Cond

Val

Regfile

Sym

Val

Sym store buf

Sym

5b:

Code sequence L1 cache

4 S Ra:

Val State

5 M Wb:

RetCon - Blundell - ISCA 2010

5r1:

6r2:

[ 40 ][ 40 ]

Step 2: perform stores✓

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 41: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

5r1:

6r2:

Commit

Val

Input buf

Cond

Val

Regfile

Sym

Val

Sym store buf

Sym

Code sequence L1 cache

4 S Ra:

Val State

5 M Wb:

X

X

RetCon - Blundell - ISCA 2010 [ 41 ][ 41 ]

xaction_begin;...load [a], r1;r1 = r1 + 1;if (r1 >= 8) // not takenstore r1, [b];...load [b], r2;r2 = r2 + 1;...xaction_end;

Page 42: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

RetCon Key Points

• How do we decide which blocks to track?• Predictor that trains up on conflicts…• …trains down on violated constraints

• What computation do we track?• Currently: expressions of form “[addr] + value”• Compact representation; sufficient for our use cases

• How do we handle computation we can’t track?• Constrain the input to original value• Input doesn’t change dataflow doesn’t change

RetCon - Blundell - ISCA 2010 [ 42 ][ 42 ]

See paper for handling of real-world issues• Condition codes• Coarser-than-word-granularity cache blocks• …

Page 43: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Bonus: RetCon Has Other Benefits

• Value-based conflict detection [Olszewski+’07,Tabba+’09]

• Compare values to detect conflicts• Eliminates aborts due to false/silent sharing conflicts• RetCon: detects conflicts via (value-based) constraints

• Lazy conflict detection [Hammond+’04,Ceze+’06]

• Delay writes until transaction commit• Mitigates convoying of readers behind writers• RetCon: selectively delays writes

• Will examine impact in evaluation

RetCon - Blundell - ISCA 2010 [ 43 ][ 43 ]

Page 44: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Evaluation Methodology

• Simulator: in-house version of FeS2 [Neelakantam+’08]

• Full-system, execution-driven simulation

• Simulated machine: 32-core x86-based MP• RetCon: 8-entry input buf, 32-entry symbolic store buf

• Workloads: STAMP [Minh+’08], python, raytrace• STAMP: compiled with –DHASHTABLE_RESIZEABLE• python-opt: handful of uses of __thread keyword• intruder-opt: split lists, replaced r-b tree w/ hashtable

RetCon - Blundell - ISCA 2010 [ 44 ][ 44 ]

Page 45: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

RetCon’s Performance Impact

RetCon - Blundell - ISCA 2010 [ 45 ][ 45 ]

Higher is better

Near-ideal

50% speedup

240% speedup

25X speedup

Takeaway #1:RetCon mitigates the peripheral data problem

?

Page 46: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Analyzing RetCon’s Other Benefits

RetCon - Blundell - ISCA 2010 [ 46 ][ 46 ]

lazy-vb: RetCon variant capturing laziness/false sharing only

100% speedup from laziness

neato!

Page 47: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Analyzing RetCon’s Other Benefits

RetCon - Blundell - ISCA 2010 [ 47 ][ 47 ]

Takeaway 2:RetCon has benefits beyond optimizing peripheral data

Woohoo! More papers!

100% speedup from laziness

neato!

Page 48: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Related Work

• ReSlice [Sarangi+’05]

• Maintains insns in dependent slice of conflicting operation in TLS• To repair, re-executes these instructions

• Dependence-aware transactional memory [Ramadan+’08]

• Forwards speculative values to optimize ordered communication• Unlike RetCon, can’t handle conflicts with cyclic communication…• …but OTOH, can handle arbitrarily complex computation

• Advanced TM interfaces & data structure implementations• Open nesting [Moss+’05,Moravan+’06,Ni+’07]

• Transactional boosting [Herlihy+’08]

• Abstract nesting [Harris+’07]

• Lock-free hashtables [Click’07,…]

• Scalable non-zero indicators [Ellen+’07]

[ 48 ][ 48 ]RetCon - Blundell - ISCA 2010

Page 49: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.

Conclusions

• Focus of this work: the peripheral data problem• Auxiliary data that serializes parallel operations• Can significantly degrade overall performance

• Our solution: repair via symbolic tracking• Exploits simplicity of peripheral data computation…• …as well as limited impact of peripheral data conflicts

• RetCon: repair without replay• Adds selective symbolic tracking to baseline HTM• Side benefit: unifies prior-proposed optimizations• Mitigates impact of peripheral data conflicts

RetCon - Blundell - ISCA 2010 [ 49 ][ 49 ]

Page 50: RetCon: Transactional Repair without Replay Colin Blundell, Arun Raghavan, and Milo M. K. Martin University of Pennsylvania.