1 / 11

Concurrency and Software Transactional Memories

Concurrency and Software Transactional Memories. Satnam Singh, Microsoft. Faculty Summit 2005. Concurrency and Parallelism. Software engineering. Multi-core. Future computing architectures. Reconfigurable computing. Message passing multi-processor systems. Alternative computing devices.

mai
Download Presentation

Concurrency and Software Transactional Memories

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Concurrency and Software Transactional Memories Satnam Singh, Microsoft Faculty Summit 2005

  2. Concurrency and Parallelism • Software engineering. • Multi-core. • Future computing architectures. • Reconfigurable computing. • Message passing multi-processor systems. • Alternative computing devices.

  3. Concurrent Programming • Threads: C++, Java, C# • Rendezvous: Ada. • Synchronous: Esterel, Lustre. • Join patterns: Jocaml, C-Omega. • Implicit parallelism: functional languages. • Hardware: VHDL, Verilog.

  4. Reconfigurable Systems

  5. Code/Circuit Generation VHDL, Verilog -> hardware implementation void uart_device_driver () { ..... } Esterel design uart.c C -> software implementation

  6. Hardware/Software

  7. Fighting back • Formal analysis techniques: • contract checking • behavioral types • deadlock avoidance • Language level support for concurreny. • Lock free programming: • Lock-free data structures • Software transactional memories

  8. Transactional Memory IDEA! • Steal ideas from the database community. • atomic does what it says on the tin. • Directly supports what the programmer is trying to do: an atomic transaction against memory. • “Write the simple sequential code, and wrap atomic around it”. atomic A.withdraw(3) B.deposit(3) end Herlihy/Moss ISCA 1993

  9. How does it work? • Execute <body> without taking any locks. • Each read and write in <body> is logged to a thread-local transaction log. • Writes go to the log only, not to memory. • At the end, the transaction tries to commit to memory. • Commit may fail; then transaction is re-run Optimistic concurrency atomic <body>

  10. Transactional Memory • No races: no locks, so you can’t forget to take one • No lock-induced deadlock, because no locks • Error recovery trivial: an exception inside atomic aborts the transaction • Simple code is scalable. • Implementation in Haskell: • orElse combinator

  11. Summary • Question reliance on asynchronous concurrent programming languages: • digital design • synchronous reactive systems • Prepare for alternative computing architectures. • Formal analysis. • Software Transactional Memories.

More Related