Michel Dubois, University of Southern California
What is Coherence?
The design of microarchitectures is deeply affected by technological trends. Current and future microarchitectures will be made of several multithreaded cores sharing memory. Memory coherence has traditionally guided the design of shared-memory systems. Usually coherence is taught or explained very cursorily by simple state diagrams of coherence protocols. However there is much more to coherence than meets the eye. Aggressive and correct coherent hardware designs involving buffering of memory accesses at various stages of their executions requires a deep understanding of data coherence. In this short course I will focus on coherence and illustrate various surprising examples of hardware mechanisms that are coherent. The goal behind these examples is to gain insight into coherence at the hardware level.
Is coherence necessary? Is it useful at all? Why? How does coherence compare with Store atomicity? More basically, what exactly is coherence? These are some questions I will answer in this short course. I will also explain why coherence is not sufficient nor necessary and will introduce the concept of memory consistency models.
This is a short course for computer engineers and computer architects in industry, who will design chip multiprocessors or shared-memory systems. It is also intended for academic teachers and researchers both in computer engineering and science, who want to improve their teaching of the complex topic of coherence or need a clear understanding of coherence to pursue their research. Some background in machine architecture is assumed, including the general workings of individual architectural components such as processors, caches, memory, interconnect, and input/output. Some familiarity with shared-memory multiprocessors is also recommended. In general, curious engineers or scientists with such background may also attend this tutorial to learn about the topic of coherence in a few hours.