1. A method for selectively filtering out redundant software prefetch instructions during execution of a program on a processor, comprising: during execution of the program, collecting information associated with hit rates for individual software prefetch instructions as the individual software prefetch instructions are executed, wherein a software prefetch instruction is redundant if the software prefetch instruction accesses a cache line that has already been fetched from memory; and as software prefetch instructions are encountered during execution of the program, selectively filtering out the individual software prefetch instructions that are likely to be redundant based on the collected information, so that likely redundant software prefetch instructions are not executed by the processor.