When the memory "behind" the cache may have been changed by something other than the devices "in front" of the cache.
One example is when a DMA peripheral has modified memory. Another is if you switch tasks that use different MMU settings (and the cache is based on per-task addresses.)