Patent ID: 7930514
Filing Date: 2011-04-19
Classification: G06F

Abstract:
1. A computer program product for searching a dual-addressable cache, the computer program product comprising: a non-transitory computer-readable storage device readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising: receiving a request to search a cache directory of the dual-addressable cache for a primary address based on a received address corresponding to the primary address, wherein the cache directory comprises congruence classes with multiple cache entries per congruence class, each cache entry comprising a pair of primary and secondary addresses, and each congruence class is indirectly indexed by an indirect index pointing to the secondary address; extracting a portion of the received address as an index to a selected congruence class containing a plurality of indirect indexes, the plurality of indirect indexes pointing to the other congruence classes with one or more cache entries containing secondary addresses matching the received address; accessing the selected congruence class of the cache directory to examine the plurality of indirect indexes; accessing the other congruence classes of the cache directory pointed to by the plurality of indirect indexes to search for the received address; responsive to one of the accessed congruence classes having a cache entry with a first address field corresponding to the received address, extracting a second address field from the cache entry as the primary address; and responsive to one of the accessed congruence classes not having the first address field corresponding to the received address, performing a cache miss action; wherein a first type of address is either a real address or a virtual address, wherein a second type of address is the other of the real address or the virtual address; responsive to the received address being the first type address, the first address field is the first type address, the primary address is the second type address, and second address field is the second type address, and further wherein the cache entries translating between the virtual address and the real address.