SlideShare una empresa de Scribd logo
Optimización Global
•

Grafo del flujo de ejecución
–

Antes de realizar una optimización global es necesario crear el grafo de
flujo de ejecución.

–

El grafo de flujo de ejecución representa todos los caminos posibles de
ejecución del programa.

–

La información contenida en el grafo es útil para
•
•

•

el programador y
el optimizador

La optimización global a partir del análisis del grafo del flujo de ejecución permite
–
–

Eliminación del código no utilizado

–
•

Una propagación de constantes fuera del bloque básico.

Una mejor asignación de los registros.

Problema: la optimización global es muy costosa en tiempo de compilación

Construcción del Grafo del Flujo de Ejecución
•

Tipos de grafo
–
–

•

Orientado a procedimiento/función
Grafo de llamadas

Ejemplo

int fact(int n) {
int r;
r=1;
i=1;
while (i<=n) {
r=r*i;
++i;
}
return r;
}

Construcción del Grafo del Flujo de Ejecución
•

Pasos
–

Dividir el programa en bloques básicos
•

Se representa el programa en un código intermedio donde queden
explícitamente representados los saltos condicionales e
incondicionales.

•

Un bloque básico será cualquier trozo de código que no contenga
saltos ni etiquetas en su interior (es posible tener etiquetas al inicio
del bloque y saltos al final).
–

•

En el grafo, los vértices representan los bloques básicos y las aristas
representan los saltos de un bloque básico a otro.

Detección de código no utilizado

El código no utilizado son los bloques básicos donde no llega ninguna arista
Análisis del Grafo del Flujo de Ejecución
•

Hay que considerar como la información sobre las variables y expresiones se
propaga a través del grafo.

•

Problemas resueltos durante el análisis del grafo
–

–

Alcance de las definiciones

–

variables vivas

–
•

expresiones disponibles (al seguir la ejecución sigue siendo válido el
resultado obtenido)

expresiones muy utilizadas

Para la resolución de los problemas anteriores se utiliza la idea de punto entre
instrucciones o bloques básicos.

r=1
i=1

Puntos
while
(i<=n)
7.1.3 Globales
•La optimización global se da con respecto a todo el código.
•Este tipo de optimización es más lenta pero mejora el desempeño general de todo
programa.
•Las optimizaciones globales pueden depender de laarquitectura de la máquina.
•En algunos casos es mejor mantener variables globales para agilizar los procesos (el
proceso de declarar variables y eliminarlas toma su tiempo) pero consume más memoria.
•Algunas optimizaciones incluyen utilizar como variables registros del CPU, utilizar
instrucciones en ensamblador.
De mirilla
•La optimización de mirilla trata de estructurar de manera eficiente el flujo del programa,
sobre todo en instrucciones de bifurcación como son las decisiones, ciclos y saltos de
rutinas.
•La idea es tener los saltos lo más cerca de las llamadas, siendo el salto lo más pequeño
posible
Optimización de tipo Mirilla (Peephole optimization) Aplicable en código intermedio o
código objeto.
Constituye una nueva fase aislada. Idea Básica Se recorre el código buscando
combinaciones de instrucciones que puedan ser reemplazadas por otras equivalentes más
eficientes. Se utiliza una ventana de instrucciones y un conjunto de patrones de
transformación (patrón, secuencias reemplaza.) Si las instrucciones de la ventana en cajan
con algún patrón se reemplazan por lo secuencia de reemplazmiento asociada. Las
nuevas instrucciones son reconsideradas para las futuras optimizaciones Ejemplos:
Eliminación de cargas innecesarias MOVRi,X MOVX,Rj →MOVRi,Rj Reducción de potencia
Eliminación de cadenas de saltos ifCgotoL1 L1: gotoL2 → ifCgotoL2 ifCgotoL1 gotoFIN L1:
FIN: ... ... ifnotCgotoFIN → L1: FIN:

Más contenido relacionado

La actualidad más candente

Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
J M
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
Juan Pablo Bustos Thames
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
Borreguito Inolvidable
 
Temario sistemas programables
Temario   sistemas programablesTemario   sistemas programables
Temario sistemas programables
Yuseff Bladeshark
 
Origen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesOrigen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redes
Kim Sorel Rush
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
Chuyito Alvarado
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
YESENIA CETINA
 
1.4. alineación de los servicios de tecnologías de informacion con las politi...
1.4. alineación de los servicios de tecnologías de informacion con las politi...1.4. alineación de los servicios de tecnologías de informacion con las politi...
1.4. alineación de los servicios de tecnologías de informacion con las politi...
Alexis Gils
 
6.2.5 puntos funcion
6.2.5   puntos funcion6.2.5   puntos funcion
6.2.5 puntos funcion
Edgar Lino Falero
 
Gestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas OperativosGestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas Operativos
Marvin Romero
 
Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
itzayana bacilio
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de software
sergio
 
5.manejo de excepciones
5.manejo de excepciones5.manejo de excepciones
5.manejo de excepciones
Santiago Bernal
 
Sistemas Operativos Gestión de memoria
Sistemas Operativos Gestión de memoriaSistemas Operativos Gestión de memoria
Sistemas Operativos Gestión de memoria
Ricardo Joel Robinson Gonzalez
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turing
Jonathan Bastidas
 
Plantilla formato ieee830
Plantilla formato ieee830Plantilla formato ieee830
Plantilla formato ieee830
ljds
 
Presentación sobre criptografía
Presentación sobre criptografíaPresentación sobre criptografía
Presentación sobre criptografía
Medialab en Matadero
 
Kernel o núcleo
Kernel o núcleoKernel o núcleo
Kernel o núcleo
yeseniaugmex
 
Interrupción informatica
Interrupción informaticaInterrupción informatica
Interrupción informatica
Luis Rodriguez Hernandez
 

La actualidad más candente (20)

Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
 
Temario sistemas programables
Temario   sistemas programablesTemario   sistemas programables
Temario sistemas programables
 
Origen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesOrigen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redes
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
1.4. alineación de los servicios de tecnologías de informacion con las politi...
1.4. alineación de los servicios de tecnologías de informacion con las politi...1.4. alineación de los servicios de tecnologías de informacion con las politi...
1.4. alineación de los servicios de tecnologías de informacion con las politi...
 
6.2.5 puntos funcion
6.2.5   puntos funcion6.2.5   puntos funcion
6.2.5 puntos funcion
 
Gestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas OperativosGestion Procesos, Sistemas Operativos
Gestion Procesos, Sistemas Operativos
 
Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓN
 
Proceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de softwareProceso, modelos y metodos de ingenieria de software
Proceso, modelos y metodos de ingenieria de software
 
5.manejo de excepciones
5.manejo de excepciones5.manejo de excepciones
5.manejo de excepciones
 
Sistemas Operativos Gestión de memoria
Sistemas Operativos Gestión de memoriaSistemas Operativos Gestión de memoria
Sistemas Operativos Gestión de memoria
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turing
 
Plantilla formato ieee830
Plantilla formato ieee830Plantilla formato ieee830
Plantilla formato ieee830
 
Presentación sobre criptografía
Presentación sobre criptografíaPresentación sobre criptografía
Presentación sobre criptografía
 
Kernel o núcleo
Kernel o núcleoKernel o núcleo
Kernel o núcleo
 
Interrupción informatica
Interrupción informaticaInterrupción informatica
Interrupción informatica
 

Similar a Optimización global

Unidad 3.pptx
Unidad 3.pptxUnidad 3.pptx
Unidad 3.pptx
RaulGuadarrama6
 
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertidoTaller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
JOSSELINEMARIBEL
 
Optimizacioncodigo
OptimizacioncodigoOptimizacioncodigo
Optimizacioncodigo
Pablo Vargas
 
OPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGOOPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGO
MAURICIOANDRES39
 
Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigo
AndresDvila
 
Niveles de optimizacion de algoritmos
Niveles de optimizacion de algoritmosNiveles de optimizacion de algoritmos
Niveles de optimizacion de algoritmos
Jhoan Sebastián Gómez Medina
 
Apun9algol
Apun9algolApun9algol
Apun9algol
pabesacv
 
mapa conceptual prototipos.docx
mapa conceptual prototipos.docxmapa conceptual prototipos.docx
mapa conceptual prototipos.docx
MarioAlejandroDoming
 
Presentación1.pptx
Presentación1.pptxPresentación1.pptx
Presentación1.pptx
HERBERTHFERNANDOMORA
 
Concepto y representaciones de un Algoritmo
Concepto y representaciones de un AlgoritmoConcepto y representaciones de un Algoritmo
Concepto y representaciones de un Algoritmo
Joaquin Lara Sierra
 
p
pp
Pattern template
Pattern templatePattern template
Pattern template
Chris Esquivel
 
optimizacion de sistemas
optimizacion de sistemasoptimizacion de sistemas
optimizacion de sistemas
Norberto Lugo
 
Modelo de cascada, analisis de sistemas.pptx
Modelo de cascada, analisis de sistemas.pptxModelo de cascada, analisis de sistemas.pptx
Modelo de cascada, analisis de sistemas.pptx
ingcraul
 
Trabajo de romero
Trabajo de romeroTrabajo de romero
Trabajo de romero
juandaco2000
 
Presentacion info
Presentacion infoPresentacion info
Presentacion info
mariopoza00
 
Optimizacion de software
Optimizacion de softwareOptimizacion de software
Optimizacion de software
Oskar Barrio Ferreiro
 
Fundamentos de Programación - Unidad V: Modularidad
Fundamentos de Programación - Unidad V: ModularidadFundamentos de Programación - Unidad V: Modularidad
Fundamentos de Programación - Unidad V: Modularidad
José Antonio Sandoval Acosta
 
Software sao
Software saoSoftware sao
Software sao
shadowkbus
 
Software
SoftwareSoftware
Software
shadowkbus
 

Similar a Optimización global (20)

Unidad 3.pptx
Unidad 3.pptxUnidad 3.pptx
Unidad 3.pptx
 
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertidoTaller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
 
Optimizacioncodigo
OptimizacioncodigoOptimizacioncodigo
Optimizacioncodigo
 
OPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGOOPTIMIZACION DE CODIGO
OPTIMIZACION DE CODIGO
 
Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigo
 
Niveles de optimizacion de algoritmos
Niveles de optimizacion de algoritmosNiveles de optimizacion de algoritmos
Niveles de optimizacion de algoritmos
 
Apun9algol
Apun9algolApun9algol
Apun9algol
 
mapa conceptual prototipos.docx
mapa conceptual prototipos.docxmapa conceptual prototipos.docx
mapa conceptual prototipos.docx
 
Presentación1.pptx
Presentación1.pptxPresentación1.pptx
Presentación1.pptx
 
Concepto y representaciones de un Algoritmo
Concepto y representaciones de un AlgoritmoConcepto y representaciones de un Algoritmo
Concepto y representaciones de un Algoritmo
 
p
pp
p
 
Pattern template
Pattern templatePattern template
Pattern template
 
optimizacion de sistemas
optimizacion de sistemasoptimizacion de sistemas
optimizacion de sistemas
 
Modelo de cascada, analisis de sistemas.pptx
Modelo de cascada, analisis de sistemas.pptxModelo de cascada, analisis de sistemas.pptx
Modelo de cascada, analisis de sistemas.pptx
 
Trabajo de romero
Trabajo de romeroTrabajo de romero
Trabajo de romero
 
Presentacion info
Presentacion infoPresentacion info
Presentacion info
 
Optimizacion de software
Optimizacion de softwareOptimizacion de software
Optimizacion de software
 
Fundamentos de Programación - Unidad V: Modularidad
Fundamentos de Programación - Unidad V: ModularidadFundamentos de Programación - Unidad V: Modularidad
Fundamentos de Programación - Unidad V: Modularidad
 
Software sao
Software saoSoftware sao
Software sao
 
Software
SoftwareSoftware
Software
 

Optimización global

  • 1. Optimización Global • Grafo del flujo de ejecución – Antes de realizar una optimización global es necesario crear el grafo de flujo de ejecución. – El grafo de flujo de ejecución representa todos los caminos posibles de ejecución del programa. – La información contenida en el grafo es útil para • • • el programador y el optimizador La optimización global a partir del análisis del grafo del flujo de ejecución permite – – Eliminación del código no utilizado – • Una propagación de constantes fuera del bloque básico. Una mejor asignación de los registros. Problema: la optimización global es muy costosa en tiempo de compilación Construcción del Grafo del Flujo de Ejecución • Tipos de grafo – – • Orientado a procedimiento/función Grafo de llamadas Ejemplo int fact(int n) { int r; r=1; i=1; while (i<=n) { r=r*i;
  • 2. ++i; } return r; } Construcción del Grafo del Flujo de Ejecución • Pasos – Dividir el programa en bloques básicos • Se representa el programa en un código intermedio donde queden explícitamente representados los saltos condicionales e incondicionales. • Un bloque básico será cualquier trozo de código que no contenga saltos ni etiquetas en su interior (es posible tener etiquetas al inicio del bloque y saltos al final).
  • 3. – • En el grafo, los vértices representan los bloques básicos y las aristas representan los saltos de un bloque básico a otro. Detección de código no utilizado El código no utilizado son los bloques básicos donde no llega ninguna arista Análisis del Grafo del Flujo de Ejecución • Hay que considerar como la información sobre las variables y expresiones se propaga a través del grafo. • Problemas resueltos durante el análisis del grafo – – Alcance de las definiciones – variables vivas – • expresiones disponibles (al seguir la ejecución sigue siendo válido el resultado obtenido) expresiones muy utilizadas Para la resolución de los problemas anteriores se utiliza la idea de punto entre instrucciones o bloques básicos. r=1 i=1 Puntos while (i<=n)
  • 4. 7.1.3 Globales •La optimización global se da con respecto a todo el código. •Este tipo de optimización es más lenta pero mejora el desempeño general de todo programa. •Las optimizaciones globales pueden depender de laarquitectura de la máquina. •En algunos casos es mejor mantener variables globales para agilizar los procesos (el proceso de declarar variables y eliminarlas toma su tiempo) pero consume más memoria. •Algunas optimizaciones incluyen utilizar como variables registros del CPU, utilizar instrucciones en ensamblador. De mirilla •La optimización de mirilla trata de estructurar de manera eficiente el flujo del programa, sobre todo en instrucciones de bifurcación como son las decisiones, ciclos y saltos de rutinas. •La idea es tener los saltos lo más cerca de las llamadas, siendo el salto lo más pequeño posible Optimización de tipo Mirilla (Peephole optimization) Aplicable en código intermedio o código objeto. Constituye una nueva fase aislada. Idea Básica Se recorre el código buscando combinaciones de instrucciones que puedan ser reemplazadas por otras equivalentes más eficientes. Se utiliza una ventana de instrucciones y un conjunto de patrones de transformación (patrón, secuencias reemplaza.) Si las instrucciones de la ventana en cajan con algún patrón se reemplazan por lo secuencia de reemplazmiento asociada. Las nuevas instrucciones son reconsideradas para las futuras optimizaciones Ejemplos: Eliminación de cargas innecesarias MOVRi,X MOVX,Rj →MOVRi,Rj Reducción de potencia Eliminación de cadenas de saltos ifCgotoL1 L1: gotoL2 → ifCgotoL2 ifCgotoL1 gotoFIN L1: FIN: ... ... ifnotCgotoFIN → L1: FIN: