Você está na página 1de 10

INSTITUTO TECNOLGICO SUPERIOR DE COATZACOALCOS.

Materia:

Lenguajes y autmatas II.

GRADO Y GRUPO:

7 A

PRESENTAN:

GALICIA GUZMN TOMS YUSSEF

FACILITADOR:

Grajales Vzquez Arturo Ivn

Contenido
Introduccin ................................................................................................................................. 3
3.1. Tipos de Optimizacin........................................................................................................ 3
3.1.1. Local. ................................................................................................................................. 3
3.1.2. Ciclos ................................................................................................................................. 4
3.1.3. Globales ............................................................................................................................ 5
3.1.4. Mirilla ................................................................................................................................. 5
3.2 Costos.................................................................................................................................... 6
3.2.1. Costos de ejecucin. (Memoria, registros, pilas) ....................................................... 6
3.2.2. Criterios para mejorar el cdigo .................................................................................... 7
3.2.3. Herramientas para el anlisis del flujo de datos ......................................................... 8
Bibliografa ................................................................................................................................... 9

Introduccin
Los copuladores que requieren producir programas de destino eficientes
incluyen una fase de optimizacin antes de la generacin de cdigo. El
optimizador asigna la representacin intermedia a otras representacin
intermedia desde la cual puede generarse condigo ms eficiente.

3.1. Tipos de Optimizacin


3.1.1. Local.
Muchas tcnicas importantes para la optimizacin local empieza por trasformar
un bloque en un GDA (Grafico dirigido a cclico; DAG, en sus siglas en ingles).La
idea se extiende en forma natural hasta la coleccin de expresiones que se crean
dentro de un bloque bsico. Construir un GDA para los bloques bsicos de la
siguiente manera.
1. Hay un nodo en el GDA para cada uno de los valores iniciales de las
variables que se aparecen en el bloque bsico.
2. Hay un nodo N asociado con cada instruccin S dentro del bloque. Los
hijos de N son aquellos nodos que corresponden a las instrucciones que
son las ultimas definiciones, anteriores a S, de los operados utilizados por
S.
3. El nodo N se etiqueta mediante el operador que se aplica en S, y tambin
a N se adjunta la lista de variables para las cuales es la ltima definicin
dentro del bloque.
4. Ciertos nodos se designan como nodos. Estos son los nodos cuyas
variables estn vivas al salir del bloque; es decir, sus variables pueden
utilizarse despus, en otro boque del grafico de flujo. El clculo de estas
variables vivas corresponde al anlisis de flujo.
La representacin en GDA de un bloque bsico nos permite realizar varias
trasformaciones para mejora de cdigo, en el cdigo representado por bloque.

a) Podemos eliminar las sub expresiones locales comunes; es decir, las


instrucciones que calculan un valor que ya se ha calculado.
b) Podemos eliminar el cdigo muerto; es decir, las instrucciones que
calculan un calor que nunca se utiliza.
c) Podemos reordenar las instrucciones que no dependen unas de otras;
dicho reordenamiento puede reducir el tiempo que requiere un valor
temporal para preservarse en un registro.
d) Podemos aplicar leyes algebraicas para reordenar los operados de las
instrucciones de tres direcciones, lo cual algunas veces simplifica los
clculos.

3.1.2. Ciclos
Los ciclos son importantes ya que el programa invierte la mayor parte de tiempo
ejecutndolos y la optimizacin que mejora su rendimiento pueden tener un
impacto considerable. Los ciclos tambin afectan el tiempo de ejecucin de los
anlisis de los programas. Si un programa no contiene ciclos, podemos obtener
respuestas a los problemas de flujo de datos realizando solo una pasada a travs
del programa. Por ejemplo: un problema de flujo de datos hacia delante puede
resolverse visitando todos los nodos una vez, en orden topolgico.

3.1.3. Globales
La mayora de las optimizaciones globales se basan en el anlisis de flujo de
datos, que son algoritmos para recopilar informacin acerca de un programa.
Todos los resultas de los anlisis de flujo de datos tiene la misma forma para
cada instruccin en el mismo, especifica cierta propiedad que debe aplicarse
cada vez que se ejecuta la instruccin. Los anlisis difieren en las propiedades
que calculan. Por ejemplo un anlisis de propagacin de constantes calcula, para
cada punto en el programa, y para cada variable utilizada por el programa, si la
variable tiene un valor constante, nico en ese punto. Por ejemplo. Esta
informacin puede utilizarse para sustituir las referencias a las variables por
valores constantes. Como otro ejemplo, un anlisis del estado de vida determina,
para cada punto en el programa, si es seguro que el valor que contiene una
variable especifica en ese punto se sobrescriba antes de leerlo. De ser a si no
necesitamos preservar ese valor, ya sea en un registro o en una ubicacin en
memoria.

3.1.4. Mirilla
Una optimizacin simple pero efectiva para mejorar el cdigo destino en forma
local es la optimizacin de m Mirilla, la cual se lleva a cabo mediante el anlisis
de una ventana deslizable de instrucciones de destino, y sustrayendo las
secuencias de instrucciones de destino dentro de la mirilla por una secuencia
ms corta o rpida cada vez que sea posible. La optimizacin de mirilla tambin
puede aplicarse de manera directa despus de la generacin de cdigo, para
mejora la representacin intermedia.
La mirilla es una pequea ventana deslizable en un programa. El cdigo en la
mirilla no tiene que ser continuo, aunque algunas implementaciones lo requieran.
Una caracterstica de la optimizacin de mirilla es que cada mejora puede
engendrar oportunidades para mejoras adicionales. En general, es necesario
realizar varias pasadas a travs del cdigo fuente para obtener el beneficio
mximo.
Caractersticas

Eliminacin de instrucciones redundantes.

Optimizacin de flujo de control

Simplificaciones algebraicas

Uso de caractersticas especficas de maquinas

3.2 Costos
3.2.1. Costos de ejecucin. (Memoria, registros, pilas)
Memoria
La memoria es uno de los recursos ms importantes de la computadora y, en
consecuencia, la parte del sistema operativo responsable de tratar con este
recurso, el gestor de memoria, es un componente bsico del mismo. El gestor
de memoria del sistema operativo debe hacer de puente entre los requisitos de
las aplicaciones y los mecanismos que proporciona el hardware de gestin de
memoria.
Registros
Los registros del procesador se emplean para controlar instrucciones en
ejecucin, manejar direccionamiento de memoria y proporcionar capacidad
aritmtica. Los registros son espacios fsicos dentro del microprocesador con
capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se
emplee. Los registros son direccionables por medio de una vieta, que es una
direccin de memoria. Los bits, por conveniencia, se numeran de derecha a
izquierda (15, 14,13. 3, 2, 1,0), los registros estn divididos en seis grupos los
cuales tienen un fin especfico.
La pila La aparicin de lenguajes con estructura de bloque trajo consigo la
necesidad de tcnicas de alojamiento en memoria ms flexibles, que pudieran
adaptarse a las demandas de memoria durante la ejecucin del programa.
En, en general los compiladores, la asignacin de memoria de variables locales
se hace de una forma flexible, atendiendo al hecho de que solamente necesitan
memoria asignada desde el momento que comienza la ejecucin de la funcin
hasta el momento en que sta finaliza. Para que una variable pueda ser
almacenada en memoria esttica, es necesario conocer su tamao (nmero de
bytes necesarios para su almacenamiento) en tiempo de compilacin. Como
consecuencia, aunque una variable (u objeto) sea de mbito global, no podrn

ocupar almacenamiento esttico: " Los objetos que correspondan a


procedimientos o funciones recursivas, ya que en tiempo de compilacin no se
conoce el nmero de variables que sern necesarias.

3.2.2. Criterios para mejorar el cdigo


Generacin de cdigo ptimo para as expresiones
Se pueden elegir registros de manera ptima cuando un bloque bsico consiste
en una sola evolucin de una expresin, o si aceptamos que basta con generar
cdigo para un bloque, una expresin a la vez. En el siguiente algoritmo,
presentamos un esquema de numeracin para los nodos de un rbol de
expresiones, cuando hay un nmero fijo de registros con los que se pueden
evaluar las expresiones.
Nmeros de Ershov
Empezamos por asignar a los nodos de un rbol de expresiones un nmero que
indique cuantos registros se necesitaran evaluar ese nodo, sin almacenar
valores temporales. A este nmero se les llama algunas veces nmeros Ershon,
por A. Eshon quien uso utilizo un esquema similar para las maquinas con un solo
registro aritmtico para nuestro modelo de maquina las reglas son:
1. Etiquetar cualquier hoja con1
2. La etiqueta de un nodo interior con un hijo es la etiqueta de su hijo
3. La etiqueta de un nodo interior con dos hijos.
Generacin de cdigo de programacin dinmica
Podemos usar un algoritmo basados en el principio de la programacin dinmica
con el fin de extender las clases de mquinas para las cuales se pueden generar
un cdigo ptimo, a partir de rboles de expresiones en tiempo lineal. El
algoritmo de programacin dinmica se aplica a una amplia clase de mquinas
de registro con conjunto complejos de instrucciones.
El algoritmo de programacin dinmica se puede utilizar en la generacin de
contigo para cualquier maquina con r registros intercambiables R0, R1,.,Rr-1
e instrucciones de carga, almacenamiento y suma, aunque el algoritmo de

programacin dinmica puede modificarse con facilidad para trabajar aun


cuando cada instruccin tiene su propio costo.

3.2.3. Herramientas para el anlisis del flujo de datos


El anlisis de flujo de datos se refiere a un cuerpo de tcnicas que derivan
informacin acerca de flujo de datos a lo largo de los caminos de ejecucin de
los programas. Por ejemplo una manera de implementar la eliminacin de
subexpreciones

comunes globales requiere que determinemos si dos

expresiones textualmente idnticas se evalan con el mismo valor, a lo largo de


cualquier camino de ejecucin posible del programa. Como otro ejemplo, si el
resultado, si el resultado de una asignacin no se utiliza a lo largo de cualquier
camino de ejecucin subsiguiente, entonces podemos eliminar esa asignacin
como si fuera cdigo muerto.
La abstraccin del flujo de datos
La ejecucin de un programa puede verse como una serie de transformaciones
del estado del programa, que consiste en los valore de todas las variable en el
programa, incluyendo aquellas que estn asociadas con el marco de pila debajo
del tope de la pila en tiempo de ejecucin. Cada ejecucin de una instruccin de
cdigo intermedio trasforma un estado de entrada a un nuevo estado de salida.
El estado de entrada se asocia con el punto del programa antes de la instruccin
y el de salida se asocia con el punto del programa despus de la instruccin.
Al analizar el comportamiento de un programa, debemos considerar todo las
posibles secuencias de punto del programa (caminos) a travs de un grafo de
flujo que la ejecucin del programa puede tomar. Despus extraemos, de los
posibles estados del programa en cada punto, la informacin que necesitamos
para el problema especfico de anlisis de flujo de datos que deseamos resolver.
En anlisis complejos, debemos considerara caminos que saltan entre los grafo
de flujo para varios procedimientos, a medida que se ejecutan las llamadas y los
retornos. Sin embargo, para comenzar, se concentraran en los camino a travs
de un solo grado de flujo para un solo procedimiento.

Dentro de un bloque bsico, el puno del programa despus de la


instruccin es el mismo que el punto del programa antes de la siguiente
instruccin

Si hay una fleca de bloque B1 al bloque B3, entonces el punto del


programa despus de la ltima instruccin de B1, puede ir seguido
inmediatamente del punto del programa antes de la primera instruccin
de B2.

El esquema del anlisis del flujo de datos.


En cada aplicacin del anlisis de flujo de datos, asociamos con cada punto del
programa un valor de flujo de datos que representan una abstraccin del
conjunto de datos posibles estados del programa que pueden observarse para
ese punto. El conjunto de posibles calores del flujo de datos es el dominio para
esta aplicacin. Por ejemplo, el dominio de valores del flujo de datos para llegar
a las definiciones es el conjunto de todos los subconjuntos de definiciones en el
programa. Un valor del flujo de datos especifico es un conjunto de definiciones,
y deseamos asociar con cada punto del programa el conjunto exacto de
definiciones que pueden llegar a ese punto.

Bibliografa
Ttulo: Compiladores, principio , tcnicas y herramientas.
Segunda Edicion
Autores: Alfred V. Aho, Monica S. Lam, Ravi Sethi

Você também pode gostar