La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Problemas Capitulo Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1.

Presentaciones similares


Presentación del tema: "Problemas Capitulo Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1."— Transcripción de la presentación:

1 Problemas Capitulo 3

2 2. Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1 addr3,r3,r4; r3=r3+r4 addr5,r0,0x1ac; r5=r0+0x1ac addr6,r0,0xc1f; r6=r0+0xc1f subr5,r5,#4; r5=r5-4 subr6,r6,#4; r6=r6-4 sw(r5),r3; m[r5]=r3 sw(r6),r4; m[r6]=r4 y suponiendo que se puedencaptar cuatro instrucciones por ciclo y emitir cuatro instrucciones por ciclo, indicar el orden en que se emitirán las instrucciones para cada uno de los siguientes casos:

3 a)Una ventana de instrucciones centralizada con emisión ordenada y alineada [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 [4] mul r4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f [1] lw r1, 0x1ac mulr4,r2,r1 Emite [1] Termina [3] Termina [2] Emite [4] Después de 6 ciclos Termina [4] mulr4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f mulr4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f *Termina [1] Emite [2] y [3]

4 a)Una ventana de instrucciones centralizada con emisión ordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 subr5,r5,#4 addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 subr5,r5,#4mulr4,r2,r1 sw(r6),r4 sw(r5),r3 subr6,r6,#4 Emite [5], [6] y [7] Termina [5], [6] y [7] Emite [8] Termina [8]

5 a)Una ventana de instrucciones centralizada con emisión ordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 sw(r6),r4 sw(r5),r3 subr6,r6,#4 Emite [9] y [10] sw(r6),r4 Termina [9] y [10] Emite [11] Orden de la emisión: 1-2-3-4-5-6-7-8-9-10-11

6 b)Una ventana de instrucciones centralizada con emisión desordenada y alineada [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 [4] mul r4,r2,r1 [3] add r3,r0,r0 [2] lw r2, 0xc1f [1] lw r1, 0x1ac mulr4,r2,r1 [2] lw r2, 0xc1fmulr4,r2,r1 Emite [1] y [3] Emite [2] *Termina [2] Emite [4] mulr4,r2,r1 [2] lw r2, 0xc1f mulr4,r2,r1 [2] lw r2, 0xc1f Termina [3] Termina [1]

7 b)Una ventana de instrucciones centralizada con emisión desordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 subr5,r5,#4 addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 subr5,r5,#4 addr3,r3,r4 mulr4,r2,r1 addr3,r3,r4 Emite [6] y [7] Termina [6] y [7] Emite [8] Termina [8] y [4]

8 b)Una ventana de instrucciones centralizada con emisión desordenada y alineada (continuación) [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 addr3,r3,r4 Emite [5] sw(r6),r4 sw(r5),r3 subr6,r6,#4sw(r6),r4 Emite [9] y [10] Emite [11] sw(r6),r4 Termina [9] y [10] Orden de la emisión: 1-3-2-4-6-7 8-5-9-10-11

9 c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 mulr4,r2,r1 addr3,r0,r0 lwr2,0xc1f lwr1,0x1ac ID/ISS LW ADD/ SUB MUL SW

10 c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 subr5,r5,#4 addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 lwr2,0xc1f lwr1,0x1ac addr3,r0,r0mulr4,r2,r1 ID/ISS LW ADD/ SUB MUL SW Se emite [1] y [3]

11 c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 sw(r6),r4 sw(r5),r3 subr6,r6,#4 subr5,r5,#4 lwr2,0xc1f addr6,r0,0xc1f addr5,r0,0x1ac addr3,r3,r4 mulr4,r2,r1 ID/ISS LW ADD/ SUB MUL SW Termina [3] Se emite [5], [6] y [7]

12 c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 lwr2,0xc1f subr6,r6,#4 subr5,r5,#4 mulr4,r2,r1 sw(r6),r4 sw(r5),r3 ID/ISS LW ADD/ SUB MUL SW Termina [1], [5], [6] y [7] Se emite [2], [8] y [9]

13 c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 mulr4,r2,r1 sw(r6),r4 sw(r5),r3 ID/ISS LW ADD/ SUB MUL SW Termina [8] y [9] Se emite [10]

14 c)Una estación de reserva de tres líneas para cada unidad funcional, con envío ordenado y ventana deslizante [1] lwr1, 0x1ac [2] lwr2, 0xc1f [3] addr3,r0,r0 [4] mulr4,r2,r1 [5] addr3,r3,r4 [6] addr5,r0,0x1ac [7] addr6,r0,0xc1f [8] subr5,r5,#4 [9] subr6,r6,#4 [10] sw(r5),r3 [11] sw(r6),r4 mulr4,r2,r1 sw(r6),r4 ID/ISS LW ADD/ SUB MUL SW Termina [2] y [10] Se emite [4] y 1c después [11]

15 3.¿Cómo renombraría un compilador los registros en la secuencia de instrucciones siguiente para que no existan riesgos WAW ni WAR y utilizando el menor número de registros posible? addr3,r2,r1; r3=r2+r1 subr2,r3,r2; r2=r2-r2 addr4,r2,r3; r4=r2+r3 multr3,r5,r3; r3=r5*r3 subr2,r4,r6; r2=r4-r6 ¿Cómo se realizaría el renombramiento en un buffer de renombramiento con acceso asociativo si se captan, decodifican hasta tres instrucciones por ciclo? ¿Cuánto tardarían en ejecutarse todas las instrucciones si add y sub consumen 2 ciclos y mult 5 ciclos y se pueden emitir hasta 3 instrucciones por ciclo (con emisión desordenada y no alineada)

16 ¿Cómo renombraría un compilador los registros en la secuencia de instrucciones siguiente para que no existan riesgos WAW ni WAR y utilizando el menor número de registros posible? addr3,r2,r1 subr2,r3,r2 addr4,r2,r3 multr3,r5,r3 subr2,r4,r6 addr3,r2,r1 subr2,r3,r2 addr4,r2,r3 multr3,r5,r3 subr2,r4,r6 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6

17 ¿Cómo se realizaría el renombramiento en un buffer de renombramiento con acceso asociativo si se captan, decodifican hasta tres instrucciones por ciclo? Asignación valida Registro de destino Contenido Contenido Valido Bit de asignación última 03X11 17Y11 04Z11 18U11 02V11 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6 addr3,r2,r1 subr7,r3,r2 addr4,r7,r3 multr8,r5,r3 subr2,r4,r6

18 ¿Cuánto tardarían en ejecutarse todas las instrucciones si add y sub consumen 2 ciclos y mult 5 ciclos y se pueden emitir hasta 3 instrucciones por ciclo (con emisión desordenada y no alineada) 1234567891011121314151617 add r3,r2,r1 sub r7,r3,r2 add r4,r7,r3 mult r8,r5,r3 sub r2,r4,r6 IFIDISSEXWB

19 En el siguiente código: ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle Si el procesador utiliza predicción dinámica de saltos con dos bits de historia, según el diagrama de estados que se indica a continuación, ¿Cuántos fallos de predicción se producen al ejecutar el código anterior si los bits de historia se inicializan a 00? No saltar (00) Saltar (10) No saltar (01) Saltar (11) 10.

20 No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = 1 r2 = 3 r2 = 2 r2 = 1 r2 = 0 Penalización

21 No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = 2 r2 = 3 r2 = 2 r2 = 1 r2 = 0 Fallos = 1

22 No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = 3 r2 = 2 r2 = 1 r2 = 0 Fallos = 3

23 No saltar (00) Saltar (10) No saltar (01) Saltar (11) ldf4,a bucle:ldf0, 0(r1) addf2, f4, f0 sdf2, 0(r1) addir1, r1, #8 subir2, r2, #1 bnezr2, bucle r2 = n (n>3) r2 = n-1 r2 = n-2 r2 = n-3 … r2 = 0 Fallos = 3

24 P.12 Considérese el bucle: for (i=1;i<=10;i++) { b[i]=a[i]*c; c=c+1; if (c>10) then goto etiqueta; } Etiqueta:… Indicar cuál es la penalización efectiva debida a los saltos, en función del valor inicial de c (numero entero), considerando que el procesador utiliza: –a) Predicción fija (siempre se considera que se va hacer el salto). –b) Predicción estática (si el desplazamiento es negativo se toma, y si es positivo, no) –c) Predicción dinámica con un bit (1=saltar; 0=no saltar; inicialmente esta a 1) Nota: La penalización por saltos incorrectamente predichos es de 4 ciclos, y para los saltos correctamente predichos, 0 ciclos.

25 P13. En la situación descrita en el problema anterior, ¿Cuál de los tres esquemas es más eficaz por termino medio si hay un 25% de probabilidades de que c sea menor o igual a 0, un 30% de que sea mayor o igual a 10; y un 45% de que sea cualquier número entre 1 y 9, siendo todos equiprobables?

26 P14. En un programa, una instrucción de salto condicional (a una instrucción anterior) dada tiene el siguiente comportamiento en una ejecución de dicho programa: SSNNNSSNSNSNSSSSSN donde S significa que se produce el salto, y N, que no. Se utiliza: a) Predicción fija (siempre se considera que no se va a producir el salto) b) Predicción estática (si el desplazamiento es negativo se toma, y si es positivo, no) c) Predicción dinámica con dos bits, inicialmente en el estado (11). d) Predicción dinámica con tres bits, inicialmente en el estado (111). Nota: La penalización por saltos incorrectamente predichos es de 5 ciclos, y para los saltos correctamente predichos, 0 ciclos.

27 a)SSNNNSSNSNSNSSSSSN => S = 11 => 55ciclos b)SSNNNSSNSNSNSSSSSN => S = 7 => 35ciclos c) SSN S SSNNNSSNSNSNSSSSSN 001101111111100001 11 saltos mal predichos 55c

28 111 011001 000 SSNNNSSNSNSNSSSSSN 001101110111100001 10 saltos mal predichos 50c 110100 010101

29 Si se dispone de un procesador superescalar con la siguiente configuración: –Una estación de reserva RS1 para las sumas y restas –Una estación de reserva RS2 para las multiplicaciones y las divisiones –Un buffer de reorden ROB, –Dos unidades de ejecución de suma/resta con una latencia de 2 ciclos –Una unidad de ejecución de multiplicaciones con una latencia de 5 ciclos –Una unidad de ejecución de divisiones con una latencia de 40 ciclos El procesador es capaz de emitir dos instrucciones por ciclo, las estaciones de reserva pueden realizar envíos no alineados y desordenados a las unidades de ejecución y se pueden retirar hasta dos instrucciones por ciclo. Si en la cola de instrucciones se encuentran las siguientes instrucciones. –adddf3, f1, f2;f3=f1+f2 –add f2, f3, f2;f2=f3+f2 –Multdf4, f2, f1;f4=f3*f2 –divd f5, f2, f1;f5=f2/f1 –Subdf2, f3, f1;f2=f3-f1 Y los registros f1 y f2 tienen inicialmente los valores 10 y 5, ¿Qué valores y en que ciclo se escribirá en los registros de la arquitectura?

30 El reordenamiento es como sigue I1, I2, I4, I3, I5 No se puede emitir por que el resultado debe escribirse en un registro que se usa en una operación en ejecución (f2) WAR

31 –f3 = f1+f2=>10+5=15 (f3) –f2 = f3+f2=>5+15= 20 (f2) –f4 = f3*f2=> 20*15=300 (f4) –f5 = f2/f1=>20/10= 2 (f5) –f2 = f3–f1=>15–10=5 (f2)


Descargar ppt "Problemas Capitulo Para el fragmento de código siguiente: lwr1, 0x1ac; r1=m[0x1ac] lwr2, 0xc1f; r2=m[0xc1f] addr3,r0,r0; r3=r0+r0 mulr4,r2,r1; r4=r2*r1."

Presentaciones similares


Anuncios Google