in:(Chilimbi Trishul M.(1210 W. Dayton St.,Madison))
Data structure partitioning to optimize cache utilization
US09/270125
[Chilimbi Trishul M.(1210 W. Dayton St.,Madison), Larus James R.(8020 SE. 59th St.,Mercer Island), Davidson Robert(640 Lake Samammish Lane NE.,Bellevue)]
Fields which are individually addressable data elements in data structures are reordered to improve the efficiency of cache line access. Temporal data regarding the referencing of such fields is obtained, and a tool is used to construct a field affinity graph of temporal access affinities between the fields. Nodes in the graph represent fields, and edges between the nodes are weighted to indicate field affinity. A first pass greedy algorithm attempts to combine high affinity fields in the same cache line or block. Constraints are used to reject invalid combinations of fields. Data structures such as class are partitioned into heavily referenced and less heavily referenced portions. The partitioning is based on profile information about field access counts with indirect addressing used to reference the less heavily referenced partitioned class. A class co-location scheme is used to ensure that temporally correlated classes are placed near each other in cache blocks. A generational garbage collection algorithm is used to ensure that objects that are most heavily referenced are more likely to remain in cache blocks.