Optimización por lazos

Visitas: 11  
Tiempo total: 0 días con 3:14:21 hrs  

La optimización por lazos consiste en utilizar los conceptos de reducción de lazos en grafos de flujos. Para esto es necesario tener previo conocimiento acerca de que es un grafo de flujo.

Un grafo de flujo se describe con el concepto de lazo natural, este surge a partir de un nodo dominante. En resumen se dice que un nodo d es dominante si para todo nodo inicial N tienen m caminos los cuales pasan por el nodo d.

En base a esto se explica un lazo natural. Suponga que se tiene la arista n -> d donde n domina a d (n dom d) con lo cual cualquier camino de d deberá de pasar por el nodo n. Entonces a partir de esto se dice que se tiene un lazo natural al obtener todos los nodos que con los cuales se puede llegar a n sin utilizar el camino n -> d.

Los lazos naturales sirven para obtener la definición de optimización por lazos, el cual se basa en las siguientes propiedades:

  • Las aristas de avance forman un grafo a cíclico donde cada nodo se puede alcanzar desde el nodo inicial G.
  • Las aristas de retroceso constan solo de las aristas cuyas cabezas dominan sus colas.

El significado de estas propiedades es que, una vez se tiene un grafo con un nodo inicial dominante, el grafo es reducible si y solo si, una vez identificadas y eliminadas las aristas de retroceso, los lazos naturales restantes formaran un grafo a cíclico, es decir que para todo nodo n del grafo resultante no existe camino para regresar a el mismo.

Ejemplo

En el grafo se pueden observar como el nodo inicial A es un nodo dominante pues a todo camino deberá de pasar a través de este.

imagen2

Suponga las aristas F -> A y G -> H, en las cuales se puede observar que el F es la cola y A es la cabeza, lo mismo en la segunda arista. Al eliminar estas aristas de retroceso se obtiene el siguiente grafo:

imagen1

Se puede observar que el resultado es un grafo a cíclico (dirigido) es decir, que es un grafo el cual se puede reducir. Estas reducciones en código significan que las instrucciones que nos llevan a los siguientes bloques (nodos del grafo) los cuales han sido reducidos se pueden omitir, optimizando el código resultante. Este puede ser aplicado a código entre operaciones internas del compilador, es decir no afectar los resultados para los cuales el programa fue desarrollado.


Para recibir boletines de información, por favor escribe tu correo electrónico:

Por favor ingrese un correo electrónico valido.
Registrado correctamente!