examen sept 06
TRANSCRIPT
-
5/20/2018 Examen Sept 06
1/7
ARQUITECTURA DE COMPUTADORES I
Examen de Septiembre (4-9-2006)
1. (2 puntos)En un procesador VLIW cuyas instrucciones pueden codificar tres operaciones (tres campos o slots en cada instruccinVLIW), todas las operaciones pueden predicarse. Para establecer los valores de los predicados se utilizan instrucciones de
comparacin (cmp) con el formato (p)p1[, p2] cmp.cnd x,ydonde cnd es la condicin que se comprueba entre xey(lt, ge, eq,ne,). Si la condicin es verdadera p1=1 [y p2=0], y si es falsa, p1=0 [y p2=1]. La operacin slo se ejecuta si el predicado p=1
(habr sido establecido por otra instruccin de comparacin).Indique cmo sera el cdigo VLIW para la sentencia
if (X > 2) then {Y = X; X = X/4;} else if ((X > 0) and (X < 1)) then {Y = 2*X; X = 4*X;};
sin ninguna operacin de salto, teniendo en cuenta que las instrucciones de comparacin slo pueden aparecer en el primer campo o
slotde la instruccin VLIW (el resto de las instrucciones pueden aparecer en cualquier campo). Considere que dispone del nmero deunidades funcionales necesarias en cada momento.
2. (2 puntos) Suponga un procesador superescalar en que se captan y decodifican dos instrucciones por ciclo, se emiten tresinstrucciones por ciclo como mximo (con emisin desordenada y no alineada, sin estaciones de reserva), y se retiran hasta dos
instrucciones por ciclo como mximo. La emisin y la ejecucin son desordenadas, y las instrucciones, una vez decodificadas, seintroducen en un buffer de reordenamiento (ROB) que permite la finalizacin ordenada del procesamiento de las instrucciones.
Indique las dependencias entre instrucciones, los ciclos en los que se emiten las instrucciones para su ejecucin y cmo evolucionara
el buffer de reordenamiento hasta que se hayan retirado todas las instrucciones de la siguiente secuencia de instruccionesalmacenadas en la cola de instrucciones captadas:
multd f1, f1, f2; f1 = f1 * f2addd f3, f3, f2; f3 = f3 + f2multd f4, f1, f3; f4 = f1 * f3addd f5, f4, f2; f5 = f4 + f2addd f3, f1, f3; f3 = f1 + f3subd f5, f2, f1; f5 = f2 f1
Suponiendo una frecuencia de 3.0 GHz, cunto tarda en procesarse la secuencia de instrucciones? Cul es la velocidad pico delprocesador?
Nota:La suma y la resta consumen dos ciclos de reloj y la multiplicacin cuatro ciclos. Considere que no hay limitaciones en lacapacidad de los buffers, pero slo tiene un multiplicador y dos sumadores/restadores. Se supone que f1, f2, y f3 tienen valores
vlidos previos.
3. (1.5 punto) Se han encontrado dos posibles alternativas para la ejecucin de una funcin F en un cauce con 4 etapas
S1, S2, S3, S4. La alternativa 1 visita las etapas segn la secuencia: S1 S3 S2 S4 S1 S4 S4, y la alternativa 2 en el orden:S1 S2 S3 S4 S3 S4 S2. (A) Cul de las dos alternativas permite ejecutar un nmero mayor de funciones por unidad de tiempo?
Demuestre razonadamente su respuesta. (B) Obtenga adems la ganancia en velocidad que ofrecen cada una de las alternativas conrespecto a su ejecucin sin cauce para 1000 operaciones, teniendo en cuenta que sin cauce la funcin requiere un tiempo de 15 ns;
que las etapas del cauce suponen unos tiempos de ejecucin de: 4ns para S1, 4 ns para S2, 3 ns S3y 4 ns para S4; y que los registrosintroducen retardos de 0.1 ns.
4. (1 punto)Se dispone de una memoria de 16 Mbytes con entrelazado de orden inferior y acceso de tipo S (simultneo) distribuidaen mdulos de 512 Kbytes. Se ha almacenado un vector de 113 componentes en posiciones de memoria consecutivas a partir de la
posicin 21BC5h. Cuntos accesos se necesitan para leer el vector completo? Y si el entrelazado fuera de orden superior(manteniendo el acceso de tipo S)?
5. (1.5 puntos)Se desea ejecutar el siguiente programa en un procesador superescalar:
(1) lw r1, N(2) add r2, r0, r0(3) bucle: lw r3, X(r2)(4) sgt r4, r3, r0(5) bnz r4, mayor(6) sub r3, r0, r3(7) mayor: sw X(r2), r3(8) add r2, r2, #4(9) sub r1, r1, #1(10) bnz r1, bucle
Si el procesador usa predictores dinmicos de dos bits que se inicializan con un predictor esttico que predice como tomados los
saltos hacia atrs y como no tomados los saltos hacia delante, y que la penalizacin en caso de errar la prediccin es de 5 ciclos, qupenalizacin se obtendr si X (0) = 1 y X (i+1) = 1 X (i)? Qu penalizacin se obtendra si se optimizara el cdigo usando
sentencias de ejecucin condicional?
-
5/20/2018 Examen Sept 06
2/7
Solucin al problema 1:
El realizar un organigrama que refleje el comportamiento del cdigo ayuda bastante a la resolucin de este tipo de problemas, sobre todo a la hora dedecidir qu predicados se deben utilizar y dnde hay que colocarlos. Un posible organigrama para este problema podra ser el siguiente:
Una vez diseado el organigrama, hay que colocar un predicado en cada una de las instrucciones que deban estar vigiladas, es decir que dependan de
alguna condicin, y tras esto, la traduccin a cdigo es directa:
1. addi r1, r0, #1 ; r1 = 12. addi r2, r0, #2 ; r2 = 23. ld r3, X(r0) ; r3 = X4. p1,p2 cmp.gt r3, r2 ; X > 2?5. p3 cmp.ne r0, r0 ; Inicializo p3
6. p4 cmp.ne r0, r0 ; Inicializo p47. (p1) st r3, Y(r0) ; Y = r38. (p1) srai r3, r3, #2 ; r3 = r3 / 49. (p1) st r3, X(r0) ; X = r310. (p2) p3 cmp.gt r3, r0 ; X > 0?11. (p3) p4 cmp.lt r3, r1 ; X < 1?12. (p4) slli r4, r3, #1 ; r4 = r3 * 213. (p4) slli r3, r3, #2 ; r3 = r3 * 414. (p4) st r4, Y(r0) ; Y = r415. (p4) st r3, X(r0) ; X = r3
En este cdigo hay que tener en cuenta las dependencias RAW a la hora de colocar las instrucciones en las slots de emisin. Las dependencias queaparecen son las siguientes:
111 por r1 24 por r2
34, 10, 11 por r3 47, 8, 9 por p1
410 por p2 89 por r3
1112, 13, 14, 15 por p4
1214 por r4
1315 por r3
Teniendo en cuenta las dependencias RAW anteriores y que las instrucciones de comparacin slo pueden alojarse en el primer slot de emisin, unaposible colocacin de las instrucciones en memoria podra ser la siguiente:
Slot 1 Slot 2 Slot 3
p3 cmp.ne r0, r0 ld r3, X(r0) addi r1, r0, #1
p1,p2 cmp.gt r3, r2
(p2) p3 cmp.gt r3, r0 (p1) srai r3, r3, #2 addi r2, r0, #2
p4 cmp.ne r0, r0 (p1) st r3, X(r0) (p1) st r3, Y(r0)
(p3) p4 cmp.lt r3, r1
(p4) slli r4, r3, #1 (p4) slli r3, r3, #2
(p4) st r4, Y(r0) (p4) st r3, X(r0)
Si
No
No
No
Si
Si
(p2)
(p1) (p3)
(p4)
Inicio
X>2?
X>0?
Y = X
X = X / 4X
-
5/20/2018 Examen Sept 06
3/7
Solucin al Problema 2:
Ya que el procesador no dispone de estaciones de reserva, la lgica de emisin tiene que esperar a que los operandos le seanfacilitados por la lgica de bypass, por tanto, las dependencias RAW afectarn al orden de emisin de las instrucciones. Por otro
lado, como se pueden decodificar hasta dos instrucciones por ciclo y emitir hasta tres, suponemos que cada una de estas tareas serealizarn en etapas diferentes del cauce. Es decir, que la etapas sern IF para captar instrucciones, ID para decodificarlas, ISS para
emitirlas, EX para ejecutarlas, ROB para escribir los resultados en el ROB y WB para retirar las instrucciones del cauce. Lasdependencias entre instrucciones y los momentos de emisin de las mismas se muestran en la siguiente figura:
Instruccin / Ciclo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
multd f1, f1, f2
IF ID ISS EX EX EX EX ROB WBaddd f3, f3, f2 IF ID ISS EX EX ROB WBmultd f4, f1, f3 IF ID ISS EX EX EX EX ROB WBaddd f5, f4, f2 IF ID ISS EX EX ROB WBaddd f3, f1, f3 IF ID ISS EX EX ROB WBsubd f5, f2, f1 IF ID ISS EX EX ROB WB
A continuacin pasamos a describir la evolucin del buffer de reorden:
Ciclo 2:
Se decodifican las instrucciones (1) y (2) yse introducen en el ROB
# Cod. Op. Dest. Result. Ok
1 multd f1 ? 0
2 addd f3 ? 0
Ciclo 3:
Se decodifican las instrucciones (3) y (4) yse introducen en el ROB
# Cod. Op. Dest. Result. Ok
1 multd f1 ? 0
2 addd f3 ? 0
3 multd f4 ? 0
4 addd f5 ? 0
Ciclo 4:
Se decodifican las instrucciones (5) y (6) yse introducen en el ROB
# Cod. Op. Dest. Result. Ok
1 multd f1 ? 0
2 addd f3 ? 0
3 multd f4 ? 0
4 addd f5 ? 0
5 addd f1 ? 0
6 subd f5 ? 0
Ciclo 6:
Finaliza la instruccin (2) y se escribe elresultado en el ROB
# Cod. Op. Dest. Result. Ok1 multd f1 ? 0
2 addd f3 f3 + f2 1
3 multd f4 ? 0
4 addd f5 ? 0
5 addd f1 ? 0
6 subd f5 ? 0
Ciclo 8:
Finaliza la instruccin (1) y se escribe el
resultado en el ROB
# Cod. Op. Dest. Result. Ok
1 multd f1 f1 * f2 1
2 addd f3 f3 + f2 1
3 multd f4 ? 0
4 addd f5 ? 0
5 addd f1 ? 0
6 subd f5 ? 0
Ciclo 9:
Se retiran las instrucciones (1) y (2)
# Cod. Op. Dest. Result. Ok
3 multd f4 ? 0
4 addd f5 ? 0
5 addd f1 ? 0
6 subd f5 ? 0
Ciclo 10:
Finalizan las instrucciones (5) y (6) y seescriben los resultados en el ROB
# Cod. Op. Dest. Result. Ok
3 multd f4 ? 0
4 addd f5 ? 0
5 addd f1 f1 + f3 1
6 subd f5 f2 f1 1
Ciclo 12:
Finaliza la instruccin (3) y se escribe elresultado en el ROB
# Cod. Op. Dest. Result. Ok
3 multd f4 f1 * f3 1
4 addd f5 ? 05 addd f1 f1 + f3 1
6 subd f5 f2 f1 1
-
5/20/2018 Examen Sept 06
4/7
Ciclo 13:
Se retira la instruccin (3)
# Cod. Op. Dest. Result. Ok
4 addd f5 ? 0
5 addd f1 f1 + f3 1
6 subd f5 f2 f1 1
Ciclo 14:
Finaliza la instruccin (4) y se escribe el
resultado en el ROB
# Cod. Op. Dest. Result. Ok
4 addd f5 f4 + f2 1
5 addd f1 f1 + f3 1
6 subd f5 f2 f1 1
Ciclo 15:
Se retiran las instrucciones (4) y (5)
# Cod. Op. Dest. Result. Ok
6 subd f5 f2 f1 1
Ciclo 16:
Se retira la instruccin (6)# Cod. Op. Dest. Result. Ok
Si el procesador funciona a 3 GHz, el tiempo de procesamiento sera
16 ciclos * 3,31010s/ciclo = 5,3109s = 5,3 ns
Para la calcular la velocidad pico, como slo se pueden retirar dos instrucciones por ciclo, suponiendo que no hubiera atascos en el
cauce se podran ejecutar 3 instrucciones por ciclo
2 instr./ciclo * 3109
ciclos/s = 6 GIPS
Solucin al Problema 3:
El primer paso para responder al primer apartado es calcular la tabla de reservas para cada una de las dos alternativas:
Alternativa 1
1 2 3 4 5 6 7
S1 X X
S2 X
S3 X
S4 X X X
Alternativa 2
1 2 3 4 5 6 7
S1 X
S2 X X
S3 X X
S4 X X
Una vez calculadas las tablas de reservas es fcil obtener las latencias prohibidas y los vectores de colisiones de cada una de las
alternativas:
F1= {1,2,3,4} C1= (1111) F2= {2,5} C2= (10010)
Para calcular determinar qu alternativa tiene la mxima productividad, realizamos un diagrama de estados a partir de cada vector decolisiones:
Alternativa 1 Alternativa 2
14
10011
10010
11011
6+
3, 6+
3, 6+
4 3
5+
3
1111
La mnima latencia mnima de cada alternativa es:
3,23
3312
)
=++
=MLM MLM1= 5
Para ver qu alternativa es capaz de ejecutar ms operaciones por unidad de tiempo basta con calcular la productividad mxima de
cada una de ellas. La productividad mxima se define como:
-
5/20/2018 Examen Sept 06
5/7
MLMnMLMTLI
n
nT
nnWW
nnn
1
)1(lim
)(lim)(limmax =
+===
Para cada una de las alternativas tenemos que:
oinstr/cicl2,05
11
1
max1 ===
MLMW oinstr/cicl43,0
3,2
11
2
max2 === )
MLMW
con lo que podemos concluir que la segunda alternativa es mejor que la primera.
Para responder a la segunda cuestin, debemos calcular tanto el tiempo secuencial como el de cada una de las alternativas para
realizar 1000 operaciones. En el caso secuencial tenemos que:
TSec(1000) = 1000 operaciones 15 ns/operacin= 15000 ns
Y en el caso paralelo, el tiempo de ejecucin se define como:
( ))1()( += nMLMTLITnT clock
El tiempo ciclo del reloj se puede obtener como:
Tclock= mx{TS1, TS2, TS3, TS4} + Tacoplo= mx {4, 4, 3, 4} + 0,1 = 4 + 0,1 = 4,1 ns
Por tanto, la ganancia en velocidad de cada una de las alternativas respecto al caso secuencial es de:
( )( )73,0
11000571,4
15000
)1000(
)1000()1000(
1
1 =+
==T
TS Sec
( )( )56,1
110003,271,4
15000
)1000(
)1000()1000(
2
2 =+
== )T
TS Sec
Solucin al Problema 4:
El primer paso para resolver este problema es ver cmo se encuentran repartidos los elementos del vector entre los mdulos dememoria. Tenemos una memoria de 16 MB = 224 Bytes, repartida en mdulos de 512 KB = 219 Bytes, lo que quiere decir que
tendremos un total de 25 = 32 mdulos de memoria. Si se utiliza entrelazado inferior y acceso tipo S para acceder a ellos, lasposiciones de memoria consecutivas se encontrarn en mdulos de memoria consecutivos, y como hay 32 mdulos, en el mdulo 0
estarn todas las direcciones mltiplo de 32, 0x20 en hexadecimal. Teniendo esto en cuenta, y que el mayor mltiplo de 0x20 pordebajo de 0x021BC5 es 0x034BC0 (escribimos las direcciones con 6 dgitos para hacer hincapi en que la memoria tiene 16 MB, yque por tanto, se direcciona con direcciones de 24 bits o 6 dgitos hexadecimales), los datos estarn colocados en las posiciones de
memoria sombreadas de la siguiente figura:
Direccin 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
0x021BC0
0x021BE0
0x021C00
0x021C20
Con lo que para acceder a todos los datos del vector tendremos que generar las 4 direcciones de la primera columna de la tablaanterior, es decir, que son necesarios 4 accesos a memoria.
En el caso de que se utilizara entrelazado superior, las posiciones de memoria consecutivas se encontraran en el mismo mdulo.
Tanto la direccin de comienzo como la de final del vector se encontraran en el mdulo de memoria 0, que contendra las posicionesde memoria desde la direccin 0x0000000 a la 0x03FFFF (219 1), con lo que haran falta 113 accesos a memoria, tantos como
componentes, para leer el vector.
-
5/20/2018 Examen Sept 06
6/7
Solucin al Problema 5:
El programa del enunciado calcula el valor absoluto de los elementos del vectorX. Va procesndolos de uno en uno y les cambia el
signo si no son positivos. Consta de dos saltos, el primero de ellos, notado como S1 en el cdigo de ms abajo, sirve para detectar silos nmeros son positivos y el segundo, notado como S2, se emplea para volver a ejecutar el cdigo mientras queden elementos porprocesar en el vectorX.
(1) lw r1, N(2) add r2, r0, r0(3) bucle: lw r3, X(r2)(4) sgt r4, r3, r0(5) bnz r4 mayor S1(6) sub r3, r0, r3(7) mayor: sw X(r2), r3(8) add r2, r2, #4(9) sub r1, r1, #1(10) bnz r1 bucle S2
Para mejorar las prestaciones en la ejecucin de los saltos, el computador que se describe en el enunciado usa un predictor dinmicode dos bits para cada uno de los saltos que se encuentre en el programa. El esquema de este tipo de predictores es el siguiente:
Para cada salto, su predictor dinmico se inicializar segn el predictor esttico del computador, que predice como tomados los saltoshacia atrs. Por tanto, el predictor dinmico para S1 se iniciar al valor 00 (no saltar fuerte), ya que es un salto hacia delante, y el
predictor dinmico para S2 se iniciar al valor 11 (saltar fuerte) porque salta hacia atrs.
Una vez inicializados los predoctores dinmicos, la penalizacin que introduzca cada uno de ellos depender del comportamiento decada salto. En el caso de S1, su comportamiento est determinado por el valor de cada elemento del vectorX. S1 Saltar siempre queX(i) sea mayor que cero, y segn el enunciado, el vector Xes de la formaX= {1, 0, 1, 0, 1, 0,}, por lo que S1 saltar una vez s y
otra no hasta que se termine de procesar el vector X. Por tanto, el comportamiento del predictor dinmico para S1 viene explicadosegn la siguiente tabla:
Iteracin 1 2 3 4 6 7 8
Valor deX 1 0 1 0 1 0 1
Estado actual 00 01 00 01 00 01 00
Prediccin N N N N N N N
Ejecucin S N S N S N S
Penalizacin P P P P
Estado siguiente 01 00 01 00 01 00 01
Por lo que la penalizacin que introduce S1 es de:
ciclos2
5S1
=
NP
El salto S2 saltar tantas veces como elementos tenga el vectorX, es decirNveces, ya que el programa se dedica a procesar dicho
vector. Teniendo esto en cuenta, el comportamiento del predictor dinmico para S2 viene explicado segn la siguiente tabla:
Iteracin 1 2 3 4 N 2 N 1 N
Estado actual 11 11 11 11 11 11
Prediccin S S S S S S S
Ejecucin S S S S S S N
Penalizacin P
Estado siguiente 11 11 11 11 11 11 10
11 10 01 00
No saltardbil
No saltarfuerte
Saltardbil
Saltarfuerte
N N N
S N
S S S
-
5/20/2018 Examen Sept 06
7/7
El comportamiento de este salto es muy fcil de predecir, ya que salta siempre excepto en la ltima iteracin del bucle, por lo queintroduce una penalizacin de:
ciclos5S2 =P
Por tanto, teniendo en cuenta los dos predictores, la penalizacin total es de:
ciclos2
15total
+=N
P
Est claro que el comportamiento S1 no puede ser aprendido por el predictor dinmico, por lo que nos va a ocasionar muchas faltas,
as que sera interesante cambiarlo por una sentencia de ejecucin condicional, tal y como muestra el siguiente cdigo:
(1) lw r1, N(2) add r2, r0, r0(3) bucle: lw r3, X(r2)(4) sub r4, r0, r3(5) cmov.gt r4, r3, r3(7) sw X(r2), r4(8) add r2, r2, #4(9) sub r1, r1, #1(10) bnz r1 bucle S2
En esta versin mantenemos el mismo nmero de instrucciones para ejecutar el algoritmo, y adems evitamos el salto S1, que
depende del valor de cada componente deX, por lo que la penalizacin total del programa es de:
ciclos5S2total == PP