Você está na página 1de 8

IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO.

4, JUNE 2006

291

Aplicacin de la Teora de Grafos al Anlisis del Paralelismo a Nivel de Instruccin


Ral Durn y Rafael Rico
comportamientos, favorece la reproducibilidad y simplifica la transferencia de conocimientos. La teora de grafos puede ayudar a realizar este anlisis del paralelismo de grano fino ya que nos proporciona una formalizacin matemtica eficiente y contrastada. Por otra parte, los grafos ya han sido aplicados con xito al estudio de otros aspectos de la computacin como, por ejemplo, el paralelismo de grano medio o grueso obtenido por los compiladores [3, 4, 5, 6]. Se ha constatado una significativa diferencia entre el grado de paralelismo de grano fino para procesadores x86 y el resto. Esto nos ha llevado a pensar que quiz se ha minimizado el impacto de la arquitectura del repertorio de instrucciones sobre el paralelismo de grano fino disponible, y se ha prestado atencin tan slo a aspectos fsicos. En la literatura se pueden encontrar numerosos estudios identificando factores limitantes, cuantificando sus efectos, aportando posibles soluciones y evaluando los resultados. Entre los factores evaluados tenemos: el flujo de control [7, 8, 9, 10, 11], el tamao de la ventana de instrucciones [12], las interrupciones precisas [13], la desambiguacin de memoria [14], la ocupacin de unidades de ejecucin [15], la presin sobre el banco de registros [16], la prediccin de datos [17, 18], el impacto de los programas de test [19] o la liberacin temprana de registros [20], por citar algunos. Todos estos trabajos tienen en comn que presentan procesadores no-x86, que la evaluacin se ha realizado mediante simuladores y que los factores limitantes identificados se refieren siempre a la capa fsica. Los resultados IPC promedio referidos se encuentran en el rango 2,5-15 con picos alrededor de 30 IPC (vase la desambiguacin de memoria [14]). Los trabajos donde se ha utilizado procesadores x86 son menos frecuentes y los niveles de paralelismo referidos no son tan buenos. El grupo de Y. N. Patt ha propuesto varias mejoras sobre procesadores x86 alcanzando unos resultados IPC promedio que estaban comprendidos entre 0,5 y 3,5, siendo la mayor parte de los valores ligeramente mayores que la unidad [21, 22]. Huang y Xie midieron el paralelismo a nivel de microoperaciones (MLP). El MLP promedio result ser 1,32 sin renombramiento y 2,20 con renombramiento [23]. Bhandarkar y Ding caracterizaron el rendimiento del Pentium Pro facilitando un CPI para los SPECint95 en el rango 0,75 a 1,6 [24]. Con el fin de asegurar la compatibilidad binaria, lo cual ha proporcionado innegables beneficios, la arquitectura del repertorio de instrucciones x86 ha heredado caractersticas perjudiciales en el mbito del procesamiento superescalar, a saber: el uso dedicado de registros, los operandos implcitos (ligados a la operacin y no especificados en el formato), el

Resumen-La evaluacin de las arquitecturas de computadores requiere nuevas herramientas que complementen las habituales simulaciones. La teora de grafos puede ayudar a crear un nuevo marco de anlisis del paralelismo de grano fino. Las diferencias encontradas entre el rendimiento superescalar en procesadores x86 y no-x86 y las caractersticas peculiares de la arquitectura del repertorio x86 recomiendan realizar un estudio exhaustivo del paralelismo disponible en la capa del lenguaje mquina. Partiendo de nociones bsicas de la teora de grafos se introducen conceptos nuevos tales como la valencia reducida para llegar a la matriz de dependencias de datos D que caracteriza matemticamente una secuencia de cdigo. Dicha matriz cumple una serie de propiedades y restricciones y aporta gran informacin acerca de la capacidad del cdigo para ser procesado concurrentemente. Las diferentes fuentes de dependencias de datos se pueden componer facilitando un modo de analizar su influencia final en el grado de paralelismo. Palabras clave-Evaluacin de arquitecturas de computadores, paralelismo a nivel de instruccin (ILP), arquitectura del repertorio de instrucciones, teora de grafos, cuantificacin basada en DDG.

I. INTRODUCCIN: NUEVOS RETOS EN EVALUACIN DE LA


ARQUITECTURA DE COMPUTADORES

La evaluacin cuantitativa es un punto crucial en la investigacin de arquitecturas de computadores. La simulacin se ha convertido en la primera herramienta de evaluacin. Sin embargo, la construccin de buenos simuladores y la seleccin de cargas de trabajo adecuadas son tareas formidables. Skadron explica cmo estas dificultades han empujado a trabajar en temas donde las herramientas tienen una calidad contrastada, lo que ha llevado al abandono de materias interesantes como el multiprocesamiento [1]. Feitelson seala que para comparar sistemas se confa en las medidas del rendimiento sin reparar en que la propia metodologa de evaluacin puede ocasionar diferencias. Concretamente, concluye que la mtrica y la carga de trabajo pueden afectar a los resultados ya que son susceptibles de interactuar entre s [2]. El modelado analtico contribuye a comprender aspectos que no son detectables mediante simulacin. Es ms, puede servir para validar el simulador y para predecir el comportamiento de algunas propuestas. Tal y como ocurre en otros campos de investigacin, la formalizacin matemtica facilita la descripcin de los fenmenos, permite predecir
Este trabajo ha sido financiado en parte por el Vicerrectorado de Investigacin de la Universidad de Alcal bajo el Proyecto UAH PI2005/072. R. Durn y R. Rico pertenecen al Departamento de Automtica de la Universidad de Alcal, Espaa (e-mail: raul.duran@uah.es; rafael.rico@uah.es).

292

IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO. 4, JUNE 2006

uso de registro de estado y el gran nmero de registros involucrados en la aritmtica de direcciones. Estas caractersticas indeseables se manifiestan en una sobreordenacin del cdigo en la capa del lenguaje mquina que no se deriva del significado computacional de la tarea compilada. En consecuencia, las instrucciones llegan a la capa fsica ms acopladas de lo que originalmente correspondera observando el programa de alto nivel. En general, la arquitectura de los repertorios de instrucciones tiene un impacto significativo en el paralelismo de grano fino disponible incluso antes de llegar a la capa fsica ya que disminuyen el ILP que puede ser explotado en ejecucin. La Fig. 1 ilustra los factores que afectan al paralelismo disponible en cada capa del proceso de computacin.
capa de programa impacto del compilador capa del lenguaje mquina impacto de la arquitectura del repertorio de instrucciones capa fsica factores hardware

reglas de construccin que permiten incorporar las especificaciones hardware [30, 19, 31]. Hay que sealar tambin que el anlisis estadstico no se adapta convenientemente al comportamiento a rfagas de muchos aspectos de la computacin. Generalmente se dan valores promedio o se usa la desviacin estndar sin considerar que raras veces los eventos medidos se ajustan a una distribucin de Gauss. II. REPRESENTACIN DE SECUENCIAS DE INSTRUCCIONES
MEDIANTE GRAFOS

Las dependencias de datos en una secuencia de instrucciones pueden ser representadas mediante un grafo G(V, E), donde V es el conjunto de vrtices y E es el conjunto de arcos. Cada vrtice en V representa una instruccin y cada arco en E una dependencia de datos. Dos vrtices relacionados por un arco se dice que son adyacentes. La topologa de un grafo puede representarse mediante la matriz de adyacencia A:
1, si los vrtices i y j son adyacentes; aij = 0, en el resto

(1)

Fig. 1. Factores que afectan al paralelismo disponible en las diferentes capas del proceso de computacin.

En la actualidad, los estudios acerca de la arquitectura del repertorio de instrucciones son escasos y colaterales [25, 26]. En cuanto a los trabajos centrados en el repertorio x86, los anlisis en la capa del lenguaje mquina se limitan a realizar recuentos y calcular frecuencias de uso sin profundizar en el anlisis de las dependencias de datos [27, 28, 23]. La mtrica empleada habitualmente en la cuantificacin del paralelismo a nivel de instruccin se conoce por el acrnimo IPC (cociente entre el recuento de instrucciones y el tiempo de ejecucin en ciclos) y para medirlo con precisin se requieren simuladores complejos en los que las suposiciones y simplificaciones de modelizacin afectan significativamente al resultado final. Los resultados dependen fuertemente de la caracterizacin de la implantacin fsica. Un mtodo de medida alternativo es el basado en los grafos de dependencias de datos (DDG). Se trata de construir los DDG a partir de secuencias de cdigo y calcular la longitud del camino crtico. La caracterizacin es independiente de la implantacin fsica porque se sita en un escaln anterior en el proceso de computacin: en la capa del lenguaje mquina, incorporando el impacto del proceso de compilacin y de la propia arquitectura del repertorio de instrucciones. La cuantificacin basada en DDG es una potente herramienta de anlisis cuando se utiliza la representacin matricial ya que permite el procesamiento matemtico. As, adems de la longitud del camino crtico, podemos determinar el grado de paralelismo de una secuencia de instrucciones, la reutilizacin o comparticin de los datos, el tiempo de vida de los operandos, las principales fuentes de dependencias, la distribucin del paralelismo y otros aspectos relevantes. El anlisis de los DDG ha sido utilizado previamente de manera espordica. Kumar realiz un estudio en la capa de programa obteniendo un grado de paralelismo muy superior al que luego encontramos en la capa fsica [29]. Este resultado refuerza nuestra idea de que el proceso de computacin degrada el paralelismo disponible. Tambin se ha usado para evaluar caractersticas de la capa fsica aplicando ciertas

La matriz A es simtrica de dimensin n x n donde n es el nmero de instrucciones en el grafo, con la diagonal nula y aij{0, 1} [32, 33]. Definimos la matriz de incidencia B como:
1, si el arco e j incide sobre el vrtice vi ; bij = 0, en el resto

(2)

Este grafo admite dos posibles orientaciones: aquella en la que la instruccin i produce datos para j (identificada por ) o aquella en la que la instruccin j consume datos (depende) de i ( ). En cada una los arcos apuntan en sentidos opuestos con un significado complementario: la primera orientacin muestra el flujo de datos mientras que la segunda manifiesta las dependencias de datos. As, podemos definir la matriz de incidencia B con respecto a la orientacin , como la matriz n x m:
+ 1, si vi es el extremo entrante de e j ; bij = 1, si vi es el extremo saliente de e j ; 0, en el resto

(3)

Definimos valencia de un vrtice como el nmero total de arcos que inciden en dicho vrtice. La matriz de valencias es una matriz n x n diagonal donde la componente (i, i) es la valencia del vrtice i. La relacin entre la matriz de adyacencia y la de incidencia para una orientacin viene dada por:
Q = B ( B ) t = A
t

(4)

El producto B (B ) se conoce como matriz Laplaciana Q y es independiente de la orientacin. La representacin de grafos basada en la matriz de adyacencia A cuenta con el valor aadido de las propiedades del polinomio caracterstico [32, 33]. A. Valencia reducida Definimos valencia reducida de un vrtice como el nmero total de arcos que entran a dicho vrtice. La valencia reducida depende, por tanto, de la orientacin seleccionada. La matriz de valencias reducida a la orientacin , V, es una matriz n x n diagonal donde la componente (i, i) es la valencia reducida a la orientacin del vrtice i. Igualmente cabe pensar en una definicin especial para la matriz de incidencia considerando una nica orientacin. As

DURN AND RICO : ON APPLYING GRAPH THEORY TO ILP ANALYSIS

293

podemos definir la matriz de incidencia reducida I con respecto a la orientacin , como:


+ 1, si vi es el extremo entrante de e j ; iij = 0, en el resto

(5)

Si el grafo tiene n vrtices y m arcos, la dimensin de I es n x m. Proposicin 1: el producto I (I)t genera la matriz de valencias reducida V para la orientacin seleccionada. Demostracin: Si calculamos la componente del producto:

[I

( )]
t

ij

= iik i jk
k =0

m 1

(6)

Ahora bien, iik i jk 0 si y solo si i = j, pues cada arco incide sobre un nico vrtice. Adems, como iik {0, 1}, se 2 cumple ( iij ) = iij :

[I

( )]
t

ij

m 1 n de extremos iik = = k = 0 entrantes si i = j; 0, si i j

(7)

Resultado que coincide con la definicin de la matriz de valencias reducida a una nica orientacin. (8) V = I ( I )t La matriz de incidencia se puede construir a partir de las de incidencia reducida y la de valencia a partir de las de valencia reducida:

B = I I =V +V

(9) (10)

Los valores de la matriz de valencia reducida V corresponden a la suma por filas de las componentes de I lo cual se ajusta a lo expresado en (7). La interpretacin es inmediata: si la valencia reducida es el total de extremos entrantes a cada vrtice bastar con practicar un recuento por filas de la matriz I para calcularlo. Lo mismo ocurre para la orientacin contraria . B. La matriz de dependencias de datos D Definimos la matriz de dependencias de datos D como:
1, si la instruccin i depende de j ; d ij = 0, en el resto

(11)

donde la instruccin i  est asociada con un vector de dependencias de datos d i cuya j-sima componente es 1 si existe dependencia directa con la instruccin j a travs de algn dato y 0 en caso contrario. La matriz D representa el camino de dependencia de datos directo o de longitud unidad, es decir, representa la relacin directa entre la instruccin i que consume un dato directamente generado por la instruccin j, sin intermediarios. As la matriz D valora el arco solamente en el extremo positivo mientras que la matriz A valora ambos extremos. C. Propiedades topolgicas y restricciones en ILP para la matriz de dependencias de datos Uno de los objetivos del lgebra de la teora de grafos es determinar de manera precisa cmo se reflejan las propiedades de los grafos en las propiedades algebraicas de esas matrices.

Nosotros pretendemos extraer, adems, consecuencias en el mbito del procesamiento paralelo de instrucciones. En lo sucesivo, denominaremos etiquetado a la lista de identificadores de los vrtices de un grafo. El etiquetado de los vrtices no debe afectar a las propiedades de la matriz D. La matriz D puede asociarse a un grafo que consta de un conjunto V de vrtices, un conjunto E de arcos y una relacin de incidencia en un subconjunto de V x E. El conjunto {v0, v1, , vn-1} corresponde a un etiquetado arbitrario de los vrtices. Por lo tanto, las propiedades de las matrices asociadas al grafo deben ser invariantes frente a permutaciones de filas y columnas en funcin del etiquetado. En el mbito del paralelismo a nivel de instruccin, partimos de una serie de instrucciones que conservan la secuencialidad del modelo de programacin de Von Neumann fijado por el estricto orden de precedencia en el que estn escritas en el programa. El etiquetado original de los vrtices del grafo es el que induce el propio contador de programa. A este etiquetado le llamaremos etiquetado programtico. Entre los vrtices del DDG existe una relacin de precedencia. Cualquier tarea computable conlleva alguna relacin de precedencia u ordenacin parcial entre las tareas (instrucciones) a realizar, propia de un proceso que se desarrolla en una sucesin ordenada y finita de pasos. Es consustancial al algoritmo un ordenamiento que, a veces, se acenta al pasar de una capa a otra en el proceso de computacin: del algoritmo al programa, del programa a la imagen compilada y del cdigo mquina a la capa fsica (ver Fig. 1). Una instruccin no depende de s misma. Un dato no puede tener la misma instruccin como fuente y como destino. Como consecuencia de esto, la matriz D tiene la diagonal nula. Es decir, d ii = 0 0 i n 1 . Las dependencias de datos no son simtricas. Una instruccin no puede depender de otra que depende de ella al mismo tiempo ya que esta situacin no establece una relacin de precedencia sino un ciclo de dependencias de datos. Por i, j n 1 . tanto, la matriz D no es simtrica: d ij d ji = 1 Y si no es simtrica, el polinomio caracterstico asociado a cualquier matriz D p(G; ) = det ( I D), sea cual sea la relacin de incidencia, es siempre el mismo: p(G; ) = n. El valor descriptivo de este polinomio es muy pequeo. Existe un etiquetado de los vrtices del grafo bajo el cual la matriz D es triangular inferior. Una instruccin depende slo de las precedentes en el programa, nunca de las siguientes (principio de causalidad). Segn esto, el etiquetado programtico de los vrtices del grafo genera una matriz D triangular inferior ya que dij = 0 siempre que j > i pues una instruccin no puede tener dependencias de datos con las siguientes. A la matriz de dependencias de datos cuyo etiquetado de vrtices la convierte en triangular inferior la denominaremos forma cannica de D o matriz D cannica (Dc). D. La matriz de dependencias de datos y la matriz de adyacencia Existe una relacin inmediata entre la orientacin que genera el grafo de dependencias de datos y la que genera el grafo de flujo de datos. Ambos comparten el mismo conjunto de arcos variando nicamente la orientacin. Podemos asegurar que si i depende de j entonces j produce datos para i. Se cumple que

294

IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO. 4, JUNE 2006

si (dij) = 1 bajo una orientacin ( d ji ) = 1 bajo la contraria, lo cual corresponde a la definicin de matriz traspuesta. Como la matriz de adyacencia A valora ambos extremos de cada arco entonces es igual a: (12) A = D + Dt

matriz D para calcular los recuentos de arcos entrantes, permitiendo redefinir la matriz de valencia reducida:
n1 d ik = n de arcos si i = j; vij = k =0 0, si i j

(19)

A partir de D podemos construir la matriz A y recuperar la potencia descriptiva asociada a su polinomio caracterstico.
E. La matriz de dependencias de datos y la valencia reducida Que la matriz D valore nicamente un extremo de cada arco sugiere alguna relacin con la valencia reducida. Ha de ser as pues en ambas subyace el mismo grafo: en I relacionando arcos y vrtices mientras que en D se relacionan vrtices con vrtices. La misma formalizacin matemtica que hemos desarrollado apunta en la misma direccin ya que (9), (10) y (12) sugieren una relacin entre la matriz D y la incidencia reducida I a travs de (4). t Proposicin 2: el producto I I genera la matriz D. Demostracin: Si calculamos la componente del producto:

[I

( ) ] = i
t m 1 k =0 ij

ik

i jk

(13)

donde el sumatorio recorre todos los arcos segn el ndice k. El producto es distinto de cero nicamente para el k-simo arco si entra en el vrtice i ( iik = 1) saliendo del vrtice j o, lo que es igual, entrando al vrtice j bajo la orientacin contraria ( i jk = 1). Y esto coincide con la definicin de D que damos en (11).

i i
ik k =0

m 1

jk

= dij

(14)

F. Acoplamiento del cdigo El concepto de valencia reducida es muy til en el mbito del procesamiento paralelo de instrucciones. Recurdese que si la orientacin es aquella en la que los arcos entrantes sealan el consumo de los datos (grafo de flujo de datos), la valencia reducida cuantifica lo acoplada que se encuentra una instruccin con las dems. Una valencia reducida grande indica que una instruccin consume datos procedentes de varias instrucciones y que, por tanto, debe esperar a que todos ellos estn disponibles para poder ejecutarse. Consecuentemente, si el acoplamiento es grande se establecen ms relaciones de precedencia y la ordenacin parcial del cdigo es potencialmente mayor disminuyendo el paralelismo disponible. La diagonal de la matriz de valencias reducida para la orientacin correspondiente al grafo de flujo de datos (V) nos informa del acoplamiento que tiene cada instruccin. La traza de la matriz de valencias reducida para la orientacin correspondiente al grafo de flujo de datos es el nmero total de arcos, es decir, nos da informacin de lo acoplada que est una secuencia de cdigo y lo denominamos acoplamiento C: (20) C = tr V

De donde:

D = I I

(15)

Ya hemos sealado que existe un etiquetado de los vrtices segn el cual la matriz D es triangular (forma cannica Dc). En ese caso y sabiendo que la diagonal es nula:
i 1 d = n de arcos si i = j 0; vij = cik k =0 0, en el resto

Ya se ha visto cmo la valencia reducida para una orientacin se puede obtener haciendo el recorrido por filas contando los extremos entrantes (componente igual a 1) tal y como sugiere (7). Dada la relacin que establece la Proposicin 2 entre D e I cabe pensar en utilizar la matriz D para encontrar la valencia reducida. Proposicin 3: el recuento de arcos recorriendo la matriz D por filas permite generar la matriz de valencia reducida para la orientacin del grafo de flujo de datos. Demostracin: Supongamos que la relacin es cierta y sustituyamos la componente de D por su valor segn (14):
vii = d ip = iik i pk
p=0 p=0 k =0 n 1 n 1 m 1

(21)

El acoplamiento C ser:
C = trV = vii = d cik
i =0 i =1 k = 0 n 1 n 1 i 1

(22)

y est acotado por:


n 0C 2

(23)

(16)

Podemos intercambiar los sumatorios sin que se altere el resultado y sacar el trmino que no depende de los ndices:
m 1 n 1 m 1 n 1 vii = iik i = iik i pk pk k =0 p =0 k =0 p =0

(17)

Ahora bien, dado el k-simo arco solamente hay un vrtice sobre el que tenga un extremo entrante y se cumple:
v ii = i ik

k =0 m 1

Con el fin de obtener una medida del acoplamiento independiente de la cantidad de instrucciones en la secuencia, definimos acoplamiento normalizado, CN, como el cociente entre C y el nmero de instrucciones n de la secuencia. Cuando CN es nulo no hay ninguna dependencia mientras que en el peor de los casos cada instruccin depende de todas las precedentes. n 1 0 CN (24) 2
G. Reutilizacin de datos y tiempo de vida Si la orientacin es la opuesta (grafo de dependencias de datos), la valencia reducida cuantifica la reutilizacin de los datos. Si los datos generados por una instruccin son utilizados por otras muchas entonces crece la probabilidad de

(18)

que se corresponde con (7) y demuestra la equivalencia entre efectuar el recorrido por filas en la matriz I y hacerlo en la

DURN AND RICO : ON APPLYING GRAPH THEORY TO ILP ANALYSIS

295

que sea necesario conservarlos algn tiempo consumiendo recursos de almacenamiento. La diagonal de la matriz de valencias reducida para la orientacin correspondiente al grafo de dependencias de datos ( V ) nos informa de la reutilizacin de los datos producidos por cada instruccin: cuando su valor es 0 el dato no es consumido mientras que cuando su valor es 1 indica que cada dato generado por una instruccin nicamente se consume en otra. Sin reutilizacin, el tiempo de vida de los datos en los elementos de almacenamiento es mnimo. Existe una situacin especial que se produce cuando todos los valores no nulos de la diagonal de V son iguales a 1. Esta situacin se ilustra en la Fig. 2.(a). Matemticamente se manifiesta en que el producto D Dt genera una matriz diagonal que coincide con V. La explicacin es inmediata: para los elementos de fuera de la diagonal todos los productos dik djk se anulan ya que si la instruccin i depende de la k ninguna otra depender de k. Que el valor de la reutilizacin sea mayor que 1 significa que varias instrucciones consumen un mismo dato. Bajo esta circunstancia, resulta interesante conocer el tiempo de vida (almacenamiento) de los datos. En la Fig. 2.(b) y (c) se ilustran dos posibles situaciones. En ambos casos la instruccin 0 genera datos para la 1 y la 2. En el caso (b) los datos son consumidos en el siguiente paso de computacin mientras que el caso (c) no es posible ya que existe un camino de dependencias de longitud 2 que relaciona tambin la instruccin 2 con la 0. Deducimos que el tiempo de vida de un dato producido por i y consumido por j debe ser al menos igual al camino de dependencias ms largo entre ambos. Por esa razn hablaremos de tiempo de vida mnimo tmn.

que pasa a travs de, al menos, una de las instrucciones presentes en el grafo si se cumple:

(d

i0

d 0 j ) +  + (d in 1 d n 1 j ) = (d ik d kj ) 0
k =0

n 1

(26)

timin = max 0, k j : D
1 j n

[ ]
kj

ij

0, D

k j +1

ij

=0

(25)

que corresponde a la componente (i, j) de la matriz producto D D. Segn esto, la matriz D2 representa los caminos de dependencias de datos de longitud 2. Dl representa los caminos de dependencias de datos de longitud l (arcos). Generalizando, cada potencia de la matriz D representa los caminos de dependencias de longitud igual al grado de la potencia. Dicho de otra forma, el nmero de caminos de dependencias de datos de longitud l en G(V, E), segn una orientacin , desde vi hasta vj es el valor de la componente (i, j) de la matriz Dl. En [32] encontramos una demostracin de esto basada en la matriz de adyacencia A que puede extenderse al caso de la matriz de dependencias de datos D. Ntese que la longitud se mide en arcos. La n-sima potencia de D es nula. La longitud mxima de un camino de dependencias de datos es n 1 (arcos) siendo n el nmero de instrucciones de la secuencia de cdigo. De esta manera, Dn ser nula necesariamente. No hay ciclos de dependencias. No hay caminos de dependencias cerrados (ciclos) ya que en tal caso no se establecera una relacin de precedencia y, consecuentemente, el grafo es acclico pues en un ciclo una instruccin dependera de s misma a travs de otras y eso significara que una tarea no tiene solucin en un nmero finito de pasos. Algebraicamente una instruccin no puede depender de s misma bajo ningn camino de longitud l. Por tanto, la diagonal de cualquier potencia de la matriz de dependencias (Dl) es nula: d lii = 0 1 l n 1.
I. Longitud del camino crtico y grado de paralelismo Uno de los datos ms importantes que podemos extraer de las matrices de dependencias de datos es el grado de paralelismo a nivel de instruccin del que disponen las secuencias de cdigo por ellos representadas. Dicha informacin es independiente de las limitaciones que posteriormente pueda imponer la capa fsica. Es un dato que atae slo a la capa del lenguaje mquina y que tiene que ver con el algoritmo empleado, la plasmacin del mismo en un programa, la influencia del compilador y la propia arquitectura del repertorio de instrucciones. El paralelismo disponible est inversamente relacionado con la longitud de las cadenas de dependencias entre instrucciones. Cuanto ms largas son estas cadenas ms fuerte es la ordenacin parcial de la secuencia de cdigo imponiendo una ejecucin muy secuencial de las instrucciones con capacidad limitada de procesamiento concurrente. Por el contrario, las cadenas de dependencias cortas implican un ordenamiento dbil entre instrucciones susceptible de ser aprovechado para la ejecucin concurrente. camino crtico L(D) Definimos longitud del (abreviadamente L) de una secuencia de cdigo representada por su matriz D, como la longitud del camino de dependencias ms largo. Existen dos mtricas: la cuantificacin en arcos expuesta en la Seccin II.H conforme a la teora de grafos tradicional y la cuantificacin en pasos de computacin ms propia del mbito ILP. Si la longitud del camino crtico L

El caso de la Fig. 2.(d) nos hace ver que este tiempo depende finalmente de los criterios de planificacin (capa fsica) ya que la instruccin 1 puede planificarse un paso de computacin antes que la instruccin 3 o a la vez que la 0 con lo que el tiempo de almacenamiento sera de 2 pasos de computacin.
0 0 0 0

1 2

a)

b)

c)

d)

Fig. 2. Diferentes tipos de reutilizacin de datos.

H. Caminos de dependencias de datos de longitud mayor que 1 Por definicin, un camino de longitud l (arcos) en un grafo G(V, E), desde el vrtice vi hasta el vj, es una secuencia finita de l + 1 vrtices distintos que comienza en vi y termina en vj tal que dos vrtices consecutivos son adyacentes [32, 33]. La matriz de dependencias de datos D muestra los caminos de dependencias de longitud 1 o dependencias directas entre instrucciones. Sin embargo, existen cadenas de dependencias de datos entre instrucciones de longitud mayor. Por ejemplo, si dij = 1 y djk = 1 entonces la instruccin i depende de k a travs de la j con un camino de longitud 2. En general, podemos afirmar que existe un camino de dependencias de longitud 2 desde la instruccin i hasta la j

296

IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO. 4, JUNE 2006

involucra l + 1 vrtices, entonces dicho camino tiene l arcos y el nmero mnimo de pasos de computacin requeridos para procesar la secuencia de cdigo asociada es l + 1. Si Dl representa los caminos de dependencias de datos de longitud l (arcos) la primera potencia nula de D seala la longitud del camino crtico. Esto es: (27) L = l pasos de computacin si y slo si Dl = 0 Bajo esta mtrica L est acotado as: (28) 1Ln La longitud L mnima es 1: no existen dependencias de datos entre las instrucciones y, en caso de que los recursos disponibles lo permitan, se pueden procesar todas de forma concurrente en un nico paso de computacin. El valor mximo de L es n: slo es posible lanzar una instruccin en cada paso de computacin (total secuencialidad) requiriendo n pasos para finalizar el procesamiento del cdigo. Cuantas ms instrucciones se incluyan en el DDG la longitud del camino crtico L ser potencialmente mayor. Con el fin de obtener una medida de paralelismo independiente de la cantidad de vrtices del grafo, definimos la longitud del camino crtico normalizada, LN, como el cociente entre la longitud del camino crtico, L, expresada en pasos de computacin, y el tamao de la ventana de instrucciones, n, resultando que cuando LN vale 1 no hay paralelismo mientras que, por el contrario, el paralelismo encerrado en el cdigo ser mayor cuanto ms se aproxime su valor a 0.
1 LN 1 n

anlisis automtico de secuencias de cdigo. Consiste en establecer la precedencia entre instrucciones en funcin de sus dependencias. En cada paso de computacin hacemos un listado de las instrucciones no dependientes y liberamos de dependencias a aquellas a las que entregan datos. Todas las instrucciones que pertenecen a la lista de un paso de computacin comparten el mismo nivel de precedencia y, por tanto, pueden procesarse de forma concurrente. El nmero de pasos de computacin requerido para ordenar todas las instrucciones es la longitud del camino crtico. Por otra parte, la ordenacin topolgica obtenida establece una lista de planificacin de las instrucciones que puede utilizarse para asignar recursos fsicos. Seguidamente se muestra el pseudocdigo de este algoritmo.
/* Procedimiento de ordenacin topolgica */ 1: GIVEN: paso de computacin inicial, paso = 0; lista de instrucciones para el paso p, Lista(p); matriz de dependencias D; 2: while (quedan instrucciones por ordenar) 3: { 4: while (quedan instrucciones no dependientes) 5: { 6: Lista(p) = AadirIndependienteListaPaso(p); 7: } 8: EliminarDependencias (Lista(p), D); 9: paso ++; 10: }

Alg. 1. Algoritmo de ordenacin topolgica.

III. COMPOSICIN DE FUENTES DE DEPENDENCIAS Si una secuencia de cdigo puede representarse por la matriz D y sta es una formalizacin de la ordenacin parcial encerrada en el cdigo, podemos analizar con precisin el impacto de las diferentes fuentes de dependencias ya que estas se componen de una manera sencilla para generar el mapa de dependencias final. Si Ds1 es la matriz debida a una fuente de dependencias y Ds2 es la matriz debida a otra fuente de dependencias, la matriz D resultante ser: D = Ds1 OR Ds2 (31) De otra manera, dij = d s1ij OR d s 2 ij significa que la instruccin i depende de la j si depende por la causa 1 o si depende por la causa 2 o por ambas causas. La matriz de dependencias de datos resultante no admite el proceso de descomposicin, que nos permitira realizar un anlisis preciso del impacto de cada fuente de dependencias de datos, ya que el solapamiento de dependencias no permite identificar, conociendo la matriz final, su procedencia.
A. Algunas composiciones posibles Una primera composicin sera la de dependencias verdaderas, dependencias de salida y antidependencias: D = Dverdaderas OR Dsalida OR Dantidependencias (32) Esto nos permite distinguir el tipo de dependencia de datos y predecir si tiene relevancia computacional (las verdaderas) o slo es debida a la reutilizacin del almacenamiento fsico (las de salida y antidependencias). No obstante, es posible un anlisis ms fino diferenciando las posibles fuentes de dependencias de datos: D = Ds1 OR Ds2 OR Ds3 OR (33) Estas fuentes de dependencias de datos pueden ser: limitacin en la cantidad de registros visibles al programador

(29)

Tambin definimos el grado de paralelismo, Gp, como el recproco de LN, (Gp = LN-1), expresado en pasos de computacin, e indica el nmero de instrucciones que se pueden procesar de forma concurrente en cada paso de computacin. As, Gp va desde 1 (ausencia de paralelismo) hasta n (mximo grado de paralelismo). (30) 1 G p n. Ya que Gp es funcin del nmero de instrucciones en la secuencia, es razonable pensar que segn se incrementa n tambin crece Gp: a ms instrucciones mayor potencial de paralelismo. Siguiendo esta lgica, las ventanas de instrucciones de algunos procesadores superescalares se han hecho mayores en la esperanza de encontrar ms instrucciones listas para ser ejecutadas simultneamente. Por contra, Wall hall un comportamiento asinttico: llega un momento en que, a pesar de examinar ms instrucciones, no se consiguen ms instrucciones sin dependencias de datos [12]. La longitud de las cadenas de dependencias crece con la secuencia de cdigo ya que los recursos lgicos de la arquitectura software del repertorio de instrucciones son limitados.
J. Calculo algortmico de la longitud del camino crtico El clculo de las sucesivas potencias de la matriz D nos permite determinar la longitud del camino crtico mediante un procedimiento algebraico segn (27). Sin embargo, este mtodo tiene una complejidad O(n4) y se hace impracticable. El algoritmo de ordenacin topolgica de un grafo (ordenacin parcial de la secuencia de cdigo) sirve tambin para hallar la longitud del camino crtico. Este procedimiento tiene una complejidad O(n3) que lo hace ms atractivo para el

DURN AND RICO : ON APPLYING GRAPH THEORY TO ILP ANALYSIS

297

reutilizacin de registros uso de operandos implcitos escrituras de cdigos de condicin procesamiento de direcciones de memoria trfico con la pila, etc. Todas ellas pueden ser consideradas, adems, en sus tres variantes: verdaderas, antidependencias y de salida.
B. Longitud del camino crtico de la composicin Todas las propiedades y tratamientos propuestos para la matriz D se pueden realizar para cada una de las fuentes de dependencias de datos (Dsn). Es interesante considerar qu sucede con la longitud del camino crtico de la matriz resultante. El grafo resultante no tiene una longitud de camino crtico necesariamente igual a la suma de los caminos de sus componentes ya que las cadenas de dependencias de datos se pueden solapar. No es posible, por tanto, determinar de manera directa la longitud de la composicin en funcin de las componentes: es necesario conformarse con acotar los resultados. En cuanto al lmite superior, sabemos que la longitud final est acotada por el nmero de instrucciones presentes en el grafo. Tambin podemos afirmar que la longitud del camino crtico de la composicin nunca ser mayor que la suma de los caminos de las componentes asumiendo el caso ms desfavorable en el que todas ellas contribuyeran a crear cadenas de dependencias de datos. Por tanto, el lmite superior (en pasos de computacin) vendr dado por el mnimo de ambos:
min L( Dsi ), n L ( D ) i

Se muestra cmo las diferentes fuentes de dependencias de datos se pueden componer permitiendo un anlisis preciso del impacto de cada una sobre el grado de paralelismo final. El modelo analtico propuesto se ha aplicado a la evaluacin de algunos aspectos de la arquitectura del repertorio x86 y se ha obtenido informacin valiosa [34]. Asimismo, en la nota tcnica UAH-AUT-GAP-2005-01 se presentan ejemplos con secuencias de cdigo reales [35]. En posteriores trabajos se estudiar la contribucin de cada una de las fuentes de dependencias analizando su comportamiento sobre un conjunto mayor de programas. Tambin parece posible extender el uso de los grafos para modelar las limitaciones de la capa fsica y los procesos de asignacin-planificacin. Aunque desde un punto de vista estrictamente algortmico, la representacin matricial no es la ms eficiente, presenta la ventaja de ser la ms fcil de obtener a partir de las trazas de ejecucin. As pues, como parte de futuros trabajos, se pretenden desarrollar algoritmos ms eficientes para la obtencin de los resultados.

V. AGRADECIMIENTOS Los autores quieren agradecer los comentarios de los revisores ya que representaron una valiosa ayuda en la elaboracin final de este trabajo.

(34)

VI. REFERENCIAS
[1] K. Skadron, M. Martonosi, D. I. August, M. D. Hill, D. J. Hill and V. S. Pai. Challenges in Computer Architecture Evaluation, IEEE Computer, vol. 36, 8, August, 2003. [2] D. G. Feitelson. Metric and Workload Effects on Computer Systems Evaluation, IEEE Computer, vol. 36, 9, September, 2003. [3] A. V. Aho and J. Ullman. Foundations of Computer Science. Computer Science Press, 1992. [4] D. A. Padua and M. J. Wolfe, Advanced Compiler Optimizations for Supercomputers, Communications of the ACM, 29(12), December 1986. [5] M. Wolfe. High Performance Compiler for Parallel Computing. AddisonWesley, CA, 1996. [6] H. Zima and B. Chapman. Supercompilers for Parallel and Vector Supercomputers, ACM Press Frontiers Series, 1990. [7] S. McFarling, Combining Branch Predictors, W.R.L. Technical Note TN36. Digital Equipment Corporation. Palo Alto, CA. June 1993. Available at: http://www.research.compaq.com/wrl/techreports/index.html. [8] M. Lam and R. Wilson. Limits of Control Flow on Parallelism, in Proc. of the 19th Annual Intl Symp. on Computer Architecture, 1992, pp. 46-56. [9] A. Ramirez, J. L. Larriba-Pey and M. Valero, The effect of code reordering on branch prediction, in Proc. Intl Conference on Parallel Architectures and Compilation Techniques, pages 189-198, October 2000. [10]E. M. Riseman and C. C. Foster, The inhibition of potential parallelism by conditional jumps, IEEE Transactions on Computers, vol. C-21, 1972. [11]M. Smith, M. Johnson and M. Horowitz. Limits on Multiple Instruction Issue, in Proc. of the 3rd Intl Conference on Architectural Support for Programming Languages and Operating Systems, 1989, pp. 272-282. [12]D. W. Wall, Limits of instruction-level paralelism, in Proceedings of the Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 176-188, April 1991. [13]M. Butler, Tse-Yu Yeh, Y. Patt, M. Alsup, H. Scales and M.Shebanow. Single Instruction Stream is Greater than Two, in Proc. of the 18th Annual International Symposium on Computer Architecture, 1991, pp. 163-174. [14]K. B. Theobald, G. R. Gao and L. J. Hendren, On the Limits of Program Parallelism and its Smoothability, in Proc. of the 25th Annual Intl Symp. on Microarchitecture, pp. 10-19, 1992. [15]D. M. Tullsen, S. J. Eggers and H. M. Levy, Simultaneous multithreading: maximizing on-chip parallelism, in Proc. of the 22nd Annual Intl Symp. on Computer Architecture, 1995, pp. 392-403.

El lmite inferior nunca ser menor que el de la componente de mayor camino crtico, asumiendo que todos los dems se solapan con l, es decir, que no se producen dependencias cruzadas. Formalmente:
L( D) max{L( Dsi )}
i

(35)

En definitiva, la longitud del camino crtico de la matriz D compuesta L(D) es un nmero acotado en el rango:
min L( Dsi ), n L( D) max{L( Dsi )} i i

(36)

L(D) siempre ser igual o mayor que el mayor camino de dependencias de las componentes y siempre ser menor o igual a la suma de las longitudes con el lmite n del nmero de instrucciones presentes en la secuencia de cdigo.

IV. CONCLUSIONES Y TRABAJO FUTURO Se ha propuesto un modelo de anlisis aplicable al proceso de computacin en la capa del lenguaje mquina que permite evaluar cuantitativamente el impacto tanto de la arquitectura del repertorio de instrucciones como del propio procedimiento de compilacin. Se han identificado las propiedades topolgicas y restricciones que ha de cumplir la matriz D en el mbito ILP y se ha establecido la manera de cuantificar el grado de ordenacin del cdigo, la reutilizacin de los datos y su tiempo de vida a partir de D. Tambin se ha definido una mtrica para evaluar el grado de paralelismo disponible.

298

IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO. 4, JUNE 2006

[16] K. I. Farkas, N. P. Jouppi and P. Chow. Register File Design Considerations in Dynamically Scheduled Processors, in Proc. 2nd Intl Symp. on High-Performance Computer Architecture, 1996, pp. 4051. [17] M. H. Lipasti and J. P. Shen. Exceeding the Dataflow Limit Via Value Prediction, in Proc. 29th Intl Symp. on Microarchitecture, pp. 226-237, 1996. [18] K. Wang and M. Franklin. Highly accurate data value prediction using hybrid predictors, in Proc. 30th Intl Symp. on Microarchitecture, 1997. [19] M. A. Postiff, D. A. Greene, G. S. Tyson and T. N. Mudge, The Limits of Instruction Level Parallelism in SPEC95 Applications, in Proc. of the 3rd Workshop on Interaction Between Compilers and Computer Architecture, 1998. [20] T. Monreal, V. Vials, A. Gonzlez and M. Valero. Hardware Schemes for Early Register Release, in Proc. of the Intl Conference on Parallel Processing, 2002, pp. 5-13. [21] O. Mutlu, J. Stark, Ch. Wilkerson and Y. N. Patt, Runahead Execution: An Alternative to Very Large Instruction Windows for Out-of-order Processors, in Proc. 9th Intl Symp. on High-Performance Computer Architecture, 2003. [22] J. Stark, M. D. Brown and Y. N. Patt. On Pipelining Dynamic Instruction Scheduling Logic, in Proc. of the 33rd Annual ACM/IEEE Intl Symp. on Microarchitecture, 2000, pp. 57-66. [23] I. J. Huang and P. H. Xie, Application of Instruction Analysis/Scheduling Techniques to Resource Allocation of Superscalar Processors, IEEE Transactions on VLSI Systems, vol. 10, no. 1, pp. 44-54, February 2002. [24] D. Bhandarkar and J. Ding, Performance characterization of the Pentium Pro processor, in Proceedings of the Third International Symposium on High-Performance Computer Architecture, 1997, pp. 288 297. [25] A. Nohl, G. Braun, O. Schliebusch, R. Leupers, H. Meyr and A. Hoffmann. A Universal Technique for Fast and Flexible Instruction-Set Architecture Simulation, in Proc. of the 39th Design Automation Conference, 2002. [26] P. Simonen, I. Saastamoinen, M. Kuulusa and J. Nurmi. Advanced Instruction Set Architectures for Reducing Program Memory Usage in a DSP Processor, in Proc. of the First IEEE Intl Workshop on Electronic Design, Test and Applications (DELTA '02), pp. 477-479, 2002. [27] T. L. Adams and R. E. Zimmerman, An analysis of 8086 instruction set usage in MS DOS programs, in Proceedings of the Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-III), April 1989, pp. 152 - 160. [28] I. J. Huang and T. C. Peng, Analysis of x86 Instruction Set Usage for DOS/Windows Applications and Its Implication on Superscalar Design, IEICE Transactions on Information and Systems, Vol.E85-D, No. 6, pp. 929-939, June 2002. (SCI). [29] M. Kumar, Measuring parallelism in computation intensive scientific/engineering applications, IEEE Transactions on Computers, 37(9), pp. 1088-1098, 1988. [30] T. M. Austin and G. S. Sohi, Dynamic Dependency Analysis of Ordinary Programs, in Proceedings of the 19th International Symposium on Computer Architecture, 1992, pp. 342-351. [31] D. Stefanovic and M. Martonosi, Limits and Graph Structure of Available Instruction-Level Parallelism, in Proc. of the European Conference on Parallel Computing, 2000. [32] N. L. Biggs, Algebraic Graph Theory (2nd. edn.), ISBN: 0-521-45897-8, Cambridge University Press, 1993. [33] C. D. Godsil and G. F. Royle, Algebraic Graph Theory, ISBN: 0-38795220-9, Springer-Verlag, 2001. [34] R. Rico, J. I. Prez y J. A. Frutos. The impact of x86 instruction set architecture on superscalar processing, Journal of Systems Architecture, vol. 51-1, pages 63-77, January 2005. [35] R. Rico, On Applying Graph Theory to ILP Analysis, Technical Note UAH-AUT-GAP-2005-01-en. Available at: http://atc2.aut.uah.es/~gap/.

Rafael Rico obtuvo el ttulo de Licenciado en Ciencias Fsicas y el grado de Doctor en la Universidad Complutense de Madrid, Espaa, en 1988 y 2004 respectivamente. En la actualidad es profesor del Departamento de Automtica de la Universidad de Alcal, Espaa, donde imparte docencia en arquitectura de computadores. Sus lneas de investigacin incluyen paralelismo a nivel de instruccin, modelado VHDL y arquitecturas reconfigurables. Prof. Rico es miembro de IEEE Computer Society.

VII. BIOGRAFAS
Ral Durn obtuvo el ttulo de Licenciado en Ciencias Fsicas en la Universidad de Salamanca, en 1985, y el grado de Doctor en Ciencias en la Universidad Politcnica de Madrid en 2003. Es profesor del Departamento de Automtica de la Universidad de Alcal, Espaa, donde imparte docencia en paralelismo en arquitectura de computadores. Sus lneas de investigacin incluyen sistemas dinmicos cuadrticos discretos, distribucin de primos especiales y paralelismo a nivel de instruccin.

Você também pode gostar