Professional Documents
Culture Documents
B2/ Aunque no haya dependencia de datos, todos los nodos deben preceder a la bifurcación.
Indica a continuación qué arcos debes añadir para que se cumpla esta propiedad (la instrucción
NOP se ignora)
(i8,i11,0), (i7,i11,0), (i6,i11,0) .........................................................................................................
B3/ Suprime todo arco que una dos nodos unidos por un camino de mayor o igual longitud que
la del arco (indica a continuación que arcos del grafo suprimes):
(i1,i5,0,ds), (i1,i6,1,d), (i1,i6,0,ad), (i2,i5,1,ad) ..............................................................................
C) Escribe en la primera celda libre de la columna “Grafo” de la tabla siguiente cómo ha quedado
el grafo tras las operaciones realizadas en el apartado anterior y suprimiendo el tipo de
dependencia. Aplica a ese grafo el algoritmo de Warren teniendo en cuenta las características
del procesador VLIW. [6]
Nodos Nodo
CT Grafo TTE
elegibles planificado
{(i4,i5,5), (i5,i6,4),
3 i4, i8 i4 (i5,8), (i11,3)
(i6,i11,0), (i8,i11,0)}
12 i6 i6 {(i6,i11,0)} (i11,12)
12 i11 i11
D) Escribe a continuación cómo ha quedado el código tras la planificación del apartado C (deben
aparecer las instrucciones completas):
Eti-
quet Acceso a memoria Acceso a memoria FP Entera/bifurcación
a
loop L.D F0,0(R1) L.D F4, 0(R2) DADDI R3,R3,#8
SGEI R6,R3,et1
MUL.D F2,F0,F10 DADDI R1,R1,#8
MUL.D F6,F4,F12 DADDI R2,R2,#8
ADD.D F0,F6,F2
Instrucción dependiente de
Tipo de dependencia Operando
ADD.D F2,F0,F2
L.D F0, 0(R1) WAR F0
MUL.D F0, F0, F4 WAR F0
ADD.D F2,F0,F2 RAW F2
ADD.D F2,F0,F2 WAW F2
ADD.D F2,F0,F2 WAR F2
4. Considera el siguiente fragmento de código MIPS:
i1: L.D F0, 0(R1) ; i1
L.D F4, 0(R2) ; i2
MUL.D F0, F0, F4 ; i3
ADD.D F2, F0, F2 ; i4
DADDUI R1, R1, #-8 ; i5
DADDUI R2, R2, #-8 ; i6
BNEZ R1, i1 ; i7
Asume que el valor inicial de R1 es 800 y que hay anticipación y bifurcaciones retardadas un
ciclo. Se sabe que la suma de punto flotante requiere 4 ciclos en la fase de ejecución y la
multiplicación, 5 ciclos.
B) Calcula el número total de ciclos que conlleva la ejecución del bucle. [2]
El número de iteraciones es 800/8 = 100.
Cada iteración empieza y termina 13 ciclos después que la anterior y la primera iteración termina
en el ciclo 16 (13+3). Por tanto, la iteración i termina en el ciclo i×13+3. La iteración 100
terminará en el ciclo 100×13+3 = 1303.
C) Completa el grafo de dependencias con cada una de las dependencias del bloque básico y su
correspondiente separación mínima en ciclos (sigue el formato de la dependencia que tienes
resuelta, con d, ad o ds para el tipo de dependencia). [3,5]
D) Prepara el grafo para aplicar el algoritmo de Warren. Escribe en forma de texto y sin
especificar el tipo de dependencia como ha quedado el grafo preparado: [3]
Tiempos más
Nodos Nodo
CT Grafo tempranos de
elegibles planificado
ejecución
9 i4 i4 {(i4,i7,1)} (i7,10)
10 i7 i7
F) Indica en la siguiente tabla cómo queda finalmente planificado el bucle, y en qué ciclo se emite
cada instrucción, tras colocar la instrucción adecuada en el hueco de retardo de la bifurcación.
[2]