In practice, use Write Back.
- Update current and next level. Propagate changes to slower caches. L1 → L2 → L3.
- Pros: Always Coherent!
- Cons: Slow!
- Only update the fastest cache. Propagate changes to slower caches when we need space (i.e., when eviction happens.)
- Pros: Fast!
- Cons: Concurrency issues when other cores try to read from L3 Shared Cache. It could be slow if a few isolated writes happen (because the whole block should be written back)