Patent ID: 9176856
Filing Date: 2015-11-03
Classification: G06F,Y02D

Abstract:
1. A data store for storing data comprising: a data array comprising a plurality of data entries for storing data values; a tag array comprising a plurality of tag entries for storing tag values for tracking which data values are stored in the data array; and control circuitry configured to control allocation of a data value to said data array and a corresponding tag value to said tag array to: (a) allocate said data value to a selected data entry of a corresponding data set of N data entries of said data array, where N is an integer which is less than the total number of data entries of said data array, said corresponding data set selected based on an address of said data value, wherein said data value cannot be allocated to a data entry not in said corresponding data set; (b) allocate said corresponding tag value to a selected tag entry of a corresponding tag set of M tag entries of said tag array, where M is an integer and M<N, said corresponding tag set selected based on said address of said data value, wherein said tag value cannot be allocated to a tag entry not in said corresponding tag set; and (c) store in said selected tag entry a pointer identifying which data entry of said corresponding data set is said selected data entry, wherein in response to an access request for accessing from said data array a target data value identified by a target address, said control circuitry is configured to perform a first tag lookup for reading the tag values from each of the corresponding tag set of M tag entries selected based on said target address, and to determine whether the data array stores said target data value by comparing a tag portion of the target address with each of said read tag values, when none of the read tag values corresponds to said tag portion of said target address, then said control circuitry is configured to perform said allocation for allocating said target data value to said data array and said tag portion of said target address to said tag array, and said selected data entry already stores a data value which needs to be written back to memory and the tag entry corresponding to the data value already stored in said selected data entry is from a different tag set to the tag set read in said first tag lookup, then said control circuitry is configured to perform a second tag lookup for said different tag set to read the tag value corresponding to said data value already stored in said selected data entry.