Documente Academic
Documente Profesional
Documente Cultură
Problema 1 (3 puntos)
Utilizando el algoritmo de Tomasulo para realizar la ejecucin del siguiente fragmento de cdigo:
i1:
i2:
i3:
i4:
MULTD
MULTD
ADDD
ADDD
F2,
F4,
F2,
F6,
F2,
F2,
F4,
F2,
F6
F6
F6
F6
muestre la evolucin de los registros en coma flotante (FR) y de las estaciones de reserva (RS) para todos los
ciclos que sean necesarios. Considere las siguientes hiptesis de partida:
Para reducir el nmero de ciclos mquina se permite que la FLOS distribuya hasta dos instrucciones en
cada ciclo segn el orden del programa.
Una instruccin puede comenzar su ejecucin en el mismo ciclo en que se distribuye a una estacin de
reserva.
La operacin suma tiene una latencia de dos ciclos y la de multiplicacin de tres ciclos.
Se permite que una instruccin reenve su resultado a instrucciones dependientes durante su ltimo ciclo
de ejecucin. De esta forma una instruccin a la espera de un resultado puede comenzar su ejecucin en
el siguiente ciclo si detecta una coincidencia.
Los valores de etiqueta 01, 02 y 03 se utilizan para identificar las tres estaciones de reserva de la unidad
funcional de suma, mientras que 04 y 05 se utilizan para identificar las dos estaciones de reserva de la
unidad funcional de multiplicacin/divisin. Estos valores de etiqueta son los ID de las estaciones de
reserva.
Inicialmente, el valor de los registros es F0=2.0, F2=2.5, F4=4.0 y F6=3.0.
Problema 2 (4 puntos)
Dispone del siguiente fragmento de cdigo intermedio:
Loop: LD
ADDD
SD
SUBI
BNEZ
F0,0(R1)
F4,F0,F2
0(R1),F4
R1,R1,#8
R1,Loop
y de un procesador VLIW con un formato de instruccin de 5 slots (4 bytes por slot) que admite dos
operaciones de carga/almacenamiento (2 ciclos de latencia), dos operaciones en coma flotante (3 ciclos de
latencia) y una operacin entera/salto (1 ciclo de latencia). Sin considerar la existencia del hueco de retardo de
salto en la planificacin, se pide que:
a) Transforme el cdigo intermedio en cdigo VLIW para el procesador indicado.
b) A partir del cdigo anterior y mediante el desenrollamiento del bucle original, complete los slots
libres del cdigo VLIW del apartado anterior.
c) Realice el desenrollamiento software del bucle original. Considere que un slot de operacin en coma
flotante puede ejecutar restas enteras.
d) Calcule para los dos apartados anteriores el nmero de operaciones por ciclo reloj, el nmero de
ciclos consumidos para un vector de 800 elementos, el tamao del cdigo en memoria y el porcentaje de
espacio desaprovechado.
1/2
Problema 3 (3 puntos)
Dada una red con topologa de hipercubo con dimensin d = 5, se pide que:
a) Dibuje los hipercubos de dimension d-1 que forman dicha red.
b) Calcule la distancia de Hamming para los procesadores 00000 y 11111. Dibuje y explique
razonadamente un esquema del camino mas corto para comunicar ambos procesadores.
c) Describa y calcule la conectividad de arco de dicha red.
2/2
Solucin al problema 1
a)
Ciclo 1: Se distribuyen i1 e i2 en orden.
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
RS
ID
FR
ID
Bit Ocu
Etiq.
Dato
01
04 (i1)
00
2.5
00
F0
02
05 (i2)
04
--
00
F2
04
2.5
F4
05
03
Mult/Div
Suma/Resta
F6
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
RS
ID
FR
ID
Bit Ocu
Etiq.
Dato
01 (i3)
05
--
00
04 (i1)
00
2.5
00
F0
02 (i4)
01
--
00
05 (i2)
04
--
00
F2
01
2.5
F4
05
F6
02
03
Mult/Div
Suma/Resta
Ciclo 3: Al final del ciclo 3, la instruccin i1 finaliza su ejecucin y emite su ID (04). En ese momento, todos
los campos etiquetados que contienen el valor 04 insertan el resultado emitido.
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
RS
ID
FR
ID
Bit Ocu
Etiq.
Dato
01 (i3)
05
--
00
04 (i1)
00
2.5
00
F0
02 (i4)
01
--
00
05 (i2)
04
--
00
F2
01
2.5
F4
05
F6
02
Etiq.
Dato
03
Mult/Div
Suma/Resta
Ciclo 4:
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
RS
ID
01 (i3)
05
--
00
04
02 (i4)
01
--
00
05 (i2)
FR
ID
Bit Ocu
F0
00
03
7.5
00
Mult/Div
Suma/Resta
F2
01
2.5
F4
05
F6
02
Etiq.
Dato
Ciclo 5:
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
RS
ID
01 (i3)
05
--
00
04
02 (i4)
01
--
00
05
03
FR
ID
Bit Ocu
F0
00
7.5
00
Mult/Div
Suma/Resta
F2
01
2.5
F4
05
F6
02
3/2
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
ID
01 (i3)
05
--
00
04
02 (i4)
01
--
00
05
03
RS
Eti_1 Ope_1 Eti_2 Ope_2
ID
FR
Bit Ocu Etiq.
F0
00
7.5
00
Mult/Div
Suma/Resta
Dato
F2
01
2.5
F4
05
F6
02
Etiq.
Dato
Ciclo 7:
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
RS
ID
FR
ID
01 (i3)
00
22.5
00
04
F0
02 (i4)
01
--
00
05
F2
03
Mult/Div
Suma/Resta
Bit Ocu
2
1
01
22.5
F4
F6
2.5
02
Etiq.
Dato
RS
Eti_1 Ope_1 Eti_2 Ope_2
RS
ID
FR
ID
01 (i3)
00
22.5
00
04
F0
02 (i4)
01
--
00
05
F2
03
Mult/Div
Suma/Resta
Bit Ocu
2
1
01
22.5
F4
F6
2.5
02
Etiq.
Dato
Ciclo 9:
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
01
02 (i4)
00
25.5
00
RS
ID
FR
ID
Bit Ocu
04
F0
05
F2
25.5
F4
22.5
03
Mult/Div
Suma/Resta
F6
02
Etiq.
Dato
RS
Eti_1 Ope_1 Eti_2 Ope_2
01
02 (i4)
00
25.5
03
00
RS
ID
FR
ID
Bit Ocu
04
F0
05
F2
25.5
F4
22.5
Mult/Div
Suma/Resta
F6
02
4/2
Ciclo 11
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
ID
RS
Eti_1 Ope_1 Eti_2 Ope_2
ID
Bit Ocu
FR
Etiq.
Dato
01
04
F0
02
05
F2
25.5
F4
22.5
F6
28.5
03
Mult/Div
Suma/Resta
b) El siguiente diagrama ilustra todas las dependencias de datos existentes entre las instrucciones que
componen la secuencia.
i1
RAW
WAW
RAW
i2
WAR
WAR
RAW
WAR
WAR
i3
WAR
RAW
i4
c) A partir del grfico con las dependencias verdaderas se puede establecer de forma sencilla el lmite
mximo de flujo de datos. Se puede apreciar que la ruta crtica consta de 10 ciclos que es el lmite que debe
alcanzar la ejecucin aplicando el algoritmo de Tomasulo.
i1
3
i2
3
3
i3
2
i4
2
5/2
Solucin al problema 2
a) Una solucin vlida aunque no ptima es la siguiente.
Carga/almacenamiento Carga/almacenamiento Operaciones FP
Operaciones FP Enteras/saltos
1 LD F0,0(R1)
2
3
ADDD F4,F0,F2
4
5
6 SD 0(R1),F4
7
8
SUBI R1,R1,#8
BNEZ R1,Loop
Operaciones FP Enteras/saltos
1 LD F0,0(R1)
2
3
ADDD F4,F0,F2
4
5
6 SD 0(R1),F4
SUBI R1,R1,#8
BNEZ R1,Loop
6/2
LD F6,-8(R1)
2 LD F10,-16(R1)
LD F14,-24(R1)
3 LD F18,-32(R1)
LD F22,-40(R1)
ADDD F4,F0,F2
Operaciones FP
ADDD F8,F6,F2
6 SD 0(R1),F4
SD -8(R1),F8
7 SD -16(R1),F12
SD -24(R1),F16
8 SD -32(R1),F20
SD -40(R1),F24
Enteras/saltos
SUBI R1,R1,#48
BNEZ R1,Loop
Operaciones FP
Enteras/saltos
LD F6,-8(R1)
2
3
ADDD F4,F0,F2
ADDD F8,F6,F2
4
5
6 SD 0(R1),F4
SD -8(R1),F8
SUBI R1,R1,#16
BNEZ R1,Loop
7/2
c) Lo primero que hay que realizar es obtener el patrn de ejecucin con el objeto de visualizar el prlogo, el
patrn que se repite y el eplogo.
Iteraccin 1
Iteraccin 2
Iteraccin 3
Iteraccin 4
Iteraccin 5
Iteraccin 6
LD F0,0(R1)
LD F0,-8(R1)
ADDD F4,F0,F2
LD F0,-16(R1)
ADDD F4,F0,F2
LD F0,-24(R1)
ADDD F4,F0,F2
SD 0(R1),F4
LD F0,-32(R1)
ADDD F4,F0,F2
SD -8(R1),F4
LD F0,-40(R1)
ADDD F4,F0,F2
SD -16(R1),F4
ADDD F4,F0,F2
SD -24(R1),F4
SD -32(R1),F4
SD -40(R1),F4
Tras visualizar el esquema, hay que trasladarlo a las instrucciones VLIW del procesador disponible.
Operaciones FP
Enteras/saltos
LD F0,0(R1)
LD F0,-8(R1)
LD F0,-16(R1)
ADDD F4,F0,F2
LD F0,-24(R1)
ADDD F4,F0,F2
LD F0,-32(R1)
ADDD F4,F0,F2
LD F0,-40(R1)
SD 0(R1),F4
SD -8(R1),F4
ADDD F4,F0,F2
SD -16(R1),F4
ADDD F4,F0,F2
BNEZ R1,Loop
SD -24(R1),F4
SD -32(R1),F4
SD -40(R1),F4
Dado que la instruccin de comparacin realiza la comparacin con 0, es necesario reajustar los
desplazamientos de las instrucciones de carga/almacenamiento y el contenido del registro R1 con el objeto de
que el ltimo elemento almacenado lo sea en la posicin de memoria M[8] tal y como sucede en el bucle
original (observe en el bucle escalar original que se almacena en M[0+R1] y tras decrementar se comprueba
que R1 sea cero, en caso afirmativo el bucle concluye).
En este caso, el valor inicial de R1 debe ser R1 = R1-48 se procede al proceder al ajuste de los
desplazamientos de las instrucciones de carga/almacenamiento. Se tiene as:
8/2
Operaciones FP
Enteras/saltos
LD F0,48(R1)
LD F0,40(R1)
LD F0,32(R1)
ADDD F4,F0,F2
LD F0,24(R1)
ADDD F4,F0,F2
LD F0,16(R1)
ADDD F4,F0,F2
LD F0,8(R1)
SD 48(R1),F4
SD 48(R1),F4
ADDD F4,F0,F2
SD 40(R1),F4
ADDD F4,F0,F2
BNEZ R1,Loop
SD 32(R1),F4
SD 24(R1),F4
SD 16(R1),F4
9/2
Solucin al problema 3
a)
b) La distancia de Hamming para los procesadores 00000 y 11111 se calcula utilizando la operacin XOR. As
00000 11111 = 11111, siendo la distancia el nmero de bits a 1 en el resultado de dicha operacin, es decir,
5. El esquema del camino ms corto ser
00000 00001 00011 00111 01111 11111
Dado que todos los bits de la distancia de Hamming entre ambos procesadores tiene valor 1, el camino ms
corto se realizar cambiando todos los bits del procesador inicial de 0 a 1, desde el menos significativo al ms
significativo.
c) La conectividad de arco de una red hipercubo se describe como el menor nmero de arcos que deben
eliminarse para obtener dos redes disjuntas. Esta conectividad se puede calcular como el log2(p). Dado que un
hipercubo de dimensin 5 tiene 32 procesadores, log2(32) = 5.
10/2
2012
Problema 1 Febrero 2012 2 (2 puntos) Igual que actividad 1.3 del libro de texto.
Un procesador sin segmentacin necesita 150 nseg. para procesar una instruccin. Con respecto a este
procesador, calcular la aceleracin que se obtiene en los dos casos siguientes:
a) Un procesador A dotado de una segmentacin de 7 etapas, consumiendo cada etapa el mismo tiempo.
Cada etapa ocasiona una sobrecarga de 6 nseg. no existiendo ningn tipo de detencin en la
segmentacin.
De acuerdo con el enunciado el tiempo medio de ejecucin de una instruccin en el procesador sin
segmentar es de 150 nseg. La segmentacin de 7 etapas de este apartado se caracteriza por acortar el tiempo
medio de ejecucin de una instruccin a 27,43 nseg.:
150 nseg
6 nseg 27, 43 nseg
7 etapas
Por lo tanto, la aceleracin obtenida por la mquina A con respecto a la mquina sin segmentar es 5,47:
150 nseg
5, 47 veces ms rpido
27, 43 nseg
b) Un procesador B con una segmentacin de 7 etapas, consumiendo cada una de ellas 30 nseg., 30 nseg.,
40 nseg., 50 nseg. y 50 nseg. respectivamente, y siendo la sobrecarga por cada etapa de 6 nseg. Un 33%
de todas las instrucciones de la segmentacin son detenidas durante un ciclo de reloj y un 8% durante
dos ciclos.
La etapa ms lenta es la que dicta la velocidad de las restantes etapas, por lo que cada etapa consumir 56
nseg. (50 nseg. ms los 6 nseg. de retardo).
El 8% ocasiona una detencin de dos ciclos, por lo que consumen 168 nseg. 3 ciclos 56 nseg .
El 33% ocasiona una detencin de un ciclo, consumiendo 112 nseg. 2 ciclos 56 nseg
El 59%, no provocan detenciones, empleando slo un ciclo de reloj (56 nseg.).
De acuerdo con esto, el tiempo medio consumido por una instruccin es:
Escriba el cdigo vectorial que realizara las operaciones ubicadas en el interior del bucle y calcule
R1000 R
y en los siguientes casos:
Tn T1000
LV
MULTSV
MULTSV
ADDV
SV
V1, R1
V2, F0, V1
V3, F2, V1
V4, V3, V2
R1, V4
// Carga de A en V1
// B := x * A
// C := y * A
// A := B + C
// Almacenamiento de A
La secuencia de ejecucin de los cinco convoyes si se considera que VLR es 64 es la que se muestra en la
siguiente figura.
Telemento= 5 ciclos
LV
12
64
MULTSV
64
MULTSV
64
ADDV
64
SV
64
12
Dado que hay cinco convoyes, Telemento es 5 ciclos y el Tarranque total es igual a la suma de los tiempos de
arranque visibles de los cinco convoyes. Esto es
Tarranque = Tarranque LV + 2*Tarranque MULTSV + Tarranque ADDV + Tarranque SV
Tarranque = (12 + 2*7 + 6 + 12) ciclos = 44 ciclos
1/4
Sustituyendo los valores conocidos de Tarranque y Telemento en la expresin que determina el tiempo de
ejecucin de un bucle vectorizado para vectores de longitud n se tiene
n
Tn = 10 + (15 + 44 ) + 5 n
64
que para el caso particular de n=1000 es
1000
T1000 = 10 +
(15 + 44 ) + 5 1000
64
T1000 = 10 + 16 (15 + 44 ) + 5 1000
T1000 = 5954 ciclos
3 1000 3000
=
= 0.5039 FLOP ciclo
T1000
5954
R1000 =
El rendimiento expresado en FLOP/ciclo es
3 n
R = lim
n T
n
3 n
R = lim
n
n
10 + (15 + 44 ) + 5 n
64
Para simplificar los clculos, la expresin n / 64 se puede reemplazar por una cota superior dada por
(n / 64 + 1) . Sustituyendo esta cota en R y teniendo en cuenta que el nmero de operaciones vectoriales que se
realizan en el bucle DAXPY son dos, una multiplicacin y una suma, se tiene
3 n
R = lim
n
10 + + 1 (15 + 44 ) + 5 n
64
3 n
R = lim
n 69 + 5,9219 n
R = 0,5066 FLOP/ciclo
Para expresar R en FLOPS, habra que multiplicar el valor en FLOP/ciclo por la frecuencia del procesador. Se
tendra as
R = 0,409 FLOP/ciclo (500 10 6 )Hz
R = 204,5 MFLOPS
b) Dado que ahora es posible encadenar los resultados de las unidades, la organizacin del cdigo vectorial en
convoyes quedara de la siguiente forma:
Convoy 1:
Convoy 2:
LV
MULTSV
MULTSV
ADDV
V1, R1
V2, F0, V1
V3, F2, V1
V4, V3, V2
// Carga de A en V1
// B := x * A
// C := y * A
// A := B + C
2/4
SV
LV
R1, V4
12
MULTSV
// Almacenamiento de A
Telemento= 2 ciclos
64
7
64
MULTSV
ADDV
64
6
SV
64
64
12
El Telemento ha pasado a ser de 2 ciclos dado que ahora se tienen dos convoyes. El Tarranque total se obtiene
de sumar los tiempos de arranque visibles de las unidades funcionales. Si se analiza la figura se tiene
Tarranque = Tarranque LV + 2*Tarranque MULTV + Tarranque ADDV + Tarranque SV
Tarranque = (12 + 2*7 + 6 + 12) ciclos = 44 ciclos
Con estos valores la expresin del tiempo total de ejecucin queda
n
Tn = 10 + (15 + 44 ) + 2 n
64
que para el caso particular de n=1000
1000
T1000 = 10 +
(15 + 44 ) + 2 1000
64
T1000 = 10 + 16 (15 + 44 ) + 2 1000
T1000 = 2954 ciclos
R1000 =
3 1000 3 1000
=
= 1,0156 FLOP ciclo
T1000
2954
R = lim
n T
n
3 n
R = lim
n
n
10 + (15 + 44 ) + 2 n
64
3 n
R = lim
n
n
10 + ( + 1) (15 + 44 ) + 2 n
64
3 n
R = lim
n 69 + 2,9219 n
R = 1,0267 FLOP/ciclo
Claramente se aprecia la mejora en el rendimiento del procesador gracias al encadenamiento de los resultados
entre las unidades funcionales.
3/4
c) Ahora es posible encadenar los resultados de las unidades y se dispone de dos unidades de multiplicacin:
Convoy 1:
Convoy 2:
LV
MULTSV
MULTSV
ADDV
SV
V1, R1
V2, F0, V1
V3, F2, V1
V4, V3, V2
R1, V4
// Carga de A en V1
// B := x * A
// C := y * A
// A := B + C
// Almacenamiento de A
Telemento = 2 ciclos
LV
12
MULTSV
MULTSV
64
7
64
64
ADDV
64
SV
64
12
El Telemento ha pasado a ser de 2 ciclos dado que ahora se tienen dos convoyes. El Tarranque total se obtiene
de sumar los tiempos de arranque visibles de las unidades funcionales. Si se analiza la figura se tiene
Tarranque = Tarranque LV + Tarranque MULTV + Tarranque ADDV + Tarranque SV
Tarranque = (12 + 7 + 6 + 12) ciclos = 37 ciclos
Con estos valores la expresin del tiempo total de ejecucin queda
n
Tn = 10 + (15 + 37 ) + 2 n
64
que para el caso particular de n=1000
1000
T1000 = 10 +
(15 + 37 ) + 2 1000
64
T1000 = 10 + 16 (15 + 37 ) + 2 1000
T1000 = 2842 ciclos
R1000 =
3 1000 3 1000
=
= 1,0555 FLOP ciclo
T1000
2842
R = lim
n T
n
3 n
R = lim
n
n
10 + (15 + 37 ) + 2 n
64
4/4
3 n
R = lim
n
n
10 + ( + 1) (15 + 37 ) + 2 n
64
3 n
R = lim
n 62 + 2,8125 n
5/4
2012
29/08/2013
Problema1 2012septiembre
Mostrar la evolucin de los Registros en coma
flotante ((FR)) y las estaciones de Reserva ((RS)) p
para
todos los ciclos que sean necesarios en la ejecucin
del siguiente fragmento de cdigo utilizando el
algoritmo de Tomasulo.
i1:
i2:
i3:
i4:
ADDD
MULTD
MULTD
ADDD
F6,F4,F2
F0,F4,F6
F6,F6,F2
F2,F6,F0
29/08/2013
29/08/2013
Ciclo1: Sedistribuyei1ei2
i1: ADDDF6,F4,F2
i2: MULTD F0,F4,F6
SeejecutaRS011/1
SeenvaRS01:5.5alCDB
j
NoseejecutaRS04
FR
bitOc. etiqueta dato
F0 Si
F2
F4
F6 Si
01
8.0
3.5
2.0
30
3.0
RS
RS
ID etiq_1 oper_1
i1: 01 00 2.0
02
03
04
etiq_2
oper_2
00
3.5
ID
i2: 04 00
05
etiq_1
oper_1
etiq_2
oper_2
2.0
01
xx
MULT/DIV
SUMA
Ciclo2: Sedistribuyei3ei4
i3:MULTDF6,F6,F2
i4: ADDDF2,F6,F0
Seactualizael valordeRS01:5.5
SevacaRS01
SeejecutaRS041/2
SeejecutaRS051/2
NOseejecutaRS02
RS
ID
01
i4: 02 05
03
etiq_1
oper_1
etiq_2
oper_2
xx
04
xx
FR
bitOc. etiqueta dato
F0 Si
F2 Si
F4
F6 Si
04
02
05
8.0
3.5
2.0
30
3.0
RS
ID etiq_1 oper_1 etiq_2 oper_2
i2: 04 00 2.0 00 5.5
i3: 05 00 5.5 00 3.5
MULT/DIV
SUMA
29/08/2013
Ciclo3: SeejecutaRS042/2
SeejecutaRS052/2
SeenvaRS04:11.0alCDB
SeenvaRS05:19.25alCDB
NOseejecutaRS02
FR
bitOc. etiqueta dato
F0 Si
F2 Si
F4
F6 Si
04
02
05
RS
RS
ID etiq_1
01
i4: 02 05
oper_1
etiq_2
xx
8.0
3.5
2.0
30
3.0
04
oper_2
xx
ID
i2: 04 00
i3: 05 00
etiq_1
oper_1
etiq_2
oper_2
2.0
5.5
00
00
5.5
3.5
MULT/DIV
SUMA
FR
F0
F2
F4
F6
bitOc.
etiqueta
Si
02
ID
01
i4: 02 05 19.25 04 11.0
oper_1
etiq_2
11.0
3.5
2.0
19 25
19.25
RS
RS
etiq_1
dato
oper_2
ID
04
05
etiq_1
oper_1
etiq_2
oper_2
MULT/DIV
SUMA
29/08/2013
Ciclo5:
Seactualizael valordeRS02:30.25
SevacaRS02
FR
bitOc.
F0
F2
F4
F6
etiq_1
oper_1
etiq_2
dato
11.0
30.25
2.0
19 25
19.25
RS
RS
ID
01
02
etiqueta
oper_2
ID
04
05
etiq_1
oper_1
etiq_2
oper_2
MULT/DIV
SUMA
No
NT
NT
NT
NT
No
No
NT
NT
No
No
NT
Dado que de las 15 predicciones ha habido 10 predicciones correctas, la precisin del predictor de 1 bit ha sido
del 66,67%.
1/2
ST
ST
ST
ST
ST
ST
No
WT
WT
No
WN
WN
No
WT
WT
ST
ST
ST
ST
No
WT
WT
No
WN
WN
No
WT
WT
ST
ST
ST
ST
No
WT
WT
No
WN
Dado que de las 15 predicciones ha habido 7 predicciones correctas, la precisin del predictor ha sido del
46,67%.
2/2
2012
MULTD
ADDD
SUBD
ADDD
F3,F1,F2
F2,F3,F1
F3,F3,F1
F5,F1,F2
se distribuyen, a razn de una por ciclo, a las dos estaciones de reserva y se emiten en cuanto sus operandos
estn disponibles. Teniendo en cuenta que se pueden emitir y terminar dos instrucciones simultneamente, se
pide:
a) Un cronograma con la secuencia temporal de ejecucin de las instrucciones en el que, ciclo a ciclo, se puede
apreciar cundo se distribuyen, cundo se emiten y cundo finaliza su ejecucin en las unidades funcionales.
b) Dibuje, ciclo a ciclo, cmo evolucionan los contenidos del ARF y del RRF para esas instrucciones si,
inicialmente, F1=2.0 y F2=3.0. El ARF y el RRF constan de cinco entradas. La secuenciacin de los ciclos
debe coincidir con la del apartado anterior.
Solucin
a) La secuencia temporal de ejecucin de las cuatro instrucciones es la siguiente:
0
F1
F2
F3
F4
F5
Datos
2
3
Ocupado
ndice
Fr1
Fr2
Fr3
Fr4
Fr5
Datos
--
Vlido
0
Ocupado
1
1/3
F1
F2
F3
F4
F5
Datos
2
3
Ocupado
ndice
1
1
2
1
Datos
Fr1
Fr2
Fr3
Fr4
Fr5
Vlido
0
0
Ocupado
1
1
F1
F2
F3
F4
F5
Datos
2
3
Ocupado
1
1
ndice
2
3
Datos
Fr1
Fr2
Fr3
Fr4
Fr5
Vlido
0
0
0
Ocupado
1
1
1
F1
F2
F3
F4
F5
Datos
2
3
Ocupado
ndice
1
1
2
3
Ocupado
ndice
1
1
2
3
Fr1
Fr2
Fr3
Fr4
Fr5
Datos
6
Vlido
1
0
0
0
Ocupado
1
1
1
1
Datos
6
Vlido
1
0
0
0
Ocupado
0
1
1
1
F1
F2
F3
F4
F5
Datos
2
3
Fr1
Fr2
Fr3
Fr4
Fr5
F1
F2
F3
F4
F5
Datos
2
3
Ocupado
ndice
1
1
2
3
Fr1
Fr2
Fr3
Fr4
Fr5
Datos
6
8
4
Vlido
1
1
1
0
Ocupado
0
1
1
1
2/3
Ocupado
F1
F2
F3
F4
F5
ndice
Fr1
Fr2
Fr3
Fr4
Fr5
Datos
6
8
4
Vlido
0
1
1
0
Ocupado
0
0
0
1
Datos
6
8
4
10
Vlido
0
1
1
1
Ocupado
0
0
0
1
Datos
6
18
4
36
--
Vlido
0
1
1
1
0
Ocupado
0
0
0
1
1
F1
F2
F3
F4
F5
Datos
2
8
4
Ocupado
ndice
0
0
2
3
Ocupado
ndice
Fr1
Fr2
Fr3
Fr4
Fr5
F2
18
F3
F4
F5
0
36
Fr1
Fr2
Fr3
Fr4
Fr5
3/3
2013
29/08/2013
Problema1 2013febrero
Mostrar la evolucin de los Registros en coma
flotante ((FR)) y las estaciones de Reserva ((RS)) p
para
todos los ciclos que sean necesarios en la ejecucin
del siguiente fragmento de cdigo utilizando el
algoritmo de Tomasulo.
i1:MULTDF0,F6,F2
i2:ADDDF4,F2,F6
i3:ADDDF6,F4,F0
i4:ADDDF2,F6,F0
29/08/2013
29/08/2013
i1:
i2:
i3:
i4:
FR
MULTDF0,F6,F2
ADDDF4,F2,F6
ADDDF6,F4,F0
ADDDF2,F6,F0
F0
F2
F4
F6
2.0
2.5
8.0
40
4.0
RS
RS
ID
01
02
03
etiq_1
oper_1
etiq_2
oper_2
ID
04
05
etiq_1
oper_1
etiq_2
oper_2
MULT/DIV
SUMA
Ciclo1: Sedistribuyei1ei2
i1: MULTDF0,F6,F2
i2: ADDD F4,F2,F6
SeejecutaRS011/1
SeejecutaRS041/2
SeenvaRS01:6.5alCDB
RS
ID
i2: 01 00
02
03
etiq_1
oper_1
etiq_2
oper_2
2.5
00
4.0
FR
bitOc. etiqueta dato
F0
F2
F4
F6
Si
04
Si
01
2.0
2.5
8.0
40
4.0
RS
ID etiq_1 oper_1 etiq_2 oper_2
i1: 04 00 4.0 00 2.5
05
MULT/DIV
SUMA
29/08/2013
Ciclo2:
Sedistribuyei3ei4
i3:ADDD F6,F4,F0
i4: ADDD F2,F6,F0
Seactualizael valordeRS01:6.5
SevacaRS01
SeejecutaRS042/2
j
/
SeenvaRS04:10.0alCDB
NOseejecutaRS02,03
FR
bitOc. etiqueta dato
F0
F2
F4
F6
Si
Si
04
03
Si
02
RS
RS
ID etiq_1
01
i3: 02 04
i4: 03 02
oper_1
etiq_2
xx
xx
2.0
2.5
6.5
40
4.0
00
00
oper_2
6.5
6.5
ID
i1: 04 00
05
etiq_1
oper_1
etiq_2
oper_2
4.0
00
2.5
MULT/DIV
SUMA
FR
bitOc. etiqueta dato
F0
F2
F4
F6
Si
03
Si
02
RS
RS
ID
01
i3: 02 04 10.0 00
i4: 03 02 xx 00
etiq_1
oper_1
etiq_2
10.0
2.5
6.5
40
4.0
oper_2
6.5
6.5
ID
04
05
etiq_1
oper_1
etiq_2
oper_2
MULT/DIV
SUMA
29/08/2013
Ciclo4:
Seactualizael valordeRS02:16.5
SevacaRS02
SeejecutaRS031/1
SeenvaRS03:23.0alCDB
FR
bitOc. etiqueta dato
F0
F2
F4
F6
Si
RS
RS
ID etiq_1 oper_1 etiq_2
01
02
i4: 03 02 16.5 00
03
10.0
2.5
6.5
16 5
16.5
oper_2
ID
04
05
etiq_1
oper_1
etiq_2
oper_2
6.5
MULT/DIV
SUMA
FR
bitOc. etiqueta dato
F0
F2
F4
F6
10.0
23.0
6.5
16 5
16.5
RS
RS
ID
01
02
03
etiq_1
oper_1
etiq_2
oper_2
ID
04
05
etiq_1
oper_1
etiq_2
oper_2
MULT/DIV
SUMA
F0,0(R2)
F2,0(R4)
F4,0(R6)
F0,F0,F2
F0,F0,F4
F0,F0,F8
0(R1),F0
R2,R2,#8
R4,R4,#8
R6,R6,#8
R1,R1,#8
inicio
%
%
%
%
%
%
%
%
%
%
%
%
i1
i2
i3
i4
i5
i6
i7
i8
i9
i10
i11
i12
a) Obtenga el diagrama de flujo de datos de la secuencia. Considere que todas las instrucciones tienen una
latencia de 2 ciclos.
b) Transforme la secuencia en instrucciones VLIW para que pueda ser ejecutada por un procesador con un
formato de instruccin que permite emitir simultneamente operaciones a cualquiera de las cuatro unidades
funcionales (son polivalentes). Considere las mismas latencias que en el apartado anterior y que puede efectuar
los reordenamientos que crea oportunos, siempre que no afecten al resultado.
c) Desenrolle el bucle original 4 veces y planifquelo en forma de instrucciones VLIW teniendo en cuentas las
caractersticas del procesador y las latencias. Utilice todos los registros que sean necesarios y compacte el
cdigo VLIW lo mximo posible.
d) Qu mejora en el rendimiento se ha obtenido si se compara el cdigo del apartado b con el del c?
1/2
Solucin
a)
i1
2
i2
i8
i4
2
2
i10
i5
2
i9
i3
2
2
i6
2
i7
2
i11
2
i12
2
b) Son posibles varias soluciones segn se realice el ordenamiento de las operaciones en las instrucciones. En la
solucin que se propone, se han agrupado las instrucciones de incremento de los ndices con la salvedad de R1.
Si se optase por incrementar R1 antes de la instruccin de almacenamiento SD 0(R1), F0 sera necesario
realizar un decremento negativo para compensar, es decir, SD -8(R1), F0.
inicio:
Unidad funcional 1
LD F0, 0(R2)
Unidad funcional 2
LD F2, 0(R4)
Unidad funcional 3
LD F4, 0(R6)
Unidad funcional 4
ADDI R2, R2, #8
ADDI R4, R4, #8
ADDI R6, R6, #8
JMP inicio
2/2
c) La secuencia de cdigo que se obtiene tras desenrrollar 4 veces el bucle original es la siguiente:
inicio: LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
ADDD
ADDD
DIVD
ADDD
ADDD
DIVD
ADDD
ADDD
DIVD
ADDD
ADDD
DIVD
SD
SD
SD
SD
ADDI
ADDI
ADDI
ADDI
JUMP
F0,0(R2)
F2,0(R4)
F4,0(R6)
F10,8(R2)
F12,8(R4)
F14,8(R6)
F20,16(R2)
F22,16(R4)
F24,16(R6)
F30,24(R2)
F32,24(R4)
F34,24(R6)
F0,F0,F2
F0,F0,F4
F0,F0,F8
F10,F10,F12
F10,F10,F14
F10,F10,F8
F20,F20,F22
F20,F20,F24
F20,F20,F8
F30,F30,F32
F30,F30,F34
F30,F30,F8
0(R1),F0
8(R1),F10
16(R1),F20
24(R1),F30
R2,R2,#32
R4,R4,#32
R6,R6,#32
R1,R1,#32
inicio
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
Iter
1
1
1
2
2
2
3
3
3
4
4
4
1
1
1
2
2
2
3
3
3
4
4
4
1
2
3
4
Una transformacin en cdigo VLIW realizando la mxima compactacin posible se muestra en la siguiente
tabla. Los colores representan: 1 iteracin (negro) e instrucciones auxiliares, 2 iteracin (rojo), 3 iteracin
(verde), 4 iteracin (morado).
inicio:
Unidad funcional 1
LD F0, 0(R2)
LD F20, 16(R2)
ADDD F0, F0, F2
ADDD F20, F20, F22
ADDD F0, F0, F4
ADDD F20, F20, F24
DIVD F0, F0, F8
DIVD F20, F20, F8
SD 0(R1), F0
SD 16(R1), F20
Unidad funcional 2
LD F2, 0(R4)
LD F22, 16(R4)
LD F4, 0(R6)
LD F24, 16(R6)
Unidad funcional 3
LD F10, 8(R2)
LD F30, 24(R2)
ADDD F10, F10, F12
ADDD F30, F30, F32
ADDD F10, F10, F14
ADDD F30, F30, F34
DIVD F10, F10, F8
DIVD F30, F30, F8
SD 8(R1), F10
SD 24(R1), F30
Unidad funcional 4
LD F12, 8(R4)
LD F32, 24(R4)
LD F14, 8(R6)
LD F34, 24(R6)
d) El cdigo consume 10 instrucciones VLIW ocupando un total de 160 bytes (10 instrucciones * 16 bytes por
instruccin). En comparacin con el cdigo VLIW sin desenrrollar, el rendimiento, prcticamente, se ha
incrementado por 4 ya que el nmero de ciclos por iteracin es de 11 en comparacin con el caso sin
desenrrollar que es 10 ciclos pero procesando 1 nico elemento, y no 4 como en el caso que nos ocupa.
3/2
//
//
//
//
salto
salto
salto
salto
S1
S1 tomado
S2
S2 tomado
y que la siguiente lista de 9 valores para la variable x es procesada en 9 iteraciones del bucle: 8, 9, 10, 11, 12,
20, 29, 30, 31. La mquina de estados situada a continuacin representa una ligera variante de un predictor de
Smith de 2 bits de historial y se utiliza para predecir la ejecucin de los saltos que hay en el cdigo.
Cul es la secuencia de predicciones para los salto S1 y S2 en cada iteraccin del bucle? Tenga en cuenta que
el historial de cada salto es exclusivo de ese salto y no se debe mezclar con el historial del otro salto.
Solucin
Para la resolucin del ejercicio es fundamental entender el diagrama de estados que muestra el enunciado.
Bsicamente, el diagrama indica en funcin del resultado del salto actual y del historial de los dos saltos
previos, la prediccin de lo que va a ocurrir con el siguiente salto. Es clave separar los historiales de cada
instruccin de salto, es decir, la evolucin de la prediccin de cada salto es independiente del otro.
Pginas 227 y 228 y ejercicio 5.7 del texto base de la asignatura.
En la siguiente secuencia se puede apreciar la diferencia entre la prediccin que se realiza de la efectividad o
no del salto S1 y S2 y la situacin real que se produce.
Estado:
S1 predicho:
S1 real:
8
NN
N
E
9
NE
E
N
10
EN
E
E
11
NE
E
N
12
EN
E
E
20
NE
E
E
29
EE
E
N
30
EN
E
E
31
NE
E
N
Estado:
S2 predicho:
S2 real:
NN
N
N
NN
N
N
NN
N
E
NE
E
N
EN
E
N
NN
N
E
NE
E
N
EN
E
E
NE
E
N
Inicialmente, el autmata se encuentra en el estado NN, es decir, predice que el siguiente salto no se tomar
(N). El primer valor de x es 8 (par) lo que provoca que el salto sea efectivo, con lo que se alimenta al
autmata con el valor E y se avanza al estado NE, indicando que la prediccin para el prximo salto es que se
produzca (salida E). Estando en ese estado, el valor de x pasa a ser 9 por lo que no se produce el salto (entrada
N al autmata) y se pasa al estado EN que predice que el prximo salto s se producir (salida E). As se sigue
hasta completar la secuencia de valores de x.
Para el salto S2:
Igual que en el caso anterior, el autmata se encuentra en el estado NN pero permanece en ese estado hasta que
x es 10; en ese momento salta al estado NE y..
2/2
2013
R5,R0,#1
R6,0(R5)
R8,8(R5)
R9,16(R5)
R7,24(R5)
R1,R8,R9
R8,R9,R7
0(R8),R1
R8,0(R6)
Solucin
a) En el fragmento de cdigo, las dependencias de datos existentes son:
i1:
i2:
i3:
i4:
i5:
i6:
ADDI
LD
LD
LD
LD
ADD
R5,R0,#1
R6,0(R5)
R8,8(R5)
R9,16(R5)
R7,24(R5)
R1,R8,R9
i7: ADD
R8,R9,R7
i8: SD
0(R8),R1
i9: LD
R8,0(R6)
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
RAW
RAW
RAW
RAW
RAW
RAW
RAW
RAW
WAR
WAW
RAW
RAW
RAW
RAW
WAW
WAW
WAR
WAR
con
con
con
con
con
con
con
con
con
con
con
con
con
con
con
con
con
con
i1
i1
i1
i1
i3
i4
i4
i5
i6
i3
i6
i3
i7
i2
i3
i7
i6
i8
por
por
por
por
por
por
por
por
por
por
por
por
por
por
por
por
por
por
R5
R5
R5
R5
R8
R9
R9
R7
R8
R8
R1
R8
R8
R6
R8
R8
R8
R8
b) Existen dependencias ambiguas de memoria de las instrucciones i2, i3, i4 e i5 con i8. Las instrucciones
de carga i2, i3, i4 e i5 leen las posiciones de memoria M[0+R5], M[8+R5], M[16+R5], y M[24+R5],
respectivamente, mientras que la instruccin de almacenamiento i8 tiene que escribir en M[0+R8], lo que
implica la existencia de un riesgo WAR.
Entre la instruccin i8 e i9 existe otra dependencia ambigua de tipo RAW ya que se puede dar el caso de que
el contenido de R8 y R5 coincidan y, por lo tanto, el destino y fuente de ambas instrucciones.
1/2
c) El cdigo con los registros renombrados y en el que han desaparecido las dependencias falsas de datos es:
i1:
i2:
i3:
i4:
i5:
i6:
ADDI
LD
LD
LD
LD
ADD
Rr1,R0,#1
Rr2,0(Rr1)
Rr3,8(Rr1)
Rr4,16(Rr1)
Rr5,24(Rr1)
Rr6,Rr3,Rr4
i7: ADD
Rr7,Rr4,Rr5
i8: SD
0(Rr7),Rr6
i9: LD
Rr9,0(Rr2)
//
//
//
//
//
//
//
//
//
//
//
//
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
dependencia
RAW
RAW
RAW
RAW
RAW
RAW
RAW
RAW
RAW
RAW
RAW
RAW
con
con
con
con
con
con
con
con
con
con
con
con
i1
i1
i1
i1
i3
i4
i4
i5
i6
i7
i3
i2
por
por
por
por
por
por
por
por
por
por
por
por
Rr1
Rr1
Rr1
Rr1
Rr3
Rr4
Rr4
Rr5
Rr6
Rr7
Rr3
Rr2
d) Las dependencias de datos RAW se elimina mediante el mecanismo que establecen las estaciones de reserva
y que obligan a que los operandos estn disponibles para poder emitir una instruccin.
El renombramiento de registros no elimina ninguna de las dependencias de memoria ya que al emitirse la
instrucciones no es posible conocer si hay coincidencia en las direcciones. Para eliminar las dependencias de
memoria falsas se establece el mecanismo de terminacin ordenada con el buffer de almacenamiento. Las
WAW se evitan, claramente, mediante un almacenamiento ordenado. Los riesgos WAR se evitan garantizando
que una instruccin de almacenamiento posterior en el cdigo a una carga, no escribe antes en memoria gracias
al almacenamiento diferido.
Los riesgos de memoria RAW se gestionan mediante hardware adicional que permite la deteccin de la
coincidencia de memoria y el reenvo del dato del almacenamiento (origen) hacia la carga (destino).
2/2
se pretende ejecutar el siguiente cdigo vectorial para un vector con una longitud de 64 elementos:
LV
MULTV
MULTSV
SV
V1,R1
V2,V1,V3
V4,V2,F0
R2,V4
a) Suponiendo que no existe encadenamiento entre las unidades, calcule R100 , T100 y R .
b) Una medida habitual del impacto de los costes adicionales es N1/ 2 que es la longitud del vector necesaria
para alcanzar la mitad del valor de R . Calcule N1/ 2 .
c) Ahora dispone de encadenamiento entre las unidades funcionales y solapamiento entre convoyes dentro de la
misma iteracin. Cul es el nuevo valor de ciclos por elemento?
Solucin
a) Analizando los riesgos estructurales se obtiene el siguiente cdigo vectorial:
Convoy 1:
Convoy 2:
Convoy 3:
Convoy 5:
LV
MULTV
MULTSV
SV
V1, R1
V2, V1, V3
V4, V2, F0
R2, V4
La secuencia de ejecucin de los cuatro convoyes si se considera que VLR es 64 es la que se muestra en la
siguiente figura.
Telemento= 4 ciclos
LV
12
64
MULTV
64
MULTSV
64
SV
64
12
Dado que hay 4 convoyes, Telemento es 4 ciclos y el Tarranque total es igual a la suma de los tiempos de
arranque visibles de los cuatro convoyes. Esto es
Tarranque = Tarranque LV + 2*Tarranque MULTV + Tarranque SV
1/2
2 100 200
=
= 0.3875 FLOP ciclo
T100
516
El R expresado en FLOP/ciclo es
2 n
R = lim
n
T
n
R = lim
n
10 +
n
64
2 n
(15 + 38) + 4 n
Para simplificar los clculos, la expresin n / 64 se puede reemplazar por una cota superior dada por
( n / 64 + 1) . Sustituyendo esta cota en R y teniendo en cuenta que el nmero de operaciones vectoriales que se
realizan es de dos, una multiplicacin vectorial y una multiplicacin vectorial-escalar, se tiene
R = lim
n
10 +
2 n
+ 1 (15 + 38) + 4 n
64
2 n
R = lim
n 63 + 4,828 n
R = 0,41425 FLOP/ciclo
Para expresar R en FLOPS, habra que multiplicar el valor en FLOP/ciclo por la frecuencia del procesador. Se
tendra as
R = 0,41425 FLOP/ciclo (100 106 )Hz
R = 41,425 MFLOPS
b) Tal y como indica el enunciado, N1/ 2 es el nmero de elementos tal que RN1 / 2 =
R N1 / 2 =
R
. Tendremos as:
2
R 0,41425 FLOP/ciclo
=
= 0,207125 FLOP/ciclo
2
2
2/2
Rn =
2 n
Rn =
n
10 + (15 + 38) + 4 n
64
2 n
Rn =
n
10 +
+ 1 (15 + 38) + 4 n
64
2 n
Rn =
63 + 4,828 n
Basta con igualar las expresiones anteriores de RN1 / 2 y Rn para obtener el valor de n que las satisface:
2 n
= 0,207125 FLOP/ciclo
63 + 4,828 n
n = 13,05
Por lo tanto, N1/ 2 = 13 .
c) Para calcular Telemento en situaciones con solapamiento hay que recordar que:
Telemento = (Tn Tarranque ) / n
Por un lado, tenemos el siguiente diagrama de ejecucin:
T elemento = 1,89 ciclos
12
LV
64
MULTV
64
MULTSV
64
SV
12
19
76
64
83
12
147
159
que nos indica que el tiempo total de ejecucin utilizando un VLR de 64 es 159 ciclos.
El tiempo de arranque total visible es:
Tarranque = Tarranque LV + 2*Tarranque MULTV + Tarranque SV
Tarranque = (12 + 2*7 + 12) ciclos = 38 ciclos
Por lo tanto, se tiene:
Telemento = (Tn Tarranque ) / n
Telemento = (159 38) / 64
Telemento = 1,89
3/2