Thirty years of improvements in the speed of conventional microprocessors have recently come to an end. All the major hardware vendors are now focusing on multithreaded and multicore machines, which have multiple processors per chip. Unfortunately, to obtain improved performance on such machines, programmers will need to employ concurrent programming techniques previously confined to Internet servers and high-end scientific computing. The result is an impending crisis in the software community: anecdotal evidence suggests that most programmers simply aren't up to the task. After summarizing the technological trends that have forced the move to multithreaded and multicore chips, this talk will consider which sorts of applications are amenable to concurrent programming (and which are not!); why concurrent programming is so difficult; and what we may be able to do about it. Part of the solution is likely to lie in transactional memory, a set of hardware and software mechanisms that simplify synchronization among multiple threads of control.
Colloquia Series page.