1. A computer implemented method for prefetching data at discontiguous storage locations, the method comprising: executing a prefetch instruction, the prefetch instruction specifying a list having a plurality of entries, each entry specifying a storage address of a block of data and corresponding metadata, the metadata indicating any one of usage of the block of data and information about the list, the executing comprising: a) obtaining, by a computer system, a plurality of addresses from the plurality of entries of the lists specified by the prefetch instruction; and b) initiating prefetching to cache lines of a cache the blocks of data corresponding to the obtained plurality of addresses.