Chapter 2. Optimization of the Synthesis and Cyclization of the Precursor Molecules
2.4. Experimental
La existencia de m´ultiples referencias a una estructura de datos hace m´as compleja la representaci´on del ´area a la que dichas referencias pueden afectar, pues el patr´on es mucho menos regular, como muestra la figura 5.7. Afortu- nadamente patrones como los de la figura no son los m´as habituales. Dado que en la gran mayor´ıa de los c´odigos los accesos regulares o bien son puramente secuenciales o bien constan de regiones accedidas separadas por distancias constantes, extenderemos la notaci´on introducida en el apartado 5.1.3 para
144 Cap´ıtulo 5. Una aproximaci´on al modelado autom´atico para patrones de acceso regulares incluir un nuevo par´ametro: el n´umero TRi de palabras consecutivas acce- didas en la primera dimensi´on de que consta la regi´on correspondiente a la referencia R en el nivel de anidamiento i. No consideramos aqu´ı la posibil- idad de accesos a puntos consecutivos en otras dimensiones separados por otros puntos no accedidos, que dar´ıa lugar a un par´ametro de este tipo para cada dimensi´on, porque este acceso no corresponder´ıa a ninguno de los mod- elados en este trabajo. No obstante, esta posibilidad podr´ıa considerarse en implementaciones m´as gen´ericas.
No obstante, el analizador autom´atico obtiene la representaci´on de la totalidad del ´area afectada por los accesos generados por las diferentes refer- encias a la matriz a partir precisamente de la adici´on de las regiones afectadas por los accesos de cada referencia. En este proceso se debe tener en cuenta el solapamiento que se puede dar entre ellas en las dimensiones donde las referencias pueden dar lugar a reuso de l´ınea de cach´e. Por ello una vez que se calculan las regiones de una matriz afectadas por todas las referencias a la misma, el analizador habr´a de compararlas intentando fusionarlas para no contar como fuente de interferencia varias veces aquellas l´ıneas que se vean afectadas por m´as de una referencia en la misma matriz. Si se verifican las condiciones que hemos impuesto en las diferencias entre las referencias, que por otra parte son las m´as t´ıpicas, el analizador ser´a capaz de fusionarlas en una forma regular como la descrita.
Para facilitar el proceso de fusi´on de las regiones, adem´as de los par´amet- ros introducidos en la secci´on precedente para describir la regi´on afectada por una referencia R en el nivel i del anidamiento, RRi, el ´area asociada se identificar´a mediante la posici´on de la primera palabraQR que contiene, cal- culada aplicando (5.1) para el menor valor de cada una de las variables que se utilizan en el indexado de las dimensiones de la matriz en la referencia estudiada. En el proceso usaremos la terna
Rextri = (Qr, Tri,Rri) (5.16) para representar la regi´on obtenida tras la uni´on de las ´areas asociadas a las referencias 1 a r, ambas incluidas. Inicialmente haremos Rext 1i = (QR1,1,RR1i). Para r = 2, . . . ,<, donde < es el n´umero total de referen-
cias sobre la matriz estudiada, se aplicar´a el siguiente algoritmo:
1. Si Qr ≤QRr ≤Qr+Tri+Ls−2,T(r+1)i = m´ax{Tri, QRr −Qr+ 1}.
2. Si Qr−Ls+ 1 ≤QRr ≤Qr+Tri−1,Qr+1 = m´ın{Qr, QRr} yT(r+1)i =
5.2. Referencias m´ultiples a una estructura de datos 145 3. Para obtener un patr´on regular es necesario que s´olo haya distancias en-
tre regiones accedidas en una de las dimensiones de la matriz. As´ı pues, en el caso de que las ´areas no sean fusionables en los accesos asociados a la primera dimensi´on de la matriz, que son los casos contemplados en los dos puntos anteriores, detectaremos la dimensi´on en la que se da el salto como: Dsalto = m´ın ½ j,1≤j ≤dA/|QRr −Qr| Tac(A, j) ≤dAj ¾ (5.17) dondeTac(A, j) es el tama˜no acumulativo de las dimensiones inferiores a la j para la matriz A, es decir,
Tac(A, j) = j−1
Y
k=1
dAk (5.18)
En el caso de que NRriDsalto = dADsalto no es necesario modificar el
n´umero de puntos de que consta la regi´on en la dimensi´on del salto, puesto que se la recorre por completo. No obstante, dado que se per- miten variaciones en el tama˜no y punto de inicio de la regi´on accedida en la primera dimensi´on, deben fusionarse las regiones recalculando el punto de inicio del ´area global como:
Qr+1 =PosA+ ¹ m´ın{Qr, QRr} Tac(A,Dsalto) º Tac(A,Dsalto)+
m´ın{(Qr−PosA) m´od dA1,(QRr −PosA) m´od dA1}
(5.19)
y actualizando consecuentemente el tama˜no de la regi´on accedida en la primera dimensi´on como:
T(r+1)i = m´ax{(Qr+Tri−1−PosA) m´od dA1, (QRr −PosA) m´od dA1} −Qr+1
(5.20) En otro caso, consideraremos la diferencia en puntos de la dimensi´on entre los puntos de inicio de la regi´on acumulada y la correspondiente a la referencia estudiada: Qdist = ¯ ¯ ¯ ¯ ¹ Qr−PosA Tac(A,Dsalto) º − ¹ QRr −PosA Tac(A,Dsalto) º¯¯ ¯ ¯ (5.21)
Si Qdistm´odLRriDsalto 6= 0 no tendr´ıamos, en general, un acceso a
146 Cap´ıtulo 5. Una aproximaci´on al modelado autom´atico para patrones de acceso regulares hemos mencionado, no consideraremos aqu´ı por requerir una simulaci´on para calcular su vector de ´area asociado y por su infrecuencia. ´Unica- mente en el caso de que hubieseLRriDsalto referencias con constantes de
desplazamiento 0,1, . . . , LRriDsalto−1 podr´ıamos unificarlas en un acce-
so a regiones separadas por una distancia constante, ya que se acceder´ıa aNRriDsaltoLRriDsalto puntos consecutivos en la dimensi´on. En este caso
calcular´ıamos el nuevo valor para Q(r+ 1) y T(r+1)i de la forma expli- cada arriba y modificar´ıamosNRiDsalto (r+1) y LRiDsalto (r+1) para hacerlos adoptar los valores NRriDsaltoLRriDsalto y 1, respectivamente.
Por otro lado, si Qdistm´od LRriDsalto = 0, la distancia entre las dos
regiones se recorre enQdist/LRriDsalto iteraciones del bucle que controla
la dimensi´on donde se da el salto. Sea NR miniDsalto =
½
NRriDsalto si QRr < Qr
NRiDsaltor en caso contrario
(5.22) siQdist/LRriDsalto > NR miniDsalto, las regiones no llegan a alcanzarse, con
lo que no debe realizarse ning´un tipo de fusi´on. Es el ´unico caso en el que podr´ıamos tener varias regiones para una estructura de datos. En caso contrario recalculamosQr y Tri seg´un (5.19) y (5.20), respectivamente, y modificamos NRiDsaltor sum´andole Qdist/LRriDsalto.
El procedimiento de uni´on de las ´areas asociadas a las referencias re- querir´a una sola iteraci´on sobre el conjunto de referencias si ´estas las orde- namos bien en orden creciente bien en orden decreciente de su direcci´on de inicioQRr. Adem´as el ordenamiento permite simplificar los pasos del algorit-
mo donde se debe comparar Qr con QRr.