This is where the course shifts from "Programming" to "Engineering."
By the end of the semester, students don't just view code as logic; they view it as a physical interaction with the machine. They understand that multicore programming is not just about splitting work—it is about the delicate art of coordinating chaos. 6.5080 multicore programming
Before writing a single parallel loop, 6.5080 insists on understanding the hardware. Multicore processors do not provide a “perfectly simultaneous” view of memory. Instead, each core possesses private L1 and L2 caches, a shared L3 cache, and the main DRAM. This hierarchy introduces the problem of . The course covers the MESI (Modified, Exclusive, Shared, Invalid) protocol extensively. A student learns why two threads incrementing the same shared variable from different cores can miss each other’s updates, leading to lost counts. This is where the course shifts from "Programming"
More subtly, 6.5080 introduces —specifically, the Total Store Order (TSO) used by x86 and the weaker Relaxed Memory model of ARM and PowerPC. Through hands-on experiments, students discover that without memory barriers, a thread may read a stale value even after another thread has visibly written a new one. This module’s key takeaway is that correctness in multicore programming is not merely about avoiding race conditions in logic; it is about controlling the order of memory operations as observed by different cores. The course covers the MESI (Modified, Exclusive, Shared,