1. A method for prefetching data and/or instructions from a main memory to a secondary memory, the method comprising: generating control flow information, comprising storing respective information for each retired instruction of one or more retired instructions; storing a plurality of addresses, comprising storing respective one or more addresses for each retired instruction that incurs one or more secondary memory misses, wherein the respective one or more addresses correspond respectively to the one or more secondary memory misses; and for each incurred secondary memory miss, performing a prefetch operation according to: a respective address corresponding to the incurred secondary memory miss; the control flow information; and the plurality of addresses.