MMU gang wars: the TLB drive-by shootdown
This whole rigmarole is necessary for a single reason: TLBs don't participate in the cache coherency system.Uh, why is that?  If they did participate, then the mere act of writing to the cache line(s) which change the mapping would implicitly invalidate all of the associated entries in all of the system's TLBs.  (Handwave, handwave), maybe you still end up needing a barrier similar to the instruction barrier needed when altering the content of executable pages.What's the downside?  Is it just power?  Or is there something more fundamental about the TLB structure that makes it impractical?