Professional Documents
Culture Documents
INSTRUCCIONES: Complete sus datos personales en la cabecera de esta hoja, y ENTRÉGUELA junto con el resto del examen.
Lea atentamente todos los enunciados.
Problema 1 (3 puntos)
Utilizando el algoritmo de Tomasulo para realizar la ejecución del siguiente fragmento de código:
i1: MULTD F2, F2, F6
i2: MULTD F4, F2, F6
i3: ADDD F2, F4, F6
i4: ADDD F6, F2, F6
muestre la evolución de los registros en coma flotante (FR) y de las estaciones de reserva (RS) para todos los
ciclos que sean necesarios. Considere las siguientes hipótesis de partida:
Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos instrucciones en
cada ciclo según el orden del programa.
Una instrucción puede comenzar su ejecución en el mismo ciclo en que se distribuye a una estación de
reserva.
La operación suma tiene una latencia de dos ciclos y la de multiplicación de tres ciclos.
Se permite que una instrucción reenvíe su resultado a instrucciones dependientes durante su último ciclo
de ejecución. De esta forma una instrucción a la espera de un resultado puede comenzar su ejecución 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 multiplicación/división. 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)
Loop: LD F0,0(R1)
ADDD F4,F0,F2
SD 0(R1),F4
SUBI R1,R1,#8
BNEZ R1,Loop
y de un procesador VLIW con un formato de instrucción 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 operación entera/salto (1 ciclo de latencia). Sin considerar la existencia del hueco de retardo de
salto en la planificación, se pide que:
Dada una red con topología de hipercubo con dimensión d = 5, se pide que:
a)
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 (i3) 05 -- 00 3 04 (i1) 00 2.5 00 3 F0 2
02 (i4) 01 -- 00 3 05 (i2) 04 -- 00 3 F2 1 01 2.5
03 Mult/Div F4 1 05 4
Suma/Resta F6 1 02 3
Ciclo 3: Al final del ciclo 3, la instrucción i1 finaliza su ejecución y emite su ID (04). En ese momento, todos
los campos etiquetados que contienen el valor 04 insertan el resultado emitido.
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 (i3) 05 -- 00 3 04 (i1) 00 2.5 00 3 F0 2
02 (i4) 01 -- 00 3 05 (i2) 04 -- 00 3 F2 1 01 2.5
03 Mult/Div F4 1 05 4
Suma/Resta F6 1 02 3
Ciclo 4:
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 (i3) 05 -- 00 3 04 F0 2
02 (i4) 01 -- 00 3 05 (i2) 00 7.5 00 3 F2 1 01 2.5
03 Mult/Div F4 1 05 4
Suma/Resta F6 1 02 3
Ciclo 5:
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 (i3) 05 -- 00 3 04 F0 2
02 (i4) 01 -- 00 3 05 00 7.5 00 3 F2 1 01 2.5
03 Mult/Div F4 1 05 4
Suma/Resta F6 1 02 3
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 (i3) 05 -- 00 3 04 F0 2
02 (i4) 01 -- 00 3 05 00 7.5 00 3 F2 1 01 2.5
03 Mult/Div F4 1 05 4
Suma/Resta F6 1 02 3
Ciclo 7:
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 (i3) 00 22.5 00 3 04 F0 2
02 (i4) 01 -- 00 3 05 F2 1 01 2.5
03 Mult/Div F4 22.5
Suma/Resta F6 1 02 3
Ciclo 9:
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 04 F0 2
02 (i4) 00 25.5 00 3 05 F2 25.5
03 Mult/Div F4 22.5
Suma/Resta F6 1 02 3
RS RS FR
ID Eti_1 Ope_1 Eti_2 Ope_2 ID Eti_1 Ope_1 Eti_2 Ope_2 ID Bit Ocu Etiq. Dato
01 04 F0 2
02 05 F2 25.5
03 Mult/Div F4 22.5
Suma/Resta F6 28.5
b) El siguiente diagrama ilustra todas las dependencias de datos existentes entre las instrucciones que
componen la secuencia.
i1
RAW
WAW
i2
WAR WAR
RAW RAW
WAR
WAR
i3
WAR
RAW
i4
c) A partir del gráfico con las dependencias verdaderas se puede establecer de forma sencilla el límite
máximo de flujo de datos. Se puede apreciar que la ruta crítica consta de 10 ciclos que es el límite que debe
alcanzar la ejecución aplicando el algoritmo de Tomasulo.
i1
i2
3 3
i3
i4
Tras visualizar el esquema, hay que trasladarlo a las instrucciones VLIW del procesador disponible.
Dado que la instrucción de comparación realiza la comparación 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 posición 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í:
a)
b) La distancia de Hamming para los procesadores 00000 y 11111 se calcula utilizando la operación XOR. Así
00000 ⊕ 11111 = 11111, siendo la distancia el número de bits a 1 en el resultado de dicha operación, es decir,
5. El esquema del camino más corto será
Dado que todos los bits de la distancia de Hamming entre ambos procesadores tiene valor 1, el camino más
corto se realizará cambiando todos los bits del procesador inicial de 0 a 1, desde el menos significativo al más
significativo.
c) La conectividad de arco de una red hipercubo se describe como “el menor número de arcos que deben
eliminarse para obtener dos redes disjuntas”. Esta conectividad se puede calcular como el log2(p). Dado que un
hipercubo de dimensión 5 tiene 32 procesadores, log2(32) = 5.
INSTRUCCIONES: Complete sus datos personales en la cabecera de esta hoja, y ENTRÉGUELA junto con el resto del examen.
Lea atentamente todos los enunciados.
Problema 1 (2 puntos)
Un procesador sin segmentación necesita 150 nseg. para procesar una instrucción. Con respecto a este
procesador, calcule la aceleración que se obtiene en los dos siguientes casos:
a) Un procesador A dotado de una segmentación de 7 etapas, consumiendo cada etapa el mismo tiempo.
Cada etapa ocasiona una sobrecarga de 6 nseg., no existiendo ningún tipo de detención en la
segmentación.
b) Un procesador B con una segmentación 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 segmentación son detenidas durante un ciclo de reloj y un 8%
durante dos ciclos.
Problema 2 (3 puntos)
Escriba el código vectorial que realizaría las operaciones ubicadas en el interior del bucle y calcule T,, T;ooo,
R10oo y Roo en los siguientes casos:
2• semana- Nacional y Unión Europea- Febrero- curso 2011/12- Ingeniería de Computadores 11 - UNED 112
Problema 3 (3 puntos)
Se dispone de un sistema biprocesador (CPUs A y B) de memoria compartida que utiliza un protocolo snoopy
de coherencia de caché. Sabiendo que la CPU B tiene cargada en caché la variable X y que la CPU A realiza
una lectura sobre la variable X (read (X)), seguida de una escritura sobre la misma variable (wri te (X)). Se
pide que:
a) Describa la secuencia de acciones de coherencia y las etiquetas de las cachés de cada procesador para
la variable X durante las instrucciones ejecutadas.
b) ¿Qué problemas pueden ocurrir en caso de necesitar que las operaciones realizadas por la CPU A se
realicen de manera atómica, es decir, que su resultado sea independiente de las posibles acciones
realizadas por la CPU B mientras la CPU A está ejecutando sus acciones?
e) Describa la secuencia de acciones de coherencia y las etiquetas de las cachés de cada procesador para
la variable X en cada uno de los posibles problemas.
2• semana- Nacional y Unión Europea- Febrero- curso 2011/12- Ingeniería de Computadores 11 - UNED 2/2
Problema 1 Febrero 2012 2ª (2 puntos) – Igual que actividad 1.3 del libro de texto.
Un procesador sin seg mentación necesita 150 nseg. para procesar una instru cción. Con respecto a este
procesador, calcular la aceleración que se obtiene en los dos casos siguientes:
a) Un procesador A dotado de una segm entación de 7 etapas, consumiendo cada etapa el m ismo tiempo.
Cada etapa ocasiona una sobrecarga de 6 nse g. no existiendo ningún tipo de detención en la
segmentación.
150 nseg
6 nseg 27, 43 nseg
7 etapas
Por lo tanto, la aceleración obtenida por la máquina A con respecto a la máquina sin segmentar es 5,47:
150 nseg
5, 47 veces más rápido
27, 43 nseg
b) Un procesador B con una segm entación 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 segmentación son detenidas durante un ciclo de reloj y un 8% durante
dos ciclos.
La etapa más lenta es la que dicta la velocidad de la s restantes etapas, por lo que cada etapa consumirá 56
nseg. (50 nseg. más los 6 nseg. de retardo).
El 8% ocasiona una detención de dos ciclos, por lo que consumen 168 nseg. 3 ciclos 56 nseg .
El 33% ocasiona una detención de un ciclo, consumiendo 112 nseg. 2 ciclos 56 nseg
El 59%, no provocan detenciones, empleando sólo un ciclo de reloj (56 nseg.).
De acuerdo con esto, el tiempo medio consumido por una instrucción es:
Por lo tanto, la aceleración obtenida por la máquina B con respecto a la máquina sin segmentar es de 1,8:
150 nseg
1,8 veces más rápido
83, 44 nseg
Problema 2 Febrero 2ª Semana 2012 (3 puntos) - Igual que actividad 3.12 del libro de texto.
Escriba el código vectorial que realizaría las operaciones ubicadas en el interior del bucle y calcule Tn,
T1000, R1000 y R∞ en los siguientes casos:
Telemento = 5 ciclos
12 64
7 64
LV MULTSV
7 64
MULTSV
6 64
ADDV 64 12
SV
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
n
Tn 10 15 44 n 5
64
1000
T1000 10 15 44 5 1000 10 16 15 44 5 1000 5954 ciclos
64
3 1000 3000
R1000 0,5039 FLOP ciclo
T1000 5954
3n 3n
R lim lim
n n 10 n 15 44 5n
n T
64
Para simplificar los cálculos, la expresión n / 64 se puede reemplazar por una cota superior dada por
n/64 1. Sustituyendo esta cota en Ry teniendo en cuenta que el número de operaciones vectoriales que
se realizan en el bucle DAXPY son dos, una multiplicación y una suma, se tiene
3n 3n
R lim lim 0,5066 FLOP / ciclo
n
10 n 1 15 44 5n n 69 5,9219n
64
Para expresar R en FLOPS, habría que multiplicar el valor en FLOP/ciclo por la frecuencia del
procesador. Se tendría así
R 253 MFLOPS
b) Dado que ahora es posible encadenar los resultados de las unidades, la organización del código
vectorial en convoyes quedaría de la siguiente forma:
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
n
Tn 10 15 44 n 2
64
1000
T1000 10 15 44 2 1000 10 16 15 44 2 1000 2954 ciclos
64
3 1000 3000
R1000 1, 0156 FLOP ciclo
T1000 2954
3n 3n 3n
R lim lim lim
n n 10 n 15 44 2n n 10 n 1 15 44 2n
n T
64
64
3n
lim 1, 0267 FLOP / ciclo
n 69 2,9219n
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
n
Tn 10 15 37 n 2
64
1000
T1000 10 15 37 2 1000 10 16 15 37 2 1000 2842 ciclos
64
3 1000 3000
R1000 1, 0555 FLOP ciclo
T1000 2842
3n 3n 3n
R lim lim lim
n T
n n
n n
n
10 64 15 37 2n 10 64 1 15 37 2n
3n
lim 1,315 FLOP / ciclo
n 69 2,8125n
Problema 3 (3 puntos) Febrero 2012 2ª
Se dispone de un sistema biprocesador (CPUs A y B) de memoria compartida que utiliza un protocolo snoopy
de coherencia de caché. Sabiendo que la CPU B tiene cargada en caché la variable X y que la CPU A realiza
una lectura sobre la variable X ( read(X)), seguida de una escritura sobre la misma variable ( write(X)). Se
pide que:
a) Describa la secuencia de acciones de coherencia y las etiquetas de las cachés de cada procesador para
la variable X durante las instrucciones ejecutadas.
b) ¿Qué problemas pueden ocurrir en caso de necesitar que las operaciones realizadas por la CPU A se
realicen de manera atómica, es decir, que su resultado sea independiente de las posibles acciones
realizadas por la CPU B mientras la CPU A está ejecutando sus acciones?
c) Describa la secuencia de acciones de coherencia y las etiquetas de las cachés de cada procesador para
la variable X en cada uno de los posibles problemas.
Solución
CPU A CPU B
inválida(X)
A: read(X) compartida(X)
C_lectura(X) compartida(X)
A: write(X) sucia(X)
C_escritura(X) Inválida X)
b) Los posibles problemas son que la CPU B realice una escritura o una lectura sobre la variable X justo después de
la lectura de la CPU A sobre X y antes de la escritura de la CPU A.
El caso de la lectura de la CPU B sobre X no presenta problemas ya que el valor que tiene la CPU A no se modifica
y las operaciones realizadas siguen siendo atómicas.
CPU A CPU B
inválida(X)
A: read(X) compartida(X)
C_lectura(X) compartida(X)
B: read(X) compartida(X)
compartida(X)
A: write(X) sucia(X)
C_escritura(X) inválida (X)
c) Sin embargo, el caso de una escritura de la CPU B sobre X, sí presenta problemas. La escritura de CPU B sobre
X invalida la copia de caché de la CPU A. Cuando la CPU A quiera realizar la escritura, el dato será servido por la
caché de la CPU B en lugar de la copia local de A, dando un resultado diferente del esperado (a no ser que el valor
escrito por B sea igual al escrito por A).
1/2
CPU A CPU B
inválida(X)
A: read(X) compartida(X)
C_lectura(X) compartida(X)
B: write(X) inválida(X)
sucia(X) C_escritura(X)
A: write(X) sucia(X)
C_escritura(X) inválida (X)
2/2
TIPO DE EXAMEN: ORIGINAL- NACIONAL- SEPTIEMBRE 2012
Apellidos: .............................................................................................Nombre: .........................................DNI: ................................... .
INSTRUCCIONES: Complete sus datos personales en la cabecera de esta hoja, y ENTRÉGUELA junto con el resto del examen.
Lea atentamente todos los enunciados. SE PERMITE UN LIBRO Y CALCULADORA NO PROGRAMABLE.
Problema 1 (3 puntos)
Utilizando el algoritmo de Tomasulo, muestre la evolución de los registros en coma flotante (FR) y las
estaciones de reserva (RS) para todos los ciclos que sean necesarios en la ejecución del siguiente fragmento de
código:
Á Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos instrucciones en
cada ciclo según el orden del programa.
Á Una instrucción puede comenzar su ejecución en el mismo ciclo en que se distribuye a una estación de
reserva.
Á La operación suma tiene una latencia de un ciclo y la de multiplicación de dos ciclos.
Á Se permite que una instrucción reenvíe su resultado a instrucciones dependientes durante su último ciclo
de ejecución. De esta forma,una instrucción a la espera de un resultado puede comenzar su ejecución en
el siguiente ciclo si detecta una coincidencia.
Á Los valores de etiqueta O 1, 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 multiplicación/división. 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
Problema 2 (4 puntos)
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 saturación de 1 bit
(predictor de Smith) para la secuencia dada. Suponga que el estado inicial del contador es efectivo (T
Taken) .
Á Muestre mediante una tabla la secuencia de predicciones utilizando un contador de saturación de 2 bits
(predictor de Smith) para la secuencia dada. Suponga que el estado inicial del contador es fuertemente
efectivo (ST - Strongly Taken) .
Á ¿Cuál es la precisión de la predicción que han obtenido ambos contadores para la secuencia de saltos?
Original- Nacional- Septiembre- curso 2011/12- Ingeniería de Computadores 11- UNED 112
Problema 3 (3 puntos)
l. Dibuje una red de tipo crossbar de 8 x 8 elementos y describa cada uno de los componentes que forman
la red.
2. ¿Cuáles son las principales diferencias entre la red dibujada y una red bidimensional de tipo mesh
cuadrada de tamaño equivalente,es decir,que forme una matriz de 8 x 8?
Original- Nacional- Septiembre- curso 2011/12- Ingeniería de Computadores 11- UNED 2/2
Centro Asociado Palma de Mallorca
Septiembre
pi b
2012
Problema 1
Tutor: Antonio Rivero Cuesta
FR
Ciclo 1: Se
Ciclo1: Sedistribuyei1ei2
distribuye i1 e i2 bi O
bitOc. etiqueta
i d
dato
i1: ADDDF6,F4,F2
i2: MULTD F0,F4,F6 F0 Si 04 8.0
SeejecutaRS011/1
/ F2 35
3.5
SeenvíaRS01:5.5alCDB F4 2.0
NoseejecutaRS04
j
F6 Si 01 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 i2: 04 00 2.0 00 5.5
i4: 02 05 xx 04 xx i3: 05 00 5.5 00 3.5
03
MULT/DIV
SUMA
FR
Ciclo 3: Se
Ciclo3: SeejecutaRS042/2
ejecuta RS 04 2/2 bi O
bitOc. etiqueta
i d
dato
SeejecutaRS052/2
SeenvíaRS04:11.0alCDB F0 Si 04 8.0
S
SeenvíaRS05:19.25alCDB
í RS 05 19 25 l CDB F2 Si 02 35
3.5
NOseejecutaRS02 F4 2.0
F6 Si 05 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 i2: 04 00 2.0 00 5.5
i4: 02 05 xx 04 xx i3: 05 00 5.5 00 3.5
MULT/DIV
SUMA
FR
Ciclo 4: Se
Ciclo4: Seactualizael
actualiza el valordeRS04:11.0
valor de RS 04: 11 0 bi O
bitOc. etiqueta
i d
dato
Seactualizael valordeRS05:19.25
SevacíaRS04 F0 11.0
S
SevacíaRS05
í RS 05 F2 Si 02 35
3.5
SeejecutaRS021/1 F4 2.0
SeenvíaRS02:30.25alCDB
F6 19 25
19.25
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
i4: 02 05 19.25 04 11.0 05
MULT/DIV
SUMA
FR
Ciclo 5:
Ciclo5: Seactualizael
Se actualiza el valordeRS02:30.25
valor de RS 02: 30 25 bi O
bitOc. etiqueta
i d
dato
SevacíaRS02
F0 11.0
F2 30 25
30.25
F4 2.0
F6 19 25
19.25
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
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 sat uración de 1 bit
(predictor de Smith) para la secuencia dada. Suponga que el estado inicial del contador es efectivo (T-
Taken).
Muestre mediante una ta bla la secuencia de predicciones utilizando un contador de saturación de 2 bit s
(predictor de Smith) para la secuencia dada. Suponga que el estado inicial del contador es fuertemente
efectivo (ST – Strongly Taken).
¿Cuál es la precisión de la predicción que han obtenido ambos contadores para la secuencia de saltos?
Solución
La siguientes tablas muestra la evolución del contador de saturación de 1 y 2 bits, la predicción del salto, el
resultado real del salto, si la predicción fue correcta o no y la transición al siguiente estado.
Dado que de las 15 predicciones ha habido 10 predicciones correctas, la precisión del predictor de 1 bit ha sido
del 66,67%.
1/2
Contador de 2 Predicción Resultado real ¿Predicción correcta? Siguiente estado
bits
ST E E Sí ST
ST E E Sí ST
ST E E Sí ST
ST E N No WT
WT E N No WN
WN N E No WT
WT E E Sí ST
ST E E Sí ST
ST E N No WT
WT E N No WN
WN N E No WT
WT E E Sí ST
ST E E Sí ST
ST E N No WT
WT E N No WN
Dado que de las 15 pr edicciones ha ha bido 7 predicciones co rrectas, la precisión del p redictor ha sido del
46,67%.
2/2
Problema 3 (puntos) Septiembre 2012 Nacional
1. Dibuje una red de tipo crossbar de 8 x 8 elementos y describa cada uno de los componentes que forman
la red.
2. ¿Cuáles son las principales diferencias entre la red dibujada y una red bidimensional de tipo mesh
cuadrada de tamaño equivalente, es decir, que forme una matriz de 8 x 8?
3. Explique de manera razonada el cálculo del máximo tiempo de transferencia de un mensaje de 10
palabras en ambas redes (crossbar y mesh), teniendo en cuenta que el tiempo de inicialización del
mensaje son 10ms, el tiempo de salto es 1ms y el tiempo de transferencia por palabra son 3ms. El
algoritmo de enrutamiento utilizado es store-and-forward.
Solución
1. Los elementos de la red son los procesadores (representados por P1...P8), los elementos de memoria
(representados por M1...M8), los conmutadores (representados con círculos) y las líneas de conexión
entre conmutadores (representadas por líneas).
2. Las principales diferencias son el número de elementos conectados y el tipo de conexión entre ellos. En
el caso de la red crossbar se conectan 8 procesadores con 8 elementos de memoria (16 elementos en
total), y en el caso de la red mesh se conectan 64 elementos. Las conexiones de la red crossbar se
pueden considerar punto a punto, mientras que las conexiones de la red mesh dependen del número de
saltos que se deba realizar entre los elementos que se desea comunicar.
Para el caso de la red crossbar, sabemos que las comunicaciones entre cualquiera de los elementos
requieren de un único salto, por lo que la transferencia del mensaje será
En el caso de la red mesh, el máximo número de saltos corresponde al diámetro de la red que en este
caso es 14. Por tanto,
10 + (10*3 +1)*14 = 444ms
1/1
2012
Problema 1 septiembre 2012 reserva. Igual que actividad 1.2 del libro de texto
Suponiendo que norm alizamos el tiem po actual de ejec ución a 1 (esto es, apli cando la m ejora), el
tiempo total de ejecución antes de aplicar la mejora es:
p 9
Sp 5, 4 f 8,3%
1 f ( p 1) 1 f (9 1)
(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 multiplicación (3 ciclos, segmentada) y a dos
unidades funcionales de suma/resta (2 ciclos, ambas segmentadas). Suponga que las instrucciones siguientes:
i1: MULTD F3,F1,F2
i2: ADDD F2,F3,F1
i3: SUBD F3,F3,F1
i4: ADDD F5,F1,F2
se distribuyen, a razón de una por ciclo, a las dos estaciones de reserva y se emiten en cuanto sus operandos
están disponibles. Teniendo en cuenta que se pueden emitir y terminar dos instrucciones simultáneamente, se
pide:
a) Un cronograma con la secuencia temporal de ejecución de las instrucciones en el que, ciclo a ciclo, se puede
apreciar cuándo se distribuyen, cuándo se emiten y cuándo finaliza su ejecución en las unidades funcionales.
b) Dibuje, ciclo a ciclo, cómo 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 secuenciación de los ciclos
debe coincidir con la del apartado anterior.
Solución
0 1 2 3 4 5 6 7 8
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 instrucción a la estación 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.
1/3
b)
2/3
Ciclo 5: Finalización de i2. Escritura de resultado en Fr2.
Finalización de i3. Escritura de resultado en Fr3.
Copia del valor de Rf2 en entrada de la instrucción i4 para poder emitirla.
3/3
Problema 3 septiembre Reserva 2012. Igual que actividad 4.3 del libro de texto
0000 0000
0001 0001
0010 0010
0011 0011
0100 0100
0101 0101
0110 0110
0111 0111
1000 1000
1001 1001
1010 1010
1011 1011
1100 1100
1101 1101
1110 1110
1111 1111
1 INFERIOR
0 SUPERIOR
0 SUPERIOR
1 INFERIOR
Febrero
b
2013 – 1ª
Problema 1
Tutor: Antonio Rivero Cuesta
i1:MULTDF0,F6,F2
i2: ADDD F4 F2 F6
i2:ADDDF4,F2,F6
i3:ADDDF6,F4,F0
i4:ADDDF2,F6,F0
• Considere las siguientes hipótesis de partida:
FR
i1: MULTDF0,F6,F2
MULTD F0 F6 F2 bi O
bitOc. etiqueta
i d
dato
i2: ADDDF4,F2,F6 F0 2.0
i3: ADDD F6 F4 F0
ADDDF6,F4,F0 F2 25
2.5
i4: ADDDF2,F6,F0 F4 8.0
F6 40
4.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
03
MULT/DIV
SUMA
FR
Ciclo 1: Se
Ciclo1: Sedistribuyei1ei2
distribuye i1 e i2 bi O
bitOc. etiqueta
i d
dato
i1: MULTDF0,F6,F2
i2: ADDD F4,F2,F6 F0 Si 04 2.0
SeejecutaRS011/1 F2 25
2.5
SeejecutaRS041/2 F4 Si 01 8.0
SeenvíaRS01:6.5alCDB
Se e a S0 65a C
F6 40
4.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i2: 01 00 2.5 00 4.0 i1: 04 00 4.0 00 2.5
02 05
03
MULT/DIV
SUMA
FR
Ciclo 2:
Ciclo2: Sedistribuyei3ei4
Se distribuye i3 e i4 bi O
bitOc. etiqueta
i d
dato
i3:ADDD F6,F4,F0
i4: ADDD F2,F6,F0 F0 Si 04 2.0
Seactualizael valordeRS01:6.5 F2 Si 03 25
2.5
SevacíaRS01 F4 6.5
SeejecutaRS042/2
Se ejecuta S 0 /
F6 Si 02 40
4.0
SeenvíaRS04:10.0alCDB
NOseejecutaRS02,03
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 i1: 04 00 4.0 00 2.5
i3: 02 04 xx 00 6.5 05
i4: 03 02 xx 00 6.5
MULT/DIV
SUMA
FR
Ciclo 3: Se
Ciclo3: Seactualizael
actualiza el valordeRS04:10.0
valor de RS 04: 10 0 bi O
bitOc. etiqueta
i d
dato
SevacíaRS04
SeejecutaRS021/1 F0 10.0
SeenvíaRS02:16.5alCDB F2 Si 03 25
2.5
NOseejecutaRS03 F4 6.5
F6 Si 02 40
4.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
i3: 02 04 10.0 00 6.5 05
i4: 03 02 xx 00 6.5
MULT/DIV
SUMA
FR
Ciclo 4:
Ciclo4: Seactualizael
Se actualiza el valordeRS02:16.5
valor de RS 02: 16 5 bi O
bitOc. etiqueta
i d
dato
SevacíaRS02
SeejecutaRS031/1 F0 10.0
SeenvíaRS03:23.0alCDB F2 Si 03 25
2.5
F4 6.5
F6 16 5
16.5
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
i4: 03 02 16.5 00 6.5
MULT/DIV
SUMA
FR
Ciclo 5: Se
Ciclo5: Seactualizael
actualiza el valordeRS03:23.0
valor de RS 03: 23 0 bi O
bitOc. etiqueta
i d
dato
SevacíaRS03
F0 10.0
F2 23 0
23.0
F4 6.5
F6 16 5
16.5
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
03
MULT/DIV
SUMA
Problema 2 Febrero 2013 1ª Semana
inicio: LD F0,0(R2) % i1
LD F2,0(R4) % i2
LD F4,0(R6) % i3
ADDD F0,F0,F2 % i4
ADDD F0,F0,F4 % i5
DIVD F0,F0,F8 % i6
SD 0(R1),F0 % i7
ADDI R2,R2,#8 % i8
ADDI R4,R4,#8 % i9
ADDI R6,R6,#8 % i10
ADDI R1,R1,#8 % i11
JUMP inicio % 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 instrucción que permite emitir simultáneamente 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 planifíquelo en forma de instrucciones VLIW teniendo en cuentas las
características del procesador y las latencias. Utilice todos los registros que sean necesarios y compacte el
código VLIW lo máximo posible.
d) ¿Qué mejora en el rendimiento se ha obtenido si se compara el código del apartado b con el del c?
1/2
Solución
a)
i1 i2
2
2 2 2
i8 i4 i3 i9
2 2
2
i5 i10
2 2
i6 2 2
i7
i11
i12
b) Son posibles varias soluciones según se realice el ordenamiento de las operaciones en las instrucciones. En la
solución 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 instrucción de almacenamiento SD 0(R1), F0 sería necesario
realizar un decremento negativo para compensar, es decir, SD -8(R1), F0.
2/2
c) La secuencia de código que se obtiene tras desenrrollar 4 veces el bucle original es la siguiente:
Una transformación en código VLIW realizando la máxima compactación posible se muestra en la siguiente
tabla. Los colores representan: 1ª iteración (negro) e instrucciones auxiliares, 2ª iteración (rojo), 3ª iteración
(verde), 4ª iteración (morado).
d) El código consume 10 instrucciones VLIW ocupando un total de 160 bytes (10 instrucciones * 16 bytes por
instrucción). En comparación con el código VLIW sin desenrrollar, el rendimiento, prácticamente, se ha
incrementado por 4 ya que el número de ciclos por iteración es de 11 en comparación 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
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 máquina de estados situada a continuación representa una ligera variante de un predictor de
Smith de 2 bits de historial y se utiliza para predecir la ejecución de los saltos que hay en el código.
¿Cuál es la secuencia de predicciones para los salto S1 y S2 en cada iteracción 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.
Solución
Para la resolución del ejercicio es fundamental entender el diagrama de estados que muestra el enunciado.
Básicamente, el diagrama indica en función del resultado del salto actual y del historial de los dos saltos
previos, la predicción de lo que va a ocurrir con el siguiente salto. Es clave separar los historiales de cada
instrucción de salto, es decir, la evolución de la predicción de cada salto es independiente del otro.
En la siguiente secuencia se puede apreciar la diferencia entre la predicción que se realiza de la efectividad o
no del salto S1 y S2 y la situación real que se produce.
8 9 10 11 12 20 29 30 31
Estado: NN NE EN NE EN NE EE EN NE
S1 predicho: N E E E E E E E E
S1 real: E N E N E E N E N
Estado: NN NN NN NE EN NN NE EN NE
S2 predicho: N N N E E N E E E
S2 real: N N E N N E N E N
Igual que en el caso anterior, el autómata 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 1 Febrero 2ª Semana 2013 (3 puntos) - Igual que actividad 4.4 del libro de texto.
1 2
3 4
b) Se desea transm itir un mensaje desde el p rocesador a = 0101 al pro cesador b = 1010. Si se
comienza a buscar el cam ino por el bit m enos significativo, explique razo nadamente cuál es el
camino que debe seguir el mensaje.
La distancia Hamming: 0101 1010 1111 . Es 4, porque tenemos cuatro unos. Por lo tanto:
ADDI R5,R0,#1
LD R6,0(R5)
LD R8,8(R5)
LD R9,16(R5)
LD R7,24(R5)
ADD R1,R8,R9
ADD R8,R9,R7
SD 0(R8),R1
LD R8,0(R6)
Solución
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 instrucción de almacenamiento i8 tiene que escribir en M[0+R8], lo que
implica la existencia de un riesgo WAR.
Entre la instrucción 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 código con los registros renombrados y en el que han desaparecido las dependencias falsas de datos es:
d) Las dependencias de datos RAW se elimina mediante el mecanismo que establecen las estaciones de reserva
y que obligan a que los operandos están disponibles para poder emitir una instrucción.
Los riesgos de memoria RAW se gestionan mediante hardware adicional que permite la detección de la
coincidencia de memoria y el reenvío del dato del almacenamiento (origen) hacia la carga (destino).
2/2
Problema 3 Febrero 2013 2
se pretende ejecutar el siguiente código vectorial para un vector con una longitud de 64 elementos:
LV V1,R1
MULTV V2,V1,V3
MULTSV V4,V2,F0
SV 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 iteración. ¿Cuál es el nuevo valor de ciclos por elemento?
Solución
Convoy 1: LV V1, R1
Convoy 2: MULTV V2, V1, V3
Convoy 3: MULTSV V4, V2, F0
Convoy 5: SV R2, V4
La secuencia de ejecución de los cuatro convoyes si se considera que VLR es 64 es la que se muestra en la
siguiente figura.
Telemento= 4 ciclos
12 64
LV
7 64
MULTV
7 64
MULTSV
64 12
SV
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
1/2
Tarranque = (12 + 2*7 + 12) ciclos = 38 ciclos
Sustituyendo los valores conocidos de Tarranque y Telemento en la expresión que determina el tiempo de
ejecución de un bucle vectorizado para vectores de longitud n se tiene
n
Tn = 10 + ⋅ (15 + 38) + 4 ⋅ n
64
100
T100 = 10 + ⋅ (15 + 38) + 4 ⋅ 100
64
T100 = 10 + 2 ⋅ (15 + 38) + 4 ⋅ 100
T1000 = 516 ciclos
2 ⋅ 100 200
R100 = = = 0.3875 FLOP ciclo
T100 516
El R∞ expresado en FLOP/ciclo es
2⋅ n
R∞ = lim
n→ ∞ T
n
2⋅ n
R∞ = lim
n→ ∞ n
10 + 64 ⋅ (15 + 38) + 4 ⋅ n
Para simplificar los cálculos, la expresión 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 número de operaciones vectoriales que se
realizan es de dos, una multiplicación vectorial y una multiplicación vectorial-escalar, se tiene
2⋅ n
R∞ = lim
n→ ∞ n
10 + + 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, habría que multiplicar el valor en FLOP/ciclo por la frecuencia del procesador. Se
tendría así
R∞
b) Tal y como indica el enunciado, N1/ 2 es el número de elementos tal que RN1 / 2 = . Tendremos así:
2
R∞ 0,41425 FLOP/ciclo
R N1 / 2 = = = 0,207125 FLOP/ciclo
2 2
2/2
Por otra parte, sabemos que:
(Operaciones en coma flotante ⋅ n elementos)
Rn =
Tn
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:
12 64
LV
7 64
MULTV
7 64
MULTSV
64 12
SV
0 12 19 76 83 147 159
que nos indica que el tiempo total de ejecución utilizando un VLR de 64 es 159 ciclos.
3/2
2013
Problema 1 Septiembre 2013
Sea un predictor dinámico de saltos basado en el algoritmo de Smith, cuya estructura se muestra en la siguiente
figura:
La función hash para acceder a la tabla de contadores a partir de la dirección destino del salto es (PC mod 2m).
Dado el siguiente fragmento de código que se ejecuta dentro de un bucle:
y la siguiente lista de valores para la variable x, la cual es procesada en nueve iteraciones del bucle:
se pide que mediante una tabla indique la evolución de los contadores afectados por la ejecución del predictor si
m = 3 y k = 2. En la tabla especifique el contador que corresponde a cada salto, el valor del contador en binario,
la predicción y el resultado de cada salto para las nueve iteraciones. El estado inicial de la tabla es con todos los
contadores a 00, es decir, se predice el salto como fuertemente no efectivo (SN – strongly not taken).
Solución
La función hash para acceder a la tabla es (PC mod 23). El resultado de aplicar esa función a los valores de los
contadores de programa que corresponden a los tres saltos son:
En este ejercicio, los únicos contadores que modificarán su contenido son los tres primeros de un total de 8 que
cuenta la tabla. A continuación se muestra la evolución de estos tres contadores junto con las predicciones y los
resultados de los saltos.
1/2
Valor de x 8 9 10 11 12 17 20 29 31
Contador 0 00 00 01 00 01 00 01 00 01
Predicción S1 N N N N N N N N N
Resultado S1 N T N T N T N T T
Contador 1 00 00 00 00 01 01 10 10 11
Predicción S2 - N - N - N - T T
Resultado S2 - N - T - T - T T
Contador 6 00 01 00 01 00 01 00 01 00
Predicción S3 N N N N N N N N N
Resultado S3 T N T N T N T N N
2/2
Problema 2 Septiembre 2013
Dado el siguiente código:
inicio: LD F0,0(R2)
LD F2,0(R4)
LD F4,0(R6)
ADDD F0,F0,F2
ADDD F0,F0,F4
DIVD F0,F0,F8
SD 0(R1),F0
ADDI R2,R2,#8
ADDI R4,R4,#8
ADDI R6,R6,#8
ADDI R1,R1,#8
JUMP inicio
a) Genere la secuencia de código vectorial equivalente sin incluir las instrucciones escalares necesarias para
recorrer los vectores.
b) Si VLR=64, calcule el Tarranque y el Telemento para ejecutar la secuencia de código vectorial si dispone de
una unidad de carga/almacenamiento (12 ciclos de Tarranque), una unidad de suma vectorial (6 ciclos) y otra de
división vectorial (7 ciclos) en los siguientes supuestos:
− Sin encadenamiento.
− Con encadenamiento.
− Con solapamiento entre convoyes.
Solución
A: = A + B
A: = A + C
A:= A / d
donde A, B y C son vectores de longitud indefinida y almacenados a partir de las posiciones de memoria
indicadas por R2, R4 y R6, respectivamente, y d es un escalar que se encuentra almacenado en F8.
De acuerdo con esto, la secuencia de código vectorial equivalente al código escalar del enunciado sin incluir el
código necesario para la vectorización completa del vector es:
LV V1,R2 // Carga de A en V1
LV V2,R4 // Carga de B en V2
LV V3,R6 // Carga de C en V3
ADDV V1,V1,V2 // A := A + B
ADDV V1,V1,V3 // A := A + C
DIVSV V1,V1,F8 // A := A / d
SV R1,V1 // Almacenamiento de V1
1/2
b.1) Sin encadenamiento: Analizando los riesgos estructurales se obtiene la siguiente estructura de convoyes:
Convoy 1: LV V1,R2
Convoy 2: LV V2,R4
Convoy 3: LV V3,R6
ADDV V1,V1,V2
Convoy 4: ADDV V1,V1,V3
Convoy 5: DIVSV V1,V1,F8
Convoy 6: SV R1,V1
La secuencia de ejecución de los seis convoyes si se considera que VLR es 64 es la que se muestra en la
siguiente figura.
Telemento = 6 ciclos
12 64
LV
12 64
LV
12 64
LV
6 64
ADDV
6 6
ADDV 7 64
DIVSV 64 12
SV
Dado que hay seis convoyes, Telemento es 6 ciclos y el Tarranque total es igual a la suma de los tiempos de
arranque visibles de los seis convoyes. Esto es
Sustituyendo los valores conocidos de Tarranque y Telemento en la expresión que determina el tiempo de
ejecución de un bucle vectorizado para vectores de longitud n se tiene
n
Tn = 10 + ⋅ (15 + 61) + 6 ⋅ n
64
b.2) Con encadenamiento: Analizando los riesgos estructurales se obtienen cuatro convoyes:
Convoy 1: LV V1,R2
Convoy 2: LV V2,R4
ADDV V1,V1,V2
Convoy 3: LV V3,R6
ADDV V1,V1,V3
DIVSV V1,V1,F8
Convoy 4: SV R1,V1
La secuencia de ejecución de los cuatro convoyes si se considera que VLR es 64 es la que se muestra en la
siguiente figura.
2/2
Telemento = 4 ciclos
12 64
LV
12 64
LV
6 64
ADDV
12 64
LV
6 6
ADDV
7 64
DIVSV 64 12
SV
Dado que hay cuatro convoyes, Telemento es 4 ciclos y el Tarranque total es igual a la suma de los tiempos de
arranque visibles de los siete convoyes. Esto es
Sustituyendo los valores conocidos de Tarranque y Telemento en la expresión que determina el tiempo de
ejecución de un bucle vectorizado para vectores de longitud n se tiene
n
Tn = 10 + ⋅ (15 + 67 ) + 4 ⋅ n
64
Para calcular Telemento en situaciones con solapamiento hay que recordar que:
12 64
LV
12 64
LV
6 64
ADDV
12 64
LV
6 64
ADDV
7 64
DIVSV 64 12
SV
que nos indica que el tiempo total de ejecución utilizando un VLR de 64 es 293 ciclos.
3 4
1 2
1. Se desea transm itir un mensaje desde el p rocesador a = 0000 al pro cesador b = 1111. Si se
comienza a buscar el cam ino por el bit m enos significativo, explique razo nadamente cuál es el
camino que debe seguir el mensaje.
La distancia Hamming: 0000 1111 1111 . Es 4, porque tenemos cuatro unos. Por lo tanto:
Se calcula tomando como referencia los datos de la tabla 4.1 en la página 319.
p
Diámetro = 2 .
2
Conectividad de arco = 4.
Coste = 2·p.
Dada la siguiente red dinámica:
¿De qué red se trata? Explique razonadamente la conmutación de cada conmutador de la red para enviar
un mensaje del procesador 101 al banco de memoria 100.
Para enviar un mensaje del procesador 101 al banco de memoria 100, hacemos lo siguiente:
Los conmutadores de cada etapa deciden el camino por el que transmitir el paquete dependiendo del
valor del bit de la dirección destino correspondiente a la etapa actual. Si el bit es 0, se encamina por la
salida superior, y si es 1, se utiliza la salida inferior.
1 INFERIOR
0 SUPERIOR
0 SUPERIOR
2013
Centro Asociado Palma de Mallorca
Septiembre
pi b
2013 – R
Problema 1
Tutor: Antonio Rivero Cuesta
i1: MULTDF2,F2,F6
i2
i2: MULTD F4,F2,F6
F4 F2 F6
i3: ADDD F2,F4,F6
, ,
i4: ADDD F6,F2,F6
• Considere las siguientes hipótesis de partida:
FR
i1: MULTDF2,F2,F6
MULTD F2 F2 F6 bi O
bitOc. etiqueta
i d
dato
i2: MULTDF4,F2,F6 F0 4.0
i3: ADDD F2 F4 F6
ADDDF2,F4,F6 F2 20
2.0
i4: ADDDF6,F2,F6 F4 3.0
F6 20
2.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
03
MULT/DIV
SUMA
FR
Ciclo 1: Se
Ciclo1: Sedistribuyei1ei2
distribuye i1 e i2
bi O
bitOc. etiqueta
i d
dato
i1:MULTDF2,F2,F6
i2:MULTDF4,F2,F6 F0 4.0
S j
SeejecutaRS041/3
S 04 1/3 F2 Si 04 20
2.0
No seejecutaRS05 F4 Si 05 3.0
F6 20
2.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 i1: 04 00 2.0 00 2.0
02 i2: 05 04 xx 00 2.0
03
MULT/DIV
SUMA
FR
Ciclo 2: Se
Ciclo2: Sedistribuyei3ei4
distribuye i3 e i4 bi O
bitOc. etiqueta
i d
dato
i3:ADDDF2,F4,F6
i4: ADDDF6,F2,F6 F0 4.0
SeejecutaRS042/3 F2 Si 01 20
2.0
NoseejecutaRS05 F4 Si 05 3.0
NoseejecutaRS01
o se ejecuta S 0
F6 Si 02 20
2.0
NoseejecutaRS02
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i3: 01 05 xx 00 2.0 i1: 04 00 2.0 00 2.0
i4: 02 04 xx 00 2.0 i2: 05 04 xx 00 2.0
03
MULT/DIV
SUMA
FR
Ciclo 3: Se
Ciclo3: SeejecutaRS043/3
ejecuta RS 04 3/3 bi O
bitOc. etiqueta
i d
dato
SeenvíaRS04:4.0alCDB
NoseejecutaRS05 F0 4.0
NoseejecutaRS01 F2 Si 01 20
2.0
NoseejecutaRS02 F4 Si 05 3.0
F6 Si 02 20
2.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i3: 01 05 xx 00 2.0 i1: 04 00 2.0 00 2.0
i4: 02 04 xx 00 2.0 i2: 05 04 xx 00 2.0
03
MULT/DIV
SUMA
FR
Ciclo 4: Se
Ciclo4: Seactualizael
actualiza el valordeRS04:4.0
valor de RS 04: 4 0 bi O etiqueta
bitOc. i d
dato
SevacíaRS04
SeejecutaRS051/3 F0 4.0
SeejecutaRS021/2 F2 Si 01 20
2.0
NoseejecutaRS01 F4 Si 05 3.0
F6 Si 02 20
2.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i3: 01 05 xx 00 2.0 04
i4: 02 04 4.0 00 2.0 i2: 05 04 4.0 00 2.0
MULT/DIV
SUMA
FR
Ciclo 5: Se
Ciclo5: SeejecutaRS052/3
ejecuta RS 05 2/3 bi O etiqueta
bitOc. i d
dato
SeejecutaRS022/2
SeenvíaRS02:6.0alCDB F0 4.0
NoseejecutaRS01 F2 Si 01 20
2.0
F4 Si 05 3.0
F6 Si 02 20
2.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i3: 01 05 xx 00 2.0 04
i4: 02 04 4.0 00 2.0 i2: 05 04 4.0 00 2.0
MULT/DIV
SUMA
FR
Ciclo 6: Se
Ciclo6: SeejecutaRS053/3
ejecuta RS 05 3/3 bi O etiqueta
bitOc. i d
dato
SeenvíaRS05:8.0alCDB
Seactualizael valordeRS02:6.0 F0 4.0
SevacíaRS02 F2 Si 01 20
2.0
SeejecutaRS011/2 F4 Si 05 3.0
F6 60
6.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i3: 01 05 6.0 00 2.0 04
02 i2: 05 04 4.0 00 2.0
MULT/DIV
SUMA
FR
Ciclo 7: Se
Ciclo7: Seactualizael
actualiza el valordeRS05:8.0
valor de RS 05: 8 0 bi O etiqueta
bitOc. i d
dato
SevacíaRS05
SeejecutaRS012/2 F0 4.0
SeenvíaRS01:8.0alCDB F2 Si 01 20
2.0
F4 8.0
F6 60
6.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
MULT/DIV
SUMA
FR
Ciclo 8: Se
Ciclo8: Seactualizael
actualiza el valordeRS01:8.0
valor de RS 01: 8 0 bi O etiqueta
bitOc. i d
dato
SevacíaRS01
F0 4.0
F2 80
8.0
F4 8.0
F6 60
6.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
MULT/DIV
SUMA
Problema 2 Septiembre 2013 Reserva
Calcule la penalización debida a los saltos, en función del valor inicial de c (número entero), considerando que
el procesador utiliza:
La penalización por saltos incorrectamente predichos es de 4 ciclos y para los saltos correctamente predichos, la
penalización es 0.
Solución
Los primero que hay que visualizar es que el código esconde dos saltos: el propio del bucle, determinado por la
variable i, y el el determinado por la variable c. Si se escribe en forma de seudocódigo ensamblador se puede
apreciar con claridad las dos instrucciones de salto:
c=?;
i=1;
inicio: ......
c=c+1;
if (c>10) then goto etiqueta; // Salto 1
i=i+1;
if (i<11) then goto inicio; // Salto 2
etiqueta: ......
El siguiente paso es analizar el valor de c que puede provocar la realización del salto 1. Dado que el bucle se
ejecuta 10 veces, si inicialmente c es menor o igual que 0 entonces el salto 1 nunca se llega a ejecutar ya que su
valor nunca llegará a ser 11 en las 10 iteraciones del bucle. A continuación, se realiza el análisis de los posibles
casos.
1/2
Salto 2: 4 ciclos. Es efectivo las 9 primeras veces, con lo que solo hay discordancia en la predicción de la última
iteración.
2/2
Problema 3 Septiembre 2013 Reserva
a) Genere el código intermedio equivalente aplicando operaciones con predicado. Considere que los vectores A
y X y las constantes b, c y d se encuentran almacenadas en las posiciones de memoria contenidas en los
registros Ra, Rx, Rb, R4c y Rd, respectivamente.
b) A partir del código que ha obtenido, genere el código VLIW correspondiente. Considere que una instrucción
VLIW admite una operación de carga/almacenamiento (2 ciclos de latencia), una operación en coma flotante (3
ciclos de latencia) y una operación entera/salto (1 ciclo de latencia). Las instrucciones de manipulación de
predicados se consideran operaciones enteras.
Solución
b) El código VLIW generado a partir del código intermedio del apartado anterior y teniendo en cuentas las
restricciones del enunciado en cuanto a número de operaciones y latencias se muestra en la tabla situada a
continuación. Observe que no se ha incorporado ningún tipo de optimización.
1/2
Carga/almacenamiento Operaciones FP Enteras/saltos
1 LD Fb,0(Rb)
2 LD Fc,0(Rc)
3 LD Fd,0(Rd)
4 Inicio: LD Fa,0(Ra)
5 LD Fx,0(Rx)
6 PRED_LT p1,p2,Fa,#10
7 ADDD Fx,Fx,Fb (p2)
8
9 JMP fin (p2)
10 PRED_LT p3,p4,Fa,#20
11 ADDD Fx,Fx,Fc (p4)
12 ADDD Fx,Fx,Fd (p3)
13
14
15 SD 0(Rx),Fx
16 fin: SUBI Ra,Ra,#4
17 SUBI Rx,Rx,#4
18 BNEZ Ra,inicio
Una alternativa al código anterior, un poco más optimizada, se presenta a continuación. La existencia de la
instrucción 12 responde a la necesidad de dejar los ciclos necesarios para la finalización de las operaciones de
suma en coma flotante con el fin de poder realizar el almacenamiento del resultado.
2/2
2014
Centro Asociado Palma de Mallorca
Febrero
b
2014 – 1ª
Problema 1
Tutor: Antonio Rivero Cuesta
FR
i1: ADDDF4,F2,F0
ADDD F4 F2 F0 bi O
bitOc. etiqueta
i d
dato
i2: MULTDF6,F2,F0 F0 3.0
i3: MULTD F2 F4 F6
MULTDF2,F4,F6 F2 20
2.0
i4: ADDD F0,F2,F4 F4 6.0
F6 50
5.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
03
MULT/DIV
SUMA
FR
Ciclo 1: Se
Ciclo1: Sedistribuyei1ei2
distribuye i1 e i2
bi O
bitOc. etiqueta
i d
dato
i1:ADDDF4,F2,F0
i2:MULTDF6,F2,F0 F0 3.0
S j t RS 01 1/1
SeejecutaRS011/1 F2 20
2.0
SeenvíaRS01:5.0alCDB
F4 Si 01 6.0
SeejecutaRS041/2
F6 Si 04 50
5.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i1: 01 00 2.0 00 3.0 i2: 04 00 2.0 00 3.0
02 05
03
MULT/DIV
SUMA
FR
Ciclo 2: Se
Ciclo2: Sedistribuyei3ei4
distribuye i3 e i4 bi O
bitOc. etiqueta
i d
dato
i3:MULTDF2,F4,F6
i4: ADDDF0,F2,F4 F0 Si 02 3.0
SeejecutaRS051/2 F2 Si 05 20
2.0
NoseejecutaRS02 F4 5.0
Seactualizael
Se actua a e valordeRS01:5.0
a o de S 0 5 0
F6 Si 04 50
5.0
SevacíaRS01
SeejecutaRS042/2
Se envía RS 04: 6 0 al CDB
SeenvíaRS04:6.0alCDB
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 i2: 04 00 2.0 00 3.0
i4: 02 05 xx 00 5.0 i3: 05 00 5.0 00 5.0
03
MULT/DIV
SUMA
FR
Ciclo 3: Se
Ciclo3: Seactualizael
actualiza el valordeRS04:6.0
valor de RS 04: 6 0 bi O
bitOc. etiqueta
i d
dato
SevacíaRS04
SeejecutaRS052/2 F0 Si 02 3.0
S
SeenvíaRS05:25.0alCDB
í RS 05 25 0 l CDB F2 Si 05 20
2.0
NoseejecutaRS02 F4 5.0
F6 60
6.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
i4: 02 05 xx 00 5.0 i3: 05 00 5.0 00 5.0
03
MULT/DIV
SUMA
FR
Ciclo 4: Se
Ciclo4: Seactualizael
actualiza el valordeRS05:25.0
valor de RS 05: 25 0 bi O etiqueta
bitOc. i d
dato
SevacíaRS05
SeejecutaRS021/1 F0 Si 02 3.0
S
SeenvíaRS02:30.0alCDB
í RS 02 30 0 l CDB F2 25 0
25.0
F4 5.0
F6 60
6.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
i4: 02 05 25.0 00 5.0 05
MULT/DIV
SUMA
FR
Ciclo 5: Se
Ciclo5: Seactualizael
actualiza el valordeRS02:30.0
valor de RS 02: 30 0 bi O etiqueta
bitOc. i d
dato
SevacíaRS02
F0 30.0
F2 25 0
25.0
F4 5.0
F6 60
6.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
MULT/DIV
SUMA
Problema 2 Febrero 2014 Primera Semana
Considere el siguiente segmento de código que se ejecuta en el cuerpo principal de un bucle:
if (x es par) then // salto b1
incrementar a; // salto b1 tomado
if (x es un múltiplo de 10) then // salto b2
incrementar b; // salto b2 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.
Suponga que utiliza un nuevo diseño de predictor de salto de dos niveles en el que, además de un predictor de 1
bit, se utiliza un registro global de 1 bit (registro g). Este registro g almacena el resultado del último salto
ejecutado (0 para no efectivo ó 1 para efectivo) y se utiliza para acceder a una de las dos tablas del historial de
salto de 1 bit (BHT), ambas independientes una de la otra:
Así, dependiendo del valor de g, se selecciona una de las dos BHT y ya se pasa a utilizar la tabla BHT
seleccionada para realizar la predicción de 1 bit de la forma habitual, es decir, N (no efectivo) o E (efectivo). La
actualización del contenido del slot seleccionado de la BHT se realiza introduciendo el resultado real del salto,
es decir, N o E.
Asumiendo que el estado inicial del registro g es 0 (no efectivo), rellene una tabla similar a la que se muestra a
continuación con la secuencia de resultados reales y predichos de los saltos b1 y b2 para las nueve iteraciones
del bucle. Utilice en la tabla la letra N para indicar no efectivo y E para efectivo.
8 9 10 11 12 20 29 30 31
Para g=0
b1 predicho N
b1 real
b2 predicho N
b2 real
Para g=1
b1 predicho N
b1 real
b2 predicho N
b2 real
Asuma que las entradas del predictor son actualizadas para cada salto antes de que se vuelva a realiza el acceso
al predictor para obtener la predicción de un nuevo salto.
Si el salto es efectivo (T) entonces se utiliza la BHT con g=1 y si el salto es no efectivo (N) entonces se utiliza
la BHT con g=0. Por lo tanto, las circunferencias representan la BHT utilizada en cada momento según el
resultado real del salto y las líneas continuas la secuencia.
Un procesador sin segmentación necesita 210 nseg. para procesar una instrucción. Con respecto a este
procesador, calcular la aceleración que se obtiene en los dos casos siguientes:
a) Un procesador A dotado de una segmentación de 7 etapas, consumiendo cada etapa el mismo tiempo.
Cada etapa ocasiona una sobrecarga de 9 nseg. no existiendo ningún tipo de detención en la
segmentación.
De acuerdo con el enunciado el tiempo medio de ejecución de una instrucción en el procesador sin
segmentar es de 210 nseg. La segmentación de 7 etapas de este apartado se caracteriza por acortar el tiempo
medio de ejecución de una instrucción a 39 nseg.:
210 nseg
+ 9 nseg = 39 nseg
7 etapas
Por lo tanto, la aceleración obtenida por la máquina A con respecto a la máquina sin segmentar es 5,38:
210 nseg
= 5, 38 veces más rápido
39 nseg
b) Un procesador B con una segmentación de 7 etapas, consumiendo cada una de ellas 25 nseg., 30 nseg.,
40 nseg., 40 nseg., 50 nseg., 50 nseg. y 60 nseg. respectivamente, y siendo la sobrecarga por cada etapa
de 9 nseg. Un 37% de todas las instrucciones de la segmentación son detenidas durante un ciclo de reloj
y un 9% durante dos ciclos.
La etapa más lenta es la que dicta la velocidad de las restantes etapas, por lo que cada etapa consumirá 69
nseg. (60 nseg. más los 9 nseg. de retardo).
El 37% ocasiona una detención de un ciclo, consumiendo 138 nseg. (2 ciclos · 69 nseg)
El 9% ocasiona una detención de dos ciclos, por lo que consumen 207 nseg. (3 ciclos · 69 nseg).
De acuerdo con esto, el tiempo medio consumido por una instrucción es:
Por lo tanto, la aceleración obtenida por la máquina B con respecto a la máquina sin segmentar es de 1,96:
210 nseg
= 1, 96 veces más rápido
106, 95 nseg
Problema 4 Febrero 2ª Semana 2014 (1 punto)
Dibuje una red estática con los siguientes valores en sus parámetros:
i1:
i1 ADDD F2,F4,F0
ADDD F2 F4 F0
i2: ADDD F0,F6,F4
i3: MULTD F2,F4,F6
i4: ADDD F4,F2,F0
, ,
i5: ADDD F2,F6,F2
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
03
MULT/DIV
SUMA
FR
Ciclo 1: Se
Ciclo1: Sedistribuyei1ei2
distribuye i1 e i2 bi O
bitOc. etiqueta
i d
dato
i1: ADDDF2,F4,F0
i2: ADDDF0,F6,F4 F0 Si 02 4.0
SeejecutaRS011/1
/ F2 Si 01 20
2.0
SeenvíaRS01:5.0alCDB F4 1.0
SeejecutaRS021/1
SeenvíaRS02:4.0alCDB F6 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i4: 01 04 xx 00 4.0 i3: 04 00 1.0 00 3.0
02 05
03
MULT/DIV
SUMA
FR
Ciclo 3: Se
Ciclo3: Sedistribuyei5
distribuye i5 bi O
bitOc. etiqueta
i d
dato
i5:ADDD F2,F6,F2
SeejecutaRS042/2 F0 4.0
S
SeenvíaRS04:3.0alCDB
í RS 04 3 0 l CDB F2 Si 04 50
5.0
NOseejecutaRS01 F4 Si 01 1.0
NOseejecutaRS02
F6 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
i4: 01 04 xx 00 4.0 i3: 04 00 1.0 00 3.0
i5: 02 00 3.0 04 xx 05
03
MULT/DIV
SUMA
FR
Ciclo 4: Se
Ciclo4: Seactualizael
actualiza el valordeRS04:3.0
valor de RS 04: 3 0 bi O
bitOc. etiqueta
i d
dato
SevacíaRS04
SeejecutaRS011/1 F0 4.0
S
SeenvíaRS01:6.0alCDB
í RS 01 6 0 l CDB F2 Si 02 50
5.0
SeejecutaRS021/1 F4 Si 01 1.0
SeenvíaRS02:6.0alCDB
F6 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
FR
Ciclo 5: Se
Ciclo5: Seactualizael
actualiza el valordeRS01:6.0
valor de RS 01: 6 0 bi O
bitOc. etiqueta
i d
dato
SevacíaRS01
Seactualizael valordeRS02:6.0 F0 4.0
SevacíaRS02 F2 60
6.0
F4 6.0
F6 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
03
MULT/DIV
SUMA
Problema 2 Septiembre 2014 (3 puntos)
Suponga un procesador VLIW que puede codificar tres operaciones en cada instrucción con las restricciones
que indica la siguiente tabla:
Unidad funcional Latencia Op1 Op2 Op3 Operaciones realizadas por la unidad
ALU entera 1 X X X Comparación/suma/resta entera, operaciones lógicas
ALU FP 4 X Aritmética de coma flotante
Memoria 3 X X Cargas y almacenamientos
Saltos 3 X Saltos condicionales e incondicionales
Solución
a) Secuencia de ejecución de las instrucciones VLIW sin predicados.
c) Secuencia de ejecución de las instrucciones VLIW con ejecución especulativa considerando que la rama then
del if es la más probable.
Obsérvese que el código que se obtiene es prácticamente similar al del apartado (a) con la salvedad que se ha
realizado el adelantamiento de la instrucción asignada a la rama then al comienzo. Es decir la suma a+b se
realiza siempre y se almacena temporalmente en R3. Si la rama then es la seleccionada (se supone que tiene una
mayor probabilidad) se salta directamente a realizar su almacenamiento; en caso de que la ejecución se vaya por
la rama else entonces se calcula un nuevo valor para R3 mediante la suma a+1 y se procede a su
almacenamiento.
2/2
Problema 3 Septiembre 2014 (4 puntos)
Tbase = 10 ciclos.
Tbucle = 15 ciclos.
Dos unidades de carga-almacenamiento vectorial con 12 ciclos de tiempo de arranque,
Una unidad de suma vectorial en coma flotante con tiempo de arranque de 6 ciclos
Unidad de multiplicación vectorial en coma flotante con tiempo de arranque de 7 ciclos.
y de un segundo procesador vectorial, denominado VECTOR-B, en el que, con la salvedad del número de
unidades de carga/almacenamiento, se dobla el número de unidades aritméticas y, como consecuencia del
incremento de la complejidad en las operaciones de asignación a las unidades, los gastos. Se tiene así:
Tbase = 20 ciclos.
Tbucle = 30 ciclos.
Dos unidades de carga-almacenamiento vectorial con 24 ciclos de tiempo de arranque,
Dos unidades de suma vectorial en coma flotante con tiempo de arranque de 12 ciclos
Dos unidades de multiplicación vectorial en coma flotante con tiempo de arranque de 14 ciclos.
Con el fin de realizar una comparativa, en ambos procesadores se van a ejecutar las dos siguientes secuencias de
código:
// Secuencia de código 1
for (i=0; i<10000; i++) {
A[i+1] := x*A[i] + y*A[i];
}
// Secuencia de código 2
for (i=0; i<100; i++) {
A[i+1] := x*A[i];
}
Se pide
Original – Nacional/Unión Europea - Septiembre - curso 2013/14 – Ingeniería de Computadores II - UNED 1/2
Solución
LV V1, A(i)
MULTVS V2, Rx, V1
MULTVS V3, Ry, V1
ADDV V4,V2,V3
SV V4, A(i+1)
LV V1,A(i)
MULTVS V2,x,V1
SV V2,A(i+1)
donde A(i)y A(i+1) representan las posiciones de memoria en las que se ubican esos elementos y Rx y Ry
corresponden a los registros en los que se almacenan los valores de x e y.
b) Tal y como se puede apreciar en el siguiente esquema, el total de ciclos consumidos es 172 ciclos para un
vector de 64 elementos considerando que el encadenamiento de resultados entre unidades es posible.
El Telemento es de 2 ciclos dado que se tienen dos convoyes. El Tarranque total se obtiene de sumar los
tiempos de arranque visibles de las unidades funcionales. Si se analiza el esquema previo se tiene
Con estos valores y dado que el tiempo base es 10, la expresión del tiempo total de ejecución del bucle queda
10000
T10000 = 10 + ⋅ (15 + 44 ) + 2 ⋅ 10000 = 29273 ciclos
64
c) Tal y como se puede apreciar en el siguiente esquema, el total de ciclos consumidos es 138 ciclos para un
vector de 64 elementos considerando que el encadenamiento de resultados entre unidades es posible.
El Telemento es de 1 ciclo dado que se tiene un único convoy. El Tarranque total se obtiene de sumar los
tiempos de arranque visibles de las unidades funcionales. Si se analiza el esquema previo se tiene
10000
T10000 = 20 + ⋅ ( 30 + 74) + 1 ⋅ 10000 = 26348 ciclos
64
d) Tal y como se puede apreciar en el siguiente esquema, el total de ciclos consumidos es 95 ciclos para un
vector de 64 elementos considerando que el encadenamiento de resultados entre unidades es posible.
El Telemento es de 1 ciclo dado que se tiene un único convoy. El Tarranque total se obtiene de sumar los
tiempos de arranque visibles de las unidades funcionales. Si se analiza el esquema previo se tiene
Con estos valores y dado que el tiempo base es 10, la expresión del tiempo total de ejecución del bucle interior
queda
100
T100 = 10 + ⋅ (15 + 31) + 1 ⋅ 100 = 202 ciclos
64
e) Tal y como se puede apreciar en el siguiente esquema, el total de ciclos consumidos es 126 ciclos para un
vector de 64 elementos considerando que el encadenamiento de resultados entre unidades es posible.
El Telemento es de 1 ciclo dado que se tiene un único convoye. El Tarranque total se obtiene de sumar los
tiempos de arranque visibles de las unidades funcionales. Si se analiza el esquema previo se tiene
Con estos valores y dado que el tiempo base es 20, la expresión del tiempo total de ejecución del bucle interior
queda
100
T100 = 20 + ⋅ ( 30 + 62) + 1 ⋅ 100 = 304 ciclos
64
Original – Nacional/Unión Europea - Septiembre - curso 2013/14 – Ingeniería de Computadores II - UNED 3/2
f) Se puede apreciar que para la secuencia 1 el VECTOR-A es más rápido que el VECTOR-B mientras para la
secuencia 2 sucede lo contrario, el VECTOR-A es el más lento. Es decir, que las diferencias entre rendimiento
máximo y rendimiento sostenido pueden ser grandes dependiendo del problema a procesar.
A mayor tamaño del vector de datos a procesar, los tiempos por gastos de sobrecarga pesan menos en el tiempo
total de procesamiento ya que quedan difuminados por el tiempo consumido en el procesamiento de las
operaciones vectoriales, teniendo más impacto el incremento del número de unidades funcionales.
Original – Nacional/Unión Europea - Septiembre - curso 2013/14 – Ingeniería de Computadores II - UNED 4/2
Problema 1 Septiembre 2014 Reserva
Las instrucciones son de 4 bytes de longitud fija, por lo tanto, los dos bits de orden inferior deben
ignorarse para realizar el indexado en el predictor. Utilice el siguiente bit de orden más bajo para
efectuar el indexado en P0, P1 y M.
Cada entrada de las PHT de los dos predictores y del selector corresponde a un contador de Smith de 2
bits.
Evite la interferencia destructiva no actualizando el predictor equivocado siempre que el otro predictor
sea correcto.
Las reglas de actualización de los contadores del selector M son las siguientes:
En base a toda esta información, rellene la siguiente tabla indicando con un subrayado la entrada seleccionada
de cada predictor. Calcule las tasas de predicción de saltos global para los predictores P0, P1 y M.
1/2
Solución
2/2
Problema 2 Septiembre Reserva 2014 (2 puntos).
Un procesador sin segmentación necesita 1125 nseg. para procesar cinco instrucciones. Con respecto a este
procesador, calcular la aceleración que se obtiene en los dos casos siguientes:
a) Un procesador P1 dotado de una segmentación de 9 etapas, consumiendo cada etapa el mismo tiempo.
Cada etapa ocasiona una sobrecarga de 7 nseg. no existiendo ningún tipo de detención en la
segmentación.
De acuerdo con el enunciado el tiempo medio de ejecución de una instrucción en el procesador sin
segmentar es de 1125/5 = 225 nseg. por instrucción.
La segmentación de 9 etapas de este apartado se caracteriza por acortar el tiempo medio de ejecución de una
instrucción a 32 nseg.:
225 nseg
+ 7 nseg = 32 nseg
9 etapas
Por lo tanto, la aceleración obtenida por la máquina A con respecto a la máquina sin segmentar es 7,03:
225 nseg
= 7, 03 veces más rápido
32 nseg
b) Un procesador P2 con una segmentación de 9 etapas, consumiendo cada una de ellas 30 nseg., 25 nseg.,
45 nseg., 45 nseg., 50 nseg. , 50 nseg, 40 nseg, 40 nseg y 40 nseg respectivamente, y siendo la
sobrecarga por cada etapa de 7 nseg. Un 42% de todas las instrucciones de la segmentación son
detenidas durante un ciclo de reloj, un 9% durante dos ciclos y un 12% durante tres ciclos.
La etapa más lenta es la que dicta la velocidad de las restantes etapas, por lo que cada etapa consumirá 57
nseg. (50 nseg. más los 7 nseg. de retardo).
El 42% ocasiona una detención de un ciclo, consumiendo 114 nseg. (2 ciclos · 57 nseg)
El 9% ocasiona una detención de dos ciclos, por lo que consumen 171 nseg. (3 ciclos · 57 nseg).
El 12% ocasiona una detención de tres ciclos, por lo que consumen 228 nseg. (4 ciclos · 57 nseg).
De acuerdo con esto, el tiempo medio consumido por una instrucción es:
Por lo tanto, la aceleración obtenida por la máquina B con respecto a la máquina sin segmentar es de 2,01:
225 nseg
= 2, 01 veces más rápido
111, 72 nseg
Problema 1 Febrero 2015 Primera Semana
Las instrucciones son de 4 bytes de longitud fija, por lo tanto, los dos bits de orden inferior deben
ignorarse para realizar el indexado en el predictor. Utilice el siguiente bit de orden más bajo para
efectuar el indexado en P0, P1 y M.
Cada entrada de las PHT de los dos predictores y del selector corresponde a un contador de Smith de 2
bits.
Evite la interferencia destructiva no actualizando el predictor equivocado siempre que el otro predictor
sea correcto.
Las reglas de actualización de los contadores del selector M son las siguientes:
En base a toda esta información, rellene la siguiente tabla indicando con un subrayado la entrada seleccionada
de cada predictor. Calcule las tasas de predicción de saltos global para los predictores P0, P1 y M.
1/2
Solución
2/2
Problema 2 Febrero 2015 1ª (2 puntos) – Igual que actividad 1.3 y 1.6 del libro de texto.
Un procesador sin segmentación necesita 330 nseg. para procesar una instrucción. Con respecto a este
procesador, calcular la aceleración que se obtiene en los dos casos siguientes:
a) Un procesador A dotado de una segmentación de 6 etapas, consumiendo cada etapa el mismo tiempo.
Cada etapa ocasiona una sobrecarga de 11 nseg. no existiendo ningún tipo de detención en la
segmentación.
De acuerdo con el enunciado el tiempo medio de ejecución de una instrucción en el procesador sin
segmentar es de 330 nseg. La segmentación de 6 etapas de este apartado se caracteriza por acortar el tiempo
medio de ejecución de una instrucción a 66 nseg.:
330 nseg
11 nseg 66 nseg
6 etapas
Por lo tanto, la aceleración obtenida por la máquina A con respecto a la máquina sin segmentar es 5:
330 nseg
5 veces más rápido
66 nseg
b) Un procesador B con una segmentación de 6 etapas, consumiendo cada una de ellas 35 nseg., 25 nseg.,
45 nseg., 45 nseg., 50 nseg., y 35 nseg. respectivamente, y siendo la sobrecarga por cada etapa de 11
nseg. Un 42% de todas las instrucciones de la segmentación son detenidas durante un ciclo de reloj y un
12% durante dos ciclos.
La etapa más lenta es la que dicta la velocidad de las restantes etapas, por lo que cada etapa consumirá 61
nseg. (50 nseg. más los 11 nseg. de retardo).
El 42% ocasiona una detención de un ciclo, consumiendo 122 nseg. (2 ciclos · 61 nseg)
El 12% ocasiona una detención de dos ciclos, por lo que consumen 183 nseg. (3 ciclos · 61 nseg).
De acuerdo con esto, el tiempo medio consumido por una instrucción es:
Por lo tanto, la aceleración obtenida por la máquina B con respecto a la máquina sin segmentar es de 1,96:
330 nseg
3, 26 veces más rápido
101, 26 nseg
Problema 3 Febrero 2015 Primera Semana
a) Determine todas las dependencias verdaderas, las dependencias de salida y las antidependencias. Razone su
respuesta.
b) Reescriba el código eliminando todas las dependencias que sea posible mediante la técnica de
renombramiento de registros. ¿Qué dependencias permanecen?
c) ¿Es posible vectorizar el código que ha obtenido en el apartado anterior? Explique qué debe suceder para que
el procesdor pueda manejar el código y se eviten los riesgos que quedan. ¿Qué característica debería tener el
procesador vectorial para poder mejorar la velocidad de procesamiento del código del apartado (b) con las
dependencias existentes?
Solución
a) Hay dependencias verdaderas (RAW) entre las instrucciones i1 e i3, y entre la i1 y la i4 a causa de Y[i].
Hay una antidependencia (WAR) en la i1 y la i2 por X[i] y otra entre la i3 e i4 por Y[i].
Hay una dependencia de salida (WAW) entre la i1 y la i4 a consecuencia de Y[i].
b) El vector Y en las instrucciones en la que es el operando destino se renombra como Y1 e Y2 para eliminar
las dos antidependencias que provoca.
El vector X se renombra como X1 para eliminar la antidependencia (WAR). Se supone que en el código C que
sigue al bucle el compilador habrá reemplazado la variable X por X1.
1/2
d) El código vectorial resultante es el siguiente:
LV Vx,Rx // Carga de X
DIVVS Vy1,Vx,Fs // T=X+s
ADDSV Vx1,Vx,Fs // X1=X+s
ADDSV Vz,Vy1,Fs // Z=T+s
SUBVS Vy2,Vy1,Fs // Y=T+s
SV Rx,Vx1 // Almacenamiento de X
SV Ry,Vy2 // Almacenamiento de Z
SV Rz,Vz // Almacenamiento de Y
2/2
Problema 1 Febrero 2015 2ª (3 puntos)
Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa EX excepto las
instrucciones de multiplicación que necesitan dos ciclos.
Considere que se disponen de dos unidades funcionales de tal forma que se pueden solapar dos etapas EX de
dos instrucciones en el mismo ciclo de reloj.
a) ¿Por qué existen dependencias entre iteraciones en este fragmento de código? ¿Es posible realizar la
vectorización directamente? Razone su respuesta.
b) Reescriba el bucle anterior para que pueda vectorizarse en dos secuencias vectoriales separadas eliminando la
dependencia entre iteraciones.
c) Escriba el código vectorial correspondiente al código que ha obtenido en el apartado anterior. Considere que
el registro vectorial V0 contiene ceros y que B se encuentra almacenado en el registro Fb.
calcule Tn para la dos secuencias vectoriales obtenidas considerando la existencia de encadenamiento entre
unidades funcionales.
Solución
a) Existe un dependencia entre iteraciones entrea la sentencia A[i]:= B y la C[i]:= A[i-1]. Este
dependencia surge debido a que la asignación a C[i] depende de un valor de A[i] calculado en una iteración
previa.
b)
for (i=1; i<n; i++)
A[i]:= B;
end for;
1/4
c) El código vectorial para los cuerpos de los dos podría ser el siguiente:
La secuencia de ejecución del convoy si se considera que VLR es 64 es la que se muestra en la siguiente figura:
Dado que hay un único convoy al permitirse el encadenamiento, Telemento es 1 ciclo y el Tarranque total es
igual a la suma de los tiempos de arranque visibles. Esto es
Sustituyendo los valores conocidos de Tarranque y Telemento en la expresión que determina el tiempo de
ejecución de un bucle vectorizado para vectores de longitud n se tiene
n
Tn 10 15 18 n
64
LV V1,Ra
ADDV V2,V0,V1
SV Rc,V2
Convoy 1: LV V1,Ra
Convoy 2: SV Rc,V2
2/4
La secuencia de ejecución de los dos convoyes si se considera que VLR es 64 es la que se muestra en la
siguiente figura.
Dado que hay dos convoyes al existir una única unidad de carga/almacenamiento Telemento es 2 ciclos y el
Tarranque total es igual a la suma de los tiempos de arranque visibles. Esto es
Sustituyendo los valores conocidos de Tarranque y Telemento en la expresión que determina el tiempo de
ejecución de un bucle vectorizado para vectores de longitud n se tiene
n
Tn 10 15 24 2 n
64
3/4
Problema 3 Febrero 2015 Segunda Semana
Una forma de derivar la expresión del ancho de bisección de un hipercubo es recurrir a la forma en que se
construyen ya que un hipercubo de dimensión d está formado por dos hipercubos de dimensión d-1. Se
argumenta que, debido a que los nodos de los dos subcubos resultantes de dimensión d-1 tienen conexiones
directas, entre ambos subcubos existen 2(d-1) enlaces directos. Sin embargo, es posible dividir un hipercubo de
dimensión d en dos particiones con igual número de procesadores que no sean a su vez hipercubos de
dimensión d-1.
Demuestre que tales particiones tendrán siempre más de 2(d-1) enlaces directos entre ellas, es decir, que el
número mínimo de enlaces entre dos particiones con igual número de procesadores se obtiene únicamente
cuando las particiones son subcubos.
Solución
Una manera informal de demostrar la proposición es comenzando por un particionamiento del hipercubo en dos
mitades A y B en la que cada mitad constituya un hipercubo de dimensión d-1.
Por su estructura habrá p/2 = 2(d-1) enlaces de comunicación entre estas dos particiones A y B. Si ahora se
mueve un nodo de la partición A a la B, se elimina un enlace de comunicación entre ambas particiones. Sin
embargo, este procesador está conectado en su partición A a d-1 procesadores. Por lo tanto, un conjunto
adicional de d-1 enlaces se añaden al subcubo B destinatario de este nodo. El número de enlaces de
comunicación pasa a ser:
2(d-1) +(-1+(d-1)) = 2(d-1) +d-2
Por ejemplo, en un hipercubo de dimensión 3 los enlaces de comunicación son 4. Tras realizar el cambio de
nodo, pasan a ser 5 tal y como se aprecia en la figura situada a continuación.
Obsérvese que A y B ya no son hipercubos. De esta forma, moviendo procesadores de una partición a la otra se
puede apreciar que el mínimo resultante es aquel en el cual las dos particiones deben ser hipercubos. Por lo
tanto, el número mínimo de enlaces de comunicaciones entre las dos mitades es 2(d-1)
Otro ejemplo es el particionamiento en dos mitades A y B en las que cada parte constituye un hipercubo de
dimensión d-1 y se realiza un intercambio de nodos en el que ambas particiones quedan con el mismo número
de nodos p/2 pero sin ser hipercubos. Inicialmente, y al igual que antes, habrá 2(d-1) enlaces de comunicación
entre estas dos particiones A y B. Ahora se procede a mover un nodo de la partición A a la B y viceversa, es
decir, uno de la B se mueve a la A. Con el nodo perdido en cada partición se pierde un enlace de comunicación
pero se ganan d-1; y con el nodo recibido sucede lo mismo: se pierde un enlace de comunicación pero se ganan
d-1. Se tiene que los enlaces de comunicación pasan a ser:
1/2
Problema 1 Septiembre 2015 (3 puntos)
Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa EX excepto las
instrucciones de multiplicación que necesitan dos ciclos.
1 2 3 4 5 6 7 8 9 10 11 12 13
i1 IF1 ID1 EX1 ME1 WB1
i2 IF2 ---- ---- ID2 EX2 EX2 ME2 WB2
i3 ---- ---- IF3 ID3 ---- EX3 ME3 WB3
i4 ---- ---- IF4 ---- ID4 EX4 ME4 WB4
i5 ---- IF5 ---- ID5 EX5 ME5 WB5
Considere que se disponen de dos unidades funcionales de tal forma que se pueden solapar dos etapas EX de
dos instrucciones en el mismo ciclo de reloj.
No se permite reorganización de código.
1 2 3 4 5 6 7 8 9 10 11 12 13
i1 IF1 ID1 EX1 ME1 WB1
i2 IF2 ---- ---- ID2 EX2 EX2 ME2 WB2
i3 ---- ---- IF3 ID3 EX3 ---- ME3 WB3
i4 IF4 ID4 ---- EX4 ME4 WB4
i5 IF5 ---- ---- ID5 EX5 ME5 WB5
a) Escriba el código intermedio utilizando instrucciones condicionadas con el fin de reducir al mínimo las
sentencias de salto condicional. El contenido de las variables enteras a, b, c, j y k se encuentra
almacenado en los registros Ra, Rb, Rc, Rj y Rk, respectivamente. No utilice instrucciones lógicas tipo
AND y considere que si la variable es diferente de cero la expresión lógica es verdadera para la
instrucción if.
b) Transforme el código anterior en instrucciones VLIW teniendo en cuenta que el formato de instrucción
VLIW admite solo dos operaciones pero de cualquier clase.
Solución
a)
PRED_EQ p1,p2,Ra,#0 %i1
PRED_EQ p1,p3,Rb,#0 (p2) %i2: Si a=1
ADDI Rj,Rj,#1 (p3) %i3: Si a=1 y b=1
PRED_NEQ p4,p5,Rc,#0 (p1) %i4: Si a=0 y/o b=0
ADDI Rk,Rk,#1 (p4) %i5: Si c=1
SUBI Rk,Rk,#1 (p5) %i6: Si c=0
ADDI Ri,Ri,#1 %i7
b)
Slot 1 Slot 2
1 PRED_EQ p1,p2,Ra,#0 ADDI Ri,Ri,#1
2 PRED_EQ p1,p3,Rb,#0 (p2)
3 PRED_NEQ p4,p5,Rc,#0 (p1) ADDI Rj,Rj,#1 (p3)
4 ADDI Rk,Rk,#1 (p4) SUBI Rk,Rk,#1 (p5)
Problema 3 (4 puntos) Septiembre 2015
En un procesador vectorial dotado de una unidad funcional de suma y otra de multiplicación se ejecuta el
siguiente programa en C:
a) Escriba una secuencia de instrucciones vectoriales que sustituya a la parte interior del bucle del
programa C de forma que queden eliminadas todas las dependencias que sea posible. Considere que las
direcciones de a, b, s y t están almacenadas respectivamente en Ra, Rb, Rs y Rt, respectivamente.
b) Calcule el tiempo de ejecución T 10000 y el rendimiento teórico máximo R en MFLOPS bajo las
siguientes precondiciones:
1. Sin encadenamiento.
2. Con encadenamiento.
3. Con encadenamiento y 2 unidades de carga/almacenamiento.
Solución
a) El código vectorial equivalente a las operaciones que se realizan en el cuerpo del bucle es:
LV V1,Ra
LV V2,Rb
LV V3,Rs
MULTV V4,V3,V1
ADDV V3,V2,V1
SV Rs,V3
SV Rt,V4
Existe una falsa dependencia por V3 y varias dependencias verdaderas. La falsa dependencia se puede
eliminar mediante el renombramiento de los registros obteniéndose el siguiente código:
LV V1,Ra
LV V2,Rb
LV V3,Rs
MULTV V5,V3,V1
ADDV V6,V2,V1
SV Rs,V5
SV Rt,V6
b.1) Dadas las características del procesador, las dependencias existentes en el código vectorial y la
ausencia de encadenamiento entre unidades, el número de convoyes que se pueden formar es de seis:
Convoy 1: LV V1,Ra
Convoy 2: LV V2,Rb
Convoy 3: LV V3,Rs
Convoy 4: MULTV V5,V3,V1
ADDV V6,V2,V1
Convoy 5: SV Rs,V5
Convoy 6: SV Rt,V6
n
Tn 25 80 6 n
64
10000
T10000 25 80 6 10000
64
T10000 157 25 80 6 10000
T10000 76485 ciclos
76485 ciclos
T10000 95,6 seg
800 *106 Hz
Para expresar R en FLOPS ha que multiplicar el valor anterior por la frecuencia del procesador. Se tiene
así
Convoy 1: LV V1,Ra
Convoy 2: LV V2,Rb
Convoy 3: LV V3,Rs
MULTV V5,V3,V1
ADDV V6,V2,V1
Convoy 4: SV Rs,V5
Convoy 5: SV Rt,V6
n
Tn 25 80 5 n
64
66485 ciclos
T10000 83,1seg
800 *106 Hz
2n
R lim
n T
n
2n
R lim
n n
25 80 5 n
64
2n
R lim
n n
( 1) 25 80 5 n
64
2n
R lim
n 105 6,64 n
R 0,301 FLOP/ciclo
Para expresar R en FLOPS ha que multiplicar el valor anterior por la frecuencia del procesador. Se tiene
así
b.3) Utilizando encadenamiento y 2 unidades de memoria el número de convoyes que se pueden formar
es de tres:
Convoy 1: LV V1,Ra
LV V2,Rb
Convoy 2: LV V3,Rs
MULTV V5,V3,V1
ADDV V6,V2,V1
SV Rs,V5
Convoy 3: SV Rt,V6
n
Tn 25 66 3 n
64
10000
T10000 25 66 3 10000
64
T10000 157 25 66 3 10000
T10000 44287 ciclos
44287 ciclos
T10000 55,35seg
800 *106 Hz
2n
R lim
n T
n
2n
R lim
n n
25 66 3 n
64
2n
R lim
n n
( 1) 25 66 3 n
64
2n
R lim
n 91 4,421 n
R 0,452 FLOP/ciclo
Para expresar R en FLOPS ha que multiplicar el valor anterior por la frecuencia del procesador. Se tiene
así
Otras dos opciones para organizar los convoyes son las siguientes:
Convoy 1: LV V1,Ra
LV V2,Rb
ADDV V6,V2,V1
Convoy 2: LV V3,Rs
MULTV V5,V3,V1
SV Rs,V5
Convoy 3: SV Rt,V6
Convoy 1: LV V1,Ra
LV V2,Rb
Convoy 2: LV V3,Rs
MULTV V5,V3,V1
ADDV V6,V2,V1
SV Rs,V5
Convoy 3: SV Rt,V6
Problema 1 (4 puntos)
- Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta
dos instrucciones en cada ciclo según el orden del programa (incluso a estaciones
de reserva de una misma unidad funcional).
- Una instrucción puede comenzar su ejecución en el mismo ciclo en que se
distribuye a una estación de reserva.
- La operación suma tiene una latencia de un ciclo y la de multiplicación de dos
ciclos.
Se permite que una instrucción reenvíe su resultado a instrucciones dependientes
durante su último ciclo de ejecución. De esta forma, una instrucción a la espera de
un resultado puede comenzar su ejecución en el siguiente ciclo si detecta una
coincidencia.
- Los valores de etiqueta O 1, 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
multiplicación/división. Estos valores de etiqueta son los ID de las estaciones de
reserva.
Reserva- Nacional y U.E.- Septiembre- curso 2014/15- Ingeniería de Computadores 11- UNED
Problema 2 (3 puntos)
Instrucción 1 2 3 4 5 6 7 8 9
Considerando que el estado inicial del ARF al comienzo del ciclo 3 es el siguiente:
Rl 10 RS 15
R2 20 R6 16
R3 30 R7 17
R4 40 R8 18
a) Rellene el buffer de historia con el estado actual del procesador al comienzo del ciclo 3.
Problema 3 (3 puntos)
Demuestre que tales particiones tendrán siempre más de 2 (d-I) enlaces directos entre ellas,
es decir, que el número mínimo de enlaces entre dos particiones con igual número de
procesadores se obtiene únicamente cuando las particiones son subcubos.
Reserva- Nacional y U.E.- Septiembre- curso 2014/15- Ingeniería de Computadores 11- UNED
Centro Asociado Palma de Mallorca
Septiembre
pi b
2015 - R
Problema 1
Tutor: Antonio Rivero Cuesta
FR
Ciclo 1: Se
Ciclo1: Sedistribuyei1ei2
distribuye i1 e i2 bi O
bitOc. etiqueta
i d
dato
i1: ADDDF6,F4,F2
i2: MULTD F0,F4,F6 F0 Si 04 8.0
SeejecutaRS011/1
/ F2 35
3.5
SeenvíaRS01:5.5alCDB F4 2.0
NoseejecutaRS04
j
F6 Si 01 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 i2: 04 00 2.0 00 5.5
i4: 02 05 xx 04 xx i3: 05 00 5.5 00 3.5
03
MULT/DIV
SUMA
FR
Ciclo 3: Se
Ciclo3: SeejecutaRS042/2
ejecuta RS 04 2/2 bi O
bitOc. etiqueta
i d
dato
SeejecutaRS052/2
SeenvíaRS04:11.0alCDB F0 Si 04 8.0
S
SeenvíaRS05:19.25alCDB
í RS 05 19 25 l CDB F2 Si 02 35
3.5
NOseejecutaRS02 F4 2.0
F6 Si 05 30
3.0
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 i2: 04 00 2.0 00 5.5
i4: 02 05 xx 04 xx i3: 05 00 5.5 00 3.5
MULT/DIV
SUMA
FR
Ciclo 4: Se
Ciclo4: Seactualizael
actualiza el valordeRS04:11.0
valor de RS 04: 11 0 bi O
bitOc. etiqueta
i d
dato
Seactualizael valordeRS05:19.25
SevacíaRS04 F0 11.0
S
SevacíaRS05
í RS 05 F2 Si 02 35
3.5
SeejecutaRS021/1 F4 2.0
SeenvíaRS02:30.25alCDB
F6 19 25
19.25
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
i4: 02 05 19.25 04 11.0 05
MULT/DIV
SUMA
FR
Ciclo 5:
Ciclo5: Seactualizael
Se actualiza el valordeRS02:30.25
valor de RS 02: 30 25 bi O
bitOc. etiqueta
i d
dato
SevacíaRS02
F0 11.0
F2 30 25
30.25
F4 2.0
F6 19 25
19.25
RS RS
ID etiq_1 oper_1 etiq_2 oper_2 ID etiq_1 oper_1 etiq_2 oper_2
01 04
02 05
MULT/DIV
SUMA
Problema 3 Septiembre 2015 Reserva
Una forma de derivar la expresión del ancho de bisección de un hipercubo es recurrir a la forma en que se
construyen ya que un hipercubo de dimensión d está formado por dos hipercubos de dimensión d-1. Se
argumenta que, debido a que los nodos de los dos subcubos resultantes de dimensión d-1 tienen conexiones
directas, entre ambos subcubos existen 2(d-1) enlaces directos. Sin embargo, es posible dividir un hipercubo de
dimensión d en dos particiones con igual número de procesadores que no sean a su vez hipercubos de
dimensión d-1.
Demuestre que tales particiones tendrán siempre más de 2(d-1) enlaces directos entre ellas, es decir, que el
número mínimo de enlaces entre dos particiones con igual número de procesadores se obtiene únicamente
cuando las particiones son subcubos.
Solución
Una manera informal de demostrar la proposición es comenzando por un particionamiento del hipercubo en dos
mitades A y B en la que cada mitad constituya un hipercubo de dimensión d-1.
Por su estructura habrá p/2 = 2(d-1) enlaces de comunicación entre estas dos particiones A y B. Si ahora se
mueve un nodo de la partición A a la B, se elimina un enlace de comunicación entre ambas particiones. Sin
embargo, este procesador está conectado en su partición A a d-1 procesadores. Por lo tanto, un conjunto
adicional de d-1 enlaces se añaden al subcubo B destinatario de este nodo. El número de enlaces de
comunicación pasa a ser:
2(d-1) +(-1+(d-1)) = 2(d-1) +d-2
Por ejemplo, en un hipercubo de dimensión 3 los enlaces de comunicación son 4. Tras realizar el cambio de
nodo, pasan a ser 5 tal y como se aprecia en la figura situada a continuación.
Obsérvese que A y B ya no son hipercubos. De esta forma, moviendo procesadores de una partición a la otra se
puede apreciar que el mínimo resultante es aquel en el cual las dos particiones deben ser hipercubos. Por lo
tanto, el número mínimo de enlaces de comunicaciones entre las dos mitades es 2(d-1)
Otro ejemplo es el particionamiento en dos mitades A y B en las que cada parte constituye un hipercubo de
dimensión d-1 y se realiza un intercambio de nodos en el que ambas particiones quedan con el mismo número
de nodos p/2 pero sin ser hipercubos. Inicialmente, y al igual que antes, habrá 2(d-1) enlaces de comunicación
entre estas dos particiones A y B. Ahora se procede a mover un nodo de la partición A a la B y viceversa, es
decir, uno de la B se mueve a la A. Con el nodo perdido en cada partición se pierde un enlace de comunicación
pero se ganan d-1; y con el nodo recibido sucede lo mismo: se pierde un enlace de comunicación pero se ganan
d-1. Se tiene que los enlaces de comunicación pasan a ser:
1/2
TIPO DE EXAMEN: ¡a SEMANA- NACIONAL y U.E.- FEBRERO
Problema 1 (3 puntos)
a) Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa EX,
que existe interbloqueo entre etapas, que no existen ni adelantamientos ni reorganización de
código y que se permite leer y escribir en el banco de registros durante el mismo ciclo.
b) A partir del supuesto del apartado a), la etapa EX de las instrucciones de multiplicación
necesita dos ciclos y, además, se dispone de dos unidades funcionales de tal forma que se
pueden solapar dos etapas EX de dos instrucciones cualesquiera en el mismo ciclo de reloj.
Problema 2 (3 puntos)
Instrucción 1 2 3 4 5 6 7 8 9
Considerando que el estado inicial del ARF al comienzo del ciclo 3 es el siguiente:
Rl 10 RS 15
R2 20 R6 16
R3 30 R7 17
R4 40 R8 18
b) Muestre la evolución del buffer de historia y del ARF hasta el tratamiento de la interrupción
que aparece en la instrucción de multiplicación en el ciclo 6.
Problema 3 (4 puntos)
Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa EX, que existe
interbloqueo entre etapas, que no existen ni adelantamientos ni reorganización de código y que se permite
leer y escribir en el banco de registros durante el mismo ciclo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
i1 IF1 ID1 EX1 ME1 WB1
i2 IF2 ---- ---- ID2 EX2 ME2 WB2
i3 IF3 ID3 EX3 ME3 WB3
i4 IF4 ---- ---- ID4 EX4 ME4 WB4
i5 IF5 ID5 EX5 ME5 WB5
i6 IF6 ---- ---- ID6 EX6 ME6 WB6
A partir del supuesto del apartado a), la etapa EX de las instrucciones de multiplicación necesita dos ciclos
y, además, se dispone de dos unidades funcionales de tal forma que se pueden solapar dos etapas EX de dos
instrucciones cualesquiera en el mismo ciclo de reloj.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
i1 IF1 ID1 EX1 EX1 ME1 WB1
i2 IF2 ---- ---- ---- ID2 EX2 EX2 ME2 WB2
i3 IF3 ID3 EX3 ME3 ---- WB3
i4 IF4 ---- ---- ---- ID4 EX4 ME4 WB4
i5 IF5 ID5 EX5 ME5 WB5
i6 IF6 ---- ---- ID6 EX6 ME6 WB6
Problema 2 Febrero 2016 1ª (3 puntos)
Instrucción 1 2 3 4 5 6 7 8 9
i1: SUB R7,R1,R6 IF ID EX EX WB
i2: MULT R3,R1,R4 IF ID EX EX EX EX WB
i3: ADD R4,R1,R5 IF ID EX EX WB
Considerando que el estado inicial del ARF al comienzo del ciclo 3 es el siguiente:
R1 10 R5 15
R2 20 R6 16
R3 30 R7 17
R4 40 R8 18
a) Rellene el buffer de historia con el estado actual del procesador al comienzo del ciclo 3.
b) Muestre la evolución del buffer de historia y del ARF hasta el tratamiento de la interrupción que aparece en
la instrucción de multiplicación en el ciclo 6.
Solución
a) El estado del buffer de historia al comienzo del ciclo 3 debe reflejar la emisión de las instrucciones i1 e i2 y
el almacenamiento de los valores iniciales de los registros destino. Este aspecto es importante ya que al tener un
buffer de historia el valor de los registros destino que se almacena no es el valor final (tras realizar la operación
aritmética) sino el inicial para hacer de respaldo en caso de una interrupción y ser necesario dejar el ARF como
antes de iniciarse el procesamiento de la instrucción.
O E F Dir Rd Vp Int
1 1 0 i1 R7 17 0 ← Cola
1 1 0 i2 R3 30 0
1 0 0 i3 R4 40 0
← Cabecera
b) Ciclo 4: Se emite i3. Las instrucciones i1 e i2 continúan su ejecución.
R1 10 R5 15
R2 20 R6 16
R3 30 R7 17
R4 40 R8 18
O E F Dir Rd Vp Int
1 1 0 i1 R7 17 0 ← Cola
1 1 0 i2 R3 30 0
1 1 0 i3 R4 40 0
← Cabecera
R1 10 R5 15
R2 20 R6 16
R3 30 R7 -6
R4 40 R8 18
O E F Dir Rd Vp Int
1 1 1 i1 R7 17 0 ← Cola
1 1 0 i2 R3 30 0
1 1 0 i3 R4 40 0
← Cabecera
Ciclo 6: Termina i1, finaliza i3 y se escribe el resultado en el ARF. Aparece una interrupción en i2.
R1 10 R5 15
R2 20 R6 16
R3 30 R7 -6
R4 25 R8 18
O E F Dir Rd Vp Int
0 1 1 i1 R7 17 0
1 1 0 i2 R3 30 1 ← Cola
1 1 1 i3 R4 40 0
← Cabecera
Ciclo 7: Finaliza i2.
R1 10 R5 15
R2 20 R6 16
R3 400 R7 -6
R4 25 R8 18
O E F Dir Rd Vp Int
0 1 1 i1 R7 17 0
1 1 1 i2 R3 30 1 ← Cola
1 1 1 i3 R4 40 0
← Cabecera
R1 10 R5 15
R2 20 R6 16
R3 30 R7 -6
R4 40 R8 18
O E F Dir Rd Vp Int
0 1 1 i1 R7 17 0
0 1 1 i2 R3 30 1
0 1 1 i3 R4 40 0
← Cola
←Cabecera
TIPO DE EXAMEN: 2ª SEMANA - NACIONAL - FEBRERO 2016
Problema 1 (4 puntos)
a) Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa EX,
que existe interbloqueo entre etapas, que no existen ni adelantamientos ni reorganización de
código y que se permite leer y escribir en el banco de registros durante el mismo ciclo.
b) A partir del supuesto del apartado a), si se permitiese la reorganización de código ¿sería
posible evitar todas las detenciones que se producen en la segmentación para el fragmento del
código considerado? Si la respuesta es afirmativa, enumere el orden en el que se ejecutarían las
instrucciones (en este caso no sería necesario dibujar el cronograma).
c) A partir del supuesto del apartado a), la etapa EX de las instrucciones de multiplicación
necesita dos ciclos y, además, se dispone de dos unidades funcionales de tal forma que se
pueden solapar dos etapas EX de dos instrucciones cualesquiera en el mismo ciclo de reloj.
Problema 2 (3 puntos)
b) ¿Qué cambios habría que realizar en el código que ha desarrollado si la longitud del vector
no se conociese en tiempo de compilación sino en tiempo de ejecución y estuviese almacenado
en un registro escalar?
Instrucciones que puede tener que utilizar:
MOD Ri,Rj,MLV % Realiza la operación Ri := Rj mod MLV
a) Derive una expresión para el cálculo de la distancia mínima entre dos conmutadores
cualesquiera fuente f y destino d para un anillo de k nodos suponiendo que los canales de
comunicación son unidireccionales. Los canales son positivos, es decir, un paquete puede ir del
nodo 2 al 0, pero no de forma directa (del 2 al 1 y del 1 al 0), sino recorriendo todo el anillo
(del 2 al 3, del 3 al 4, …, y del k-1 al 0).
b) Derive una expresión similar a la anterior pero suponiendo que los canales de comunicación
son bidireccionales. Plantee un ejemplo entre dos nodos con k=4.
a)
Solución al problema 2
a) Dado que el compilador recurre a la técnica de seccionamiento para vectorizar el bucle, el código resultante
estará compuesto por una mezcla de instrucciones escalares y vectoriales. La técnica de seccionamiento consiste
en realizar el procesamiento de un vector de n elementos en secciones, donde la primera sección tiene una
longitud de (n mod MVL) elementos y las restantes MVL elementos. Dado que la longitud de los vectores es de
150 elementos y MVL es 64, la primera sección tendrá una longitud de (150 mod 64)=22 elementos y el total de
secciones a procesar será de tres: una de 22 elementos y dos de 64.
Si consideramos que MVL es un registro especial cuyo contenido es inalterable y es 64, un posible código sería
el siguiente:
ADDI R4,R0,#1200 // Longitud vector de 150 elementos en bytes
ADD R4,R4,R2 // Cálculo del fin del vector X
ADDI R5,R0,#22 // Elementos de la primera sección a procesar
MOVI2S VLR,R5 // Longitud en elementos de la primera sección
MULTI R5,R5,#8 // Longitud en bytes de primera sección (22*8)
LD F1,0(R1) // Carga del escalar s
Inicio: LV V1,R2 // Carga del vector X
LV V2,R3 // Carga del vector Y
MULTSV V1,V1,F1 // X*s
ADDV V2,V2,V1 // Y+X*s
SV R3,V2 // Almacenamiento de Y
ADDI R2,R2,R5 // Siguiente sección de X
ADDI R3,R3,R5 // Siguiente sección de Y
MULTI R5,MVL,#8 // Longitud en bytes de sección siguiente
MOVI2S VLR,MVL // Longitud en elementos de sección siguiente
SUB R6,R4,R2 // ¿Se ha llegado al final del vector?
BNZ R6,Inicio // Repetir iteración si no es fin del vector
2ª semana - Nacional - Febrero - curso 2015/16 – Ingeniería de Computadores II - UNED 3/2
En el código se pueden apreciar con claridad las 6 instrucciones escalares que ocasionan el Tbase antes de
iniciar el procesamiento del bucle y las 6 instrucciones escalares, una vez dentro del bucle, que generan el
Tbucle. El fragmento de código vectorial que produce el gasto expresado por Tarranque y Telemento está
compuesto por 5 instrucciones vectoriales.
b) En caso de que en tiempo de compilación no se conociese la longitud del vector sería necesario modificar las
3 primeras instrucciones escalares iniciales para que se realizase el cálculo de la primera sección. Para ello,
supondremos la existencia de una instrucción MOD y que la longitud del vector se encuentra almacenado en el
registro R10:
Solución al problema 3
a) En un anillo unidireccional solo hay un camino que lleva desde la coordenada de la fuente f a la coordenada
del destino d. Para obtener la distancia en enlaces positivos hay que calcular
Dmin (d, f)= (d-f) mod k
Por ejemplo, para ir del nodo f=1 al nodo d=0 en un anillo undireccional con k=4 se tiene que la distancia
mínima es
Dmin (d, f) = (0-1) mod 4 = 3
b) En un anillo con enlaces bidireccionales hay dos caminos entre fuente y destino: un camino formado por los
enlaces positivos y otro por los negativos.
Camino por enlaces positivos: D(d, f)+ = (d – f ) mod k
Camino por enlaces negativos: D(d, f )- = (f – d ) mod k
La distancia mínima entre d y f será el mínimo de las dos distancia obtenidas, es decir,
Dmin (d, f) = min(D+, D-) = min((d – f ) mod k, (f – d) mod k)
Por ejemplo, para ir de un nodo f=0 al nodo d=1 en un anillo bidireccional con k=4 se tiene que la distancia
mínima es
D+ = (0 – 1 ) mod 4 = 3
D- = (1– 0) mod 4 = 1
Dmin (0,1) = min (D+, D-) = min (3,1) = 1
D d f
d f min
D min(d , f ) D k (d f )
d f min D f d
D k ( f d )
Observe que se complica ligeramente si se necesita saber las longitudes de los caminos formados por los
enlaces positivos y los negativos.
Problema 1 (3 puntos)
A partir de la organización lógica de la segmentación de instrucciones de la ASG de cinco
etapas dibuje los cronogramas de las instrucciones del siguiente fragmento de código
i1 : MULT R3,R6,R7
i2 : MULT R2,R4,R5
i3 : MULT R1,R6,R9
i4 : ADD R8,R1,R5
i5 : ADD R2,R8,R9
i6 : LD R6,4(R4)
a) Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa
EX, que existe interbloqueo entre etapas, que no existen ni adelantamientos ni
reorganización de código y que se permite leer y escribir en el banco de registros durante
el mismo ciclo.
b) A partir del supuesto del apartado (a), la etapa EX de las instrucciones de multiplicación
necesita dos ciclos.
e) A partir del supuesto del apartado (a), la etapa EX de las instrucciones de multiplicación
necesita dos ciclos y se considera, además, que se dispone de dos unidades funcionales de
tal forma que se pueden solapar dos etapas EX de dos instrucciones cualesquiera en el
mismo ciclo de reloj.
Problema 2 (4 puntos)
Original- Nacional y U. E.- Septiembre- curso 2015/16 -Ingeniería de Computadores 11- UNED
Dibuje la evolución del estado del buffer de distribución, de las estaciones de reserva, del
ARF, del RRF y del buffer de terminación. Tenga en cuenta que:
Problema 3 (3 puntos)
if (A==O)
A:=B;
el se
A:=A+4;
LD Rl,O(R3)
BNEZ Rl,Ll
LD Rl,O(R2)
JMP L2
L2: SD 0(R3),Rl
a) Suponiendo que la rama then se ejecuta casi siempre, escriba el código más óptimo
recurriendo a la técnica de planificación de trazas. Asuma que el registro R l4 está libre y
se puede utilizar.
Original- Nacional y U. E.- Septiembre- curso 2015/16 -Ingeniería de Computadores 11- UNED
Problema 1 Septiembre 2016 1ª (3 puntos)
A partir de la organización lógica de la segmentación de instrucciones de la ASG de cinco etapas dibuje los
cronogramas de las instrucciones del siguiente fragmento de código
1 2 3 4 5 6 7 8 9 10 11 12 13 14
i1 IF1 ID1 EX1 ME1 WB1
i2 IF2 ID2 EX2 ME2 WB2
i3 IF3 ID3 EX3 ME3 WB3
i4 IF4 ---- ---- ID4 EX4 ME4 WB4
i5 IF5 ---- ---- ID5 EX5 ME5 WB5
i6 IF6 ID6 EX6 ME6 WB6
A partir del supuesto del apartado (a), la etapa EX de las instrucciones de multiplicación necesita dos ciclos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
i1 IF1 ID1 EX1 EX1 ME1 WB1
i2 IF2 ID2 ---- EX2 EX2 ME2 WB2
i3 IF3 ---- ID3 ---- EX3 EX3 ME3 WB3
i4 IF4 ---- ---- ---- ---- ID4 EX4 ME4 WB4
i5 IF5 ---- ---- ID5 EX5 ME5 WB5
i6 IF6 ID6 EX6 ME6 WB6
A partir del supuesto del apartado (a), la etapa EX de las instrucciones de multiplicación necesita dos ciclos
y se considera, además, que se dispone de dos unidades funcionales de tal forma que se pueden solapar dos
etapas EX de dos instrucciones cualesquiera en el mismo ciclo de reloj.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
i1 IF1 ID1 EX1 EX1 ME1 WB1
i2 IF2 ID2 EX2 EX2 ME2 WB2
i3 IF3 ID3 EX3 EX3 ME3 WB3
i4 IF4 ---- ---- ---- ID4 EX4 ME4 WB4
i5 IF5 ---- ---- ID5 EX5 ME5 WB5
i6 IF6 ID6 EX6 ME6 WB6
Problema 2 Septiembre 2016 (4 puntos)
está ubicado en un buffer de distribución que alimenta a dos estaciones de reserva individuales asignadas
cada una de ellas a una unidad funcional de suma/resta (1 ciclo) y a una de multiplicación/división (2
ciclos y segmentada).
Dibuje la evolución del estado del buffer de distribución, de las estaciones de reserva, del ARF, del RRF y
del buffer de terminación. Tenga en cuenta que:
Solución
La siguiente tabla representa la secuencia temporal de emisión y ejecución de las instrucciones:
1 2 3 4 5 6
Dis E i1
tri mi i2
bu sión
ción i3
i4
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
1 i1 R1 Rr1 No 1 Head
1 i2 R4 Rr2 No 1
1 i3 R6 Rr3 no 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 2 (INICIO)
La unidad sumadora emite i1.
Se distribuye i4. Se renombra R7 a Rr4. Los operandos estan listos.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
1 1 i1 R1 Rr1 No 1 Head
1 i2 R4 Rr2 No 1
1 i3 R6 Rr3 No 1
1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 2 (FIN)
Finaliza la ejecución de i1. Se publica Rr1 = 50.
i2 coge el resultado y queda lista para ejecutarse.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
1 1 1 i1 R1 Rr1 No 1 Head
1 i2 R4 Rr2 No 1
1 i3 R6 Rr3 No 1
1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 3 (INICIO)
Se termina i1, escribiendo el resultado en el ARF y liberando el RRF.
Se emite i2.
i4 permanece a la espera ya que la unidad sumadora está ocupada por i2.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
-- -- -- -- -- -- --
1 1 i2 R4 Rr2 No 1 Head
1 i3 R6 Rr3 No 1
1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 3 (FIN)
Finaliza i2. Publica Rr2 = 0.
i3 intercepta el Rr2. Ahora está lista para ejecutarse.
i4 ya tiene lugar en la unidad funcional. Se ejecutará en el siguiente ciclo.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
-- -- -- -- -- -- --
1 1 1 i2 R4 Rr2 No 1 Head
1 i3 R6 Rr3 No 1
1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 4 (INICIO)
Se termina i2 del buffer de terminación. Escribiendo en ARF y limpiando el RRF.
Se emite i4.
Se emite i3.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
-- -- -- -- -- -- --
-- -- -- -- -- -- --
1 1 i3 R6 Rr3 No 1 Head
1 1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 4 (FIN)
i4 finaliza de ejecutarse, publicando Rr4 = 100
i3 termina su primer ciclo. Aun le falta uno más.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
-- -- -- -- -- -- --
-- -- -- -- -- -- --
1 1 i3 R6 Rr3 No 1 Head
1 1 1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 5 (INICIO)
i3 comienza su 2do ciclo de ejecución. Una nueva instrucción podría entrar al cauce de
la U. funcional.
i4 está lista para ser terminada, pero el buffer aún tiene pendiente i3.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
-- -- -- -- -- -- --
-- -- -- -- -- -- --
1 1 i3 R6 Rr3 No 1 Head
1 1 1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 5 (FIN)
i3 termina de ejecutarse y publica Rr3 = 0
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
-- -- -- -- -- -- --
-- -- -- -- -- -- --
1 1 1 i3 R6 Rr3 No 1 Head
1 1 1 i4 R7 Rr4 No 1
-- -- -- -- -- -- -- Tail
EVENTOS - CICLO 6
El buffer de terminacion termina i3 e i4, escribiendo en el ARF y limpiando el RRF.
Buffer de Terminación
Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr
-- -- -- -- -- -- --
-- -- -- -- -- -- --
-- -- -- -- -- -- --
-- -- -- -- -- -- --
-- -- -- -- -- -- -- Head/Tail
Problema 3 Septiembre 2016 (3 puntos)
Considere el siguiente fragmento de código correspondiente a una típica estructura de programación if-
then-else de la forma:
if (A==0)
A:=B;
else
A:=A+4;
LD R1,0(R3)
BNEZ R1,L1
LD R1,0(R2)
JMP L2
L1: ADD R1,R1,#4
L2: SD 0(R3),R1
a) Suponiendo que la rama then se ejecuta casi siempre, escriba el código más óptimo recurriendo a la
técnica de planificación de trazas. Asuma que el registro R14 está libre y se puede utilizar.
b) Reescriba el código del enunciado pero recurriendo a operaciones con predicado.
Solución
a) Se puede observar en el código del enunciado y en el diagrama de bloques que se presenta a
continuación que la ejecución de la rama then conlleva 5 instrucciones mientras que la rama else solo
4 instrucciones.
LD R1,0(R3)
BNEZ R1,L1
then else
L2: SD 0(R3),R1
La optimización que se propone y que conlleva la planificación del código con una carga especulativa de
B es la siguiente:
LD R1,0(R3) ; Carga de A
LD R14,0(R2) ; Carga especulativa de B
BEQZ R1,L3 ; Rama then del if A:=B
ADDI R14,R1,#4 ; Rama else del if A:=A+4
L3: SD 0(R3),R14 ; Almacenamiento de A
Ahora, la rama con mayor probabilidad de ejecución, la then, implica la ejecución de solo 4
instrucciones, una menos que en el enunciado propuesto. Sin embargo, la rama else ahora implica 5
instrucciones, una más.
LD R1,0(R3)
LD R14,0(R2)
BEQZ R1,L3
else
then
ADDI R1,R1,#4
L3: SD 0(R3),R1
LD R1,0(R3) ; Carga de A
LD R14,0(R2) ; Carga especulativa de B
SD 0(R3),R14 ; Almacenamiento de B en A
BEQZ R1,L3 ; Rama then del if A:=B
ADDI R1,R1,#4 ; Rama else del if A:=A+4
SD 0(R3),R1 ; Almacenamiento de A
L3: .............
La principal diferencia es que la rama más probable, la rama then, consume 4 instrucciones mientras que
las rama else implica la ejecución de 6 instrucciones.
b) LD R1,0(R3) ; Carga de A
PRED_EQ P1,P2,R1,#0
LD R1,0(R2) (P1) ; Carga de B si A=0 A:=B
ADD R1,R1,#4 (P2) ; A:=A+4
SD 0(R3),R1 ; Almacenamiento de A
TIPO DE EXAMEN: RESERVA- NACIONAL Y U.E.- SEPTIEMBRE
Problema 1 (3 puntos)
Un procesador sin segmentación necesita 500 nseg. para procesar una instrucción. Con
respecto a este procesador, calcular la aceleración que se obtiene en los dos siguientes
casos:
Problema 2 (4 puntos)
Se conoce por matriz dispersa a aquélla en la que solo algunos de sus elementos son
distintos de cero. El mecanismo principal para manipular este tipo de matrices son las
operaciones de agrupar y dispersar usando vectores de índices. Una instrucción de
agrupar (gather) usa un vector de índices y busca en memoria el vector cuyos elementos
están en las direcciones obtenidas al sumar una dirección base a los desplazamientos
dados en el vector de índices. El resultado es un vector no disperso en un registro
vectorial. Después de que estos elementos son procesados de la forma habitual, el vector
resultado se almacena en forma expandida mediante un almacenamiento disperso
(scatter) utilizando el mismo vector de índices. Ahora, c onsidere el siguiente fragmento
de código:
Reserva- Nacional y U.E.- Septiembre- curso 2015/16- Ingeniería de Computadores 11- UNED
a) Escriba el código DLXV para este bucle utilizando el registro de máscara vectorial VM
y las instrucciones para gestionar el contenido de este registro.
b) Para poder tratar las matrices dispersas de forma más efectiva, el repertorio de
instrucciones de DLXV ha sido incrementado con un conjunto de cuatro instrucciones:
Problema 3 (3 puntos)
Reserva- Nacional y U.E.- Septiembre- curso 2015/16- Ingeniería de Computadores 11- UNED
Problema 1 Septiembre 2016 (3 puntos) – Igual que actividad 1.3 y 1.6 del libro de texto.
Un procesador sin segmentación necesita 500 nseg. para procesar una instrucción. Con respecto a este
procesador, calcular la aceleración que se obtiene en los dos casos siguientes:
a) Un procesador A dotado de una segmentación de 7 etapas, consumiendo cada etapa el mismo tiempo.
Cada etapa ocasiona una sobrecarga de 14 nseg. no existiendo ningún tipo de detención en la
segmentación.
De acuerdo con el enunciado el tiempo medio de ejecución de una instrucción en el procesador sin
segmentar es de 330 nseg. La segmentación de 6 etapas de este apartado se caracteriza por acortar el tiempo
medio de ejecución de una instrucción a 66 nseg.:
500 nseg
+ 14 nseg = 85, 43 nseg
7 etapas
Por lo tanto, la aceleración obtenida por la máquina A con respecto a la máquina sin segmentar es 5:
500 nseg
= 5,85 veces más rápido
85,43 nseg
b) Un procesador B con una segmentación de 7 etapas, consumiendo cada una de ellas 35 nseg., 25 nseg.,
25 nseg., 45 nseg., 45 nseg., 55 nseg., y 35 nseg. respectivamente, y siendo la sobrecarga por cada etapa
de 12 nseg. Un 39% de todas las instrucciones de la segmentación son detenidas durante un ciclo de
reloj y un 14% durante dos ciclos.
La etapa más lenta es la que dicta la velocidad de las restantes etapas, por lo que cada etapa consumirá 61
nseg. (55 nseg. más los 12 nseg. de retardo).
El 39% ocasiona una detención de un ciclo, consumiendo 134 nseg. (2 ciclos · 67 nseg)
El 14% ocasiona una detención de dos ciclos, por lo que consumen 201 nseg. (3 ciclos · 67 nseg).
De acuerdo con esto, el tiempo medio consumido por una instrucción es:
Por lo tanto, la aceleración obtenida por la máquina B con respecto a la máquina sin segmentar es de 4,47:
500 nseg
= 4, 47 veces más rápido
111,89 nseg
Problema 3 septiembre Reserva 2012. Igual que actividad 4.3 del libro de texto
0000 0000
0001 0001
0010 0010
0011 0011
0100 0100
0101 0101
0110 0110
0111 0111
1000 1000
1001 1001
1010 1010
1011 1011
1100 1100
1101 1101
1110 1110
1111 1111
1 INFERIOR
0 SUPERIOR
0 SUPERIOR
1 INFERIOR