1. A method comprising: tagging data of a program with meta information indicative of a data access pattern; and prefetching the data from main memory, by a processor executing the program, the prefetching being a non-temporal prefetch in response to the meta information indicating the data access pattern is non-temporal, the prefetching being a temporal prefetch in response to the meta information indicating the data access pattern is temporal, wherein the non-temporal prefetch prefetches the data into a first level of a cache and the data is not evicted into a higher-level cache unless the data access results in a hit in the higher-level cache, and wherein the temporal prefetch prefetches data into a first level of a cache and the data is later evicted into a higher-level cache.