The present invention integrates data prefetching into a modulo scheduling
technique to provide for the generation of assembly code having improved
performance. Modulo scheduling can produce optimal steady state code for
many important cases by sufficiently separating defining instructions
(producers) from using instructions (consumers), thereby avoiding machine
stall cycles and simultaneously maximizing processor utilization.
Integrating data prefetching within modulo scheduling yields high
performance assembly code by prefetching data from memory while at the
same time using modulo scheduling to efficiently schedule the remaining
operations. The invention integrates data prefetching into modulo
scheduling by postponing prefetch insertion until after modulo scheduling
is complete. Actual insertion of the prefetch instructions occurs in a
postpass after the generation of appropriate prologue-kernel-epilogue
code. Concurrently, appropriate rules are employed to permit the
co-existence of data prefetching instructions within the modulo scheduled
code. The present invention also simplifies the addition of data
prefetching capabilities to a compiler already capable of modulo
scheduling.
Die anwesende Erfindung integriert die Daten, die in eine festlegentechnik des Modulos prefetching sind, um für das Erzeugung des Versammlung Codes zur Verfügung zu stellen Leistung verbessernd. Die Moduloterminplanung kann optimalen Lagecode für viele wichtige Fälle produzieren, indem sie sich genug Anweisungen (Produzenten) definierend vom Verwenden der Anweisungen (Verbraucher) trennt, dadurch esvermeidet esvermeidet Maschine Stallzyklen und gleichzeitig maximiert Prozessoranwendung. Integrierendaten, die innerhalb des festlegenCodes Versammlung hohe Leistung der ergebnisse des Modulos durch das Prefetching Daten vom Gedächtnis beim gleichzeitig Verwenden des Modulos festlegt, um die restlichen Betriebe leistungsfähig festzulegen prefetching sind. Die Erfindung integriert die Daten, die in das Modulo prefetching sind, das indem sie prefetch Einfügung festlegt, hinausschiebt, bis nach Modulo die Terminplanung komplett ist. Tatsächliche Einfügung der prefetch Anweisungen tritt in postpass nach dem Erzeugung des passenden Einleitung-Kern-epilogue Codes auf. Gleichzeitig werden passende Richtlinien eingesetzt, um die Koexistenz der prefetching Anweisungen der Daten innerhalb des Modulo zeitlich geplanten Codes zu ermöglichen. Die anwesende Erfindung vereinfacht auch die Hinzufügung der prefetching Fähigkeiten der Daten zu einem Compiler, der zur Moduloterminplanung bereits fähig ist.