Patent ID: 7836256

Claim:
A method for accessing data in a cache memory system, the method comprising: grouping sets of the data in the cache memory system into two or more virtual partitions, wherein the grouping comprises: identifying one or more load/store instructions that are encountered most frequently from among a plurality of load/store instructions; identifying one or more data items in the sets that are accessed by the one or more load/store instructions; formulating a graph, where each node of the graph corresponds to one of the one or more load/store instructions and each edge of the graph is weighted by an affinity between a pair of the one or more load/store instructions that are connected by the edge, wherein the affinity reflects a degree to which the pair of the one or more load/store instructions access common ones of the one or more data items within a given interval of time; assigning each of the one or more load/store instructions to at least one of the two or more virtual partitions in accordance with the graph, such that those of the one or more load/store instructions that exhibit a high degree of affinity are assigned to a common one of the two or more virtual partitions; processing at least one of said one or more load/store instructions in accordance with the two or more virtual partitions, where the at least one of the one or more load/store instructions specifies the at least one of the two or more virtual partitions to which the at least one of the one or more load/store instructions is assigned; checking at least a subset of the two or more virtual partitions for at least one of the one or more data items that is referenced by at least one of said one or more load/store instructions; fetching the at least one of the one or more data items from one of the two or more virtual partitions, if the at least one of the one or more data items is located therein and the load/store instruction specifies a load operation; storing the at least one of the one or more data items in one of the two or more virtual partitions, if the toad/store instruction specifies a store operation; and loading the at least one of the one or more data items to the at least one of the two or more virtual partitions to which the load/store instruction is assigned, if the at least one of the one or more data items is not located in the subset of the two or more virtual partitions.