Está en la página 1de 18

FEBRERO, 2004

Problema 1.

La máquina de la figura corresponde a un cauce escalar sin adelantamiento de


resultados. En los saltos, la actualización del contador de programa se realiza, como se
puede ver, durante la etapa de memoria de la propia instrucción de salto. Al encontrar
un salto, el cauce se para hasta que se resuelve. En cuanto al banco de registros, la
escritura se realiza con el flanco de bajada, y la lectura por nivel alto, por lo que se
puede realizar la escritura de un dato y su lectura en el mismo ciclo de reloj. Todas las
instrucciones de enteros tardan un solo ciclo en recorrer la fase de ejecución.
Considerar la ejecución de la primera iteración del siguiente bucle sobre este cauce. Suponiendo que exista la
instrucción div, calcula componente a componente el cociente de las componentes del vector 1 entre las del vector
2:

Bucle:
I1 lw r1,Vector1(r5)
I2 lw r2,Vector2(r5)
I3 seqi r3,r2,#0
I4 bnez r3,NoDividir
I5 div r4,r1,r2
I6 j Almacenar
NoDividir:
I7 ori r4,r0,#-1
Almacenar:
I8 sw Resultado(r5),r4
I9 sub r5,r5,#4
I10 bnez r5,Bucle
Suponer que el primer valor que se carga de Vector2 (en r2) es 0. Si el cauce realiza la búsqueda de la primera
instrucción (I1) en el ciclo 0:

6.- La instrucción I5 entra en la fase de ejecución en el ciclo:


a) 6
b) 8
c) 10
d) La instrucción I5 no se ejecuta en la primera iteración.

7.- La instrucción I7 entra en la fase de ejecución en el ciclo:


a) 7
b) 9
c) 11
d) 13

Si se añade un camino de realimentación de resultados únicamente del final de la etapa


de ejecución a su inicio:
8.- La instrucción I3 entra en la fase de ejecución en el ciclo:
a) 4
b) 5
c) 6
d) 7

9.- La instrucción I7 entra en la fase de ejecución en el ciclo:


a) 7
b) 9
c) 11
d) 13

Si además del camino de realimentación mencionado se añade otro del final de la etapa
de memoria al inicio de la de ejecución:
10.- La instrucción I3 entra en la fase de ejecución en el ciclo:
a) 4
b) 5
c) 6
d) 7

11.- Y la instrucción I7 entra en ejecución en el ciclo:


a) 8
b) 9
c) 10
d) 11

Problema 2.

12.- Se dispone de un procesador segmentado con un cauce de 6 etapas y un reloj de 30 MHz. Para la ejecución
de 20 instrucciones, la ganancia de este procesador frente al mismo sin segmentar es de:
a) 0.21
b) 4.8
c) 6
d) 12

13.- Y la ganancia del procesador segmentado anterior frente a otro también segmentado pero en 4 etapas con un
reloj de 20 Mhz es:
a) 0.73
b) 1.38
c) 1.5
d) 6
PARTE 2: LABORATORIO

Ejercicio1 (2,25 puntos)


Aplicando desenrollado de orden 2 y reordenación, optimizar la ejecución del siguiente
bucle, suponiendo que se ejecuta en un procesador segmentado con cinco etapas:
búsqueda de instrucción, decodificación y lectura de operandos, ejecución, acceso a
memoria y almacenamiento de resultados. El cauce cuenta con todos los caminos de
realimentación de resultados necesarios e implementa la ejecución retardada de saltos
con 1 hueco de retardo. La ejecución de todas las instrucciones dura 1 ciclo.

Bucle:
lw r1,Vector1(r5)
lw r2,Vector2(r5)
seqi r3,r2,#0
bnez r3,NoDividir
nop
div r4,r1,r2
j Almacenar
nop
NoDividir:
ori r4,r0,#-1
Almacenar:
sw Resultado(r5),r4
sub r5,r5,#4
bnez r5,Bucle
nop

Ejercicio 2 (1,25 puntos)


A partir de sus elementos básicos (registros, multiplexores, demultiplexores, puertas,
etc), diseñar el cauce que implementa la siguiente tabla de reserva (para modelar las
etapas, utilizar bloques que copian su entrada a su salida con un retardo):

X X X
X
X
X
Ejecución del código en el cauce del problema 1 de la primera parte.

Cuestiones 6 y 7

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
I1 lw r1,Vector1(r5) if id ex mm wb
I2 lw r2,Vector2(r5) if id ex mm wb
I3 seqi r3,r2,#0 if - - id ex mm wb
I4 Bnez r3,NoDividir if - - id ex mm wb
I5 Div r4,r1,r2 if Ejecución cancelada
I7 ori r4,r0,#-1 - - if id ex mm

Cuestiones 8 y 9

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
I1 lw r1,Vector1(r5) if id ex mm wb
I2 lw r2,Vector2(r5) if id ex mm wb
I3 seqi r3,r2,#0 if - - id ex mm wb
I4 Bnez r3,NoDividir if id ex mm wb
I5 Div r4,r1,r2 if Ejecución cancelada
I7 ori r4,r0,#-1 - - if id ex mm wb

Cuestiones 10 y 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
I1 lw r1,Vector1(r5) if id ex mm wb
I2 lw r2,Vector2(r5) if id ex mm wb
I3 seqi r3,r2,#0 if - id ex mm wb
I4 Bnez r3,NoDividir if id ex mm wb
I5 Div r4,r1,r2 if Ejecución cancelada
I7 ori r4,r0,#-1 - - if id ex mm wb
SEPTIEMBRE, 2004
Problema 1.

El siguiente código recorre una lista de 10 enteros con los siguientes valores:
‘0011101101’, y cuenta cuántos unos y cuántos ceros tiene. La CPU en la que se
ejecuta dispone de un predictor de saltos basado en contadores de 2 bits con el criterio
0x = no tomado; 1x = tomado, y valores iniciales 01. Se trata de un predictor estándar
con 1024 contadores y un BTB de 32 entradas. El código está almacenado a partir de
la dirección 1000h. Teniendo en cuenta que cada instrucción ocupa 4 bytes, responder
a las preguntas que se hacen a continuación del código:

I1 or r5,r0,r0
I2 or r4,r0,r0
I3 or r1,r0,r0
Bucle:
I4 lw r2,Lista(r1)
I5 beqz r2,Cero
I6 addi r4,r4,#1
I7 j Seguir
Cero:
I8 addi r5,r5,#1
Seguir:
I9 addi r1,r1,#4
I10 seqi r6,r1,#NumeroElementos*4
I11 beqz Bucle
I12 nop

7.- El contador que corresponde a la instrucción I7 es el número:


a) 6.
b) 7.
c) 24 (decimal).
d) A la instrucción I5 no le corresponde contador.

8.- El contador que corresponde a la instrucción I8 es el número:


a) 7.
b) 8.
c) 28 (decimal).
d) A la instrucción I8 no le corresponde contador.

Para las siguientes cuestiones, considerar que la primera vez que se ejecuta el cuerpo del bucle es la primera
iteración.

9.- En la tercera iteración, el contador de la instrucción I5 (antes de ejecutarse la instrucción) tiene el valor (todas
las opciones son un valor en binario):
a) 00.
b) 01.
c) 10.
d) 11.

10.- En la tercera iteración, el contador de la instrucción I11 (antes de ejecutarse la instrucción) tiene el valor (todas
las opciones son un valor en binario):
a) 00.
b) 01.
c) 10.
d) 11.
Aviso: en las siguientes dos cuestiones, considerar el funcionamiento del BTB.

11.- A lo largo de las 7 primeras iteraciones, el salto de la instrucción I5 se ha predicho correctamente en:
a) 0 ocasiones.
b) 3 ocasiones.
c) 4 ocasiones.
d) 7 ocasiones.

12.- A lo largo de las 7 primeras iteraciones, el salto de la instrucción I11 se ha predicho correctamente en:
a) 0 ocasiones.
b) 6 ocasiones.
c) 7 ocasiones.
d) La instrucción I11 no se ejecuta siempre a lo largo de las 7 primeras iteraciones.
Problema 2.

Considerar la siguiente figura.

La figura corresponde a las dos primeras etapas de un cauce escalar. El resto del cauce está compuesto
por las etapas de ejecución, acceso a memoria y almacenamiento de resultados. El cauce no dispone de
ningún camino de realimentación de resultados. En los saltos, la actualización del contador de programa
se realiza, como se puede ver, durante la etapa de ejecución de la propia instrucción de salto. Al
encontrar un salto, el cauce se para hasta que se resuelve, momento en el que pasa a realizarse la
búsqueda de la siguiente instrucción. En cuanto al banco de registros, la escritura se realiza con el
flanco de bajada del reloj, y la lectura por nivel alto, por lo que se puede realizar la escritura de un dato
y su lectura en el mismo ciclo de reloj. Todas las instrucciones de enteros tardan un solo ciclo en
recorrer la fase de ejecución.
Considerar la ejecución del siguiente fragmento de código:

Bucle:
I1 lw r1,Vector(r5)
I2 lw r2,Vector+4(r5)
I3 seqi r3,r2,r1
I4 beqz r3,Distintos
I5 sw Mascara(r5),r1
Distintos:
I6 add r5,r5,4
I7 cmp r4,r5,Fin
I8 bnez r4,Bucle

Suponer que los valores que cargan las instrucciones I1 e I2 (r1 y r2) son distintos en la primera iteración. La
instrucción I1 entra en la fase de búsqueda en el ciclo 0.

13.- La instrucción I4 entra en la fase de ejecución en el ciclo:


a) 7.
b) 8.
c) 9.
d) La instrucción I4 no se ejecuta.

14.- La instrucción I7 entra en la fase de ejecución en el ciclo:


a) 8.
b) 13.
c) 14.
d) 15.

Suponer ahora que se añaden todos los posibles caminos de realimentación de datos.

15.- La instrucción I4 entra en la fase de ejecución en el ciclo:


a) 5.
b) 7.
c) 8.
d) La instrucción I4 no se ejecuta.

16.- La instrucción I7 entra en la fase de ejecución en el ciclo:


a) 8.
b) 9.
c) 11.
d) 12.
PARTE 2: LABORATORIO.
Ejercicio1 (1 punto).
Reordenar el siguiente código para eliminar la mayor cantidad de parones posible. El cauce tiene
las mismas características que el que se modela en el simulador DLXVSim. (Se considera
permisible modificar los registros que usan las instrucciones y los valores con los que se forman las
instrucciones de acceso a memoria. No es permisible eliminar ni añadir instrucciones. El código
modificado debe realizar la misma función).

lw r2,Vector(r1)
lw r3,Mascara(r1)
and r4,r3,r2
lw r3,Tabla(r4)
lw r2,Datos(r1)
add r3,r2,r3
or r4,r4,r2
sw Resultados(r3),r4

Ejercicio 2 (1 punto).
Segmentar el siguiente cauce para obtener la mayor ganancia posible, y calcular esta ganancia
frente al cauce no segmentado.

10 ns

10 ns 10 ns

10 ns 10 ns

10 ns

10 ns
FEBRERO, 2005
Problema 1.

Cada cuestión respondida correctamente suma 0,5 puntos. Cada cuestión respondida
incorrectamente resta 0,2 puntos. Las cuestiones no respondidas no restan
puntuación.

Considerar la siguiente figura.

La figura corresponde a las dos primeras etapas de un cauce escalar. El resto del cauce está compuesto
por las etapas de ejecución, acceso a memoria y almacenamiento de resultados. El cauce no dispone de
ningún camino de realimentación de resultados. Al encontrar un salto, el cauce continúa la ejecución por
la instrucción siguiente hasta que se resuelve. En ese momento, si el salto no se toma, continúa la
ejecución como si no hubiera pasado nada, mientras que si el salto sí se toma, se anula la ejecución de
las instrucciones incorrectamente ejecutadas y se continúa la ejecución por el lugar correcto, el destino
del salto. En cuanto al banco de registros, la escritura se realiza con el flanco de bajada del reloj, y la
lectura por nivel alto, por lo que se puede realizar la escritura de un dato y su lectura en el mismo ciclo
de reloj. Todas las instrucciones de enteros tardan un solo ciclo en recorrer la fase de ejecución.
Considerar la ejecución del siguiente fragmento de código:

I1 lw r1,Lista(r5)
I2 add r4,r1,r3
I3 sub r5,r5,#4
I4 bnez r5,Etiqueta
I5 sw Buffer(r5),r4
Etiqueta:
I6 add r6,r4,r7
I7 sub r8,r6,r9

Suponer que el valor de r5 antes de comenzar a ejecutarse el código es distinto de 4. La instrucción I1 entra en la
fase de búsqueda en el ciclo 0.

5.- La instrucción I4 entra en su etapa de ejecución en el ciclo:


a) 7
b) 8
c) 9
d) 11

6.- La instrucción I7 entra en su etapa de ejecución en el ciclo:


a) 13
b) 15
c) 17
d) 19

Suponer ahora que se añade un camino de realimentación de resultados del final de la etapa de ejecución a su
inicio.

7.- La instrucción I4 entra en su etapa de ejecución en el ciclo:


a) 7
b) 8
c) 9
d) 10

8.- La instrucción I7 entra en su etapa de ejecución en el ciclo:


a) 11
b) 13
c) 15
d) 17

Suponer que, además del camino mencionado, se añade otro del final de la etapa de memoria al inicio de la de
ejecución:

9.- La instrucción I7 entra en su etapa de ejecución en el ciclo:


a) 9
b) 12
c) 13
d) 15
Problema 2.

Cada cuestión respondida correctamente suma 0,25 puntos. Cada cuestión


respondida incorrectamente resta 0,1 puntos. Las cuestiones no respondidas no
restan puntuación.

Un cauce bifunción dinámico tiene la siguiente tabla de reserva:

AB A B
A B A
B A A
B B

10.- ¿Cuál de las siguientes secuencias de latencias no es permitida?


a) a,a1,b4,a1,b4...
b) a,a1,b4,a2,b4,a2,b4...
c) a,b2,a2, b4,a2,b4...
d) a,b2,a3,b2,a3,b2...

11.- ¿Cuál de las siguientes secuencias de latencias es prohibida?


a) a,a1,b4,a2,a1,b4...
b) a,a1,b2,a3,a1,b2...
c) a,a4,b2,a2,a4,b2...
d) a,a1,b4,a3,a4,b4...

12.- ¿Cuál de las siguientes secuencias no es permitida?


a) b,a2,b4,a2,b4...
b) b,a3,b2,a3,b2…
c) b,a4,b2,a4,b2…
d) b,a2,b2,a2,b2…

13.- ¿Cuál de las siguientes secuencias es prohibida?


a) b,a2,a1,b4,a2,a1...
b) b,a3,a4,b4,a3,a4...
c) b,a2,a3,b4,a2,a3...
d) b,a2,a4,b4,a2,a4...

14.- ¿Cuál de las siguientes secuencias sí es permitida?


a) b,b2,a2,b4,b2,a2...
b) b,b3,a2,b4,b3,a2…
c) b,b2,a1,b4,b2,a1…
d) b,b3,a1,b2,b3,a1…

15.- ¿Cuál de las siguientes secuencias sí es permitida?


a) a,b4,b2,a2,b4,b2…
b) a,b4,b2,a3,b4,b2…
c) a,b2,b2,a1,b2,b2…
d) a,b4,b4,a2,b4,b4…
PARTE 2: LABORATORIO

Ejercicio1 (2 puntos)
Considerar el fragmento de código que figura a continuación. Teniendo en cuenta que se va a
ejecutar sobre el simulador DLXVSim (y por lo tanto se asumen todas sus características por
omisión):
a) Calcular cuántos ciclos de trabajo útil se pierden en cada iteración del bucle
(incluyendo parones, ciclos de nop, es decir, de no operación, etc.).
b) Reordenar el código para aprovechar el mayor número de ciclos perdidos posible
con trabajo útil.

Bucle:
lw r2,Vector1(r1)
lw r3,Vector2(r1)
seqi r4,r3,r2 Parón
beqz r4,Distintos
nop Parón
xor r5,r0,#1
j Fin
nop Parón
Distintos:
ori r5,r0,r0
Fin:
sw Resultado(r5),r4
subi r1,r1,#4
bnez r5,Bucle
nop Parón
La ejecución da 10 o 12 instrucciones ejecutadas según el camino recorrido, con los parones señalados.

Una posible reordenación (no la única) es:

Bucle:
lw r2,V1(r1)
lw r3,V2(r1)
subi r1,r1,#4
seqi r4,r3,r2
beqz r4,Distintos
ori r5,r0,r0
(j Fin)
xor r5,r0,#1
Fin:
Distintos:
bnez r5,Bucle
sw Resultado(r5),r4

Esta ejecución da 8 o 10 (9 sin el jump) instrucciones ejecutadas, según el camino recorrido.


Ejercicio 2 (2 puntos)
Considerar el siguiente operador segmentado. Los valores en las cajas representan el retardo en
nanosegundos, al estilo de la práctica 0. Las cajas sombreadas representan latches o registros, y
su retardo es el valor que aparece a su derecha. Se supone que todos los registros están
gobernados por una única señal de reloj.

10 5

10 5

a) ¿Qué frecuencia de reloj máxima (o período mínimo) admite el operador?


b) Obtener la expresión de la ganancia de este operador frente al mismo sin segmentar. ¿Qué
valor toma para cantidades arbitrariamente grandes de datos procesados?
c) ¿A partir de qué cantidad de datos el operador segmentado tiene un rendimiento mejor
(estrictamente) que el mismo sin segmentar?

La frecuencia máxima (período mínimo) viene determinada por la etapa más larga, en este caso, 15ns.

La ejecución sin segmentar, por lo tanto (si incluir latches), sería de 30ns, del camino más largo, para cada dato que
recorra el operador. Si se segmenta, la expresión es:
T=4*15+(n-1)*15,
donde n es el número de datos que recorre el operador. De aquí, la ganancia sería:
G=30n/[45+(n-1)*15]
Para valores arbitrariamente grandes de n, la ganancia tiende a 2.

El operador segmentado es estrictamente mejor cuando la ganancia es estrictamente mayor que 1. De la


inecuación:
1<30n/[60+(n-1)*15]
se obtiene un valor de n que debe ser estrictamente mayor que 3.
SEPTIEMBRE, 2005
Problema 1.

Cada cuestión respondida correctamente suma 0,5 puntos. Cada cuestión respondida
incorrectamente resta 0,2 puntos. Las cuestiones no respondidas no restan
puntuación.

Considerar la siguiente figura.

La figura corresponde a un cauce escalar. El cauce no dispone de ningún camino de realimentación de


resultados. Al encontrar un salto, el cauce continúa la ejecución por la instrucción siguiente hasta que se
resuelve. En ese momento, si el salto no se toma, continúa la ejecución como si no hubiera pasado nada,
mientras que si el salto sí se toma, se anula la ejecución de las instrucciones incorrectamente ejecutadas
y se continúa la ejecución por el lugar correcto, el destino del salto. En cuanto al banco de registros, la
escritura se realiza con el flanco de bajada del reloj, y la lectura por nivel alto, por lo que se puede
realizar la escritura de un dato y su lectura en el mismo ciclo de reloj. Todas las instrucciones de enteros
tardan un solo ciclo en recorrer la fase de ejecución.

Considerar la ejecución del siguiente fragmento de código:

I1 lw r1,Lista(r5)
I2 add r4,r1,r3
I3 sub r5,r5,#4
I4 bnez r5,Etiqueta
I5 sw Buffer(r5),r4
Etiqueta:
I6 add r6,r4,r7
I7 sub r8,r6,r9

Suponer que el valor de r5 antes de comenzar a ejecutarse el código es distinto de 4. La instrucción I1 entra en la
fase de búsqueda en el ciclo 0.
5.- La instrucción I4 entra en su etapa de ejecución en el ciclo:
a) 7
b) 8
c) 9
d) 10

6.- La instrucción I7 entra en su etapa de ejecución en el ciclo:


a) 11
b) 12
c) 13
d) 14

Suponer ahora que se añade un camino de realimentación de resultados del final de la etapa de ejecución a su
inicio.

7.- La instrucción I4 entra en su etapa de ejecución en el ciclo:


a) 6
b) 7
c) 8
d) 9

8.- La instrucción I7 entra en su etapa de ejecución en el ciclo:


a) 9
b) 10
c) 11
d) 12

Suponer que, además del camino mencionado, se añade otro del final de la etapa de memoria al inicio de la de
ejecución:

9.- La instrucción I4 entra en su etapa de ejecución en el ciclo:


a) 8
b) 7
c) 6
d) 5

10.- La instrucción I7 entra en su etapa de ejecución en el ciclo:


a) 12
b) 11
c) 10
d) 9

PARTE 2: PROBLEMAS Y LABORATORIO

Problema 3 (1,5 puntos)

Indicar cómo aplicaría el procesador el renombrado de registros al siguiente fragmento de código:

lw r1,Vector(r2)
bnez r1,Seguir
add r1,r1,r5
sw Acumulado(r2),r1
Seguir:
lw r3,Lista(r2)
sub r3,r3,r1
sw Restas(r2),r3
bnez r3,Bucle
LABORATORIO

Ejercicio1 (2 puntos)
Considerar el fragmento de código que figura a continuación. Teniendo en cuenta que se
va a ejecutar sobre el simulador DLXVSim (y por lo tanto se asumen todas sus
características por omisión, salvo las que se mencionan en este enunciado):

Bucle:
ld f0,Lista(r1)
ld f2,Lista+8(r1)
addd f4,f2,f0
subd f6,f2,f0
sw Mascaras(r1),f6
muld f4,f4,f16
sw Combinacion(r1),f4
add r1,r1,#8
seqi r2,r1,#Fin
beqz Bucle

Las instrucciones addd y subd tienen 2 ciclos de duración, y las instrucción muld 4 ciclos. Pare el resto considerar
las latencias por omisión.

Desenrollar con un factor de desenrollado de 3 (y reordenar, si procede) el bucle para


eliminar los parones. El bucle tiene 32 iteraciones.

Soluciones
Problema 1

I1 lw r1,Lista(r5)
I2 add r4,r1,r3
I3 sub r5,r5,#4
I4 bnez r5,Etiqueta
I5 sw Buffer(r5),r4
Etiqueta:
I6 add r6,r4,r7
I7 sub r8,r6,r9

Ejecución del código en el cauce del problema 1 de la primera parte.

Cuestiones 5 y 6
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
I1 lw r1,Lista(r5) IF ID EX MM WB
I2 add r4,r1,r3 IF -- -- ID EX MM WB
I3 sub r5,r5,#4 IF ID EX MM WB
I4 bnez r5,Etiqueta IF -- -- ID EX MM WB
I5 sw Buffer(r5),r4 IF Ejecución Cancelada
I6 add r6,r4,r7 IF ID EX MM WB
I7 sub r8,r6,r9 IF -- -- ID EX
Cuestiones 7 y 8
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
I1 lw r1,Lista(r5) IF ID EX MM WB
I2 add r4,r1,r3 IF -- -- ID EX MM WB
I3 sub r5,r5,#4 IF ID EX MM WB
I4 bnez r5,Etiqueta IF -- -- ID EX MM WB
I5 sw Buffer(r5),r4 IF Ejecución Cancelada
I6 add r6,r4,r7 IF ID EX MM WB
I7 sub r8,r6,r9 IF ID EX MM WB

Cuestiones 9 y 10
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
I1 lw r1,Lista(r5) IF ID EX MM WB
I2 add r4,r1,r3 IF ID -- EX MM WB
I3 sub r5,r5,#4 IF -- ID EX MM WB
I4 bnez r5,Etiqueta IF -- -- ID EX MM WB
I5 sw Buffer(r5),r4 IF Ejecución Cancelada
I6 add r6,r4,r7 IF ID EX MM WB
I7 sub r8,r6,r9 IF ID EX MM WB

También podría gustarte