Yes, I was trying to distinguish between that and disk cache.
Problem is, any cache is a shared resource: an app, and its compiler, can't make assumptions that it's the only game in town. It can, at a micro-level, determine the best way to compile up, say, a loop, so that it fits into a single cache allocation unit, but beyond that no assumptions should be made.
The project I worked on was written on the original .Net back around 2001 or so when a years worth of Java development was canned and "ported" (yes, that's right, of course it wasn't going to be completely rewritten) to .Net. I still to this day have no idea what they were thinking, but we had Microsofties parachuted in like flies around the proverbial t%rd, some of whom were OK, but most were no better than anyone else who'd read a couple of books. But it turned out it was a whitepaper development, so it had to work, and it was demo'd at one of the Barcelona shindigs, where we had to load up every screen of the app before doing the demo because it was such a sloth. It's still around today, in .Net, but now everythings being ported to.... you guessed it, Java.
Cheers, Howard