abrir

Anuncio
Apellidos __________________________________________ Nombre ______________________
Arquitectura de Computadores. Examen final 4/02/2014. Problemas.
1. (3 puntos) Disponemos de un procesador con planificación dinámica de instrucciones y especulación
que utiliza un ROB suficientemente grande. Se dispone de las unidades funcionales que se muestran en la
tabla siguiente:
UF
FP ADD/SUB
FP MUL/DIV
Cantidad
2
1
Latencia
3/3
5/10
Segmentación
No
No
Se supone que en un mismo ciclo no se puede escribir un dato en el bus común e iniciar la ejecución de
una operación que estuviera en espera de ese dato, y que existe una estación de reserva por cada unidad
funcional.
Para la secuencia de instrucciones de la tabla siguiente, indica en qué ciclo (o ciclos) de reloj se realiza
cada una de sus fases. Indica qué tipos de riesgos se producen.
Instrucción
DIVD F2, F2, F6
ADDD F4, F6, F4
MULD F8, F2, F4
DIVD F0, F6, F4
ADDD F2, F4, F0
ADDD F8, F8, F10
MULD F0, F2, F8
SUBD F12, F2, F4
Issue
Emisión
1
2
E.R
13
E.R
20
21
22
E.R
32
33
Ejecución
2-11
3-5
14-18
21-30
LDE
32-34
23-25
LDE
36-40
LDE
36-38
Escribe
resultado
12
6
19
31
35
26
41
39
Commit
13
14
20
32
36
37
42
43
2. Supongamos que se desea calcular
C[i] = (A[i] + B[i] )*3,5 , para i=0..249
donde A, B y C son vectores de 250 componentes almacenados en la memoria de un computador
vectorial similar al VMIPS, pero con las siguientes diferencias.
Ciclo de reloj: 2 ns
8 registros vectoriales de 32 componentes.
2 pipes de carga/almacenamiento segmentados en 15 etapas.
Se pide:
a) (2 puntos) Escribe un programa en el lenguaje ensamblador del VMIPS que realice el cálculo en el
menor tiempo posible, construye el correspondiente diagrama de tiempo, determina el tiempo de cálculo
total teniendo en cuenta la penalización de la ejecución por bloques (strip-mining) y calcula el
rendimiento obtenido en MFLOPS.
b) (0,75 puntos) Calcula el rendimiento asintótico en MFLOPS para la anterior operación.
c) (1,25 puntos) Se desea completar el cálculo del apartado a) con la siguiente operación:
IF (A[i] > B[i] ) D[i] = C[i] * 4,7 , para i=0..249
Completa el diagrama de tiempo del apartado a). Para el conjunto de operaciones de los dos apartados,
calcula el nuevo tiempo total de ejecución y el nuevo rendimiento obtenido en MFLOPS, teniendo en
cuenta que:
Se supone que las operaciones de comparación de vectores se ejecutan en un pipe de cuatro
etapas que no puede encadenarse.
La operación CVM (poner todos los bits del registro de máscara a uno) se ejecuta en un ciclo de
reloj.
Los datos de entrada tienen los siguientes valores A[i] = 60 + 2*i y B[i] = 3 + 3*i
a)
LD F1, Cte 3.5
ADDI R2,R0,#2000
ADD R2,R2,Rb
ADDI R1,R0,#26
MTC1 VLR,R1
ADDI R1,R0,#208
ADDI R3,R0,#32
; Cargamos en F1 el escalar 3.5
; Cargamos en R2 la long. Total del vector en bytes (250x8 =2000)
; Cargamos en R2 la dirección final del vector B
; Cargamos en R1 el nº de elem. de la 1ª iteración (250%32 =26)
; Cargamos en VLR el valor 26
; Cargamos en R1 el núm. de bytes de la 1ª iteración (26x8=208)
; Cargamos en R3 el nº de elementos del resto de las iteraciones
Loop: LV V1,Ra
LV V2,Rb
ADDVV V3,V1,V2
MULVS V4,V3,F1
SV Rc,V4
ADD Ra,Ra,R1
ADD Rb,Rb,R1
ADD Rc,Rc,R1
ADDI R1,R0,#256
MTC1 VLR,R3
SUB R4,R2,Rb
BNEZ R4,Loop
; Cargamos en Ra la dcción. del 1er elem. de A de la sig. iteración
; Cargamos en Rb la dcción. del 1er elem. de B de la sig. iteración
; Cargamos en Rc la dcción. del 1er elem. de C de la sig. iteración
; Cargamos en R1 el nº de bytes de la siguiente iteración
; Cargamos en VLR el valor 32
; ¿Hemos llegado al final del vector B?
; Si no hemos llegado al final, volver a Loop
Tn= [n/MVL] x (Tloop+ Tstart) + n x Tchime = [250/32] x (15 + (15 + 1 + 6 + 7 + 15)) + 250 x 2 = 8 x 59 + 500
= 972 ciclos = 1944 ns
Rto = (2 ops en PF x 250) / (1944x10-9 s)  257.2 MFLOPS
b) Tn = (n/32) x 59 + 2n = 3.84n ciclos = 7.69n ns
R∞ = lim n->∞ (2n ops)/(7.69n ns) = 260 MFLOPS
c) SGT V1,V2
MULDVS V5,V4,F2
SV Rd,V5
CVM
Tn = 8 x (59 + 4 + 7 + 15 + 1) + 4 x 250 = 1688 ciclos = 3376 ns
Rto: A[i] > B[i] para i= 0, 1, 2,…..56  57 elementos
* Suma y multiplicación para 250 elementos
* Otra multiplicación adicional para 57 elementos
(2x250 + 1x57 ops en PF) / (3376 ns) = 165 MFLOPS
3. Averigua el tiempo de transmisión de un mensaje de 1024 bits a través de una red de interconexión
multietapa, cuyos canales tienen un ancho de banda de 2 GBytes/s, y que utiliza conmutación de
paquetes mediante “cut-through”, en los siguientes casos:
a) (1 punto) Red Butterfly de 256 entradas implementada con conmutadores de grado 4.
b) (1 punto) Red Omega de 512 entradas implementada con conmutadores de grado 8.
c) (1 punto) Red Benes de 2048 entradas con conmutadores de grado 2.
Se supone que no existe contención en la red. El tiempo que tarda un conmutador de grado 2 en decidir la
ruta y establecer la comunicación con el canal de salida adecuado es de 3 ns, para uno de grado 4 es de 5
ns y para uno de grado 8 es de 8 ns.
TCT (n,h) = hΔ + n/B = hΔ + (1024 bits)/(2GB/s) = hΔ + 64 ns
a) N= Kn  28 = 4n  n = 4; TCT = 4 x 5ns + 64 = 84 ns
b) N= Kn  29 = 8n  n = 4; TCT = 3 x 8ns + 64 = 88 ns
c) n = ((2 log2N)-1) = 21 etapas; TCT = 21 x 3ns + 64 = 127 ns
Descargar