Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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.
Concurrent Programming
Threads: C++, Java, C#
Rendezvous: Ada.
Synchronous: Esterel, Lustre.
Join patterns: Jocaml, C-Omega.
Implicit parallelism: functional
languages.
Hardware: VHDL, Verilog.
Reconfigurable Systems
Code/Circuit Generation
VHDL, Verilog -> hardware implementation
Esterel design
void uart_device_driver ()
{
.....
}
uart.c
C -> software implementation
Hardware/Software
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
Transactional Memory
atomic
A.withdraw(3)
B.deposit(3)
end
IDEA
!
Herlihy/Moss ISCA 1993
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”.
How does it work?
atomic
<body>
Optimistic
concurrency
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
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
Summary
Question reliance on asynchronous
concurrent programming languages:
digital design
synchronous reactive systems
Prepare for alternative computing
architectures.
Formal analysis.
Software Transactional Memories.