Everything you know is wrong: The amazing time traveling CPU, and other horrors of concurrency

Author Ethel Bardsley

Thumbnail PDF


  • Filesize: 0.85 MB
  • 8 pages

Document Identifiers

Author Details

Ethel Bardsley

Cite AsGet BibTex

Ethel Bardsley. Everything you know is wrong: The amazing time traveling CPU, and other horrors of concurrency. In 2014 Imperial College Computing Student Workshop. Open Access Series in Informatics (OASIcs), Volume 43, pp. 11-18, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2014)


In this paper, we shall explore weak memory models, their insidious effects, and how it could happen to you! It shall explained how and why both compilers and CPUs rewrite your program to make it faster, the inevitable fallout of this, and what you can do to protect your code. We shall craft a lock, building from a naïve and broken implementation up to a safe and correct form, and study the underlying model that requires these modifications as we go.
  • Concurrency
  • weak memory
  • compilers


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Jade Alglave, Daniel Kroening, Vincent Nimal, and Daniel Poetzl. Don't sit on the fence: A static analysis approach to automatic fence insertion. CoRR, abs/1312.1411, 2013. Google Scholar
  2. Jonathan Corbet. Volatile considered harmful. https://www.kernel.org/doc/Documentation/volatile-considered-harmful.txt. Retreived from Linux 3.15-rc7.
  3. Micha Hofri. Proof of a mutual exclusion algorithm—a classic example. ACM SIGOPS Operating Systems Review, 24(1):18-22, 1990. Google Scholar
  4. David Howells and Paul E. McKenney. Linux kernel memory barriers. https://www.kernel.org/doc/Documentation/memory-barriers.txt. Retreived from Linux 3.15-rc7.
  5. Jeff Huang, Charles Zhang, and Julian Dolby. Clap: Recording local executions to reproduce concurrency failures. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '13, pages 141-152, New York, NY, USA, 2013. ACM. Google Scholar
  6. ISO. Programming Language C (C11). Standard ISO/IEC 9899:2011, International Organization for Standardization, 2011. Google Scholar
  7. JCP. JSR 133: JavaTM Memory Model and Thread Specification Revision. Standard, Java Community Process, 2004. Google Scholar
  8. L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Comput., 28(9):690-691, September 1979. Google Scholar
  9. Scott Owens, Susmit Sarkar, and Peter Sewell. A better x86 memory model: x86-tso. In Theorem Proving in Higher Order Logics, volume 5674 of Lecture Notes in Computer Science, pages 391-407. Springer Berlin Heidelberg, 2009. Google Scholar
  10. Gary L. Peterson. Myths About the Mutual Exclusion Problem. Information Processing Letters, 12(3):115-116, 1981. Google Scholar
Questions / Remarks / Feedback

Feedback for Dagstuhl Publishing

Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail