The Transactional Memory / Garbage Collection Analogy Dan Grossman University of Washington OOPSLA 2007.

Slides:



Advertisements
Similar presentations
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Advertisements

Design and Implementation Issues for Atomicity Dan Grossman University of Washington Workshop on Declarative Programming Languages for Multicore Architectures.
Guy Golan-GuetaTel-Aviv University Nathan Bronson Stanford University Alex Aiken Stanford University G. Ramalingam Microsoft Research Mooly Sagiv Tel-Aviv.
Introduction to Memory Management. 2 General Structure of Run-Time Memory.
Automatic Memory Management Noam Rinetzky Schreiber 123A /seminar/seminar1415a.html.
ECE 454 Computer Systems Programming Compiler and Optimization (I) Ding Yuan ECE Dept., University of Toronto
Relaxed Consistency Models. Outline Lazy Release Consistency TreadMarks DSM system.
Ch 7 B.
CS 162 Memory Consistency Models. Memory operations are reordered to improve performance Hardware (e.g., store buffer, reorder buffer) Compiler (e.g.,
5. Memory Management From: Chapter 5, Modern Compiler Design, by Dick Grunt et al.
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 18.
Chapter 8 Runtime Support. How program structures are implemented in a computer memory? The evolution of programming language design has led to the creation.
CS444/CS544 Operating Systems Synchronization 2/16/2006 Prof. Searleman
The Transactional Memory / Garbage Collection Analogy Dan Grossman University of Washington AMD July 26, 2010.
The Transactional Memory / Garbage Collection Analogy Dan Grossman University of Washington Microsoft Programming Languages TCN September 14, 2010.
CMPT Dr. Alexandra Fedorova Lecture X: Transactions.
PARALLEL PROGRAMMING with TRANSACTIONAL MEMORY Pratibha Kona.
“THREADS CANNOT BE IMPLEMENTED AS A LIBRARY” HANS-J. BOEHM, HP LABS Presented by Seema Saijpaul CS-510.
Software Transactions: A Programming-Languages Perspective Dan Grossman University of Washington 28 February 2008.
Assignment – no class Wednesday All: watch the Google Techtalk “Getting C++ Threads Right” by Hans Boehm at the following link in place of Wednesday’s.
Vertically Integrated Analysis and Transformation for Embedded Software John Regehr University of Utah.
My programming-languages view of TM: Research and Conjectures Dan Grossman University of Washington June 2008.
Software Transactions: A Programming-Languages Perspective Dan Grossman University of Washington 27 March 2008.
CS 536 Spring Run-time organization Lecture 19.
Programming-Language Motivation, Design, and Semantics for Software Transactions Dan Grossman University of Washington June 2008.
Run time vs. Compile time
1 New Architectures Need New Languages A triumph of optimism over experience! Ian Watson 3 rd July 2009.
02/23/2004CSCI 315 Operating Systems Design1 Process Synchronization Notice: The slides for this lecture have been largely based on those accompanying.
Synchronization in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
1 Sharing Objects – Ch. 3 Visibility What is the source of the issue? Volatile Dekker’s algorithm Publication and Escape Thread Confinement Immutability.
02/17/2010CSCI 315 Operating Systems Design1 Process Synchronization Notice: The slides for this lecture have been largely based on those accompanying.
Department of Computer Science Presenters Dennis Gove Matthew Marzilli The ATOMO ∑ Transactional Programming Language.
1 Run time vs. Compile time The compiler must generate code to handle issues that arise at run time Representation of various data types Procedure linkage.
Software Transactions: A Programming-Languages Perspective Dan Grossman University of Washington 5 December 2006.
Synchronization CSCI 444/544 Operating Systems Fall 2008.
02/19/2007CSCI 315 Operating Systems Design1 Process Synchronization Notice: The slides for this lecture have been largely based on those accompanying.
Why The Grass May Not Be Greener On The Other Side: A Comparison of Locking vs. Transactional Memory Written by: Paul E. McKenney Jonathan Walpole Maged.
SEG Advanced Software Design and Reengineering TOPIC L Garbage Collection Algorithms.
© 2009 Matthew J. Sottile, Timothy G. Mattson, and Craig E Rasmussen 1 Concurrency in Programming Languages Matthew J. Sottile Timothy G. Mattson Craig.
Copyright  Hannu Laine C++-programming Part 3 Hannu Laine.
Eraser: A Dynamic Data Race Detector for Multithreaded Programs STEFAN SAVAGE, MICHAEL BURROWS, GREG NELSON, PATRICK SOBALVARRO, and THOMAS ANDERSON Ethan.
COMP 111 Threads and concurrency Sept 28, Tufts University Computer Science2 Who is this guy? I am not Prof. Couch Obvious? Sam Guyer New assistant.
Colorama: Architectural Support for Data-Centric Synchronization Luis Ceze, Pablo Montesinos, Christoph von Praun, and Josep Torrellas, HPCA 2007 Shimin.
C++ Memory Overview 4 major memory segments Key differences from Java
Aritra Sengupta, Swarnendu Biswas, Minjia Zhang, Michael D. Bond and Milind Kulkarni ASPLOS 2015, ISTANBUL, TURKEY Hybrid Static-Dynamic Analysis for Statically.
Sharing Objects  Synchronization  Atomicity  Specifying critical sections  Memory visibility  One thread’s modification seen by the other  Visibility.
Shared Memory Consistency Models. SMP systems support shared memory abstraction: all processors see the whole memory and can perform memory operations.
Memory Consistency Models. Outline Review of multi-threaded program execution on uniprocessor Need for memory consistency models Sequential consistency.
Transactions and Concurrency Control. Concurrent Accesses to an Object Multiple threads Atomic operations Thread communication Fairness.
CS510 Concurrent Systems Why the Grass May Not Be Greener on the Other Side: A Comparison of Locking and Transactional Memory.
Compiler Optimizations ECE 454 Computer Systems Programming Topics: The Role of the Compiler Common Compiler (Automatic) Code Optimizations Cristiana Amza.
CS533 – Spring Jeanie M. Schwenk Experiences and Processes and Monitors with Mesa What is Mesa? “Mesa is a strongly typed, block structured programming.
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles Synchronization Emery Berger and Mark Corner University.
CoreDet: A Compiler and Runtime System for Deterministic Multithreaded Execution Tom Bergan Owen Anderson, Joe Devietti, Luis Ceze, Dan Grossman To appear.
Specifying Multithreaded Java semantics for Program Verification Abhik Roychoudhury National University of Singapore (Joint work with Tulika Mitra)
On Transactional Memory, Spinlocks and Database Transactions Khai Q. Tran Spyros Blanas Jeffrey F. Naughton (University of Wisconsin Madison)
Object Lifetime and Pointers
Seminar in automatic tools for analyzing programs with dynamic memory
Rifat Shahriyar Stephen M. Blackburn Australian National University
Atomicity CS 2110 – Fall 2017.
Threads and Memory Models Hal Perkins Autumn 2011
Threads and Memory Models Hal Perkins Autumn 2009
Thread Implementation Issues
Lecture 22: Consistency Models, TM
Design and Implementation Issues for Atomicity
CSE 451: Operating Systems Autumn 2003 Lecture 7 Synchronization
CSE 451: Operating Systems Autumn 2005 Lecture 7 Synchronization
CSE 451: Operating Systems Winter 2003 Lecture 7 Synchronization
CSE 332: Concurrency and Locks
Controlled Interleaving for Transactions
Presentation transcript:

The Transactional Memory / Garbage Collection Analogy Dan Grossman University of Washington OOPSLA 2007

24 October 2007Dan Grossman: The TM/GC Analogy2 Why are you here? Transactional Memory / Garbage Collection Analogy How an analogy produces new research –A foundation of cognition? –A way to educate? Probably not why you’re here… But hope to encourage analogies as a key intellectual tool for practical results

24 October 2007Dan Grossman: The TM/GC Analogy3 Why are you here? Transactional Memory / Garbage Collection Analogy Why GC is great –Benefits, limitations, implementation techniques Probably not why you’re here… But hope to give a new perspective on this mature topic

24 October 2007Dan Grossman: The TM/GC Analogy4 Why are you here? Transactional Memory / Garbage Collection Analogy Why TM is great –Benefits, limitations, implementation techniques Probably is why you’re here… A very hot topic I hope to put in context –Promote without overselling

24 October 2007Dan Grossman: The TM/GC Analogy5 Why am I here? Transactional Memory / Garbage Collection Analogy Understand TM and GC better by explaining remarkable similarities –Benefits, limitations, and implementations “TM is to shared-memory concurrency as GC is to memory management”

24 October 2007Dan Grossman: The TM/GC Analogy6 How to do it Why an analogy helps Brief separate overview of GC and TM The core technical analogy (but read the essay) –And why concurrency is still harder Provocative questions based on the analogy (about 40 minutes; plenty of time for discussion)

24 October 2007Dan Grossman: The TM/GC Analogy7 Two bags of concepts reachability dangling pointers reference counting space exhaustion weak pointers real-time guarantees liveness analysis conservative collection finalization GC races eager update deadlock obstruction-freedom open nesting false sharing TM memory conflicts escape analysis

24 October 2007Dan Grossman: The TM/GC Analogy8 Interbag connections reachability dangling pointers reference counting space exhaustion weak pointers real-time guarantees liveness analysis conservative collection finalization GC races eager update deadlock obstruction-freedom open nesting false sharing TM memory conflicts escape analysis

24 October 2007Dan Grossman: The TM/GC Analogy9 Analogies help organize reachability dangling pointers reference counting space exhaustion weak pointers real-time guarantees liveness analysis conservative collection finalization GC races eager update deadlock obstruction-freedom open nesting false sharing TM memory conflicts escape analysis

24 October 2007Dan Grossman: The TM/GC Analogy10 So the goals are… Leverage the design trade-offs of GC to guide TM –And vice-versa? Identify open research Motivate TM –TM improves concurrency as GC improves memory –GC is a huge help despite its imperfections –So TM is a huge help despite its imperfections

24 October 2007Dan Grossman: The TM/GC Analogy11 How to do it “TM is to shared-memory concurrency as GC is to memory management” Why an analogy helps Brief separate overview of GC and TM The core technical analogy (but read the essay) –And why concurrency is still harder Provocative questions based on the analogy

24 October 2007Dan Grossman: The TM/GC Analogy12 Memory management Allocate objects in the heap Deallocate objects to reuse heap space –If too soon, dangling-pointer dereferences –If too late, poor performance / space exhaustion

24 October 2007Dan Grossman: The TM/GC Analogy13 GC Basics Automate deallocation via reachability approximation –Approximation can be terrible in theory Reachability via tracing or reference-counting –Duals [Bacon et al OOPSLA04] Lots of bit-level tricks for simple ideas –And high-level ideas like a nursery for new objects rootsheap objects

24 October 2007Dan Grossman: The TM/GC Analogy14 A few GC issues Weak pointers –Let programmers overcome reachability approx. Accurate vs. conservative –Conservative can be unusable (only) in theory Real-time guarantees for responsiveness

24 October 2007Dan Grossman: The TM/GC Analogy15 GC Bottom-line Established technology with widely accepted benefits Even though it can perform terribly in theory Even though you can’t always ignore how GC works (at a high-level) Even though an active research area after 40 years

24 October 2007Dan Grossman: The TM/GC Analogy16 Concurrency Restrict attention to explicit threads communicating via shared memory Synchronization mechanisms coordinate access to shared memory –Bad synchronization can lead to races or a lack of parallelism (even deadlock)

24 October 2007Dan Grossman: The TM/GC Analogy17 Atomic An easier-to-use and harder-to-implement primitive lock acquire/release(behave as if) no interleaved computation; no unfair starvation void deposit(int x){ synchronized(this){ int tmp = balance; tmp += x; balance = tmp; }} void deposit(int x){ atomic { int tmp = balance; tmp += x; balance = tmp; }}

24 October 2007Dan Grossman: The TM/GC Analogy18 TM basics atomic (and related constructs) implemented via transactional memory Preserve parallelism as long as no memory conflicts –Can lead to unnecessary loss of parallelism If conflict detected, abort and retry Lots of complicated details –All updates must appear to happen at once

24 October 2007Dan Grossman: The TM/GC Analogy19 A few TM issues Open nesting: atomic { … open { s; } … } Granularity (potential false conflicts) atomic{… x.f++; …} atomic{… x.g++; … } Update-on-commit vs. update-in-place Obstruction-freedom …

24 October 2007Dan Grossman: The TM/GC Analogy20 Advantages So atomic “sure feels better than locks” But the crisp reasons I’ve seen are all (great) examples –Personal favorite from Flanagan et al Same issue as Java’s StringBuffer.append –(see essay for close 2nds)

24 October 2007Dan Grossman: The TM/GC Analogy21 Code evolution void deposit(…) { synchronized(this) { … }} void withdraw(…) { synchronized(this) { … }} int balance(…) { synchronized(this) { … }}

24 October 2007Dan Grossman: The TM/GC Analogy22 Code evolution void deposit(…) { synchronized(this) { … }} void withdraw(…) { synchronized(this) { … }} int balance(…) { synchronized(this) { … }} void transfer(Acct from, int amt) { if(from.balance()>=amt && amt < maxXfer) { from.withdraw(amt); this.deposit(amt); } }

24 October 2007Dan Grossman: The TM/GC Analogy23 Code evolution void deposit(…) { synchronized(this) { … }} void withdraw(…) { synchronized(this) { … }} int balance(…) { synchronized(this) { … }} void transfer(Acct from, int amt) { synchronized(this) { //race if(from.balance()>=amt && amt < maxXfer) { from.withdraw(amt); this.deposit(amt); }

24 October 2007Dan Grossman: The TM/GC Analogy24 Code evolution void deposit(…) { synchronized(this) { … }} void withdraw(…) { synchronized(this) { … }} int balance(…) { synchronized(this) { … }} void transfer(Acct from, int amt) { synchronized(this) { synchronized(from) { //deadlock (still) if(from.balance()>=amt && amt < maxXfer) { from.withdraw(amt); this.deposit(amt); } }} }

24 October 2007Dan Grossman: The TM/GC Analogy25 Code evolution void deposit(…) { atomic { … }} void withdraw(…) { atomic { … }} int balance(…) { atomic { … }}

24 October 2007Dan Grossman: The TM/GC Analogy26 Code evolution void deposit(…) { atomic { … }} void withdraw(…) { atomic { … }} int balance(…) { atomic { … }} void transfer(Acct from, int amt) { //race if(from.balance()>=amt && amt < maxXfer) { from.withdraw(amt); this.deposit(amt); } }

24 October 2007Dan Grossman: The TM/GC Analogy27 Code evolution void deposit(…) { atomic { … }} void withdraw(…) { atomic { … }} int balance(…) { atomic { … }} void transfer(Acct from, int amt) { atomic { //correct and parallelism-preserving! if(from.balance()>=amt && amt < maxXfer){ from.withdraw(amt); this.deposit(amt); }

24 October 2007Dan Grossman: The TM/GC Analogy28 But can we generalize So TM sure looks appealing… But what is the essence of the benefit? You know my answer…

24 October 2007Dan Grossman: The TM/GC Analogy29 How to do it “TM is to shared-memory concurrency as GC is to memory management” Why an analogy helps Brief separate overview of GC and TM The core technical analogy (but read the essay) –And why concurrency is still harder Provocative questions based on the analogy

24 October 2007Dan Grossman: The TM/GC Analogy30 The problem, part 1 Why memory management is hard: Balance correctness (avoid dangling pointers) And performance (no space waste or exhaustion) Manual approaches require whole-program protocols Example: Manual reference count for each object Must avoid garbage cycles race conditions concurrent programming loss of parallelismdeadlock lock lock acquisition

24 October 2007Dan Grossman: The TM/GC Analogy31 The problem, part 2 Manual memory-management is non-modular: Caller and callee must know what each other access or deallocate to ensure right memory is live A small change can require wide-scale changes to code –Correctness requires knowing what data subsequent computation will access synchronization locks are held release concurrent

24 October 2007Dan Grossman: The TM/GC Analogy32 The solution Move whole-program protocol to language implementation One-size-fits-most implemented by experts –Usually combination of compiler and run-time GC system uses subtle invariants, e.g.: –Object header-word bits –No unknown mature pointers to nursery objects In theory, object relocation can improve performance by increasing spatial locality –In practice, some performance loss worth convenience thread-sharedthread-local TM optimistic concurrency parallelism

24 October 2007Dan Grossman: The TM/GC Analogy33 Two basic approaches Tracing: assume all data is live, detect garbage later Reference-counting: can detect garbage immediately –Often defer some counting to trade immediacy for performance (e.g., trace the stack) update-on-commitconflict-freeconflicts update-in-placeconflicts conflict-detection optimistic reads

24 October 2007Dan Grossman: The TM/GC Analogy34 So far… memory managementconcurrency correctnessdangling pointersraces performancespace exhaustiondeadlock automationgarbage collectiontransactional memory new objectsnursery datathread-local data eager approachreference-countingupdate-in-place lazy approachtracingupdate-on-commit

24 October 2007Dan Grossman: The TM/GC Analogy35 Incomplete solution GC a bad idea when “reachable” is a bad approximation of “cannot-be-deallocated” Weak pointers overcome this fundamental limitation –Best used by experts for well-recognized idioms (e.g., software caches) In extreme, programmers can encode manual memory management on top of GC –Destroys most of GC’s advantages…

24 October 2007Dan Grossman: The TM/GC Analogy36 Circumventing GC class Allocator { private SomeObjectType[] buf = …; private boolean[] avail = …; Allocator() { /*initialize arrays*/ } SomeOjbectType malloc() { /* find available index */ } void free(SomeObjectType o) { /* set corresponding index available */ }

24 October 2007Dan Grossman: The TM/GC Analogy37 Incomplete solution GC a bad idea when “reachable” is a bad approximation of “cannot-be-deallocated” Weak pointers overcome this fundamental limitation –Best used by experts for well-recognized idioms (e.g., software caches) In extreme, programmers can encode manual memory management on top of GC –Destroys most of GC’s advantages… TM memory conflict run-in-parallel Open nested txns unique id generation lockingTM

24 October 2007Dan Grossman: The TM/GC Analogy38 Circumventing GC class SpinLock { private boolean b = false; void acquire() { while(true) atomic { if(b) continue; b = true; return; } void release() { atomic { b = false; } } TM

24 October 2007Dan Grossman: The TM/GC Analogy39 Programmer control For performance and simplicity, GC treats entire objects as reachable, which can lead to more space Space-conscious programmers can reorganize data accordingly But with conservative collection, programmers cannot completely control what appears reachable –Arbitrarily bad in theory (some) TM accessed less parallelism Parallelism coarser granularity (e.g., cache lines) conflicting

24 October 2007Dan Grossman: The TM/GC Analogy40 So far… memory managementconcurrency correctnessdangling pointersraces performancespace exhaustiondeadlock automationgarbage collectiontransactional memory new objectsnursery datathread-local data eager approachreference-countingupdate-in-place lazy approachtracingupdate-on-commit key approximationreachabilitymemory conflicts manual circumventionweak pointersopen nesting uncontrollable approx.conservative collectionfalse memory conflicts

24 October 2007Dan Grossman: The TM/GC Analogy41 More I/O: input after output of pointers can cause incorrect behavior due to dangling pointers Real-time guarantees doable but costly Static analysis can avoid overhead –Example: liveness analysis for fewer root locations –Example: remove write-barriers on nursery data Obstruction-freedom thread-local escape potential conflicts irreversible actions in transactions

24 October 2007Dan Grossman: The TM/GC Analogy42 Too much coincidence! memory managementconcurrency correctnessdangling pointersraces performancespace exhaustiondeadlock automationgarbage collectiontransactional memory new objectsnursery datathread-local data eager approachreference-countingupdate-in-place lazy approachtracingupdate-on-commit key approximationreachabilitymemory conflicts manual circumventionweak pointersopen nesting uncontrollable approx.conservative collectionfalse memory conflicts more…I/O of pointersI/O in transactions real-timeobstruction-free liveness analysisescape analysis ……

24 October 2007Dan Grossman: The TM/GC Analogy43 How to do it “TM is to shared-memory concurrency as GC is to memory management” Why an analogy helps Brief separate overview of GC and TM The core technical analogy (but read the essay) –And why concurrency is still harder Provocative questions based on the analogy

24 October 2007Dan Grossman: The TM/GC Analogy44 Concurrency is hard! I never said the analogy means TM parallel programming is as easy as GC sequential programming By moving low-level protocols to the language run-time, TM lets programmers just declare where critical sections should be But that is still very hard and – by definition – unnecessary in sequential programming Huge step forward = panacea /

24 October 2007Dan Grossman: The TM/GC Analogy45 Stirring things up I can defend the technical analogy on solid ground Then push things (perhaps) too far … 1.Many used to think GC was too slow without hardware 2.Many used to think GC was “about to take over” (decades before it did) 3.Many used to think we needed a “back door” for when GC was too approximate

24 October 2007Dan Grossman: The TM/GC Analogy46 Inciting you Push the analogy further or discredit it Generational GC? Contention management? Inspire new language design and implementation Teach programming with TM as we teach programming with GC Find other analogies and write essays

24 October 2007Dan Grossman: The TM/GC Analogy47 “TM is to shared-memory concurrency as GC is to memory management”