Sie sind auf Seite 1von 15

Optimizacin automtica

Programacin modificar el estilo de subttulo del Haga clic para de sistemas II patrn

4/23/12

Eliminacin de cdigo muerto


Esta tcnica se refiere a la eliminacin de cdigo que es inalcanzable, es decir que nunca ser ejecutado, operaciones insustanciales, como declaraciones nulas, asignaciones de una variable a s misma o asignaciones muertas. En el siguiente ejemplo el valor asignado a i nunca se utiliza, y el almacenamiento de memoria para esta variable puede eliminarse. La primera asignacin a global tambin es muerta, y la tercera asignacin a global es inalcanzable; ambos pueden ser 4/23/12 eliminados.

Ejemplo

4/23/12

Funciones en lnea
Escribir

un programa en mdulos brinda muchas ventajas. Se puede alcanzar un tamao pequeo de cdigo y una consistencia que permite el incremento de la reutilizacin de cdigo. No obstante las llamadas a funciones pueden ser operaciones relativamente costosas, especialmente si la funcin es pequea. Esta tcnica de optimizacin sustituye el cuerpo de la funcin donde se hace la llamada. El cdigo en lnea puede quitar una ventaja 4/23/12 de utilizar funciones (reducir el tamao), ya

Ejemplo

Algunos compiladores emplean esta tcnica solamente cuando las funciones se han definido dentro del archivo; ya que primero analizan todo el archivo entero, de modo que las funciones definidas despus del sitio de una llamada pueda hacerse en lnea; an otros, pueden hacer funciones en lnea que estn definidos en 4/23/12 archivos separados.

Desenvolvimiento de ciclos
Esta

tcnica de optimizacin consiste en desenvolver el cuerpo del ciclo dos o ms veces incrementando los saltos de ciclo, con el fin de mejorar el reuso de registros, minimizar recurrencias y de exponer ms paralelismo a nivel instruccin. El nmero de desenvolvimiento es determinado automticamente por el compilador o bien por el programador mediante el empleo de directivas.

4/23/12

Ejemplo

4/23/12

Fusin de ciclos
La

fusin de ciclos es una optimizacin convencional del compilador que transforma dos o ms ciclos adyacentes en uno solo. As mismo permite la re-usabilidad de los datos (que estn en los registros del CPU) y una mejora en el uso del cach (si el ciclo es grande). El uso de las pruebas de dependencias de datos permite la fusin de ciclos, tanto como sean posibles. En el siguiente ejemplo, los primeros dos ciclos pueden fusionarse y optimizarse juntos. La fusin de estos ciclos reducen las 4/23/12 instrucciones for y la sincronizacin

Ejemplo

Como se puede observar en el lado izquierdo el arreglo a[i] aparece en ambos ciclos y se puede optimizar combinando ambos ciclos en uno solo como aparece en el lado derecho, permitiendo que los elementos del arreglo a[ij] puedan estar disponibles inmediatamente para usarse en la siguiente instruccin, permitiendo as la re-usabilidad de los datos manteniendo el valor del 4/23/12 elemento a[ij] en el registro.

Distribucin de ciclos
Consiste

en particionar un ciclo en mltiples ciclos, con el propsito de implementar ms paralelismo y el canalizado de software en la ejecucin de nuestro programa. En un esquema ideal el ciclo se puede distribuir en un ciclo secuencial y la otra parte en paralelo, donde al ciclo secuencial se le podra implementar el canalizado de software.

4/23/12

Ejemplo

El ciclo del lado izquierdo presenta una dependencia de datos en el arreglo d[ii] al hacer una referencia a un valor posterior d[ii+1], lo cual provoca que no se pueda paralelizar el ciclo completo, por tal motivo el compilador es capaz de dividir o distribuir el ciclo en 2 ciclos: uno que se pueda ejecutar en paralelo y otro en manera secuencial.
4/23/12

Reduccin de esfuerzo
Es

la reduccin de los ciclos de cmputo, que consiste en sustituir una operacin compleja por otra ms simple, como la multiplicacin por la suma o la diferencia por el cambio de signo. Muchos compiladores harn esto automticamente. Algunas instrucciones de mquina son considerablemente ms simples que otras y se pueden utilizar como casos especiales de operadores ms complejos. Por ejemplo, x es invariablemente ms simple de implantar como x*x que como una llamada a una 4/23/12 funcin de exponenciacin. La divisin o

Ejemplo

4/23/12

Ejercicio
Elabora

un programa para cada optimizacin automtica

4/23/12

Tarea
Integra

estas 6 tcnicas al compilador. Es importante que el programa genere por cuestiones de revisin, archivos de texto donde se especifique la tcnica aplicada.

4/23/12

Das könnte Ihnen auch gefallen