Beruflich Dokumente
Kultur Dokumente
Programacin modificar el estilo de subttulo del Haga clic para de sistemas II patrn
4/23/12
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
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