log in  |  register  |  feedback?  |  help  |  web accessibility
Logo
Understanding multi-core concurrency
Thursday, March 1, 2012, 11:00 am-12:00 pm Calendar
  • You are subscribed to this talk through .
  • You are watching this talk through .
  • You are subscribed to this talk. (unsubscribe, watch)
  • You are watching this talk. (unwatch, subscribe)
  • You are not subscribed to this talk. (watch, subscribe)
Abstract
Currently, real concurrent programs are too difficult to understand. Even expert programmers cannot reliably write bug-free high-performance concurrent algorithms, and researchers in programming languages and in formal verification are struggling to bring their work into the multi-core world. Modern hardware and languages -- especially x86, ARM, Power, C, C++, and Java -- are complex, often convoluted, systems with pervasive engineering trade-offs to achieve conflicting goals about cost, performance, usability, and backwards compatibility. In particular, they perform sophisticated optimisations that have visible effects on concurrent programs: the values read during a program's execution might not be explainable by any consistent, global ordering of the values written. In this talk, I will explain how my recent work on understanding concurrency addresses these problems. Crucially, my work relies on the application of formal mathematical specifications to real systems programs -- only formal specifications can accurately capture and clarify modern multi-core architectures. The key contributions are a precise, programmer-centric understanding of what these architectures are, and subsequent techniques to ensure that concurrent algorithms are robust, efficient, and bug-free. I will illustrate my approach using algorithms from the x86 version of the Linux kernel. I will also briefly describe the more complex concurrency found in C++ and on Power/ARM machines and finally, explain how we can understand the implementation of concurrent languages on concurrent hardware.
Bio
Scott Owens is a Senior Research Associate in the Programming, Logic, and Semantics Group at the University of Cambridge. His research involves creating and using rigorous specifications of critical computational infrastructure as a basis for reliable, high-assurance software. His focus has recently been on multi-core programming, and on building tools to support rigorous specifications, including Lem (http://www.cl.cam.ac.uk/~so294/lem) and Ott (http://www.cl.cam.ac.uk/~pes20/ott). Prior to that, he created OCaml light, an operational semantics and type system for a substantial fragment of the OCaml programming language. He is an expert in verification using mechanized proof assistants, especially the HOL system, which he has used for work on verifying compilers and encryption algorithms. Before moving to Cambridge he was a student at the University of Utah where his Ph.D. dissertation, "Compile-time Information in Software Components," was advised by Matthew Flatt and Konrad Slind. Prior to that, he received bachelor's degrees in Computer Science and in Mathematics from Rice University.
This talk is organized by Rance Cleaveland