Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Problema 1.
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:
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
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
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
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
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.
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.
Suponer ahora que se añaden todos los posibles caminos de realimentación de datos.
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.
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.
Suponer ahora que se añade un camino de realimentación de resultados del final de la etapa de ejecución a su
inicio.
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:
AB A B
A B A
B A A
B B
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.
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
10 5
10 5
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.
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.
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
Suponer ahora que se añade un camino de realimentación de resultados del final de la etapa de ejecución a su
inicio.
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:
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.
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
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