Cache Coherence And Memory Consistency