Você está na página 1de 15

1.

Un circuito que implementaba una operacin en T = 500 ns se ha segmentado mediante un cauce lineal con cinco etapas de duracin t1 = 80 ns, t2 = 100 ns, t3 = 120 ns, t4 =110 ns y t5 = 100 ns respectivamente, separadas por un registro de acoplo que introduce un retardo d = 10 ns. a) A qu frecuencia funciona el cauce? El tiempo de etapa en el cauce viene determinado por la etapa ms lenta y el retardo introducido por los registros intermedios: { } { )

La frecuencia del canal es la inversa de ese valor.

b) Cul es la mxima ganancia de velocidad posible? Para n operaciones, la ganancia se puede obtener como: ) ( )) ) La ganancia mxima se obtiene como: ) c) Cul es la productividad mxima del cauce? La productividad del cauce de k etapas se define como: ) Donde el mximo ser: ) ( ) ) ))

d) A partir de qu nmero de operaciones ejecutadas se consigue una productividad igual al 75% de la productividad mxima? La productividad del 75% de la mxima se dar cuando: ) ) ; De donde despejamos n

2. Realice un programa para calcular la expresin X = aX + bY + Z, donde a y b son escalare y X, y Z son tres vectores cuyos componentes se encuentran almacenados en memoria en posiciones consecutivas a partir de dos direcciones establecidas. Adems, tanto a como b y las componentes de X, Y, y Z son nmeros de doble precisin. a) Suponiendo un cauce con las etapas IF, ID, EX, MEM, WB, en el que la multiplicacin tarda 5 ciclos y la suma de nmeros en coma flotante tarda 2, y hay un multiplicador y un sumador que pueden ejecutar operaciones en paralelo. Adems, el clculo de la direccin de destino de salto se realiza en la etapa ID. Estime el nmero de ciclos que se necesitaran, y aplique alguna tcnica que permita reducir los atascos (stalls) para este programa suponiendo que, en las instrucciones de salto, el procesador anula las instrucciones que se introducen tras la instruccin A continuacin se muestra el cdigo y los ciclos que consumen. .data 0 a: b: X: Y: Z: start: add r1,r0,X add r2,r0,Y add r3,r0,Z add r4,r1,#32 ld f0,a ld f2,b bucle: ld f4,0(r1) ld f6,0(r2) ld f8,0(r3) multd f4,f0,f4 multd f6,f2,f6 addd f4,f4,f6 addd f4,f4,f8 sd 0(r1),f4 add r1,r1,#4 add r2,r2,#4 add r3,r3,#4 sub r5,r1,r4 bnez bucle trap #0de salto slo si se produce el salto. .global a .double 1.0 .global b .double 2.0 .global X .double 1.0, 2.0, 3.0, 4.0 .global Y .double 5.0, 6.0, 7.0, 8.0 .global Z .double 9.0, 10.0, 11.0, 12.0 .text 256

Podemos mejorar la ejecucin del algoritmo si reorganizamos la instrucciones sin alterar el significado del algoritmo.

.data 0 .global a a: .double 1.0 .global b b: .double 2.0 .global X X: .double 1.0, 2.0, 3.0, 4.0 .global Y Y: .double 5.0, 6.0, 7.0, 8.0 .global Z Z: .double 9.0, 10.0, 11.0, 12.0 .text 256 start: add r1,r0,X add r2,r0,Y add r3,r0,Z add r4,r1,#32 ld f0,a ld f2,b bucle: ld f4,0(r1) multd f10,f0,f4 ld f6,0(r2) ld f8,0(r3) multd f12,f2,f6 add r2,r2,#8 ;b*Y ;a*X

add r3,r3,#8 addd f14,f10,f12 addd f16,f14,f8 sd 0(r1),f16 add r1,r1,#8 sub r5,r1,r4 ;a*X + b*Y ;a*X + b*Y + Z

bnez r5, bucle trap #0

La ganancia con respecto al programa original es la siguiente:

Podemos mejorar ms el algoritmo si realizamos ms de una operacin por bucle. Tcnica de desenrollado de bucles.

.data 0 .global a a: .double 1.0 .global b b: .double 2.0 .global X X: .double 1.0, 2.0, 3.0, 4.0 .global Y Y: .double 5.0, 6.0, 7.0, 8.0 .global Z Z: .double 9.0, 10.0, 11.0, 12.0 .text 256 start: add r1,r0,X add r2,r0,Y add r3,r0,Z add r4,r1,#32 ld f0,a ld f2,b bucle: ld f4,0(r1) multd f10,f0,f4 ld f6,0(r2) ld f8,0(r3) multd f12,f2,f6 add r2,r2,#8 ;b*Y ;a*X

add r3,r3,#8 addd f14,f10,f12 addd f16,f14,f8 sd 0(r1),f16 add r1,r1,#8 sub r5,r1,r4 ;a*X + b*Y ;a*X + b*Y + Z

ld f4,0(r1) multd f10,f0,f4 ld f6,0(r2) ld f8,0(r3) multd f12,f2,f6 add r2,r2,#8 add r3,r3,#8 addd f14,f10,f12 addd f16,f14,f8 sd 0(r1),f16 add r1,r1,#8 sub r5,r1,r4 ;a*X + b*Y ;a*X + b*Y + Z ;b*Y ;a*X

bnez r5, bucle trap #0

La ganancia con respecto al programa original es la siguiente:

b) Qu cambios realizara si el procesador utilizase la tcnica de anular siempre? Y en el caso de anular si no se salta? Y en el caso de anular siempre? En el caso que el procesador use la tcnica de anular siempre, tendramos que el trap nunca se ejecutar, ni siquiera en la ltima interacin, con lo que el programa no acabara nunca. Esto se soluciona insertando un simple nop justo despus del salto. add r1,r1,#8 sub r5,r1,r4 bnez r5, bucle nop trap #0

;Esta instruccin siempre se anular

En el caso de un procesador que anule si no se salta, significa que se predice que va a saltar, por tanto es conveniente poner debajo de la instruccin de salto la primera instruccin del bucle, de manera que esta solo se va a ejecutar si se produce el salto porque si no se produce no salta: bucle: ld f4,0(r1) bucle: multd f10,f0,f4 ;a*X ld f6,0(r2) ld f8,0(r3) multd f12,f2,f6 ;b*Y add r2,r2,#8 add r3,r3,#8 addd f14,f10,f12 ;a*X + b*Y addd f16,f14,f8 ;a*X + b*Y + Z sd 0(r1),f16 add r1,r1,#8 sub r5,r1,r4 bnez r5, bucle ld f4,0(r1) trap #0 En el caso de no anular nunca una instruccin, podemos solventarlo aprovechando esa instruccin para meter una del bucle mientras no influya en la condicin de salto cdigo. Como el siguiente ejemplo. bucle: ld f4,0(r1) multd f10,f0,f4 ld f6,0(r2) ld f8,0(r3) multd f12,f2,f6 add r2,r2,#8 addd f14,f10,f12 addd f16,f14,f8 sd 0(r1),f16 add r1,r1,#8 sub r5,r1,r4 bnez r5, bucle add r3,r3,#8 trap #0 ;a*X

;b*Y ;a*X + b*Y ;a*X + b*Y + Z

c) Utilice la tcnica de segmentacin software (software pipelining) para mejorar las prestaciones del programa (sin utilizar desenrollado de bucle) en el caso de anular si se salta. El software pipelining se basa en la paralelizacin del programa haciendo que en cada iteracin del bucle trabaje con datos independientes entre s, para ello hacemos dos bucles uno que realice una o dos iteraciones, y el siguiente los dems teniendo los registros ya aumentados para la siguiente iteracin: .data 0 a: b: X: Y: Z: .global a .double 1.0 .global b .double 2.0 .global X .double 1.0, 2.0, 3.0, 4.0 .global Y .double 5.0, 6.0, 7.0, 8.0 .global Z .double 9.0, 10.0, 11.0, 12.0 .text 256 start: add r1,r0,X add r2,r0,Y add r3,r0,Z add r4,r1,#32 ld f0,a ld f2,b bucle0: ld f4,0(r1) multd f10,f0,f4 ld f6,0(r2) ld f8,0(r3) multd f12,f2,f6 addd f14,f10,f12 addd f16,f14,f8 bucle: sd 0(r1),f16 add r2,r2,#8 add r1,r1,#8 add r3,r3,#8 ld f4,0(r1) multd f10,f0,f4 ld f6,0(r2) ld f8,0(r3) multd f12,f2,f6 addd f14,f10,f12 addd f16,f14,f8 sub r5,r1,r4 bnez r5, bucle nop trap #0 ;a*X

;b*Y ;a*X + b*Y ;a*X + b*Y + Z

;a*X ;b*Y ;a*X + b*Y ;a*X + b*Y + Z

El resultado en ciclos del programa anterior es el siguiente:

Se puede comprobar que es peor que los ciclos ejecutados por el programa original, esto se debe a la imposibilidad en el primer bucle de reorganizar las operaciones, al igual que en el segundo, as que por eso es por el que da peor resultado.

3. Se han encontrado dos posibles alternativas para la ejecucin de una funcin F en un cauce
con 5 etapas S1, S2, S3, S4, S5. La alternativa 1 visita las etapas segn la secuencia S1 S5 S1 S3 S2 S4 S4 S5, y la alternativa 2 en el orden S1 S2 S3 S2 S1 S3 S4 S2 S5. e) Cul de las dos alternativas permite ejecutar un nmero mayor de funciones por unidad de tiempo? Demuestre razonadamente su respuesta.

Etapa 1 2 3 4 5 6 7 S1 X X S2 X S3 X S4 X X S5 X Tabla 1. Tabla de reservas para la primera alternativa del cauce del problema 3. Etapa 1 2 3 4 5 6 7 8 S1 X X S2 X X X S3 X X S4 X S5 Tabla 2. Tabla de reservas para la segunda alternativa del cauce del problema 3.

El primer paso para responder al primer apartado es calcular la tabla de reservas para cada una de las dos alternativas (Tabla1 y Tabla2). A partir de esas tablas se pueden obtener las latencias prohibidas los vectores de colisiones de los dos cauces.

).

100011 3 100111 4, 5, 7,8+

4, 5, 7, 8+

).

101110
1 7, 8, 9+ 111111 5 7, 8, 9+ 7, 8, 9+ 101111 5

Para determina que alternativa tiene la mxima productividad, realizamos un diagrama de estados para cada cauce a partir de su vector de colisiones. Con ayuda de estos diagramas podemos encontrar los ciclos de latencia mnima de cada cauce:

Una vez calculadas las MLM de los dos cauces, sus tiempos de ejecucin se calculan mediante: ) ) Sus productividades: ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

Y sus productividades mximas: ) ) )

De estas expresiones se puede concluir que la productividad de la primera alternativa es mayor que la de la segunda. As que la primera alternativa nos permite ejecutar ms operaciones.

f) Obtenga adems la ganancia en velocidad que ofrecen cada una de las alternativas con respecto a su ejecucin sin cauce para 1000 operaciones, teniendo en cuenta que sin cauce la funcin requiere un tiempo de 20 ns; que las etapas del cauce suponen unos tiempos de ejecucin de: 6ns para S1, 5 ns para S2, 3 ns S3 y 4 ns para S4 y S5; y que los registros introducen retardos de 0.2 ns. Para responder a la segunda cuestin, primero debemos calcular el tiempo de ejecucin secuencial para n operaciones. ) Y el tiempo de ciclo de los circuitos segmentados. { } { }

Una vez calculados estos dos tiempos, la ganancia en velocidad de cada alternativa se define como: ) ) ) ) ) )

As que para obtener la ganancia obtenida al procesar 1000 operaciones, slo hay que sustituir n= 1000 en las ecuaciones anteriores. ) ) ) ) )

Você também pode gostar