Com relação a localidade de dados, este assunto vem merecendo esforços de diversos centros devido ao problema da latência de memória existente nos modernos computadores. Assim, servindo-se do suporte fornecido pelos compiladores paralelizadores, novos sistemas vem sendo implantados com o desenvolvimento de novas transformações e métodos de análise.
Os grandes problemas existentes atualmente na área de otimização de programas recaem em duas grandes áreas: primeiro, a determinação da melhor seqüência de transformações em um dado programa. Um passo na solução deste problema são as transformações unimodulares [BANE94]. Fundamentado na teoria das matrizes unimodulares, o objetivo das transformações unimodulares é fornecer uma base consistente para a análise da aplicação de combinações de loop interchange, loop reversal e loop skewing.
A segunda área se refere à quantificação da localidade de dados: De modo a determinarmos seguramente o ganho obtido pela aplicação de uma transformação visando otimizar a localidade, precisamos de uma métrica que quantifique o padrão de acessos a dados de um programa. Uma das métricas mais simples é o vetor distância de dependência. Infelizmente, ele não é conveniente pois descreve apenas o número de elementos que devem ser reaproveitados, sem determiná-los propriamente. Neste sentido, as janelas de referência [EISE90] suprem largamente este requisito, fornecendo não somente o número de elementos a serem reutilizados como também os elementos propriamente ditos. Nos ítens a seguir passamos a descrever com algum detalhe estes dois tópicos que são fundamentais para a compreensão do sistema que vem sendo desenvolvido.