there may be problems if there are many caches of a common memory resource, as data in the cache may no longer make sense, or one cache may no longer have the same data as the others. a common case where the problem occurs is the cache of cpus in a multiprocessing system. as can be seen in the figure, if the top client has a copy of a memory block from a previous read and the bottom client changes that memory block, the top client could be left with an invalid cache of memory, without knowing. cache coherence is there to manage such conflicts and maintain consistency between cache and memory.