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.
A invenção atual integra os dados que prefetching em uma técnica programando do modulo para fornecer para a geração do código do conjunto que melhora o desempenho. Programar do modulo pode produzir o código optimal do estado constante para muitos casos importantes suficientemente separando definindo instruções (produtores) de usar as instruções (consumidores), evitando desse modo ciclos da tenda da máquina e maximizing simultaneamente a utilização do processador. Dados integrando que prefetching dentro do código programando do conjunto do desempenho elevado dos rendimentos do modulo prefetching dados da memória ao ao mesmo tempo usar o modulo que programa para programar eficientemente as operações restantes. A invenção integra os dados que prefetching no modulo que programa postponing a inserção do prefetch até que após o modulo programar esteja completo. A inserção real das instruções do prefetch ocorre no postpass após a geração do código apropriado da prologue-semente-epilogue. Simultaneamente, as réguas apropriadas são empregadas para permitir o co-existence de instruções prefetching dos dados dentro do código programado modulo. A invenção atual simplifica também a adição de potencialidades prefetching dos dados a um compilador já capaz de programar do modulo.