Improving L2 Cache Performance Through Stream-Directed Optimizations