I’ll be giving a memory model talk at Gamefest in Seattle next month. Here’s a quick summary:
Memory Models: Foundational Knowledge for Concurrent Code
July 22-23, 2008
Seattle, WA, USA
A memory model defines a contract between the programmer and the execution environment, that trades off:
- programmability via stronger guarantees for programmers, vs.
- performance via greater flexibility for reordering program memory operations.
The “execution environment” includes everything from the compiler and optimizer on down to the CPU and cache hardware, and it really wants to help you by reordering your program to make it run faster. You, on the other hand, you want it to not help you excessively in ways that will break the meaning of your code. In this talk, we’ll consider why a memory model is important, how to achieve a reasonable balance, detailed considerations on current and future PC and Xbox platforms, and some best practices for writing solid concurrent code.