1. A method for software scouting the regions of a program, comprising: receiving source code for a program; compiling the source code to produce executable code for the program, wherein compiling the source code involves: identifying a first set of loops from a hierarchy of loops in the source code, wherein each loop in the first set of loops contains at least one effective prefetch candidate; from the first set of loops, identifying a second set of loops where scout-mode prefetching is profitable; and for each loop in the second set of loops, producing executable code for a helper-thread which contains a prefetch instruction for each effective prefetch candidate, whereby at runtime the helper-thread is executed in parallel with the main thread in advance of where the main thread is executing to prefetch data items for the main thread.