Two solutions are possible, code transformations to change the access pattern, and data layout techniques to reorganize data in memory. This problem is exacerbated in shared memory machines. Such machines are used to run scientific applications, so locality optimization techniques have been studied for numerical arrays. Loop transformation techniques have been extensively studied. They adapt the memory reference pattern to the machine's memory organization.
General applications use different data types, so numerical array optimizations are of little use.
They most often use heterogeneous data. Such data is not necessarily organized in arrays, so code transformations developed for arrays cannot be used. Memory accesses are therefore more random. On the other hand, layout constraints are much weaker, so data layout techniques have much more potential to improve locality. That is why we study data layout techniques to improve cache performance of general applications.