Region based optimization may be accomplished by creating dependence graphs for each block and then incrementally computing a single dependence graph for the region. First dependence DAGs are created for each block in the region. This includes defining incoming and outgoing dangling edges for each block. Each dependence DAG is then linked as a control flow graph. Examining of each incoming dangling edge within each block of the region then takes place, with the process traversing each path along the control flow graph in reverse, attempting to match each incoming dangling edge with a corresponding incoming or outgoing dangling edge, stopping only if an outgoing match is found, the same block is examined twice, or the top of the region is found. A similar process takes place for each outgoing dangling edge, traversing each path along the control flow path forward, attempting to match each outgoing dangling edge with a corresponding incoming dangling edge, stopping only if a match is found, the same block is examined twice, or the bottom of the region is found. The region may then be reduced to a single block with incoming dangling edges being any unmatched incoming dangling edges at the top of the region and outgoing dangling edges being any unmatched outgoing dangling edges at the bottom of the region. Optimization may occur during or after this reduction step to improve performance in the program. Nested loops may be handled by building the dependence graph for the inner most loop first and treating it like a dependence DAG for a block when processing the outer loops.

L'ottimizzazione basata regione può essere compiuta generando i grafici di dipendenza per ogni blocco ed allora incrementalmente computando un singolo grafico di dipendenza per la regione. La prima dipendenza DAGs è generata per ogni blocco nella regione. Ciò include la definizione dei bordi dangling ricevuti ed uscenti per ogni blocco. Ogni dipendenza DAG allora è collegata come un grafico di flusso di controllo. Esaminando di ogni bordo dangling ricevuto all'interno di ogni blocco della regione allora avviene, con il processo che attraversa ogni percorso lungo il grafico di flusso di controllo al contrario, tentante di abbinare ogni bordo dangling ricevuto con corrispondere bordo dangling ricevuto o uscente, arrestantesi soltanto se un fiammifero uscente è trovato, lo stesso blocco è esaminato due volte, o la parte superiore della regione è trovata. Un processo simile avviene per ogni bordo dangling uscente, attraversando ogni percorso lungo il percorso di flusso di controllo in avanti, tentando di abbinare ogni bordo dangling uscente con un bordo dangling ricevuto corrispondente, arrestantesi soltanto se un fiammifero è trovato, lo stesso blocco è esaminato due volte, o la parte inferiore della regione è trovata. La regione può allora essere ridotta ad un singolo blocco con i bordi dangling ricevuti che sono tutti i bordi dangling ricevuti ineguagliati alla parte superiore della regione e bordi dangling uscenti che sono qualunque bordi dangling uscenti ineguagliati alla parte inferiore della regione. L'ottimizzazione può accadere durante o dopo questo punto di riduzione per migliorare le prestazioni nel programma. I cicli annidati possono essere maneggiati sviluppando il grafico di dipendenza per l'interno la maggior parte del ciclo in primo luogo e trattandolo gradisca una dipendenza DAG per un blocco quando procedono i cicli esterni.

 
Web www.patentalert.com

< Region based optimizations using data dependence graphs

< Region based optimizations using data dependence graphs

> Extending program languages with source-program attribute tags

> Adding speech recognition libraries to an existing program at runtime

~ 00092