Escolar Documentos
Profissional Documentos
Cultura Documentos
Problema 1:
Supongamos un procesador VLIW cuyas instrucciones pueden decodificar hasta cuatro operaciones con las
restricciones que se muestran en la tabla. En dicha tabla tambin se incluye informacin de las latencias de
cada una de las unidades funcionales disponibles que se utilizan en este ejercicio. Las operaciones se pueden
decodificar de forma similar a como se haran en un repertorio de instrucciones RISC similar al DLX. Muestre
una forma posible de ejecutar el siguiente cdigo C. Suponga que el procesador dispone de 32 registros para
enteros R0 R31 de 64 bits, la direccin de inicio del cdigo es conocida y se encuentra en el registro R31, y
la direccin que indica que se ha acabado la matriz c[] esta en R30. Se sugiere desenrollar el bucle (hasta
cuatro iteraciones) para tener un mayor nmero de instrucciones entre saltos.
Unidad Funcional Latencia Op1 Op2 Op3 Op4 Operaciones realizadas por la unidad
ALU 1 X X X X Comparacin/suma/resta entera, operaciones lgicas
Memoria 3 X X Cargas y almacenamientos
Saltos 4 X Saltos condicionales e incondicionales
Solucin:
Asumiendo n=1000
int i
for(i=0;i<1000;i++)
a[i] = b[i] + c[i];
1/8
ALU/MEN ALU/MEN ALU/SALT ALU Ciclo
Loop LW R5, 0(R2) LW R6, 0(R3) 1
ADD R7, R6, R5 2
SW 0(R1), R7 3
ADDI R1, R1, #8 ADDI R2, R2, #8 ADDI R3, R3, #8 SUBI R4, R4, #1 4
BNEZ R4, Loop 5
2/8
Problema 2:
Suponga que en la sentencia if-then-else siguiente,
la parte del then se ejecuta casi siempre. Ilustra como el compilador puede mejorar el tiempo de ejecucin
utilizando procesamiento especulativo. Realiza una estimacin de la ganancia que se obtiene con la
especulacin en las condiciones establecidas para el procesador descrito en el problema anterior.
Solucin:
3/8
a[i] 0 (no salta)
Ganancia que se puede obtener teniendo en cuente que la parte then se ejecuta casi siempre.
4/8
a[i] 0 (no salta)
Problema 3:
Dada la secuencia de instrucciones VLIW siguiente:
Indicar como puede mejorarse el comportamiento de este cdigo utilizando una forma con predicado de la
instruccin lw. El procesador puede emitir, cada ciclo, una combinacin de operacin de referencia a
memoria y operacin a ALU, o una nica operacin de salto condicional.
Solucin:
La operacin de carga del registro r9, con el contenido de la direccin de memoria en r8 ( Lw r9, 0(r8)) podra
moverse para ocupar el hueco que hay delante del salto condicional (beqz), sobre todo si se sabe que lo ms
probable es que r8 sea distinto de cero y por lo tanto no se producir el salto. Por esta razn se utiliza la
instruccin (Lwc r9, 0(r8), r8), que se trata de una instruccin de carga condicional que da lugar a que r9 se
cargue con el contenido de la direccin r8, si r8 es distinto de cero.
5/8
Ahora implementamos la instruccin Lwc r9, 0(r8), r8 con predicados p1 y p2 y colocamos las instrucciones a
las unidades funcionales disponibles.
Problema 4:
Indicar como se podran utilizar instrucciones con predicado para mejorar el paralelismo entre instrucciones
(ILP) de la sentencia:
Podemos utilizar las instrucciones con predicado que consideremos oportunas para obtener el
comportamiento ms eficiente para este trozo de cdigo.
Solucin:
p1, p2 cmp. eq c, 0
<p1> add c, c, 1
<p2> sub c, c, 1
6/8
Problema 5:
En un procesador todas las instrucciones pueden predicarse. Para establecer valores de los predicados se
utilizan instrucciones de comparacin (cmp) con el formato (p) p1, p2 cmp.cnd x, y dende cnd es la condicin
que se comprueba entre x e y (lt, ge, eq, ne). Si la condicin es verdadera p1=1 y p2=0, y si es falsa, p1=0 y
p2=1. La instruccin solo se ejecuta si el predicado p=1 (habr sido establecido por otra instruccin de
comparacin).
En estas condiciones, utilizar instrucciones con predicado para escribir sin ninguna instruccin de salto el
siguiente cdigo:
Solucin:
lw r1, A // r1=A
lw r2, B // r2=B
lw r3, C // r3=C
lw r4, D // r4=D
add r5, r0, r0 // r5=0
p1, p2 cmp.gt r1, r2 // A>B?
(p2) p2, p3 cmp.lt r3, r4 // C<D?
(p1) addi r5, r0, #1 // r5=1
(p2) addi r5, r0, #2 // r5=2
(p3) addi r5, r0, #3 // r5=3
sw r5, X // X=r5
7/8
Problema 6:
Indicar como se transformara la siguiente secuencia de instrucciones de forma que solo se utilicen
instrucciones de transferencia condicional de datos (no debe haber ninguna instruccin de salto condicional).
Asegrese de que se mantenga el comportamiento del procesador frente a las posibles excepciones.
Solucin:
8/8