Previous | Next --- Slide 13 of 37
Back to Lecture Thumbnails
Elias

The definition for coherence is technically delicate. The three conditions listed on the slide are necessary, but difficult to hold in mind. I like the way Kayvon put it in lecture, and the way that I now thing about it: coherence, as a property, is the guarantee that data as accessed by a set of processors is consistent. Every processor, regardless of access order, will see the same data at any given point in time (that is, accesses should be anonymous - there is no dependence on which processor issues a request, assuming that the request were to occur at the exact same instant in time from another processor).

tl;dr: In a coherent system, if a processor requests/writes some data, every other processor in the system "agrees" that the outcome is correct.

rokislt10

Just curious - are there systems for which these conditions are purposefully not met, whether because it doesn't matter, or because there is something special about the system itself?

meatie

The advantage of having a coherent cache is that programmers do not need to worry about coherence when writing multithread code. Also, I think it's easier for hardware to handle cache coherence rather than software.