# WTI **WTI** (write-through invalidate) is the simplest [[cache-snoopy-protocols|snoopy]] [[cache-coherence|coherence]] protocol: every write is sent both to the local cache and straight through to main memory, and every other cache snooping the bus invalidates its own copy of that line the moment it sees the write go by. ## States WTI only needs two states per line: - **Valid** — the line matches main memory and can be read locally. - **Invalid** — the line is stale (or absent) and must be reloaded from memory before use. There is no "dirty" state, because a write-through cache never lets its copy diverge from memory in the first place; every write lands in memory immediately. ## Why it fell out of favor Write-through means every single write, not just every *first* write to a line, generates bus and memory traffic. A tight loop that increments the same local counter a million times sends a million writes to memory, even though only the final value ever matters to another core. This wastes bus bandwidth and memory bandwidth in proportion to write frequency rather than to how much data actually needs to be shared, which is why write-back protocols like [[msi]] replaced it as caches and bus contention became the bottleneck rather than memory bandwidth.