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.
Los campos que son individualmente elementos de datos direccionables en estructuras de datos se reordenan para mejorar la eficacia de la línea acceso del escondrijo. Los datos temporales con respecto a referirse de tales campos se obtienen, y una herramienta se utiliza para construir un gráfico de la afinidad del campo de afinidades temporales del acceso entre los campos. Los nodos en el gráfico representan campos, y los bordes entre los nodos se cargan para indicar afinidad del campo. Un algoritmo codicioso del primer paso procura combinar altos campos de la afinidad en la misma línea o bloque del escondrijo. Los apremios se utilizan para rechazar combinaciones inválidas de campos. Las estructuras de datos tales como clase se reparten en porciones pesadamente referidas y menos pesadamente referidas. El repartir se basa en la información de perfil sobre cuentas del acceso del campo con la dirección indirecta usada para referirse a la clase repartida menos pesadamente referida. Un esquema de la co-localizacio'n de la clase se utiliza para asegurarse de que las clases temporal correlacionadas están puestas cerca de uno a en bloques del escondrijo. Un algoritmo generational de la colección de la basura se utiliza para asegurarse de que los objetos que se refieren lo más pesadamente posible son más probables permanecer en bloques del escondrijo.