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.
The constraints may be provided by program analysis, programmer, or actual
dynamically generated.
Os campos que são individualmente elementos de dados endereçáveis em estruturas de dados são requisitados novamente para melhorar a eficiência da linha acesso do esconderijo. Os dados temporal a respeito do referencing de tais campos são obtidos, e uma ferramenta é usada construir um gráfico da afinidade do campo de afinidaoes temporal do acesso entre os campos. Os nós no gráfico representam campos, e as bordas entre os nós são tornadas mais pesadas para indicar a afinidade do campo. Um algoritmo greedy da primeira passagem tenta combinar campos elevados da afinidade na mesmo linha ou bloco do esconderijo. Os confinamentes são usados rejeitar combinações inválidas dos campos. Os confinamentes podem ser fornecidos pela análise, pelo programador, ou por real do programa gerado dinâmicamente.