Under det senaste årtiondet har processorns hastighet blivit betydligt snabbare än minnets hastighet. Små, snabba cacheminnen är utformade för att övervinna denna diskrepans, men de är bara effektiva när program uppvisar datalokalitet. I denna artikel presenterar vi kompilatoroptimeringar för att förbättra datalokaliseringen baserat på en enkel men ändå korrekt kostnadsmodell. Modellen beräknar både tids- och rumslig återanvändning av cachelinjer för att hitta önskvärda looporganisationer. Kostnadsmodellen driver tillämpningen av sammansatta omvandlingar som består av slinga permutation, slinga fusion, slinga distribution och slinga reversering. Vi visar att dessa program transformationer är användbara för att optimera många program. För att validera vår optimeringsstrategi implementerade vi våra algoritmer och utförde experiment på en stor samling vetenskapliga program och kärnor. Experiment visar att för kärnor kan vår modell och algoritm välja och uppnå den bästa loopstrukturen för ett bo. För över 30 kompletta applikationer utförde vi de ursprungliga och transformerade versionerna och simulerade cacheträffhastigheter. Vi samlade in statistik om de inneboende egenskaperna hos dessa program och vår förmåga att förbättra deras datalokalisering. Enligt vår kunskap är dessa studier de första av en sådan bredd och djup. Vi fann prestandaförbättringar var svåra att uppnå eftersom benchmarkingprogram vanligtvis har hög träffhastighet även för små datacache; dock våra optimeringar avsevärt förbättrade flera program.
McKinley m.fl. REF erbjuder en enhetlig optimeringsteknik som består av slingpermutation, slingfusion och slingfördelning.
Improving data locality with loop transformations
{'venue': 'TOPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}