When you're debugging performance-critical code and looking at the disassembly, it's not too hard to spot bottlenecks due to data cache misses:
Load/store instructions tend to be the usual bottlenecks, which means that if you stop the program, chances are that it will stop close to a load/store instruction loading from some unpredictable memory address.
Similarly, one way to find branch mispredictions is to look and see if breaking the program usually stops it nearby particular jumps, and to then look at the code to see if the jumps are predictable.
(Or, at least, that's how I try to find such bottlenecks. If I'm looking for the wrong symptoms let me know..)
What, however, are the symptoms of other kinds of cache misses?
I do know they're rare, but I still want to know how to spot them if/when they come up.
By "other" caches, I mean things like:
- Instruction Cache(s)
- Translation Lookaside Buffer
- Bonus points for other important caches I should know about but I'm not aware of