Sunteți pe pagina 1din 51

TIPO DE EXAMEN: 1 SEMANA - NACIONAL FEBRERO 2012

Apellidos: ........................................................................................... Nombre:.........................................DNI:....................................


INSTRUCCIONES: Complete sus datos personales en la cabecera de esta hoja, y ENTRGUELA junto con el resto del examen.
Lea atentamente todos los enunciados.

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 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

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.

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

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

Eti_1 Ope_1 Eti_2 Ope_2

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

Ciclo 2: Se distribuyen i3 e i4 en orden.

ID

RS
Eti_1 Ope_1 Eti_2 Ope_2

RS
ID

FR

Eti_1 Ope_1 Eti_2 Ope_2

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

Eti_1 Ope_1 Eti_2 Ope_2

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

Eti_1 Ope_1 Eti_2 Ope_2

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

Eti_1 Ope_1 Eti_2 Ope_2

ID

Bit Ocu

F0
00

7.5

00

Mult/Div
Suma/Resta

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

F2

01

2.5

F4

05

F6

02

3/2

Ciclo 6: Al final del ciclo 6 finaliza la ejecucin de i2

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

Eti_1 Ope_1 Eti_2 Ope_2

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 8: Al final del ciclo 8 finaliza la ejecucin de i3.


ID

RS
Eti_1 Ope_1 Eti_2 Ope_2

RS
ID

Eti_1 Ope_1 Eti_2 Ope_2

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

Eti_1 Ope_1 Eti_2 Ope_2

FR
ID

Bit Ocu

04

F0

05

F2

25.5

F4

22.5

03

Mult/Div
Suma/Resta

F6

02

Etiq.

Dato

Ciclo 10: Al final del ciclo 10, i4 finaliza su ejecucin.


ID

RS
Eti_1 Ope_1 Eti_2 Ope_2

01
02 (i4)

00

25.5

03

00

RS
ID

Eti_1 Ope_1 Eti_2 Ope_2

FR
ID

Bit Ocu

04

F0

05

F2

25.5

F4

22.5

Mult/Div
Suma/Resta

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

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

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

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

Nmero de ciclos consumidos: 9


Nmero de operaciones realizadas: 5
Operaciones por ciclo: 0,555
Tamao en memoria: 9 instrucciones * 20 bytes = 180 bytes
Espacio utilizado: 5 operaciones * 4 bytes = 20 bytes
% espacio desaprovechado: 88,89
Ciclos ejecutados para 800 elementos: 9 ciclos * 800 iteraciones : 7200 ciclos
Instrucciones procesadas: 9 * 800 iteraciones: 7200 instrucciones
Otra solucin vlida que mejora a la anterior es la que se muestra a continuacin.
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

SUBI R1,R1,#8

BNEZ R1,Loop

Nmero de ciclos consumidos: 7


Nmero de operaciones realizadas: 5
Operaciones por ciclo: 0,71
Tamao en memoria: 7 instrucciones * 20 bytes = 140 bytes
Espacio utilizado: 5 operaciones * 4 bytes = 20 bytes
% espacio desaprovechado: 85%
Ciclos ejecutados para 800 elementos: 7 ciclos * 800 iteraciones : 6300 ciclos
Instrucciones procesadas: 7 * 800 iteraciones: 6300 instrucciones

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

6/2

b) En base a la solucin no ptima del apartado (a) se tendra:

Carga/almacenamiento Carga/almacenamiento Operaciones FP


1 LD F0,0(R1)

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

ADDD F12,F10,F2 ADDD F16,F14,F2

ADDD F20,F18,F2 ADDD F24,F22,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

Nmero de ciclos consumidos: 9


Nmero de operaciones realizadas: 20
Operaciones por ciclo: 20/9=2,222
Tamao en memoria: 9 instrucciones * 20 bytes = 180 bytes
Espacio utilizado: 20 operaciones * 4 bytes = 80 bytes
% espacio desaprovechado: 55 %
Ciclos ejecutados para 800 elementos: 9 ciclos * 134 iteraciones : 1206 ciclos
Instrucciones procesadas: 9 * 134 iteraciones: 1206 instrucciones
En base a la solucin ptima del apartado (a) se tendra:

Carga/almacenamiento Carga/almacenamiento Operaciones FP


1 LD F0,0(R1)

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

Nmero de ciclos consumidos: 7


Nmero de operaciones realizadas: 8
Operaciones por ciclo: 8/7=1,14
Tamao en memoria: 7 instrucciones * 20 bytes = 140 bytes
Espacio utilizado: 8 operaciones * 4 bytes = 32 bytes
% espacio desaprovechado: 77%
Ciclos ejecutados para 800 elementos: 7 ciclos * 400 iteraciones : 2800 ciclos
Instrucciones procesadas: 7 * 400 iteraciones: 2800 instrucciones

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

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.

Carga/almacenamiento Carga/almacenamiento Operaciones FP

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

ADDD F4,F0,F2 SUBI R1,R1,#8

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:

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

8/2

Carga/almacenamiento Carga/almacenamiento Operaciones FP

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

ADDD F4,F0,F2 SUBI R1,R1,#8

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

Nmero de ciclos consumidos: 1 ciclo


Nmero de operaciones realizadas: 5 operaciones
Operaciones por ciclo: 5 operaciones/ciclo
Tamao en memoria: 11 instrucciones * 20 bytes = 220 bytes
Espacio utilizado: 20 operaciones * 4 bytes = 80 bytes
Espacio desaprovechado: 63 %
Ciclos ejecutados para 800 elementos: 5 del prlogo + 5 del eplogo + 95 iteraciones de 1 ciclo : 105 ciclos
Instrucciones procesadas: 105 instrucciones

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

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.

1 semana - Nacional - Febrero - curso 2011/12 Ingeniera de Computadores II - UNED

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:

0,33 56 2 nseg 0, 08 56 3 nseg 0,59 56 1 nseg 83, 44 nseg .


Por lo tanto, la aceleracin obtenida por la mquina B con respecto a la mquina sin segmentar es de 1,8:
150 nseg
1,8 veces ms rpido
83, 44 nseg

Problema 2 de febrero de la segunda semana


En un procesador vectorial con las siguientes caractersticas:
-

Registros con una longitud vectorial mxima de 64 elementos.


Una unidad de suma vectorial con tiempo de arranque de 6 ciclos.
Una unidad de multiplicacin con tiempo de arranque de 7 ciclos.
Una unidad de carga/almacenamiento con tiempo de arranque de 12 ciclos.
La frecuencia de trabajo del procesador es 500 MHz.
Tbase de 10 ciclos y Tbucle de 15 ciclos.

se pretende ejecutar el siguiente bucle:


for (i=1; i<=n; i++)
A(i) := x*A(i) + y*A(i);
end for;

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

a) Sin considerar encadenamiento de resultados.


b) Permitiendo encadenamientos.
c) Considerando encadenamientos y dos unidades de multiplicacin.
Solucin
a) Analizando los riesgos estructurales se obtiene el siguiente cdigo vectorial:
Convoy 1:
Convoy 2:
Convoy 3:
Convoy 4:
Convoy 5:

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

En lo que respecta al rendimiento expresado en FLOP por ciclo


3 n

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

En lo que respecta al rendimiento expresado en FLOP por ciclo


3 n

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

R = 1,315 FLOP ciclo

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

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.

29/08/2013

La operacin suma tiene una latencia de un


ciclo y la de multiplicacin de dos 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 se 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=8.0, F2=3.5, F4=2.0 y F6=3.0.

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

Ciclo4: Seactualizael valordeRS04:11.0


Seactualizael valordeRS05:19.25
SevacaRS04
SevacaRS05
SeejecutaRS021/1
SeenvaRS02:30.25alCDB

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

Problema 2 Septiembre 2012 Original


Suponga que un salto tiene la siguiente secuencia de resultados efectivos (E) y no efectivos (N):
E, E, E, N, N, E, E, E, N, N, E, E, E, N, N
Muestre mediante una tabla la secuencia de predicciones utilizando un contador de saturacin de 1 bit
(predictor de Smith) para la secuencia dada. Suponga que el estado inicial del contador es efectivo (TTaken).
Muestre mediante una tabla la secuencia de predicciones utilizando un contador de saturacin de 2 bits
(predictor de Smith) para la secuencia dada. Suponga que el estado inicial del contador es fuertemente
efectivo (ST Strongly Taken).
Cul es la precisin de la prediccin que han obtenido ambos contadores para la secuencia de saltos?
Solucin
La siguientes tablas muestra la evolucin del contador de saturacin de 1 y 2 bits, la prediccin del salto, el
resultado real del salto, si la prediccin fue correcta o no y la transicin al siguiente estado.
Contador Prediccin Resultado real Prediccin correcta? Siguiente estado
T

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

Contador de 2 Prediccin Resultado real Prediccin correcta? Siguiente estado


bits
ST

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

Problema 1 septiembre 2012 reserva


Tras aadir un nuevo procesador a un computador se logra un aumento de la velocidad de ejecucin en
un factor 9. Se observa que tras aplicar esta mejora, el 55% del tiempo de ejecucin se est utilizando
el nuevo procesador. Qu porcentaje del tiempo de ejecucin original se ha reducido gracias a la
mejora?

El recurso utilizado mejora en 9 el rendimiento.


Porcentaje del tiempo de ejecucin que se aplica la mejora=55%
Suponiendo que normalizamos el tiempo actual de ejecucin a 1 (esto es, aplicando la mejora), el
tiempo total de ejecucin antes de aplicar la mejora es:
Toriginal=0.45+(0.55*9)=5.4
Por lo tanto, la ganancia obtenida aplicando la mejora es del 5,2. Sustituyendo en la expresin de la
ganancia:
5.4=9/(1+f(9-1)) despejando f = 8.3%
(f es la fraccin del tiempo donde no se puede aplicar la mejora).
Por lo tanto, el porcentaje de tiempo que se ha convertido al modo rpido es:
(100%-8.3%)=91.7%

Problema 2 Septiembre 2012 reserva


Considere un sencillo procesador superescalar dotado de un RRF con acceso indexado y con dos estaciones de
reserva de 4 entradas asociadas, respectivamente, a una unidad de multiplicacin (3 ciclos, segmentada) y a dos
unidades funcionales de suma/resta (2 ciclos, ambas segmentadas). Suponga que las instrucciones siguientes:
i1:
i2:
i3:
i4:

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

i1:MULTD F3, F1, F2


i2: ADDD F2, F3, F1
i3: SUBD F3, F3, F1
i4: ADDD F5, F1, F2

Se considera que en el ciclo 0 se distribuya la primera instruccin a la estacin de


reserva. Observe que aunque las instrucciones ya se encuentren en las estaciones de
reserva listas para ser emitidas a las unidades funcionales, deben esperar a que se
generen los operandos con el fin de respetar las dependencias verdaderas.
b
Ciclo 0: Llegada de i1 a la estacin de reserva.
Renombramiento de F3 como Fr1.

F1
F2
F3
F4
F5

Datos
2
3

Ocupado

ndice

Fr1
Fr2
Fr3
Fr4
Fr5

Datos
--

Vlido
0

Ocupado
1

1/3

Ciclo 1: Llegada de i2 a la estacin de reserva.


Renombramiento de F2 como Fr2.
Emisin a la unidad funcional y comienzo de ejecucin de i1.

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

Ciclo 2: Llegada de i3 a la estacin de reserva.


Nuevo renombramiento de F3 como Fr3. Segundo ciclo de ejecucin de i1.

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

Ciclo 3: Llegada de i4 a la estacin de reserva.


Renombramiento de F5 como Fr4. Finalizacin de i1.
Escritura de resultado en Fr1 y copia a estaciones de reserva para emisin de
i2 e i3.

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

Ciclo 4: Emisin de i2 e i3.


Liberacin de Fr1.

F1
F2
F3
F4
F5

Datos
2
3

Fr1
Fr2
Fr3
Fr4
Fr5

Ciclo 5: Finalizacin de i2. Escritura de resultado en Fr2.


Finalizacin de i3. Escritura de resultado en Fr3.
Copia del valor de Rf2 en entrada de la instruccin i4 para poder emitirla.

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

Ciclo 6: Emisin de i4.


Escritura de resultado de Fr2 en F2. Liberacin de Fr2. Escritura de resultado
en Fr3 en F3. Liberacin de Fr3.
Datos
2

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

Ciclo 7: Finalizacin de i4.


Escritura de resultado en Fr4.

F1
F2
F3
F4
F5

Datos
2
8
4

Ocupado

ndice

0
0

2
3

Ocupado

ndice

Fr1
Fr2
Fr3
Fr4
Fr5

Ciclo 8: Escritura de Fr4 en F5.


Liberacin de Fr4.
Datos
F1

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

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.

29/08/2013

La operacin suma tiene una latencia de un


ciclo y la de multiplicacin de dos 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 se 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=8.0 y F6=4.0.

29/08/2013

i1:
i2:
i3:
i4:

FR

MULTDF0,F6,F2
ADDDF4,F2,F6
ADDDF6,F4,F0
ADDDF2,F6,F0

bitOc. etiqueta dato

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

Ciclo3: Seactualizael valordeRS04:10.0


SevacaRS04
SeejecutaRS021/1
SeenvaRS02:16.5alCDB
NOseejecutaRS03

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

Ciclo5: Seactualizael valordeRS03:23.0


SevacaRS03

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

Problema 2 Febrero 2013 1 Semana


Dado el siguiente cdigo:
inicio: LD
LD
LD
ADDD
ADDD
DIVD
SD
ADDI
ADDI
ADDI
ADDI
JUMP

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)

ADDD F0, F0, F2

Unidad funcional 3
LD F4, 0(R6)

Unidad funcional 4
ADDI R2, R2, #8
ADDI R4, R4, #8
ADDI R6, R6, #8

ADDD F0, F0, F4


DIVD F0, F0, F8
SD 0(R1), F0

ADDI R1, R1, #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)

ADDI R1, R1, #32

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)

ADDI R2, R2, #32


ADDI R4, R4, #32
ADDI R6, R6, #32
JMP inicio

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

Problema 3 Febrero 2013 1 Semana


Considere el siguiente segmento de cdigo que se ejecuta en el cuerpo principal de un bucle:
if (x es par) then
incrementar a;
if (x es mltiplo de 10) then
incrementar b;

//
//
//
//

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

Para el salto S1:


1/2

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

Problema 2 Febrero 2013 2 Semana


Dado el siguiente fragmento de cdigo:
ADDI
LD
LD
LD
LD
ADD
ADD
SD
LD
a)
b)
c)
d)

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)

Seale todas las dependencias de datos existentes en el fragmento.


Existen dependencias de memoria? En caso afirmativo indique cules y a qu se deben.
Renombre el cdigo e indique qu dependencias permanecen.
Cmo se gestionan en un procesador superescalar las dependencias de datos y de memoria que
permanecen tras el renombramiento?

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

Problema 3 Febrero 2013 2


En un procesador vectorial con las siguientes caractersticas:

Registros con una longitud vectorial mxima de 64 elementos.


Una unidad de suma vectorial con tiempo de arranque de 6 ciclos.
Una unidad de multiplicacin con tiempo de arranque de 7 ciclos.
Una unidad de carga/almacenamiento con tiempo de arranque de 12 ciclos.
La frecuencia de trabajo del procesador es 100 MHz.
Tbase de 10 ciclos y Tbucle de 15 ciclos.

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

Tarranque = (12 + 2*7 + 12) ciclos = 38 ciclos


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 + 38) + 4 n
64
que para el caso particular de n=100 es
100
T100 = 10 +
(15 + 38) + 4 100
64
T100 = 10 + 2 (15 + 38) + 4 100
T1000 = 516 ciclos
R100 =

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

Por otra parte, sabemos que:


(Operaciones en coma flotante n elementos)
Tn

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

S-ar putea să vă placă și