examen sept 06

7
ARQUITECTURA DE COMPUTADORES I Examen de Septiembre (4-9-2006)  1. (2 puntos) En un procesador VLIW cuyas instrucciones pueden codificar tres operaciones (tres campos o slots en cada instrucción VLIW), todas las operaciones pueden predicarse. Para establecer los valores de los predicados se utilizan instrucciones de comparación (cmp) con el formato (p) p1[, p2] cmp.cnd x,y donde cnd es la condición que se comprueba entre x e y (lt, ge, eq, ne,…). Si la condición es verdadera p1=1 [y p2=0], y si es falsa, p1=0 [y p2=1]. La operación sólo se ejecuta si el predicado p=1 (habrá sido establecido por otra instrucción de comparación). Indique cómo sería el código VLIW para la sentencia if (X > 2) then {Y = X; X = X/4;} else if ((X > 0) and (X < 1)) then {Y = 2*X; X = 4*X;}; sin ninguna operación de salto, teniendo en cuenta que las instrucciones de comparación sólo pueden aparecer en el primer campo o slot  de la instrucción VLIW (el resto de las instrucciones pueden aparecer en cualquier campo). Considere que dispone del número de unidades funcionales necesarias en cada momento. 2. (2 puntos) Suponga un procesador superescalar en que se captan y decodifican dos instrucciones por ciclo, se emiten tres instrucciones por ciclo como máximo (con emisión desordenada y no alineada, sin estaciones de reserva), y se retiran hasta dos instruccio nes por ciclo como máximo. La emisión y la ejecución son desordenadas, y las instrucciones, una vez decodificadas, se introducen en un buffer de reordenamiento (ROB) que permite la finalización ordenada del procesamiento de las instrucciones. Indique las dependencias entre instrucciones, los ciclos en los que se emiten las instrucciones para su ejecución y cómo evolucionaría el buffer de reordenamiento hasta que se hayan retirado todas las instrucciones de la siguiente secuencia de instrucciones almacenadas en la cola de instrucciones captadas: multd f1, f1, f2; f1 = f1 * f2 addd f3, f3, f2; f3 = f3 + f2 multd f4, f1, f3; f4 = f1 * f3 addd f5, f4, f2; f5 = f4 + f2 addd f3, f1, f3; f3 = f1 + f3 subd f5, f2, f1; f5 = f2 – f1 Suponiendo una frecuencia de 3.0 GHz, ¿cuánto tarda en procesarse la secuencia de instrucciones? ¿Cuál es la velocidad pico del  procesado r? Nota: La suma y la resta consumen dos ciclos de reloj y la multiplicación cuatro ciclos. Considere que no hay limitaciones en la capacidad de los buffers, pero sólo tiene un multiplicador y dos sumadores/restadores. Se supone que f1, f2, y f3 tienen valores válidos previos. 3. (1.5 punto)  Se han encontrado dos posibles alternativas para la ejecución de una función  F en un cauce con 4 etapas S1, S2, S3, S4. La alternativa 1 visita las etapas según la secuencia:  S1 S3 S2 S4 S1 S4 S4 , y la alternativa 2 en el orden: S1 S2 S3 S4 S3 S4 S2. (A) ¿Cuál de las dos alternativas permite ejecutar un número mayor de funciones por unidad de tiempo? Demuestre razonadamente su respuesta. (B) Obtenga además la ganancia en velocidad que ofrecen cada una de las alternativas con respecto a su ejecución sin cauce para 1000 operaciones, teniendo en cuenta que sin cauce la función requiere un tiempo de 15 ns; que las etapas del cauce suponen unos tiempos de ejecución de: 4ns para S1, 4 ns para S2, 3 ns S3 y 4 ns para S4; y que los registros introducen retardos de 0.1 ns. 4. (1 punto) Se dispone de una memoria de 16 Mbytes con entrelazado de orden inferior y acceso de tipo S (simultáneo) distribuida en módulos de 512 Kbytes. Se ha almacenado un vector de 113 componentes en posiciones de memoria consecutivas a partir de la  posición 21BC5h. ¿Cuántos accesos se necesitan para leer el vector completo ? ¿Y si el entrelazado fuera de orden superior (manteniendo el acceso de tipo S)? 5. (1.5 puntos) Se desea ejecutar el siguiente programa en un procesador superescalar: (1) lw r1, N (2) add r2, r0, r0 (3) bucle: lw r3, X(r2) (4) sgt r4, r3, r0 (5) bnz r4, mayor (6) sub r3, r0, r3 (7) mayor: sw X(r2), r3 (8) add r2, r2, #4 (9) sub r1, r1, #1 (10) bnz r1, bucle Si el procesador usa predictores dinámicos de dos bits que se inicializan con un predictor estático que predice como tomados los saltos hacia atrás y como no tomados los saltos hacia delante, y que la penalización en caso de errar la predicción es de 5 ciclos, ¿qué  penalizació n se obtendrá si  X (0) = 1 y  X (i+1) = 1 –  X (i)? ¿Qué penalización se obtendría si se optimizara el código usando sentencias de ejecución condicional?

Upload: david-puma-ventura

Post on 10-Oct-2015

24 views

Category:

Documents


0 download

TRANSCRIPT

  • 5/20/2018 Examen Sept 06

    1/7

    ARQUITECTURA DE COMPUTADORES I

    Examen de Septiembre (4-9-2006)

    1. (2 puntos)En un procesador VLIW cuyas instrucciones pueden codificar tres operaciones (tres campos o slots en cada instruccinVLIW), todas las operaciones pueden predicarse. Para establecer los valores de los predicados se utilizan instrucciones de

    comparacin (cmp) con el formato (p)p1[, p2] cmp.cnd x,ydonde cnd es la condicin que se comprueba entre xey(lt, ge, eq,ne,). Si la condicin es verdadera p1=1 [y p2=0], y si es falsa, p1=0 [y p2=1]. La operacin slo se ejecuta si el predicado p=1

    (habr sido establecido por otra instruccin de comparacin).Indique cmo sera el cdigo VLIW para la sentencia

    if (X > 2) then {Y = X; X = X/4;} else if ((X > 0) and (X < 1)) then {Y = 2*X; X = 4*X;};

    sin ninguna operacin de salto, teniendo en cuenta que las instrucciones de comparacin slo pueden aparecer en el primer campo o

    slotde la instruccin VLIW (el resto de las instrucciones pueden aparecer en cualquier campo). Considere que dispone del nmero deunidades funcionales necesarias en cada momento.

    2. (2 puntos) Suponga un procesador superescalar en que se captan y decodifican dos instrucciones por ciclo, se emiten tresinstrucciones por ciclo como mximo (con emisin desordenada y no alineada, sin estaciones de reserva), y se retiran hasta dos

    instrucciones por ciclo como mximo. La emisin y la ejecucin son desordenadas, y las instrucciones, una vez decodificadas, seintroducen en un buffer de reordenamiento (ROB) que permite la finalizacin ordenada del procesamiento de las instrucciones.

    Indique las dependencias entre instrucciones, los ciclos en los que se emiten las instrucciones para su ejecucin y cmo evolucionara

    el buffer de reordenamiento hasta que se hayan retirado todas las instrucciones de la siguiente secuencia de instruccionesalmacenadas en la cola de instrucciones captadas:

    multd f1, f1, f2; f1 = f1 * f2addd f3, f3, f2; f3 = f3 + f2multd f4, f1, f3; f4 = f1 * f3addd f5, f4, f2; f5 = f4 + f2addd f3, f1, f3; f3 = f1 + f3subd f5, f2, f1; f5 = f2 f1

    Suponiendo una frecuencia de 3.0 GHz, cunto tarda en procesarse la secuencia de instrucciones? Cul es la velocidad pico delprocesador?

    Nota:La suma y la resta consumen dos ciclos de reloj y la multiplicacin cuatro ciclos. Considere que no hay limitaciones en lacapacidad de los buffers, pero slo tiene un multiplicador y dos sumadores/restadores. Se supone que f1, f2, y f3 tienen valores

    vlidos previos.

    3. (1.5 punto) Se han encontrado dos posibles alternativas para la ejecucin de una funcin F en un cauce con 4 etapas

    S1, S2, S3, S4. La alternativa 1 visita las etapas segn la secuencia: S1 S3 S2 S4 S1 S4 S4, y la alternativa 2 en el orden:S1 S2 S3 S4 S3 S4 S2. (A) Cul de las dos alternativas permite ejecutar un nmero mayor de funciones por unidad de tiempo?

    Demuestre razonadamente su respuesta. (B) Obtenga adems la ganancia en velocidad que ofrecen cada una de las alternativas conrespecto a su ejecucin sin cauce para 1000 operaciones, teniendo en cuenta que sin cauce la funcin requiere un tiempo de 15 ns;

    que las etapas del cauce suponen unos tiempos de ejecucin de: 4ns para S1, 4 ns para S2, 3 ns S3y 4 ns para S4; y que los registrosintroducen retardos de 0.1 ns.

    4. (1 punto)Se dispone de una memoria de 16 Mbytes con entrelazado de orden inferior y acceso de tipo S (simultneo) distribuidaen mdulos de 512 Kbytes. Se ha almacenado un vector de 113 componentes en posiciones de memoria consecutivas a partir de la

    posicin 21BC5h. Cuntos accesos se necesitan para leer el vector completo? Y si el entrelazado fuera de orden superior(manteniendo el acceso de tipo S)?

    5. (1.5 puntos)Se desea ejecutar el siguiente programa en un procesador superescalar:

    (1) lw r1, N(2) add r2, r0, r0(3) bucle: lw r3, X(r2)(4) sgt r4, r3, r0(5) bnz r4, mayor(6) sub r3, r0, r3(7) mayor: sw X(r2), r3(8) add r2, r2, #4(9) sub r1, r1, #1(10) bnz r1, bucle

    Si el procesador usa predictores dinmicos de dos bits que se inicializan con un predictor esttico que predice como tomados los

    saltos hacia atrs y como no tomados los saltos hacia delante, y que la penalizacin en caso de errar la prediccin es de 5 ciclos, qupenalizacin se obtendr si X (0) = 1 y X (i+1) = 1 X (i)? Qu penalizacin se obtendra si se optimizara el cdigo usando

    sentencias de ejecucin condicional?

  • 5/20/2018 Examen Sept 06

    2/7

    Solucin al problema 1:

    El realizar un organigrama que refleje el comportamiento del cdigo ayuda bastante a la resolucin de este tipo de problemas, sobre todo a la hora dedecidir qu predicados se deben utilizar y dnde hay que colocarlos. Un posible organigrama para este problema podra ser el siguiente:

    Una vez diseado el organigrama, hay que colocar un predicado en cada una de las instrucciones que deban estar vigiladas, es decir que dependan de

    alguna condicin, y tras esto, la traduccin a cdigo es directa:

    1. addi r1, r0, #1 ; r1 = 12. addi r2, r0, #2 ; r2 = 23. ld r3, X(r0) ; r3 = X4. p1,p2 cmp.gt r3, r2 ; X > 2?5. p3 cmp.ne r0, r0 ; Inicializo p3

    6. p4 cmp.ne r0, r0 ; Inicializo p47. (p1) st r3, Y(r0) ; Y = r38. (p1) srai r3, r3, #2 ; r3 = r3 / 49. (p1) st r3, X(r0) ; X = r310. (p2) p3 cmp.gt r3, r0 ; X > 0?11. (p3) p4 cmp.lt r3, r1 ; X < 1?12. (p4) slli r4, r3, #1 ; r4 = r3 * 213. (p4) slli r3, r3, #2 ; r3 = r3 * 414. (p4) st r4, Y(r0) ; Y = r415. (p4) st r3, X(r0) ; X = r3

    En este cdigo hay que tener en cuenta las dependencias RAW a la hora de colocar las instrucciones en las slots de emisin. Las dependencias queaparecen son las siguientes:

    111 por r1 24 por r2

    34, 10, 11 por r3 47, 8, 9 por p1

    410 por p2 89 por r3

    1112, 13, 14, 15 por p4

    1214 por r4

    1315 por r3

    Teniendo en cuenta las dependencias RAW anteriores y que las instrucciones de comparacin slo pueden alojarse en el primer slot de emisin, unaposible colocacin de las instrucciones en memoria podra ser la siguiente:

    Slot 1 Slot 2 Slot 3

    p3 cmp.ne r0, r0 ld r3, X(r0) addi r1, r0, #1

    p1,p2 cmp.gt r3, r2

    (p2) p3 cmp.gt r3, r0 (p1) srai r3, r3, #2 addi r2, r0, #2

    p4 cmp.ne r0, r0 (p1) st r3, X(r0) (p1) st r3, Y(r0)

    (p3) p4 cmp.lt r3, r1

    (p4) slli r4, r3, #1 (p4) slli r3, r3, #2

    (p4) st r4, Y(r0) (p4) st r3, X(r0)

    Si

    No

    No

    No

    Si

    Si

    (p2)

    (p1) (p3)

    (p4)

    Inicio

    X>2?

    X>0?

    Y = X

    X = X / 4X

  • 5/20/2018 Examen Sept 06

    3/7

    Solucin al Problema 2:

    Ya que el procesador no dispone de estaciones de reserva, la lgica de emisin tiene que esperar a que los operandos le seanfacilitados por la lgica de bypass, por tanto, las dependencias RAW afectarn al orden de emisin de las instrucciones. Por otro

    lado, como se pueden decodificar hasta dos instrucciones por ciclo y emitir hasta tres, suponemos que cada una de estas tareas serealizarn en etapas diferentes del cauce. Es decir, que la etapas sern IF para captar instrucciones, ID para decodificarlas, ISS para

    emitirlas, EX para ejecutarlas, ROB para escribir los resultados en el ROB y WB para retirar las instrucciones del cauce. Lasdependencias entre instrucciones y los momentos de emisin de las mismas se muestran en la siguiente figura:

    Instruccin / Ciclo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    multd f1, f1, f2

    IF ID ISS EX EX EX EX ROB WBaddd f3, f3, f2 IF ID ISS EX EX ROB WBmultd f4, f1, f3 IF ID ISS EX EX EX EX ROB WBaddd f5, f4, f2 IF ID ISS EX EX ROB WBaddd f3, f1, f3 IF ID ISS EX EX ROB WBsubd f5, f2, f1 IF ID ISS EX EX ROB WB

    A continuacin pasamos a describir la evolucin del buffer de reorden:

    Ciclo 2:

    Se decodifican las instrucciones (1) y (2) yse introducen en el ROB

    # Cod. Op. Dest. Result. Ok

    1 multd f1 ? 0

    2 addd f3 ? 0

    Ciclo 3:

    Se decodifican las instrucciones (3) y (4) yse introducen en el ROB

    # Cod. Op. Dest. Result. Ok

    1 multd f1 ? 0

    2 addd f3 ? 0

    3 multd f4 ? 0

    4 addd f5 ? 0

    Ciclo 4:

    Se decodifican las instrucciones (5) y (6) yse introducen en el ROB

    # Cod. Op. Dest. Result. Ok

    1 multd f1 ? 0

    2 addd f3 ? 0

    3 multd f4 ? 0

    4 addd f5 ? 0

    5 addd f1 ? 0

    6 subd f5 ? 0

    Ciclo 6:

    Finaliza la instruccin (2) y se escribe elresultado en el ROB

    # Cod. Op. Dest. Result. Ok1 multd f1 ? 0

    2 addd f3 f3 + f2 1

    3 multd f4 ? 0

    4 addd f5 ? 0

    5 addd f1 ? 0

    6 subd f5 ? 0

    Ciclo 8:

    Finaliza la instruccin (1) y se escribe el

    resultado en el ROB

    # Cod. Op. Dest. Result. Ok

    1 multd f1 f1 * f2 1

    2 addd f3 f3 + f2 1

    3 multd f4 ? 0

    4 addd f5 ? 0

    5 addd f1 ? 0

    6 subd f5 ? 0

    Ciclo 9:

    Se retiran las instrucciones (1) y (2)

    # Cod. Op. Dest. Result. Ok

    3 multd f4 ? 0

    4 addd f5 ? 0

    5 addd f1 ? 0

    6 subd f5 ? 0

    Ciclo 10:

    Finalizan las instrucciones (5) y (6) y seescriben los resultados en el ROB

    # Cod. Op. Dest. Result. Ok

    3 multd f4 ? 0

    4 addd f5 ? 0

    5 addd f1 f1 + f3 1

    6 subd f5 f2 f1 1

    Ciclo 12:

    Finaliza la instruccin (3) y se escribe elresultado en el ROB

    # Cod. Op. Dest. Result. Ok

    3 multd f4 f1 * f3 1

    4 addd f5 ? 05 addd f1 f1 + f3 1

    6 subd f5 f2 f1 1

  • 5/20/2018 Examen Sept 06

    4/7

    Ciclo 13:

    Se retira la instruccin (3)

    # Cod. Op. Dest. Result. Ok

    4 addd f5 ? 0

    5 addd f1 f1 + f3 1

    6 subd f5 f2 f1 1

    Ciclo 14:

    Finaliza la instruccin (4) y se escribe el

    resultado en el ROB

    # Cod. Op. Dest. Result. Ok

    4 addd f5 f4 + f2 1

    5 addd f1 f1 + f3 1

    6 subd f5 f2 f1 1

    Ciclo 15:

    Se retiran las instrucciones (4) y (5)

    # Cod. Op. Dest. Result. Ok

    6 subd f5 f2 f1 1

    Ciclo 16:

    Se retira la instruccin (6)# Cod. Op. Dest. Result. Ok

    Si el procesador funciona a 3 GHz, el tiempo de procesamiento sera

    16 ciclos * 3,31010s/ciclo = 5,3109s = 5,3 ns

    Para la calcular la velocidad pico, como slo se pueden retirar dos instrucciones por ciclo, suponiendo que no hubiera atascos en el

    cauce se podran ejecutar 3 instrucciones por ciclo

    2 instr./ciclo * 3109

    ciclos/s = 6 GIPS

    Solucin al Problema 3:

    El primer paso para responder al primer apartado es calcular la tabla de reservas para cada una de las dos alternativas:

    Alternativa 1

    1 2 3 4 5 6 7

    S1 X X

    S2 X

    S3 X

    S4 X X X

    Alternativa 2

    1 2 3 4 5 6 7

    S1 X

    S2 X X

    S3 X X

    S4 X X

    Una vez calculadas las tablas de reservas es fcil obtener las latencias prohibidas y los vectores de colisiones de cada una de las

    alternativas:

    F1= {1,2,3,4} C1= (1111) F2= {2,5} C2= (10010)

    Para calcular determinar qu alternativa tiene la mxima productividad, realizamos un diagrama de estados a partir de cada vector decolisiones:

    Alternativa 1 Alternativa 2

    14

    10011

    10010

    11011

    6+

    3, 6+

    3, 6+

    4 3

    5+

    3

    1111

    La mnima latencia mnima de cada alternativa es:

    3,23

    3312

    )

    =++

    =MLM MLM1= 5

    Para ver qu alternativa es capaz de ejecutar ms operaciones por unidad de tiempo basta con calcular la productividad mxima de

    cada una de ellas. La productividad mxima se define como:

  • 5/20/2018 Examen Sept 06

    5/7

    MLMnMLMTLI

    n

    nT

    nnWW

    nnn

    1

    )1(lim

    )(lim)(limmax =

    +===

    Para cada una de las alternativas tenemos que:

    oinstr/cicl2,05

    11

    1

    max1 ===

    MLMW oinstr/cicl43,0

    3,2

    11

    2

    max2 === )

    MLMW

    con lo que podemos concluir que la segunda alternativa es mejor que la primera.

    Para responder a la segunda cuestin, debemos calcular tanto el tiempo secuencial como el de cada una de las alternativas para

    realizar 1000 operaciones. En el caso secuencial tenemos que:

    TSec(1000) = 1000 operaciones 15 ns/operacin= 15000 ns

    Y en el caso paralelo, el tiempo de ejecucin se define como:

    ( ))1()( += nMLMTLITnT clock

    El tiempo ciclo del reloj se puede obtener como:

    Tclock= mx{TS1, TS2, TS3, TS4} + Tacoplo= mx {4, 4, 3, 4} + 0,1 = 4 + 0,1 = 4,1 ns

    Por tanto, la ganancia en velocidad de cada una de las alternativas respecto al caso secuencial es de:

    ( )( )73,0

    11000571,4

    15000

    )1000(

    )1000()1000(

    1

    1 =+

    ==T

    TS Sec

    ( )( )56,1

    110003,271,4

    15000

    )1000(

    )1000()1000(

    2

    2 =+

    == )T

    TS Sec

    Solucin al Problema 4:

    El primer paso para resolver este problema es ver cmo se encuentran repartidos los elementos del vector entre los mdulos dememoria. Tenemos una memoria de 16 MB = 224 Bytes, repartida en mdulos de 512 KB = 219 Bytes, lo que quiere decir que

    tendremos un total de 25 = 32 mdulos de memoria. Si se utiliza entrelazado inferior y acceso tipo S para acceder a ellos, lasposiciones de memoria consecutivas se encontrarn en mdulos de memoria consecutivos, y como hay 32 mdulos, en el mdulo 0

    estarn todas las direcciones mltiplo de 32, 0x20 en hexadecimal. Teniendo esto en cuenta, y que el mayor mltiplo de 0x20 pordebajo de 0x021BC5 es 0x034BC0 (escribimos las direcciones con 6 dgitos para hacer hincapi en que la memoria tiene 16 MB, yque por tanto, se direcciona con direcciones de 24 bits o 6 dgitos hexadecimales), los datos estarn colocados en las posiciones de

    memoria sombreadas de la siguiente figura:

    Direccin 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F

    0x021BC0

    0x021BE0

    0x021C00

    0x021C20

    Con lo que para acceder a todos los datos del vector tendremos que generar las 4 direcciones de la primera columna de la tablaanterior, es decir, que son necesarios 4 accesos a memoria.

    En el caso de que se utilizara entrelazado superior, las posiciones de memoria consecutivas se encontraran en el mismo mdulo.

    Tanto la direccin de comienzo como la de final del vector se encontraran en el mdulo de memoria 0, que contendra las posicionesde memoria desde la direccin 0x0000000 a la 0x03FFFF (219 1), con lo que haran falta 113 accesos a memoria, tantos como

    componentes, para leer el vector.

  • 5/20/2018 Examen Sept 06

    6/7

    Solucin al Problema 5:

    El programa del enunciado calcula el valor absoluto de los elementos del vectorX. Va procesndolos de uno en uno y les cambia el

    signo si no son positivos. Consta de dos saltos, el primero de ellos, notado como S1 en el cdigo de ms abajo, sirve para detectar silos nmeros son positivos y el segundo, notado como S2, se emplea para volver a ejecutar el cdigo mientras queden elementos porprocesar en el vectorX.

    (1) lw r1, N(2) add r2, r0, r0(3) bucle: lw r3, X(r2)(4) sgt r4, r3, r0(5) bnz r4 mayor S1(6) sub r3, r0, r3(7) mayor: sw X(r2), r3(8) add r2, r2, #4(9) sub r1, r1, #1(10) bnz r1 bucle S2

    Para mejorar las prestaciones en la ejecucin de los saltos, el computador que se describe en el enunciado usa un predictor dinmicode dos bits para cada uno de los saltos que se encuentre en el programa. El esquema de este tipo de predictores es el siguiente:

    Para cada salto, su predictor dinmico se inicializar segn el predictor esttico del computador, que predice como tomados los saltoshacia atrs. Por tanto, el predictor dinmico para S1 se iniciar al valor 00 (no saltar fuerte), ya que es un salto hacia delante, y el

    predictor dinmico para S2 se iniciar al valor 11 (saltar fuerte) porque salta hacia atrs.

    Una vez inicializados los predoctores dinmicos, la penalizacin que introduzca cada uno de ellos depender del comportamiento decada salto. En el caso de S1, su comportamiento est determinado por el valor de cada elemento del vectorX. S1 Saltar siempre queX(i) sea mayor que cero, y segn el enunciado, el vector Xes de la formaX= {1, 0, 1, 0, 1, 0,}, por lo que S1 saltar una vez s y

    otra no hasta que se termine de procesar el vector X. Por tanto, el comportamiento del predictor dinmico para S1 viene explicadosegn la siguiente tabla:

    Iteracin 1 2 3 4 6 7 8

    Valor deX 1 0 1 0 1 0 1

    Estado actual 00 01 00 01 00 01 00

    Prediccin N N N N N N N

    Ejecucin S N S N S N S

    Penalizacin P P P P

    Estado siguiente 01 00 01 00 01 00 01

    Por lo que la penalizacin que introduce S1 es de:

    ciclos2

    5S1

    =

    NP

    El salto S2 saltar tantas veces como elementos tenga el vectorX, es decirNveces, ya que el programa se dedica a procesar dicho

    vector. Teniendo esto en cuenta, el comportamiento del predictor dinmico para S2 viene explicado segn la siguiente tabla:

    Iteracin 1 2 3 4 N 2 N 1 N

    Estado actual 11 11 11 11 11 11

    Prediccin S S S S S S S

    Ejecucin S S S S S S N

    Penalizacin P

    Estado siguiente 11 11 11 11 11 11 10

    11 10 01 00

    No saltardbil

    No saltarfuerte

    Saltardbil

    Saltarfuerte

    N N N

    S N

    S S S

  • 5/20/2018 Examen Sept 06

    7/7

    El comportamiento de este salto es muy fcil de predecir, ya que salta siempre excepto en la ltima iteracin del bucle, por lo queintroduce una penalizacin de:

    ciclos5S2 =P

    Por tanto, teniendo en cuenta los dos predictores, la penalizacin total es de:

    ciclos2

    15total

    +=N

    P

    Est claro que el comportamiento S1 no puede ser aprendido por el predictor dinmico, por lo que nos va a ocasionar muchas faltas,

    as que sera interesante cambiarlo por una sentencia de ejecucin condicional, tal y como muestra el siguiente cdigo:

    (1) lw r1, N(2) add r2, r0, r0(3) bucle: lw r3, X(r2)(4) sub r4, r0, r3(5) cmov.gt r4, r3, r3(7) sw X(r2), r4(8) add r2, r2, #4(9) sub r1, r1, #1(10) bnz r1 bucle S2

    En esta versin mantenemos el mismo nmero de instrucciones para ejecutar el algoritmo, y adems evitamos el salto S1, que

    depende del valor de cada componente deX, por lo que la penalizacin total del programa es de:

    ciclos5S2total == PP