1. A method of reducing memory latency in a software application, the method comprising: analyzing the software application and determining a first area of software instructions that encounters a cache miss; generating a helper thread; generating a first set of compiler-runtime instructions and inserting the first set of compiler-runtime instructions in a main thread; generating a second set of compiler-runtime instructions and inserting the second set of compiler-runtime instructions in the helper thread; and inserting a counting mechanism in the main thread and the helper thread, the counting mechanism being structured to coordinate relative execution points of the main thread and the helper thread.