Orchestrating Thread Scheduling And Cache Management To Improve Memory System Throughput In Throughput Processors