Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Optimización

Programación de Sistemas
by

Adrian Esquivel

on 5 June 2011

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Optimización

Optimización Mejorar código objeto final, preservando significado del programa. Clasificaciones 1. En función de la dependencia
de la arquitectura. Dependientes de la máquina.
Independientes de la máquina. 2. En función del ámbito de
aplicación Optimizaciones locales.
Optimizaciones globales. Locales 1.- Ejecución en tiempo de compilación:

• Precalcular expresiones constantes (con constantes o variables cuyo valor no cambia). 2.- Reutilización de expresiones comunes. 3.- Propagación de copias.

• Ante instrucciones f = a, sustituir todos los usos de f por a 4.- Eliminación redundancias en acceso matrices.

• Localizar expresiones comunes en cálculo direcciones de matrices

Cod. fuente: A: array [1..4, 1..6, 1..8] of integer

A[i,j,5] := A[i,j,6] + A[i,j,4] Sin optimización:

direc(A[i,j,5]) = direc(A[1,1,1]) + (i-1)*6*8 + (j-1)*8 + (5-1)

direc(A[i,j,6]) = direc(A[1,1,1]) + (i-1)*6*8 + (j-1)*8 + (6-1)

direc(A[i,j,4]) = direc(A[1,1,1]) + (i-1)*6*8 + (j-1)*8 + (4-1) Con optimización:

k := direc(A[1,1,1]) + (i-1)*6*8 + (j-1)*8 + (5-1)direc(A[i,j,5]) = k + 4

direc(A[i,j,6]) = k + 5

direc(A[i,j,4]) = k + 35. 5.- Transformaciones algebraicas:

Aplicar propiedades matemáticas para simplificar expresiones

a) Eliminación secuencias nulas b) Reducción de potencia.

• Reemplazar una operación por otra equivalente menos costosa. c) Reacondicionamiento de operadores.

• Cambiar orden de evaluación aplicando propiedades conmutativa, asociativa y distributiva. Bucles Centrar optimización en partes más usadas, no en todo el programa. Mejoras Factorización de expresiones invariantes. Reducción de intesidad y eliminación de variables de inducción. Variable de inducción (en un bucle).




Variable de inducción básica.




Expresión de Inducción. Globales De Mirilla Costos Aplicable en código intermedio o código objeto.

Constituye una nueva fase aislada. • Se recorre el código buscando combinaciones de instrucciones.

• Se utiliza una ventana de n instrucciones.

• Si las instrucciones de la ventana encajan con algún patrón se reemplazan.

• Nuevas instrucciones reconsideradas para futuras optimizaciones, Ejemplos:

• Eliminación de cargas innecesarias MOV Ri, x
MOV X, Rj MOV Ri, Rj • Reducción de potencia

• Eliminación de cadenas de saltos Optimizaciones típicas:

• Identificación de expresiones comunes entre bloques



• Optimización de llamadas a procedimientos

• Optimización de bucles




Optimización Llamadas a Procedimientos:

Llamadas a procedimientos son muy costosas

• Cambios del ámbito de referencias

• Gestión de Registros de Activación

• Paso de parámetros + asignación de datos locales Afecta a la asignación de de registros entre B.B Mejoras:

1. Optimizar manejo de Registro de Activación.

2. Expansión en línea. Limitaciones Los costos son el factor más importante a tomar en cuentaa la hora de optimizar ya que en ocasiones la mejora obtenida puede verse no reflejada en el programa final, pero si ser perjudicial para el equipo de desarrollo. Una operación que en ocasiones puede ser relativamente costosa es la llamada de procedimientos, donde se deben realizar muchas operaciones de secuencia de llamada. Durante la generación de código final se pueden encontrar algunas últimas oportunidades para reducir el costo de ciertas operaciones utilizando instrucciones especiales disponibles en la maquina objetivo. Un ejemplo típico de esto es el reemplazo de las operaciones aritméticas por operaciones mas económicas. Criterios para mejorar el código Asignación de Registro. Operaciones Innecesarias. Operaciones Costosas.
Full transcript