Cache eviction: when are randomized algorithms better than LRU? (2014)
Are there any languages that allow you to give the compiler a hint that you're about to grind over a gigantic dataset so don't bother to cache any of this data because it won't be accessed again for a long time?  It seems like it could be helpful in keeping a big crunch from obliterating the cache constantly.  You might also be able to apply other optimizations, like preloading the next data blocks so they're ready when the CPU rolls around.  Maybe compilers already do this behind the scenes?