Patent ID: 7873791

Claim:
A method for prefetching data-units into a cache memory in response to data read requests from at least one host processor, the cache memory being coupled to the at least one host processor and to at least one off-cache data storage device, the method comprising: executing a first prefetch task to prefetch a first prefetch series of data-units from the off-cache data storage device's logical locations for storage in the cache memory, the first prefetch task comprising: initiating a first prefetch operation to prefetch a first selected set of data-units; and storing the data-units in a data-set in the cache memory, the data-set comprising: the data-units prefetched in accordance with the first prefetch task; and meta-data associated with the data-units, wherein the cache memory includes a data area that stores the data-units and a meta-data area that stores the meta-data, and wherein the meta-data includes meta-data information indicating whether the data-units have been prefetched into the cache memory and meta-data information indicating a status of the data-units in the cache memory, wherein the meta-data includes a timestamp field that includes timestamp information and information indicating whether or not the data-unit in the data-set contains valid data, wherein the information indicating whether or not the data-unit contains valid data is encoded in the timestamp information; making decisions about the first prefetch task, subsequent prefetch operations and prefetch tasks based on read requests, the data-units requested by the read requests, the data-units that are stored in the cache memory and that are associated with the first prefetch task, and the meta-data associated with the data-units; determining whether or not an additional data-unit that is read from an off-cache logical location is a first prefetch series member comprising a data-unit in the first prefetch series; upon determination that the additional data-unit is a first prefetch series member, associating the additional data-unit with the first prefetch task, wherein making decisions further comprises treating the additional data-unit as having been prefetched into cache memory in accordance with the first prefetch task upon associating the additional data-unit with the first prefetch task; and performing a tail cutting process, the tail cutting process including: reviewing the meta-data of a particular data-unit in the cache memory; selecting the particular data-unit for deallocation based on a deallocation selection criteria, wherein the deallocation selection criteria includes the meta-data of the particular data-unit indicating that the particular data-unit has been prefetched into the cache memory and that the particular data-unit is not valid; and deallocating memory space of the particular data-unit in the cache memory if the particular data-unit is selected for deallocation.