Hoja de Ejercicios - Universidad de Alcalá

Anuncio
DEPARTAMENTO DE AUTOMÁTICA
Universidad de Alcalá
Arquitectura II
Ejercicios
1.- En un procesador de frecuencia 40 MHz. se ejecuta un benchmark con la siguiente mezcla de instrucciones y
ciclos:
Tipo
Aritmética entera
Transferencia de datos
Coma flotante
Transferencia de control
Nº Instrucciones
45.000
32.000
15.000
8.000
Ciclos
1
2
2
2
Calcular Ic, CPI, rendimiento y tiempo de ejecución.
2.- Considerar la ejecución de un programa con 200.000 instrucciones en un procesador a 40 Mhz. La relación de
instrucciones y número de ciclos se muestra en la siguiente tabla:
Tipo
Aritméticas y lógicas
Carga / Almacenamiento
Bifurcación
Referencias a memoria
CPI
1
2
4
8
%
60
18
12
10
Calcular CPI y rendimiento.
3.- Una estación de trabajo usa un procesador de 15 MHz. con un rendimiento de 10 MIPS para ejecutar un
programa dado. Asumir un ciclo de retardo para cada acceso a memoria.
a)
b)
¿Cuál es el número de ciclos por instrucción de este computador?
Suponer que se actualiza el procesador a una frecuencia de 30 MHz. sin modificar la velocidad de
memoria y consecuentemente necesitamos dos ciclos para accesos a memoria. Si el 30% de instrucciones
requiere un acceso a memoria y el 5% requiere dos accesos a memoria, ¿cuál es el rendimiento del nuevo
procesador?
4.- El tiempo de ejecución en segundos de 4 programas en tres computadores es el siguiente:
Programa
1
2
3
4
Comp. 1
1
1000
500
100
C omp. 2
10
100
1000
800
Comp. 3
20
20
50
100
Asumir que en cada programa se ejecutan 100.000.000 instrucciones. Calcular los MIPS de cada programa en
cada máquina. Analizar los resultados obtenidos. ¿Se obtiene alguna conclusión clara relativa a los
computadores?
5.- Considerar la ejecución de un programa de 15.000 instrucciones en un procesador segmentado con una
velocidad de reloj de 25 MHz. El cauce es de 5 etapas y se emite una instrucción por ciclo.
a)
b)
Calcular la ganancia frente a un computador no segmentado.
Calcular el rendimiento den MIPS del procesador.
6.- Un procesador no encauzado X tiene un reloj de 25 MHz. y una media de 4 ciclos por instrucción. Una mejora
de este procesador Y consiste en un procesador encauzado de 5 etapas, pero su reloj debe reducirse por los
‘latches’ a 20 MHz.
a)
b)
Si ejecutamos un programa de 100 instrucciones, ¿cuál es la ganancia del procesador Y frente al
procesador X?
Calcular el rendimiento en MIPS de los dos procesadores.
DEPARTAMENTO DE AUTOMÁTICA
Universidad de Alcalá
Arquitectura II
7.- Obtener el diagrama de estados del cauce con la tabla de reserva siguiente, y calcular los ciclos que tienen
latencia media mínima.
F1
F2
F3
F4
T0 T1 T2 T3 T4 T5 T6
x
x
x
x
x
x
x
Obtener el estado de ocupación del cauce cuando se lanzan operaciones según el ciclo de menor latencia media.
8.- Repetir el ejercicio para las siguientes tablas de reserva:
F1
F2
F3
F4
F5
T0 T1 T2 T3 T4 T5 T6 T7
x
x
x
x
x
x
x
x
x
F1
F2
F3
T0 T1 T2 T3
A
A
B AB
A
B B
F1
F2
F3
F4
T0 T1 T2 T3 T4 T5
A B
B A
B A AB
A
B A B
9.- El siguiente código calcula el producto escalar de dos vectores:
xor r1,r1,r1
xor r3,r3,r3
xor r4,r4,r4
Bucle:
lw
r5,vector1(r1)
lw
r6,vector2(r1)
multw r6,r6,r5
add r3,r3,r6
add r1,r1,#4
add r4,r4,#1
slt r7,r4,#NumElementos
bnez r7,Bucle
sw
ProdEscalar(r0),r3
a)
;pone un 0 en r1
;otro en r3
;otro en r4
;se carga una componente del vector 1
;se carga la equivalente del vector 2
;se multiplican (suponiendo que se pudiera)
;se acumula el producto
;actualización del índice
;incremento del contador
;se comprueba si se ha terminado
;repetir mientras queden componentes
;almacenar resultado
Para un cauce como el visto en clase (tema 3, transparencia 8), suponiendo que el código empieza a
ejecutarse en el ciclo 0, ¿en qué ciclo se empieza a ejecutar la instrucción ‘add r1,r1,#4’ por primera
vez? Explica la respuesta.
b) ¿Y la instrucción ‘lw r5,vector1(r1)’ por segunda vez?
c) ¿Y si utilizamos adelantamiento de resultados (tema 3, transparencia 19)?
d) Clasifica las dependencias de datos que se dan en el código.
e) Analiza las dependencias de control.
f) Explica cómo se ejecuta el código si se utiliza cada una de las 4 formas de tratar las dependencias de
control vistas en el tema 3. (Puede ser necesario modificar ligeramente el código al aplicar alguna de las
técnicas).
g) Suponiendo latencias de 2 ciclos para las instrucciones de carga y de 1 ciclo para las de proceso, reordena el
código de forma que se minimice el número de parones que se dan en la ejecución del dódigo.
DEPARTAMENTO DE AUTOMÁTICA
Universidad de Alcalá
Arquitectura II
10.- En el siguiente código:
xor r1,r1,r1
xor r3,r3,r3
xor r4,r4,r4
Bucle:
Lw
r5,vector1(r1)
Lw
r6,vector2(r1)
multw r6,r6,r5
add r3,r3,r6
add r1,r1,#4
add r4,r4,#1
slt r7,r4,#NumElementos
bnez r7,Bucle
sw
ProdEscalar(r0),r3
;pone un 0 en r1
;otro en r3
;otro en r4
;se carga una componente del vector 1
;se carga la equivalente del vector 2
;se multiplican (suponiendo que se pudiera)
;se acumula el producto
;actualización del índice
;incremento del contador
;se comprueba si se ha terminado
;repetir mientras queden componentes
;almacenar resultado
a) Aplicar un desenrollado de orden 4.
b) Explicar cómo se aplica el renombrado de registros para las 3 primeras iteraciones.
c) Suponiendo que se aplica el renombrado de registros y el adelantamiento de resultados, y el cauce es el del
tema 3, transparencia 19, pero adaptado a un superescalar de grado 4, ¿en qué ciclo se ejecuta la instrucción
‘add r1,r1,#4’ por primera vez?
d) ¿Y la instrucción ‘lw r5, vector1(r1)’ por segunda vez?
e) Suponiendo que el superescalar tiene ejecución fuera de orden, en qué ciclo se retiran estas dos
instrucciones?
11- El siguiente código en ensamblador calcula el producto escalar de dos vectores:
or
r1,r0,r0
Bucle:
ld
r2,VectorA(r1)
ld
r3,VectorB(r1)
mul
r4,r2,r3
add
r5,r5,r4
add
r1,r1,#4
cmpe r4,r1,#FinVector
bne
r4,bucle
Trazar la ejecución de este código en un procesador superescalar de ancho 4, con ejecución fuera de orden. El
procesador dispone de 6 registros lógicos (r0 a r5) y 12 físicos (f1 a f12). El cauce consta de las etapas de
búsqueda, decodificación, entrada en el ROB y renombramiento, ejecución, terminación y retirada /
almacenamiento. El ROB dispone de 10 entradas.
12.-Repetir el ejercicio anterior para el siguiente código que suma dos vectores:
or
r1,r0,r0
Bucle:
lw
r2,VectorA(r1)
lw
r3,VectorB(r1)
add
r4,r2,r3
stw
VectorC(r1),r4
add
r1,r1,#4
sgt
r4,r1,#FinVector
bne
r4,Bucle
DEPARTAMENTO DE AUTOMÁTICA
Universidad de Alcalá
Arquitectura II
13.-El siguiente fragmento de código:
xor r1,r1,r1 ;inicializar índice
xor r4,r4,r4 ;inicializar cuenta
Bucle:
lb r2,Texto(r1) ;carga letra
seqi r3,r2,’a‘ ;compara con la ‘a’
beqz r3,Seguir
addi r4,r4,#1 ;si es ‘a’, incrementa contador
Seguir:
addi r1,r1,#1 ;siguiente letra
slt r7,r1,#NumeroLetras ;comprobar fin del texto
bnez r7,Bucle
nop
cuenta el número de veces que aparece la letra ‘a’ en un texto.
a) Aplicar predicación para eliminar el salto interno al bucle.
b) Si el texto sobre el que trabaja es el siguiente: ‘¡Qué aburrido es estudiar arquitecturas avanzadas!’,
suponiendo que se dispone de un predictor basado en contadores de 2 bits con valores iniciales 01, con 1024
contadores, y un BTB de 32 entradas, y que el código está almacenado a partir de la dirección 1000h, cada
instrucción ocupando 4 bytes, ¿cuántos aciertos y cuántos fallos tiene el predictor en cada uno de los saltos
del código?
14.-Repetir el ejercicio anterior para el siguiente código, que cuenta el número de ceros y de unos que hay en una
lista de dígitos binarios:
or r5,r0,r0
or r4,r0,r0
or r1,r0,r0
Bucle:
lw r2,Lista(r1)
beqz r2,Cero
addi r4,r4,#1
j Seguir
Cero:
addi r5,r5,#1
Seguir:
addi r1,r1,#4
seqi r6,r1,#NumeroElementos*4
beqz Bucle
nop
en las mismas condiciones del ejercicio anterior, para la lista: 00100101001
15.-Se quieren sumar dos vectores en un procesador vectorial. Los elementos del primer vector están almacenados
en memoria con espaciado 17 (hay 16 palabras entre cada dos elementos del vector). Los elementos del segundo
vector tienen espaciado 3, y los elementos del vector resultado tienen espaciado 5. En cada ciclo, el cauce puede
leer dos valores de registros vectoriales y escribir un tercero a un registro. Cuando se carga un registro vectorial
desde la memoria, se necesita un ciclo para computar la dirección antes de comenzar el acceso a memoria. Cada
módulo de memoria tiene un tiempo de acceso de 16 ciclos. Suponiendo que la memoria tiene un entrelazado de
inferior de orden 16, ¿cuánto se tarda en sumar los dos vectores?
16.-Disponiendo de una máquina tipo SIMD, diseñar el algoritmo (incluyendo la disposición de datos) para
multiplicar dos matrices cuadradas.
17.-Repetir el ejercicio anterior para una máquina vectorial.
Descargar