1. In a data processing system having one or more processors and multiple levels of cache, including a lower level cache and a higher level cache, a method comprising: detecting a data request at the lower level cache; in response to a cache miss in the lower level cache, selecting a cache-line for eviction based upon (a) the presence bits and (b) the less recently used (LRU) bits; determining whether a copy of the cache-line selected for eviction is present in a higher level cache; when the copy of the cache-line selected for eviction is present in the higher level cache, invalidating the copy of the cache-line selected for eviction; and updating the pseudo-LRU bits.