Examenes Ingenieria De Computadores Ii

  • Uploaded by: Geovanny Arroba
  • 0
  • 0
  • March 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Examenes Ingenieria De Computadores Ii as PDF for free.

More details

  • Words: 42,980
  • Pages: 206
Loading documents preview...
TIPO DE EXAMEN: 1ª SEMANA - NACIONAL – FEBRERO 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.

Problema 1 (3 puntos) Utilizando el algoritmo de Tomasulo para realizar la ejecución del siguiente fragmento de código: i1: i2: i3: i4:

MULTD MULTD ADDD ADDD

F2, F4, F2, F6,

F2, F2, F4, F2,

F6 F6 F6 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) Dispone del siguiente fragmento de código intermedio: Loop: LD ADDD SD SUBI BNEZ

F0,0(R1) F4,F0,F2 0(R1),F4 R1,R1,#8 R1,Loop

y de un procesador VLIW con un formato de 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: a) Transforme el código intermedio en código VLIW para el procesador indicado. b) A partir del código anterior y mediante el desenrollamiento del bucle original, complete los slots libres del código VLIW del apartado anterior. c) Realice el desenrollamiento software del bucle original. Considere que un slot de operación en coma flotante puede ejecutar restas enteras. d) Calcule para los dos apartados anteriores el número de operaciones por ciclo reloj, el número de ciclos consumidos para un vector de 800 elementos, el tamaño del código en memoria y el porcentaje de espacio desaprovechado.

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

1/2

Problema 3 (3 puntos) Dada una red con topología de hipercubo con dimensión d = 5, se pide que: a) Dibuje los hipercubos de dimension d-1 que forman dicha red. b) Calcule la distancia de Hamming para los procesadores 00000 y 11111. Dibuje y explique razonadamente un esquema del camino mas corto para comunicar ambos procesadores. c) Describa y calcule la conectividad de arco de dicha red.

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

2/2

Solución al problema 1 a) Ciclo 1: Se distribuyen i1 e i2 en orden. ID

RS Eti_1 Ope_1 Eti_2 Ope_2

RS ID

FR

Eti_1 Ope_1 Eti_2 Ope_2

ID

Bit Ocu

Etiq.

Dato

01

04 (i1)

00

2.5

00

3

F0

02

05 (i2)

04

--

00

3

F2

1

04

2.5

F4

1

05

4

03

Mult/Div Suma/Resta

2

F6

3

Ciclo 2: Se distribuyen i3 e i4 en orden. ID

RS Eti_1 Ope_1 Eti_2 Ope_2

RS ID

FR

Eti_1 Ope_1 Eti_2 Ope_2

ID

Bit Ocu

Etiq.

Dato

01 (i3)

05

--

00

3

04 (i1)

00

2.5

00

3

F0

02 (i4)

01

--

00

3

05 (i2)

04

--

00

3

F2

1

01

2.5

F4

1

05

4

F6

1

02

3

03

Mult/Div Suma/Resta

2

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. ID

RS Eti_1 Ope_1 Eti_2 Ope_2

RS ID

FR

Eti_1 Ope_1 Eti_2 Ope_2

ID

Bit Ocu

Etiq.

Dato

01 (i3)

05

--

00

3

04 (i1)

00

2.5

00

3

F0

02 (i4)

01

--

00

3

05 (i2)

04

--

00

3

F2

1

01

2.5

F4

1

05

4

F6

1

02

3

Etiq.

Dato

03

Mult/Div Suma/Resta

2

Ciclo 4: ID

RS Eti_1 Ope_1 Eti_2 Ope_2

RS ID

01 (i3)

05

--

00

3

04

02 (i4)

01

--

00

3

05 (i2)

FR

Eti_1 Ope_1 Eti_2 Ope_2

ID

Bit Ocu

F0 00

03

7.5

00

3

Mult/Div Suma/Resta

2

F2

1

01

2.5

F4

1

05

4

F6

1

02

3

Etiq.

Dato

Ciclo 5: ID

RS Eti_1 Ope_1 Eti_2 Ope_2

RS ID

01 (i3)

05

--

00

3

04

02 (i4)

01

--

00

3

05

03

FR

Eti_1 Ope_1 Eti_2 Ope_2

ID

Bit Ocu

F0 00

7.5

00

Mult/Div Suma/Resta

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

3

2

F2

1

01

2.5

F4

1

05

4

F6

1

02

3

3/2

Ciclo 6: Al final del ciclo 6 finaliza la ejecución de i2

ID

RS Eti_1 Ope_1 Eti_2 Ope_2

ID

01 (i3)

05

--

00

3

04

02 (i4)

01

--

00

3

05

03

RS Eti_1 Ope_1 Eti_2 Ope_2

ID

FR Bit Ocu Etiq.

F0 00

7.5

00

3

Mult/Div Suma/Resta

Dato 2

F2

1

01

2.5

F4

1

05

4

F6

1

02

3

Etiq.

Dato

Ciclo 7: ID

RS Eti_1 Ope_1 Eti_2 Ope_2

RS ID

Eti_1 Ope_1 Eti_2 Ope_2

FR ID

01 (i3)

00

22.5

00

3

04

F0

02 (i4)

01

--

00

3

05

F2

03

Mult/Div Suma/Resta

Bit Ocu

2 1

01

F4 F6

2.5 22.5

1

02

3

Etiq.

Dato

Ciclo 8: Al final del ciclo 8 finaliza la ejecución de i3. ID

RS Eti_1 Ope_1 Eti_2 Ope_2

RS ID

Eti_1 Ope_1 Eti_2 Ope_2

FR ID

01 (i3)

00

22.5

00

3

04

F0

02 (i4)

01

--

00

3

05

F2

03

Mult/Div Suma/Resta

Bit Ocu

2 1

01

F4 F6

2.5 22.5

1

02

3

Etiq.

Dato

Ciclo 9: ID

RS Eti_1 Ope_1 Eti_2 Ope_2

01 02 (i4)

00

25.5

00

3

RS ID

Eti_1 Ope_1 Eti_2 Ope_2

FR ID

Bit Ocu

04

F0

2

05

F2

25.5

F4

22.5

03

Mult/Div Suma/Resta

F6

1

02

3

Etiq.

Dato

Ciclo 10: Al final del ciclo 10, i4 finaliza su ejecución. ID

RS Eti_1 Ope_1 Eti_2 Ope_2

01 02 (i4)

00

25.5

03

00

3

RS ID

Eti_1 Ope_1 Eti_2 Ope_2

FR ID

Bit Ocu

04

F0

2

05

F2

25.5

F4

22.5

Mult/Div Suma/Resta

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

F6

1

02

3

4/2

Ciclo 11 ID

RS Eti_1 Ope_1 Eti_2 Ope_2

ID

RS Eti_1 Ope_1 Eti_2 Ope_2

ID

Bit Ocu

FR Etiq.

Dato

01

04

F0

2

02

05

F2

25.5

F4

22.5

F6

28.5

03

Mult/Div Suma/Resta

b) El siguiente diagrama ilustra todas las dependencias de datos existentes entre las instrucciones que componen la secuencia.

i1 RAW WAW RAW

i2

WAR

WAR

RAW

WAR

i3

WAR

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 3 i2 3

3 i3

2 i4 2

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

5/2

Solución al problema 2 a) Una solución válida aunque no óptima es la siguiente. Carga/almacenamiento Carga/almacenamiento Operaciones FP

Operaciones FP Enteras/saltos

1 LD F0,0(R1) 2 ADDD F4,F0,F2

3 4 5 6 SD 0(R1),F4 7 8

SUBI R1,R1,#8

9

BNEZ R1,Loop

Número de ciclos consumidos: 9 Número de operaciones realizadas: 5 Operaciones por ciclo: 0,555 Tamaño en memoria: 9 instrucciones * 20 bytes = 180 bytes Espacio utilizado: 5 operaciones * 4 bytes = 20 bytes % espacio desaprovechado: 88,89 Ciclos ejecutados para 800 elementos: 9 ciclos * 800 iteraciones : 7200 ciclos Instrucciones procesadas: 9 * 800 iteraciones: 7200 instrucciones Otra solución válida que mejora a la anterior es la que se muestra a continuación. Carga/almacenamiento Carga/almacenamiento Operaciones FP

Operaciones FP Enteras/saltos

1 LD F0,0(R1) 2 3

ADDD F4,F0,F2

4 5 6 SD 0(R1),F4

SUBI R1,R1,#8

7

BNEZ R1,Loop

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

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

6/2

b) En base a la solución no óptima del apartado (a) se tendría: Carga/almacenamiento Carga/almacenamiento Operaciones FP 1 LD F0,0(R1)

LD F6,-8(R1)

2 LD F10,-16(R1)

LD F14,-24(R1)

3 LD F18,-32(R1)

LD F22,-40(R1)

ADDD F4,F0,F2

Operaciones FP

ADDD F8,F6,F2

4

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

5

ADDD F20,F18,F2 ADDD F24,F22,F2

6 SD 0(R1),F4

SD -8(R1),F8

7 SD -16(R1),F12

SD -24(R1),F16

8 SD -32(R1),F20

SD -40(R1),F24

Enteras/saltos

SUBI R1,R1,#48 BNEZ R1,Loop

9

Número de ciclos consumidos: 9 Número de operaciones realizadas: 20 Operaciones por ciclo: 20/9=2,222 Tamaño en memoria: 9 instrucciones * 20 bytes = 180 bytes Espacio utilizado: 20 operaciones * 4 bytes = 80 bytes % espacio desaprovechado: 55 % Ciclos ejecutados para 800 elementos: 9 ciclos * 134 iteraciones : 1206 ciclos Instrucciones procesadas: 9 * 134 iteraciones: 1206 instrucciones En base a la solución óptima del apartado (a) se tendría: Carga/almacenamiento Carga/almacenamiento Operaciones FP 1 LD F0,0(R1)

Operaciones FP

Enteras/saltos

LD F6,-8(R1)

2 ADDD F4,F0,F2

3

ADDD F8,F6,F2

4 5 6 SD 0(R1),F4

SD -8(R1),F8

7

SUBI R1,R1,#16 BNEZ R1,Loop

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

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

7/2

c) Lo primero que hay que realizar es obtener el patrón de ejecución con el objeto de visualizar el prólogo, el patrón que se repite y el epílogo. Iteracción 1

Iteracción 2

Iteracción 3

Iteracción 4

Iteracción 5

Iteracción 6

LD F0,0(R1) LD F0,-8(R1) ADDD F4,F0,F2

LD F0,-16(R1) ADDD F4,F0,F2

LD F0,-24(R1) ADDD F4,F0,F2

SD 0(R1),F4

LD F0,-32(R1) ADDD F4,F0,F2

SD -8(R1),F4

LD F0,-40(R1) ADDD F4,F0,F2

SD -16(R1),F4

ADDD F4,F0,F2 SD -24(R1),F4 SD -32(R1),F4 SD -40(R1),F4

Tras visualizar el esquema, hay que trasladarlo a las instrucciones VLIW del procesador disponible. Carga/almacenamiento Carga/almacenamiento Operaciones FP

Operaciones FP

Enteras/saltos

LD F0,0(R1) LD F0,-8(R1) LD F0,-16(R1)

ADDD F4,F0,F2

LD F0,-24(R1)

ADDD F4,F0,F2

LD F0,-32(R1)

ADDD F4,F0,F2

LD F0,-40(R1)

SD 0(R1),F4

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

SD -8(R1),F4

ADDD F4,F0,F2

SD -16(R1),F4

ADDD F4,F0,F2

BNEZ R1,Loop

SD -24(R1),F4 SD -32(R1),F4 SD -40(R1),F4

Dado que la 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í:

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

8/2

Carga/almacenamiento Carga/almacenamiento Operaciones FP

Operaciones FP

Enteras/saltos

LD F0,48(R1) LD F0,40(R1) LD F0,32(R1)

ADDD F4,F0,F2

LD F0,24(R1)

ADDD F4,F0,F2

LD F0,16(R1)

ADDD F4,F0,F2

LD F0,8(R1)

SD 48(R1),F4

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

SD 48(R1),F4

ADDD F4,F0,F2

SD 40(R1),F4

ADDD F4,F0,F2

BNEZ R1,Loop

SD 32(R1),F4 SD 24(R1),F4 SD 16(R1),F4

Número de ciclos consumidos: 1 ciclo Número de operaciones realizadas: 5 operaciones Operaciones por ciclo: 5 operaciones/ciclo Tamaño en memoria: 11 instrucciones * 20 bytes = 220 bytes Espacio utilizado: 20 operaciones * 4 bytes = 80 bytes Espacio desaprovechado: 63 % Ciclos ejecutados para 800 elementos: 5 del prólogo + 5 del epílogo + 795 iteraciones de 1 ciclo : 805 ciclos Instrucciones procesadas: 805 instrucciones

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

9/2

Solución al problema 3 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á 00000 → 00001 → 00011 → 00111 → 01111 → 11111 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.

1ª semana - Nacional - Febrero - curso 2011/12 – Ingeniería de Computadores II - UNED

10/2

TIPO DE EXAMEN: 2a SEMANA- NACIONAL Y UNIÓN EUROPEA- FEBRERO

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.

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) En un procesador vectorial con las siguientes características: Registros con una longitud vectorial máxima de 64 elementos. Una unidad de suma vectorial con tiempo de arranque de 6 ciclos. Una unidad de multiplicación con tiempo de arranque de 7 ciclos. Una unidad de carga/almacenamiento con tiempo de arranque de 12 ciclos. La frecuencia de trabajo del procesador es 500 MHz. Tbase de 1 O ciclos y Tbucle de 15 ciclos. se pretende ejecutar el siguiente bucle:

for (i=l; i<=n; i++) A(i) .- x*A(i) + y*A(i); end for; 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: a) Sin considerar encadenamiento de resultados. b) Permitiendo encadenamientos.

e)

Considerando encadenamientos y dos unidades de multiplicación.

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 de coherencia de caché. Sabiendo que la CPU una lectura sobre la variable X

(read (X)),

B

B)

de memoria compartida que utiliza un protocolo snoopy

tiene cargada en caché la variable X y que la CPU A realiza

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

e)

B

mientras la CPU A está ejecutando sus acciones?

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. De acuerdo con el enunciado el tiem po medio de ej ecución de un a instrucción en el p rocesador sin segmentar es de 150 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 27,43 nseg.: 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:

0,33  56  2 nseg  0, 08  56  3 nseg  0,59  56 1 nseg  83, 44 nseg . 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. En un procesador vectorial con las siguientes características:      

Registros con una longitud vectorial máxima 64 elementos. Una unidad de suma vectorial con tiempo de arranque de 6 ciclos. Una unidad de multiplicación con tiempo de arranque de 7 ciclos. Una unidad de carga/almacenamiento vectorial con tiempo de arranque de 12 ciclos. La frecuencia del trabajo del procesador es 500 MHz. Tbase de 10 ciclos y Tbucle de 15 ciclos.

Se pretende ejecutar el siguiente bucle: for (i=1; i
a) Analizando los riesgos estructurales se obtiene el siguiente código vectorial: Convoy 1: LV

V1, R1

// Carga de A en V1

Convoy 2: Convoy 3: Convoy 4: Convoy 5:

V2, F0, V1 V3, F2, V1 V4, V3, V2 R1, V4

// B := x * A // C := Y * A // A := B+C // Almacenamiento de A

MULTSV MULTSV ADDV SV

La secuencia de ejecución de los cinco convoyes si se considera que VLR es 64 es la que se muestra en la siguiente figura. Telemento = 5 ciclos 12

LV

64 7

64

MULTSV

7

64

MULTSV

6

64 64

ADDV

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 Tarranque = Tarranque LV + 2*Tarranque MULTSV + Tarranque ADDV + Tarranque SV Tarranque = (12 + 2*7 + 6 + 12) ciclos = 44 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  44   n  5  64  que para el caso particular de n=1000 es

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 El rendimiento expresado en FLOP/ciclo es      3n  3n  R  lim    lim  n  T  n  n   10   n   15  44   5n     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 Ry 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     lim  R  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 0,506 FLOP/ciclo  (500 Hz 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: Convoy 1: Convoy 2:

LV MULTSV MULTSV ADDV SV

V1, R1 V2, F0, V1 V3, F2, V1 V4, V3, V2 R1, V4

// Carga de A en V1 // B := x * A // C := y * A // A := B + C //Almacenamiento de A

El Telemento ha pasado a ser de 2 ciclos dado que ahora se tienen dos convoyes. El Tarranque total se obtiene de sumar los tiempos de arranque visibles de las unidades funcionales. Si se analiza la figura se tiene Tarranque = Tarranque LV + 2* Tarranque MULTV + Tarranque ADDV + Tarranque SV Tarranque = (12 + 2*7 + 6 + 12) ciclos = 44 ciclos Con estos valores la expresión del tiempo total de ejecución queda

n Tn  10     15  44   n  2  64  que para el caso particular de n=1000 es

1000  T1000  10    15  44   2 1000  10  16  15  44   2 1000  2954 ciclos  64  R1000 

3 1000 3000   1, 0156 FLOP ciclo T1000 2954

En lo que respecta al rendimiento expresado en FLOP por ciclo

         3n  3n 3n   lim   R  lim    lim  n  T  n  n  10   n   15  44   2n  n   10   n  1  15  44   2n         64   64      3n    1, 0267 FLOP / ciclo lim  n  69  2,9219n    Claramente se aprecia la mejora en el rendimiento del procesador gracias al encadenamiento de los resultados entre las unidades funcionales.

c) Ahora es posible encadenar los resultados de las unidades y se dispone de dos unidades de multiplicación: Convoy 1: LV V1, R1 // Carga de A en V1 MULTSV V2, F0, V1 // B := x * A MULTSV V3, F2, V1 // C := y * A ADDV V4, V3, V2 // A := B + C SV R1, V4 //Almacenamiento de A Convoy 2:

El Telemento ha pasado a ser de 2 ciclos dado que ahora se tienen dos convoyes. El Tarranque total se obtiene de sumar los tiempos de arranque visibles de las unidades funcionales. Si se analiza la figura se tiene Tarranque = Tarranque LV + Tarranque MULTV + Tarranque ADDV + Tarranque SV Tarranque = (12 + 7 + 6 + 12) ciclos = 37 ciclos Con estos valores la expresión del tiempo total de ejecución queda

n Tn  10     15  37   n  2  64  que para el caso particular de n=1000 es

1000  T1000  10    15  37   2 1000  10  16  15  37   2 1000  2842 ciclos  64  R1000 

3 1000 3000   1, 0555 FLOP ciclo T1000 2842

En lo que respecta al rendimiento expresado en FLOP por ciclo

         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    1,315 FLOP / ciclo lim  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 a) La secuencia de acciones y etiquetas se describe en la siguiente tabla:

CPU A Instrucciones

Etiquetas

CPU B Acciones

Etiquetas

Acciones

inválida(X) A: read(X)

compartida(X)

A: write(X)

sucia(X)

C_lectura(X)

compartida(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 Instrucciones

Etiquetas

CPU B Acciones

Etiquetas

Acciones

inválida(X) A: read(X)

compartida(X)

B: read(X)

compartida(X)

A: write(X)

sucia(X)

C_lectura(X)

compartida(X) compartida(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 Instrucciones

Etiquetas

CPU B Acciones

Etiquetas

Acciones

inválida(X) A: read(X)

compartida(X)

B: write(X)

inválida(X)

A: write(X)

sucia(X)

C_lectura(X)

compartida(X) sucia(X)

C_escritura(X)

2/2

inválida (X)

C_escritura(X)

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: il: i2: i3: i4:

AOOO MULTO MULTO AOOO

F6,F4,F2 FO,F4,F6 F6,F6,F2 F2,F6,FO

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

Á

Una instrucción puede comenzar su ejecución en el mismo ciclo en que se distribuye a una estación de

cada ciclo según el orden del programa. 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? 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 lüms, el tiempo de salto es lms y el tiempo de transferencia por palabra son 3ms. El algoritmo de enrutamiento utilizado es store-and-forward.

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

Mostrar 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 utilizando el algoritmo de Tomasulo. Tomasulo i1: i2 i2: i3: i4:

ADDD F6,F4,F2 MULTD F0,F4,F6 F0 F4 F6 MULTD F6,F6,F2 , , ADDD F2,F6,F0

• Considere las siguientes hipótesis de partida: • Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos i instrucciones i en cada d ciclo i l según ú ell orden d del d l p g 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. ciclos • Se permite que una instrucción reenvíe su resultado l d a instrucciones i i d dependientes di j De esta durante su último ciclo de ejecución. forma una instrucción a la espera de un resultado puede comenzar su ejecución en el siguiente ciclo si se detecta una coincidencia.

• Los valores de etiqueta 01, 02 y 03 se utilizan para identificar las tres estaciones de reserva de la unidad funcional de suma, mientras que 04 y 05 se utilizan para identificar las dos estaciones de reserva de la unidad funcional d multiplicación/división. de l i li ió /di i ió Estos E valores l d 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.

Ciclo 1: Se Ciclo1: Sedistribuyei1ei2 distribuye i1 e i2 i1: ADDDF6,F4,F2 i2: MULTD F0,F4,F6 SeejecutaRS011/1 / SeenvíaRS01:5.5alCDB NoseejecutaRS04 j

bi O bitOc. etiqueta i d dato

F0 Si F2 F4 F6 Si

04

01

8.0 35 3.5 2.0 30 3.0

RS

RS ID etiq_1 oper_1 i1: 01 00 2.0 02 03

FR

etiq_2

oper_2

00

3.5

ID etiq_1 oper_1 etiq_2 i2: 04 00 2.0 01 05 MULT/DIV

SUMA

oper_2

xx

Ciclo 2: Se Ciclo2: Sedistribuyei3ei4 distribuye i3 e i4 i3:MULTDF6,F6,F2 i4: ADDDF2,F6,F0 Seactualizael valordeRS01:5.5 SevacíaRS01 SeejecutaRS041/2 SeejecutaRS051/2 NOseejecutaRS02

FR bi O bitOc. etiqueta i d dato

F0 Si F2 Si F4 F6 Si

05

8.0 35 3.5 2.0 30 3.0

RS

RS ID etiq_1 01 i4: 02 05 03

04 02

oper_1

etiq_2

oper_2

xx

04

xx

ID etiq_1 oper_1 etiq_2 oper_2 i2: 04 00 2.0 00 5.5 i3: 05 00 5.5 00 3.5 MULT/DIV

SUMA

Ciclo 3: Se Ciclo3: SeejecutaRS042/2 ejecuta RS 04 2/2 SeejecutaRS052/2 SeenvíaRS04:11.0alCDB S SeenvíaRS05:19.25alCDB í RS 05 19 25 l CDB NOseejecutaRS02

bi O bitOc. etiqueta i d dato

F0 Si F2 Si F4 F6 Si

04 02 05

8.0 35 3.5 2.0 30 3.0

RS

RS ID etiq_1 01 i4: 02 05

FR

oper_1

etiq_2

oper_2

xx

04

xx

ID etiq_1 oper_1 etiq_2 oper_2 i2: 04 00 2.0 00 5.5 i3: 05 00 5.5 00 3.5 MULT/DIV

SUMA

Ciclo 4: Se Ciclo4: Seactualizael actualiza el valordeRS04:11.0 valor de RS 04: 11 0 Seactualizael valordeRS05:19.25 SevacíaRS04 S SevacíaRS05 í RS 05 SeejecutaRS021/1 SeenvíaRS02:30.25alCDB

FR bi O bitOc.

F0 F2 F4 F6

etiqueta i

Si

02

d dato

11.0 35 3.5 2.0 19 25 19.25

RS

RS ID etiq_1 oper_1 etiq_2 oper_2 01 i4: 02 05 19.25 04 11.0

ID 04 05

etiq_1

oper_1

etiq_2

oper_2

MULT/DIV SUMA

Ciclo 5: Ciclo5:

Seactualizael Se actualiza el valordeRS02:30.25 valor de RS 02: 30 25 SevacíaRS02

FR bi O bitOc.

F0 F2 F4 F6

etiq_1

oper_1

etiq_2

RS oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

d dato

11.0 30 25 30.25 2.0 19 25 19.25

RS ID 01 02

etiqueta i

oper_2

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 (TTaken).  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. Contador Predicción Resultado real ¿Predicción correcta? Siguiente estado T

E

E



T

T

E

E



T

T

E

E



T

T

E

N

No

NT

NT

N

N



NT

NT

N

E

No

T

T

E

E



T

T

E

E



T

T

E

N

No

NT

NT

N

N



NT

NT

N

E

No

T

T

E

E



T

T

E

E



T

T

E

N

No

NT

NT

N

N



T

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



ST

ST

E

E



ST

ST

E

E



ST

ST

E

N

No

WT

WT

E

N

No

WN

WN

N

E

No

WT

WT

E

E



ST

ST

E

E



ST

ST

E

N

No

WT

WT

E

N

No

WN

WN

N

E

No

WT

WT

E

E



ST

ST

E

E



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. 3. Utilizando el algoritmo de enrutamiento store-and-forward, el tiempo de transferencia de un mensaje sigue la siguiente fórmula: t = ts+(m* tw + th)*l donde t es el tiempo de transferencia del mensaje, ts es el tiempo de inicialización, m es el tamaño del mensaje, tw el tiempo de transferencia por palabra, th el tiempo de salto y l el número de saltos. 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á 10 + (10*3 + 1)*1 = 41ms. 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 Tras añadir un nuevo procesador a un computador se logra un aumento de la velocidad de ejecución en un factor 9. Se observa que tras aplicar esta m ejora, el 55% del tiem po de ejecución se está utilizando el nuevo procesador. ¿Qué porcentaje del tiempo de ejecución original se ha reducido gracias a la mejora? El recurso utilizado mejora en 9 el rendimiento. Porcentaje del tiempo de ejecución que se aplica la mejora = 55% 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: Toriginal = 0.45 + (0.55*9) = 5.4 Por lo tanto, la ganancia obtenida aplicando la mejora es del 5,4. Sustituyendo en la expresión de la ganancia: Sp 

p 9  5, 4   f  8,3% 1  f ( p  1) 1  f (9  1)

(f es la fracción del tiempo donde no se puede aplicar la mejora). Por lo tanto, el porcentaje de tiempo que se ha convertido al modo rápido es: (100%-8.3%) = 91.7%

Problema 2 Septiembre 2012 reserva

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

MULTD ADDD SUBD ADDD

F3,F1,F2 F2,F3,F1 F3,F3,F1 F5,F1,F2

se distribuyen, a 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 a) La secuencia temporal de ejecución de las cuatro instrucciones es la siguiente:

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) Ciclo 0: Llegada de i1 a la estación de reserva. Renombramiento de F3 como Fr1. F1 F2 F3 F4 F5

Datos 2 3

Ocupado

1

Indice

1

Fr1 Fr2 Fr3 Fr4 Fr5

Datos --

Válido 0

Ocupado 1

Datos

Válido 0 0

Ocupado 1 1

Datos

Válido 0 0 0

Ocupado 1 1 1

Ciclo 1: Llegada de i2 a la estación de reserva. Renombramiento de F2 como Fr2. Emisión a la unidad funcional y comienzo de ejecución de i1. F1 F2 F3 F4 F5

Datos 2 3

Ocupado

Indice

1 1

2 1

Fr1 Fr2 Fr3 Fr4 Fr5

Ciclo 2: Llegada de i3 a la estación de reserva. Nuevo renombramiento de F3 como Fr3. Segundo ciclo de ejecución de i1. F1 F2 F3 F4 F5

Datos 2 3

Ocupado 1 1

Indice 2 3

Fr1 Fr2 Fr3 Fr4 Fr5

Ciclo 3: Llegada de i4 a la estación de reserva. Renombramiento de F5 como Fr4. Finalización de i1. Escritura de resultado en Fr1 y copia a estaciones de reserva para emisión de i2 e i3. F1 F2 F3 F4 F5

Datos 2 3

Ocupado

Indice

1 1

2 3

1

4

Ocupado

Indice

Fr1 Fr2 Fr3 Fr4 Fr5

Datos 6

Válido 1 0 0 0

Ocupado 1 1 1 1

Datos 6

Válido 1 0 0 0

Ocupado 0 1 1 1

Ciclo 4: Emisión de i2 e i3. Liberación de Fr1. F1 F2 F3 F4 F5

Datos 2 3

1 1

2 3

1

4

Fr1 Fr2 Fr3 Fr4 Fr5

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. F1 F2 F3 F4 F5

Datos 2 3

Ocupado

Indice

1 1

2 3

1

4

Fr1 Fr2 Fr3 Fr4 Fr5

Datos 6 8 4

Válido 1 1 1 0

Ocupado 0 1 1 1

Datos 6 8 4

Válido 0 1 1 0

Ocupado 0 0 0 1

Datos 6 8 4 10

Válido 0 1 1 1

Ocupado 0 0 0 1

Datos 6 18 4 10

Válido 0 1 1 1

Ocupado 0 0 0 0

Ciclo 6: Emisión de i4. Escritura de resultado de Fr2 en F2. Liberación de Fr2. Escritura de resultado en Fr3 en F3. Liberación de Fr3. F1 F2 F3 F4 F5

Datos 2 8 4

Ocupado

Indice

0 0

2 3

1

4

Fr1 Fr2 Fr3 Fr4 Fr5

Ciclo 7: Finalización de i4. Escritura de resultado en Fr4. F1 F2 F3 F4 F5

Datos 2 8 4

Ocupado

Indice

0 0

2 3

1

4

Fr1 Fr2 Fr3 Fr4 Fr5

Ciclo 8: Escritura de Fr4 en F5. Liberación de Fr4. F1 F2 F3 F4 F5

Datos 2 8 4 10

Ocupado 0 0 0 0 0

Indice 2 3 4

Fr1 Fr2 Fr3 Fr4 Fr5

3/3

Problema 3 septiembre Reserva 2012. Igual que actividad 4.3 del libro de texto 1. Dibuje una red de tipo Omega de 16 entradas y 16 salidas. 2. Describa razonadamente el protocolo para enviar un mensaje desde el nodo de entrada 3 al nodo de salida 9. 3. Suponiendo que el tercer conmutador de la segunda etapa no funciona correctamente (impidiendo de esta manera cualquier tipo de conexión donde esté involucrado), indique el número y las conexiones que quedan bloqueadas, y qué porcentaje representan respecto del total de la red.

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

Para ir del procesador 0011 al 1001: Se coge el procesador de destino 1001 y desde el procesador origen 0011 1 INFERIOR 0 SUPERIOR 0 SUPERIOR 1 INFERIOR Es lo que está en trazo grueso en ROJO en la figura.

2013

Centro Asociado Palma de Mallorca

Febrero b 2013 – 1ª Problema 1 Tutor: Antonio Rivero Cuesta

Mostrar 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 utilizando el algoritmo de Tomasulo. Tomasulo 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: • Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos i instrucciones i en cada d ciclo i l según ú ell orden d del d l p g 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. ciclos • Se permite que una instrucción reenvíe su resultado l d a instrucciones i i d dependientes di j De esta durante su último ciclo de ejecución. forma una instrucción a la espera de un resultado puede comenzar su ejecución en el siguiente ciclo si se detecta una coincidencia.

• Los valores de etiqueta 01, 02 y 03 se utilizan para identificar las tres estaciones de reserva de la unidad funcional de suma, mientras que 04 y 05 se utilizan para identificar las dos estaciones de reserva de la unidad funcional d multiplicación/división. de l i li ió /di i ió Estos E valores l d de etiqueta son los ID de las estaciones de reserva. • Inicialmente, el valor de los registros es F0=2.0, F2=2.5, F4=8.0 y F6=4.0.

i1: i2: i3: i4:

FR

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

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

2.0 25 2.5 8.0 40 4.0

RS

RS ID 01 02 03

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

Ciclo 1: Se Ciclo1: Sedistribuyei1ei2 distribuye i1 e i2 i1: MULTDF0,F6,F2 i2: ADDD F4,F2,F6 SeejecutaRS011/1 SeejecutaRS041/2 SeenvíaRS01:6.5alCDB Se e a S0 65a C

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si

04

Si

01

RS

RS ID etiq_1 oper_1 i2: 01 00 2.5 02 03

2.0 25 2.5 8.0 40 4.0

etiq_2

oper_2

00

4.0

ID etiq_1 oper_1 etiq_2 oper_2 i1: 04 00 4.0 00 2.5 05 MULT/DIV

SUMA

Ciclo 2: Ciclo2:

Sedistribuyei3ei4 Se distribuye i3 e i4 i3:ADDD F6,F4,F0 i4: ADDD F2,F6,F0 Seactualizael valordeRS01:6.5 SevacíaRS01 SeejecutaRS042/2 Se ejecuta S 0 / SeenvíaRS04:10.0alCDB NOseejecutaRS02,03

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

04 03

Si

02

2.0 25 2.5 6.5 40 4.0

RS

RS ID etiq_1 01 i3: 02 04 i4: 03 02

FR

oper_1

etiq_2

oper_2

xx xx

00 00

6.5 6.5

ID etiq_1 oper_1 etiq_2 oper_2 i1: 04 00 4.0 00 2.5 05 MULT/DIV

SUMA

Ciclo 3: Se Ciclo3: Seactualizael actualiza el valordeRS04:10.0 valor de RS 04: 10 0 SevacíaRS04 SeejecutaRS021/1 SeenvíaRS02:16.5alCDB NOseejecutaRS03

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si

03

Si

02

10.0 25 2.5 6.5 40 4.0

RS

RS ID etiq_1 oper_1 etiq_2 oper_2 01 i3: 02 04 10.0 00 6.5 i4: 03 02 xx 00 6.5

ID 04 05

etiq_1

oper_1

etiq_2

oper_2

MULT/DIV SUMA

Ciclo 4: Ciclo4:

Seactualizael Se actualiza el valordeRS02:16.5 valor de RS 02: 16 5 SevacíaRS02 SeejecutaRS031/1 SeenvíaRS03:23.0alCDB

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si

RS

RS ID etiq_1 oper_1 etiq_2 01 02 i4: 03 02 16.5 00

03

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

6.5 MULT/DIV

SUMA

10.0 25 2.5 6.5 16 5 16.5

oper_2

Ciclo 5: Se Ciclo5: Seactualizael actualiza el valordeRS03:23.0 valor de RS 03: 23 0 SevacíaRS03

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

10.0 23 0 23.0 6.5 16 5 16.5

RS

RS ID 01 02 03

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

Problema 2 Febrero 2013 1ª Semana Dado el siguiente código: inicio: LD LD LD ADDD ADDD DIVD SD ADDI ADDI ADDI ADDI JUMP

F0,0(R2) F2,0(R4) F4,0(R6) F0,F0,F2 F0,F0,F4 F0,F0,F8 0(R1),F0 R2,R2,#8 R4,R4,#8 R6,R6,#8 R1,R1,#8 inicio

% % % % % % % % % % % %

i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12

a) Obtenga el diagrama de flujo de datos de la secuencia. Considere que todas las instrucciones tienen una latencia de 2 ciclos. b) Transforme la secuencia en instrucciones VLIW para que pueda ser ejecutada por un procesador con un formato de 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 2

i2

2

i8

2

2

i4 2

2

2 i10

i5 2

i9

i3

2 2

i6

2

2 i7 2 i11 2 i12 2

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. inicio:

Unidad funcional 1 LD F0, 0(R2)

Unidad funcional 2 LD F2, 0(R4)

ADDD F0, F0, F2

Unidad funcional 3 LD F4, 0(R6)

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

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

ADDI R1, R1, #8

JMP inicio

2/2

c) La secuencia de código que se obtiene tras desenrrollar 4 veces el bucle original es la siguiente: inicio: LD LD LD LD LD LD LD LD LD LD LD LD ADDD ADDD DIVD ADDD ADDD DIVD ADDD ADDD DIVD ADDD ADDD DIVD SD SD SD SD ADDI ADDI ADDI ADDI JUMP

F0,0(R2) F2,0(R4) F4,0(R6) F10,8(R2) F12,8(R4) F14,8(R6) F20,16(R2) F22,16(R4) F24,16(R6) F30,24(R2) F32,24(R4) F34,24(R6) F0,F0,F2 F0,F0,F4 F0,F0,F8 F10,F10,F12 F10,F10,F14 F10,F10,F8 F20,F20,F22 F20,F20,F24 F20,F20,F8 F30,F30,F32 F30,F30,F34 F30,F30,F8 0(R1),F0 8(R1),F10 16(R1),F20 24(R1),F30 R2,R2,#32 R4,R4,#32 R6,R6,#32 R1,R1,#32 inicio

// // // // // // // // // // // // // // // // // // // // // // // // // // // //

Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter Iter

1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 2 3 4

Una 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). inicio:

Unidad funcional 1 LD F0, 0(R2) LD F20, 16(R2) ADDD F0, F0, F2 ADDD F20, F20, F22 ADDD F0, F0, F4 ADDD F20, F20, F24 DIVD F0, F0, F8 DIVD F20, F20, F8 SD 0(R1), F0 SD 16(R1), F20

Unidad funcional 2 LD F2, 0(R4) LD F22, 16(R4) LD F4, 0(R6) LD F24, 16(R6)

ADDI R1, R1, #32

Unidad funcional 3 LD F10, 8(R2) LD F30, 24(R2) ADDD F10, F10, F12 ADDD F30, F30, F32 ADDD F10, F10, F14 ADDD F30, F30, F34 DIVD F10, F10, F8 DIVD F30, F30, F8 SD 8(R1), F10 SD 24(R1), F30

Unidad funcional 4 LD F12, 8(R4) LD F32, 24(R4) LD F14, 8(R6) LD F34, 24(R6) ADDI R2, R2, #32 ADDI R4, R4, #32 ADDI R6, R6, #32 JMP inicio

d) El 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 Considere el siguiente segmento de código que se ejecuta en el cuerpo principal de un bucle: // // // //

if (x es par) then incrementar a; if (x es múltiplo de 10) then incrementar b;

salto salto salto salto

S1 S1 tomado S2 S2 tomado

y que la siguiente lista de 9 valores para la variable x es procesada en 9 iteraciones del bucle: 8, 9, 10, 11, 12, 20, 29, 30, 31. La 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. Páginas 227 y 228 y ejercicio 5.7 del texto base de la asignatura. 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. Estado: S1 predicho: S1 real:

8 NN N E

9 NE E N

10 EN E E

11 NE E N

12 EN E E

20 NE E E

29 EE E N

30 EN E E

31 NE E N

Estado: S2 predicho: S2 real:

NN N N

NN N N

NN N E

NE E N

EN E N

NN N E

NE E N

EN E E

NE E N

Para el salto S1: 1/2

Inicialmente, el autómata se encuentra en el estado NN, es decir, predice que el siguiente salto no se tomará (N). El primer valor de x es 8 (par) lo que provoca que el salto sea efectivo, con lo que se alimenta al autómata con el valor E y se avanza al estado NE, indicando que la predicción para el próximo salto es que se produzca (salida E). Estando en ese estado, el valor de x pasa a ser 9 por lo que no se produce el salto (entrada N al autómata) y se pasa al estado EN que predice que el próximo salto sí se producirá (salida E). Así se sigue hasta completar la secuencia de valores de x. Para el salto S2: Igual que en el caso anterior, el 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. Dada la siguiente red estática:

1

2 3

4

0

a) ¿Qué tipo de red es? Es una red estática hipercubo de dimensión 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: Del nodo 0101 nos movemos a 0100 Del nodo 0100 nos movemos a 0110 Del nodo 0110 nos movemos a 0010 Del nodo 0010 nos movemos a 1010

c) Dibuje una red estática con los siguientes valores en sus parámetros: Diámetro = 4; Conectividad de arco = 4; Coste = 50. Se trata de una red bidimensional mesh cerrada.

Problema 2 Febrero 2013 2ª Semana Dado el siguiente fragmento de código: ADDI LD LD LD LD ADD ADD SD LD a) b) c) d)

R5,R0,#1 R6,0(R5) R8,8(R5) R9,16(R5) R7,24(R5) R1,R8,R9 R8,R9,R7 0(R8),R1 R8,0(R6)

Señale todas las dependencias de datos existentes en el fragmento. ¿Existen dependencias de memoria? En caso afirmativo indique cuáles y a qué se deben. Renombre el código e indique qué dependencias permanecen. ¿Cómo se gestionan en un procesador superescalar las dependencias de datos y de memoria que permanecen tras el renombramiento?

Solución a) En el fragmento de código, las dependencias de datos existentes son: i1: i2: i3: i4: i5: i6:

ADDI LD LD LD LD ADD

R5,R0,#1 R6,0(R5) R8,8(R5) R9,16(R5) R7,24(R5) R1,R8,R9

i7: ADD

R8,R9,R7

i8: SD

0(R8),R1

i9: LD

R8,0(R6)

// // // // // // // // // // // // // // // // // //

dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia

RAW RAW RAW RAW RAW RAW RAW RAW WAR WAW RAW RAW RAW RAW WAW WAW WAR WAR

con con con con con con con con con con con con con con con con con con

i1 i1 i1 i1 i3 i4 i4 i5 i6 i3 i6 i3 i7 i2 i3 i7 i6 i8

por por por por por por por por por por por por por por por por por por

R5 R5 R5 R5 R8 R9 R9 R7 R8 R8 R1 R8 R8 R6 R8 R8 R8 R8

b) Existen dependencias ambiguas de memoria de las instrucciones i2, i3, i4 e i5 con i8. Las instrucciones de carga i2, i3, i4 e i5 leen las posiciones de memoria M[0+R5], M[8+R5], M[16+R5], y M[24+R5], respectivamente, mientras que la 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: i1: i2: i3: i4: i5: i6:

ADDI LD LD LD LD ADD

Rr1,R0,#1 Rr2,0(Rr1) Rr3,8(Rr1) Rr4,16(Rr1) Rr5,24(Rr1) Rr6,Rr3,Rr4

i7: ADD

Rr7,Rr4,Rr5

i8: SD

0(Rr7),Rr6

i9: LD

Rr9,0(Rr2)

// // // // // // // // // // // //

dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia dependencia

RAW RAW RAW RAW RAW RAW RAW RAW RAW RAW RAW RAW

con con con con con con con con con con con con

i1 i1 i1 i1 i3 i4 i4 i5 i6 i7 i3 i2

por por por por por por por por por por por por

Rr1 Rr1 Rr1 Rr1 Rr3 Rr4 Rr4 Rr5 Rr6 Rr7 Rr3 Rr2

d) Las dependencias de datos RAW se elimina mediante el mecanismo que establecen las estaciones de reserva y que obligan a que los operandos están disponibles para poder emitir una instrucción. El renombramiento de registros no elimina ninguna de las dependencias de memoria ya que al emitirse la instrucciones no es posible conocer si hay coincidencia en las direcciones. Para eliminar las dependencias de memoria falsas se establece el mecanismo de terminación ordenada con el buffer de almacenamiento. Las WAW se evitan, claramente, mediante un almacenamiento ordenado. Los riesgos WAR se evitan garantizando que una instrucción de almacenamiento posterior en el código a una carga, no escribe antes en memoria gracias al almacenamiento diferido. Los riesgos de memoria RAW se gestionan mediante hardware adicional que permite la 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 En un procesador vectorial con las siguientes características:      

Registros con una longitud vectorial máxima de 64 elementos. Una unidad de suma vectorial con tiempo de arranque de 6 ciclos. Una unidad de multiplicación con tiempo de arranque de 7 ciclos. Una unidad de carga/almacenamiento con tiempo de arranque de 12 ciclos. La frecuencia de trabajo del procesador es 100 MHz. Tbase de 10 ciclos y Tbucle de 15 ciclos.

se pretende ejecutar el siguiente código vectorial para un vector con una longitud de 64 elementos: LV MULTV MULTSV SV

V1,R1 V2,V1,V3 V4,V2,F0 R2,V4

a) Suponiendo que no existe encadenamiento entre las unidades, calcule R100 , T100 y R . b) Una medida habitual del impacto de los costes adicionales es N1/ 2 que es la longitud del vector necesaria para alcanzar la mitad del valor de R . Calcule N1/ 2 . c) Ahora dispone de encadenamiento entre las unidades funcionales y solapamiento entre convoyes dentro de la misma iteración. ¿Cuál es el nuevo valor de ciclos por elemento? Solución a) Analizando los riesgos estructurales se obtiene el siguiente código vectorial: Convoy 1: Convoy 2: Convoy 3: Convoy 5:

LV MULTV MULTSV SV

V1, R1 V2, V1, V3 V4, V2, F0 R2, V4

La secuencia de 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 LV

12

64

MULTV

7

64

MULTSV

7

64

SV

64

12

Dado que hay 4 convoyes, Telemento es 4 ciclos y el Tarranque total es igual a la suma de los tiempos de arranque visibles de los cuatro convoyes. Esto es Tarranque = Tarranque LV + 2*Tarranque MULTV + Tarranque SV Tarranque = (12 + 2*7 + 12) ciclos = 38 ciclos 1/2

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  que para el caso particular de n=100 es 100  T100  10    15  38  4 100  64  T100  10  2  15  38  4 100 T1000  516 ciclos R100 

2 100 200   0.3875 FLOP ciclo T100 516

El R expresado en FLOP/ciclo es  2n   R  lim  n  T   n      2n   R  lim n   n  10     15  38  4  n   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 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  0,41425 FLOP/ciclo  (100 106 )Hz R  41,425 MFLOPS b) Tal y como indica el enunciado, N1/ 2 es el número de elementos tal que RN1 / 2  R N1 / 2 

R . Tendremos así: 2

R 0,41425 FLOP/ciclo   0,207125 FLOP/ciclo 2 2 2/2

Por otra parte, sabemos que: Rn 

(Operaciones en coma flotante  n elementos) 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: Telemento  Tn  Tarranque  / n Por un lado, tenemos el siguiente diagrama de ejecución: Telemento=2 ciclos 12

LV

64

MULTV

7

64

MULTSV

7

64

SV

0

12

19

76

64

83

12

147

159

que nos indica que el tiempo total de ejecución utilizando un VLR de 64 es 159 ciclos. El tiempo de arranque total visible es: Tarranque = Tarranque LV + Tarranque MULTV + Tarranque SV Tarranque = (12 + 7 + 12) ciclos = 31 ciclos Por lo tanto, se tiene:





Telemento  Tn  Tarranque / n Telemento  159  31 / 64 Telemento  2

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: if (x es impar) then { incrementar a; if (x es primo) then incrementar a; } if (x es par) then incrementar a;

// salto // salto // salto // salto

S1 S1 S2 S2

(PC = 0x0000) tomado (PC= 0x1001) tomado

// salto S3 (PC = 0x0110) // salto S3 tomado

y la siguiente lista de valores para la variable x, la cual es procesada en nueve iteraciones del bucle: 8, 9, 10, 11, 12, 17, 20, 29, 31 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: Salto S1: 0x0000 mod 8 = 0 mod 8 = 0 Salto S2: 0x1001 mod 8 = 9 mod 8 = 1 Salto S3: 0x0110 mod 8 = 6 mod 8 = 6 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 Contador 0 Predicción S1 Resultado S1 Contador 1 Predicción S2 Resultado S2 Contador 6 Predicción S3 Resultado S3

8 00 N N 00 00 N T

9 00 N T 00 N N 01 N N

10 01 N N 00 00 N T

11 00 N T 00 N T 01 N N

12 01 N N 01 00 N T

17 00 N T 01 N T 01 N N

20 01 N N 10 00 N T

29 00 N T 10 T T 01 N N

31 01 N T 11 T T 00 N N

2/2

Problema 2 Septiembre 2013 Dado el siguiente código: inicio:

LD LD LD ADDD ADDD DIVD SD ADDI ADDI ADDI ADDI JUMP

F0,0(R2) F2,0(R4) F4,0(R6) F0,F0,F2 F0,F0,F4 F0,F0,F8 0(R1),F0 R2,R2,#8 R4,R4,#8 R6,R6,#8 R1,R1,#8 inicio

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) La operación entre vectores que se realiza es: 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 LV LV ADDV ADDV DIVSV SV

V1,R2 V2,R4 V3,R6 V1,V1,V2 V1,V1,V3 V1,V1,F8 R1,V1

// // // // // // //

Carga de A en V1 Carga de B en V2 Carga de C en V3 A := A + B A := A + C A := A / d Almacenamiento de V1

1/2

b.1) Sin encadenamiento: Analizando los riesgos estructurales se obtiene la siguiente estructura de convoyes: Convoy 1: Convoy 2: Convoy 3:

LV LV LV ADDV ADDV DIVSV SV

Convoy 4: Convoy 5: Convoy 6:

V1,R2 V2,R4 V3,R6 V1,V1,V2 V1,V1,V3 V1,V1,F8 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 LV

12

64

LV

12

64

LV ADDV

12 6

64 64

ADDV

6

6

DIVSV

7

64

SV

64

12

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 Tarranque = 3*Tarranque LV + 2*Tarranque ADDV + Tarranque DIVSV + Tarranque SV Tarranque = (3*12 + 6 + 7 + 12) ciclos = 61 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  61  6  n  64  b.2) Con encadenamiento: Analizando los riesgos estructurales se obtienen cinco convoyes: Convoy 1: Convoy 2: Convoy 3: Convoy 4:

LV LV ADDV LV ADDV DIVSV SV

V1,R2 V2,R4 V1,V1,V2 V3,R6 V1,V1,V3 V1,V1,F8 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

LV

12

Telemento = 4 ciclos

64 12

LV

64 6

ADDV

64 12

LV

64

ADDV DIVSV

6

6 7

64

SV

64

12

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 Tarranque = 3*Tarranque LV + 2*Tarranque ADDV + Tarranque DIVSV + Tarranque SV Tarranque = (3*12 + 2*6 + 7 + 12) ciclos = 67 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  67   4  n  64  b.3) Con encadenamiento y solapamiento entre convoyes: Para calcular Telemento en situaciones con solapamiento hay que recordar que: Telemento  Tn  Tarranque  / n Por un lado, tenemos el siguiente diagrama de ejecución: T= 3,14 ciclos 12

LV

64 12

LV

64

ADDV

6

64 12

LV

64 6

ADDV DIVSV

0

64

76

82

128

64 7

140 146 153

SV

64 12

64

192 204 210

268

que nos indica que el tiempo total de ejecución utilizando un VLR de 64 es 268 ciclos. El tiempo de arranque total visible es: Tarranque = Tarranque LV + Tarranque ADDV + Tarranque DIVSV+Tarranque SV Tarranque = (12 + 6 + 7 + 12) ciclos = 37 ciclos Por lo tanto, se tiene:

3/2





Telemento  Tn  Tarranque / n Telemento  268  37  / 64 Telemento  3,609

4/2

Problema 3 Septiembre 1ª Semana 2013 (3 puntos) Dada la siguiente red estática:

0 3 1

1.

4

2

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: Del nodo 0000 nos movemos a 0001 Del nodo 0001 nos movemos a 0011 Del nodo 0011 nos movemos a 0111 Del nodo 0111 nos movemos a 1111

2.

Dibuje una red estática con los siguientes valores en sus parámetros: Diámetro = 6; Conectividad de arco = 4; Coste = 98.

Se trata de una red Mesh cuadrada. 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. Es una red omega de 8 entradas y 8 salidas. 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

Mostrar 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 utilizando el algoritmo de Tomasulo. Tomasulo i1: i2 i2: i3: i4:

MULTDF2,F2,F6 MULTD F4,F2,F6 F4 F2 F6 ADDD F2,F4,F6 , , ADDD F6,F2,F6

• Considere las siguientes hipótesis de partida: • Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos i instrucciones i en cada d ciclo i l según ú ell orden d del d l p g 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. ciclos • Se permite que una instrucción reenvíe su resultado l d a instrucciones i i d dependientes di j De esta durante su último ciclo de ejecución. forma una instrucción a la espera de un resultado puede comenzar su ejecución en el siguiente ciclo si se detecta una coincidencia.

• Los valores de etiqueta 01, 02 y 03 se utilizan para identificar las tres estaciones de reserva de la unidad funcional de suma, mientras que 04 y 05 se utilizan para identificar las dos estaciones de reserva de la unidad funcional d multiplicación/división. de l i li ió /di i ió Estos E valores l d de etiqueta son los ID de las estaciones de reserva. • Inicialmente, el valor de los registros es F0=4.0, F2=2.0, F4=3.0 y F6=2.0.

i1: i2: i3: i4:

FR

MULTDF2,F2,F6 MULTD F2 F2 F6 MULTDF4,F2,F6 ADDD F2 F4 F6 ADDDF2,F4,F6 ADDDF6,F2,F6

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

4.0 20 2.0 3.0 20 2.0

RS

RS ID 01 02 03

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

FR

Ciclo 1: Se Ciclo1: Sedistribuyei1ei2 distribuye i1 e i2 i1:MULTDF2,F2,F6 i2:MULTDF4,F2,F6 S j SeejecutaRS041/3 S 04 1/3 No seejecutaRS05

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

RS

RS ID 01 02 03

etiq_1

oper_1

04 05

4.0 20 2.0 3.0 20 2.0

etiq_2

oper_2

ID etiq_1 oper_1 etiq_2 oper_2 i1: 04 00 2.0 00 2.0 i2: 05 04 xx 00 2.0 MULT/DIV

SUMA

FR

Ciclo 2: Se Ciclo2: Sedistribuyei3ei4 distribuye i3 e i4 i3:ADDDF2,F4,F6 i4: ADDDF6,F2,F6 SeejecutaRS042/3 NoseejecutaRS05 NoseejecutaRS01 o se ejecuta S 0 NoseejecutaRS02

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

01 05 02

RS

RS ID etiq_1 i3: 01 05 i4: 02 04 03

Si Si Si

4.0 20 2.0 3.0 20 2.0

oper_1

etiq_2

oper_2

xx xx

00 00

2.0 2.0

ID etiq_1 oper_1 etiq_2 oper_2 i1: 04 00 2.0 00 2.0 i2: 05 04 xx 00 2.0 MULT/DIV

SUMA

Ciclo 3: Se Ciclo3: SeejecutaRS043/3 ejecuta RS 04 3/3 SeenvíaRS04:4.0alCDB NoseejecutaRS05 NoseejecutaRS01 NoseejecutaRS02

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si Si

RS

RS ID etiq_1 i3: 01 05 i4: 02 04 03

01 05 02

4.0 20 2.0 3.0 20 2.0

oper_1

etiq_2

oper_2

xx xx

00 00

2.0 2.0

ID etiq_1 oper_1 etiq_2 oper_2 i1: 04 00 2.0 00 2.0 i2: 05 04 xx 00 2.0 MULT/DIV

SUMA

Ciclo 4: Se Ciclo4: Seactualizael actualiza el valordeRS04:4.0 valor de RS 04: 4 0 SevacíaRS04 SeejecutaRS051/3 SeejecutaRS021/2 NoseejecutaRS01

bi O etiqueta bitOc. i d dato

F0 F2 F4 F6

Si Si Si

01 05 02

4.0 20 2.0 3.0 20 2.0

RS

RS ID etiq_1 oper_1 i3: 01 05 xx i4: 02 04 4.0

FR

etiq_2

oper_2

00 00

2.0 2.0

ID etiq_1 oper_1 etiq_2 oper_2 04 i2: 05 04 4.0 00 2.0 MULT/DIV

SUMA

Ciclo 5: Se Ciclo5: SeejecutaRS052/3 ejecuta RS 05 2/3 SeejecutaRS022/2 SeenvíaRS02:6.0alCDB NoseejecutaRS01

FR bi O etiqueta bitOc. i d dato

F0 F2 F4 F6

Si Si Si

RS

RS ID etiq_1 oper_1 i3: 01 05 xx i4: 02 04 4.0

01 05 02

4.0 20 2.0 3.0 20 2.0

etiq_2

oper_2

00 00

2.0 2.0

ID etiq_1 oper_1 etiq_2 oper_2 04 i2: 05 04 4.0 00 2.0 MULT/DIV

SUMA

Ciclo 6: Se Ciclo6: SeejecutaRS053/3 ejecuta RS 05 3/3 SeenvíaRS05:8.0alCDB Seactualizael valordeRS02:6.0 SevacíaRS02 SeejecutaRS011/2

bi O etiqueta bitOc. i d dato

F0 F2 F4 F6

Si Si

01 05

4.0 20 2.0 3.0 60 6.0

RS

RS ID etiq_1 oper_1 i3: 01 05 6.0 02

FR

etiq_2

oper_2

00

2.0

ID etiq_1 oper_1 etiq_2 oper_2 04 i2: 05 04 4.0 00 2.0 MULT/DIV

SUMA

Ciclo 7: Se Ciclo7: Seactualizael actualiza el valordeRS05:8.0 valor de RS 05: 8 0 SevacíaRS05 SeejecutaRS012/2 SeenvíaRS01:8.0alCDB

FR bi O etiqueta bitOc. i d dato

F0 F2 F4 F6

Si

RS

RS ID etiq_1 oper_1 i3: 01 05 6.0 02

01

4.0 20 2.0 8.0 60 6.0

etiq_2

oper_2

00

2.0

ID 04 05

etiq_1

oper_1

etiq_2

oper_2

MULT/DIV SUMA

Ciclo 8: Se Ciclo8: Seactualizael actualiza el valordeRS01:8.0 valor de RS 01: 8 0 SevacíaRS01

FR bi O etiqueta bitOc. i d dato

F0 F2 F4 F6

4.0 80 8.0 8.0 60 6.0

RS

RS ID 01 02

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

Problema 2 Septiembre 2013 Reserva Considere el siguiente bucle: for (i=1; i<=10; i++) { b[i]=a[i]*c; c=c+1; if (c>10) then goto etiqueta; } etiqueta:......

Calcule la penalización debida a los saltos, en función del valor inicial de c (número entero), considerando que el procesador utiliza: a) Predicción fija (siempre se considera que se va a producir el salto) b) Predicción estática (si es desplazamiento es negativo, es decir, hacia atrás, se considera que se produce el salto; y si el desplazamiento es positivo, se predice como no efectivo). c) Predicción dinámica con 1 bit de historial para cada salto (1=saltar; 0=no saltar; valor inicial=1). 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; etiqueta:

// Salto 2

......

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. Penalización por predicción fija ( c <= 0): Salto 1: 40 ciclos. Dado que se predice que siempre se ejecuta y no sucede, hay 4 ciclos de penalización multiplicados por las 10 iteraciones del bucle. 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. Penalización por predicción fija ( c > 0): Salto 1: (10-c)*4 ciclos. En el momento en que c vale 11 el salto se hace efectivo y eso depende del valor inicial de c y del máximo de iteraciones posibles. Salto 2: 0 ciclos. Nunca se produce discordancia dado que el salto, las veces que se ejecuta, siempre es efectivo. Penalización por predicción estática (c<=0): Salto 1: 0 ciclos. El salto siempre se predice como no efectivo dado que el desplazamiento es hacia delante y como nunca de produce, no hay discordancia en la predicción. Salto 2: 4 ciclos. El salto siempre se predice como efectivo dado que el desplazamiento es hacia atrás y solo hay discordancia una vez que es en la última iteración. Penalización por predicción estática ( c > 0): Salto 1: 4 ciclos. El salto siempre se predice como no efectivo dado que el desplazamiento es hacia delante y como solo se produce una vez, solo hay discordancia una vez. Salto 2: 0 ciclos. El salto siempre se predice como efectivo dado que el desplazamiento es hacia atrás y como no se llega al número máximo de iteraciones al hacerse efectivo antes el salto 1, no hay discordancia. Penalización por predicción dinámica (c<=0): Salto 1: 4 ciclos. El contador inicialmente está a 1 (predicción de que se realiza) pero como el salto nunca es efectivo, la primera vez hay discordancia pero al decrementar el contador a 0 (al no ser efectivo el salto) ya siempre hay concordancia entre la efectividad del salto y la predicción. Salto 2: 4 ciclos. El contador inicialmente está a 1 y como el salto es efectivo todas las veces salvo la última, siempre hay concordancia a excepción de la última iteración que se salto no se produce pero el contador estaba a 1. Penalización por predicción dinámica (c>0): Salto 1: Surgen dos situaciones según el valor de c. c)

10<=c. 0 ciclos. La primera vez el salto ya es efectivo ya que c pasa a ser mayor de 10 y hay concordancia con la predicción dado que el contador ya está a 1.

ci)

0
Salto 2: 0 ciclos. El contador inicialmente está a 1 y como el salto es efectivo todas las veces que se ejecuta (no se llega al final del bucle), siempre hay concordancia entre efectividad real y predicción.

2/2

Problema 3 Septiembre 2013 Reserva Dado el siguiente fragmento de código: for (i=0; i<100; i++) { if (A[i] > 10) then { X[i]:=X[i]+b; } else { if (A[i] > 20) then { X[i]:=X[i]+c; } else { X[i]:=X[i]+d; } } } 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 a) Un posible código intermedio con operaciones predicadas es el siguiente:

inicio:

else:

fin:

LD LD LD LD LD PRED_LT ADDD JMP PRED_LT ADDD ADDD SD SUBI SUBI BNEZ

Fb,0(Rb) Fc,0(Rc) Fd,0(Rd) Fa,0(Ra) Fx,0(Rx) p1,p2,Fa,#10 Fx,Fx,Fb fin p3,p4,Fa,#20 Fx,Fx,Fc Fx,Fx,Fd 0(Rx),Fx Ra,Ra,#4 Rx,Rx,#4 Ra,inicio

(p2) (p2) (p4) (p3)

// // // // // // //

Carga de la constante b Carga de la constante c Carga de la constante d Carga del vector A Carga del vector X If (R1<=10) {p1:=T; p2:=F} X[i]:=X[i]+b

// If (R2<=20) {p3:=T; p4:=F} // X[i]:=X[i]+c // X[i]:=X[i]+d

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 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)

Operaciones FP

6

Enteras/saltos

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. 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)

SUBI Ra,Ra,#4

5

LD Fx,0(Rx)

SUBI Rx,Rx,#4

6 7

PRED_LT p1,p2,Fa,#10 ADDD

Fx,Fx,Fb (p2)

8

PRED_LT p3,p4,Fa,#20 JMP fin (p2)

9

ADDD Fx,Fx,Fc (p4)

10

ADDD Fx,Fx,Fd (p3)

11 12

fin:

13

BNEZ Ra,inicio

14

SD 0(Rx),Fx

2/2

2014

Centro Asociado Palma de Mallorca

Febrero b 2014 – 1ª Problema 1 Tutor: Antonio Rivero Cuesta

Mostrar 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 utilizando el algoritmo de Tomasulo. Tomasulo i1: i2 i2: i3: i4:

ADDD MULTD MULTD ADDD

F4,F2,F0 F6 F2 F0 F6,F2,F0 F2,F4,F6 , , F0,F2,F4

• Considere las siguientes hipótesis de partida: • Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos i instrucciones i en cada d ciclo i l según ú ell orden d del d l p g 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. ciclos • Se permite que una instrucción reenvíe su resultado l d a instrucciones i i d dependientes di j De esta durante su último ciclo de ejecución. forma una instrucción a la espera de un resultado puede comenzar su ejecución en el siguiente ciclo si se detecta una coincidencia.

• Los valores de etiqueta 01, 02 y 03 se utilizan para identificar las tres estaciones de reserva de la unidad funcional de suma, mientras que 04 y 05 se utilizan para identificar las dos estaciones de reserva de la unidad funcional d multiplicación/división. de l i li ió /di i ió Estos E valores l d de etiqueta son los ID de las estaciones de reserva. • Inicialmente, el valor de los registros es F0=3.0, F2=2.0, F4=6.0 y F6=5.0.

i1: i2: i3: i4:

FR

ADDDF4,F2,F0 ADDD F4 F2 F0 MULTDF6,F2,F0 MULTD F2 F4 F6 MULTDF2,F4,F6 ADDD F0,F2,F4

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

3.0 20 2.0 6.0 50 5.0

RS

RS ID 01 02 03

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

Ciclo 1: Se Ciclo1: Sedistribuyei1ei2 distribuye i1 e i2 i1:ADDDF4,F2,F0 i2:MULTDF6,F2,F0 S j t RS 01 1/1 SeejecutaRS011/1 SeenvíaRS01:5.0alCDB SeejecutaRS041/2

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

RS

RS ID etiq_1 oper_1 i1: 01 00 2.0 02 03

01 04

3.0 20 2.0 6.0 50 5.0

etiq_2

oper_2

00

3.0

ID etiq_1 oper_1 etiq_2 oper_2 i2: 04 00 2.0 00 3.0 05 MULT/DIV

SUMA

Ciclo 2: Se Ciclo2: Sedistribuyei3ei4 distribuye i3 e i4 i3:MULTDF2,F4,F6 i4: ADDDF0,F2,F4 SeejecutaRS051/2 NoseejecutaRS02 Seactualizael Se actua a e valordeRS01:5.0 a o de S 0 5 0 SevacíaRS01 SeejecutaRS042/2 Se envía RS 04: 6 0 al CDB SeenvíaRS04:6.0alCDB

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

02 05

Si

04

3.0 20 2.0 5.0 50 5.0

RS

RS ID etiq_1 01 i4: 02 05 03

FR

oper_1

etiq_2

oper_2

xx

00

5.0

ID etiq_1 oper_1 etiq_2 oper_2 i2: 04 00 2.0 00 3.0 i3: 05 00 5.0 00 5.0 MULT/DIV

SUMA

Ciclo 3: Se Ciclo3: Seactualizael actualiza el valordeRS04:6.0 valor de RS 04: 6 0 SevacíaRS04 SeejecutaRS052/2 S SeenvíaRS05:25.0alCDB í RS 05 25 0 l CDB NoseejecutaRS02

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

3.0 20 2.0 5.0 60 6.0

RS

RS ID etiq_1 01 i4: 02 05 03

02 05

oper_1

etiq_2

oper_2

xx

00

5.0

ID etiq_1 oper_1 etiq_2 oper_2 04 i3: 05 00 5.0 00 5.0 MULT/DIV

SUMA

Ciclo 4: Se Ciclo4: Seactualizael actualiza el valordeRS05:25.0 valor de RS 05: 25 0 SevacíaRS05 SeejecutaRS021/1 S SeenvíaRS02:30.0alCDB í RS 02 30 0 l CDB

FR bi O etiqueta bitOc. i d dato

F0 F2 F4 F6

Si

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

3.0 25 0 25.0 5.0 60 6.0

RS

RS ID etiq_1 oper_1 etiq_2 oper_2 01 i4: 02 05 25.0 00 5.0

02

oper_2

Ciclo 5: Se Ciclo5: Seactualizael actualiza el valordeRS02:30.0 valor de RS 02: 30 0 SevacíaRS02

FR bi O etiqueta bitOc. i d dato

F0 F2 F4 F6

30.0 25 0 25.0 5.0 60 6.0

RS

RS ID 01 02

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

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 Para g=0 b1 predicho b1 real b2 predicho b2 real Para g=1 b1 predicho b1 real b2 predicho b2 real

9

10

11

12

20

29

30

31

N N

N N

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.

1ª semana - Nacional - Febrero - curso 2013/14 – Ingeniería de Computadores II - UNED

1/2

Solución A continuación, se presenta la solución del ejercicio.

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. La flechas discontinuas representan la actualización de la BHT según el resultado del salto.

1ª semana - Nacional - Febrero - curso 2013/14 – Ingeniería de Computadores II - UNED

2/2

2014

Problema 1 Febrero 2014 2ª (2 puntos) – Igual que actividad 1.3 y 1.6 del libro de texto. 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). El 54%, no provocan detenciones, empleando sólo un ciclo de reloj (69 nseg.). De acuerdo con esto, el tiempo medio consumido por una instrucción es: 0,37 · 69 · 2 = 51,06 nseg. 0,09 · 69 · 3 = 18,63 nseg. 0,54 · 69 · 1 = 37,26 nseg. Total:

= 106,95 nseg.

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: Diámetro = 8; Conectividad de arco = 4; Coste = 162; Se trata de una red bidimensional mesh cerrada.

Mostrar 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 j ió del d l siguiente i i t fragmento f t de d código ódi utilizando el algoritmo de Tomasulo. i1: i1 i2: i3: i4: i5:

ADDD F2,F4,F0 ADDD F2 F4 F0 ADDD F0,F6,F4 MULTD F2,F4,F6 ADDD F4,F2,F0 , , ADDD F2,F6,F2

• Considere las siguientes hipótesis de partida: • Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos i instrucciones i en cada d ciclo i l según ú ell orden d del d l p g 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. ciclos • Se permite que una instrucción reenvíe su resultado l d a instrucciones i i d dependientes di durante su último ciclo de ejecución. j De esta forma una instrucción a la espera de un resultado puede comenzar su ejecución en el siguiente ciclo si se detecta una coincidencia.

• Los valores de etiqueta 01, 02 y 03 se utilizan para identificar las tres estaciones de reserva de la unidad funcional de suma, mientras que 04 y 05 se utilizan para identificar las dos estaciones de reserva de la unidad funcional d multiplicación/división. de l i li ió /di i ió Estos E valores l d de etiqueta son los ID de las estaciones de reserva. • Inicialmente, el valor de los registros es F0=4.0, F2=2.0, F4=1.0 y F6=3.0.

i1: i2: i3: i4: i5:

FR

ADDDF2,F4,F0 ADDD F2 F4 F0 ADDDF0,F6,F4 MULTD F2 F4 F6 MULTDF2,F4,F6 ADDDF4,F2,F0 ADDD F2 F6 F2 ADDDF2,F6,F2

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

4.0 20 2.0 1.0 30 3.0

RS

RS ID 01 02 03

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

oper_2

MULT/DIV SUMA

Ciclo 1: Se Ciclo1: Sedistribuyei1ei2 distribuye i1 e i2 i1: ADDDF2,F4,F0 i2: ADDDF0,F6,F4 SeejecutaRS011/1 / SeenvíaRS01:5.0alCDB SeejecutaRS021/1 SeenvíaRS02:4.0alCDB

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

4.0 20 2.0 1.0 30 3.0

RS

RS ID etiq_1 oper_1 i1: 01 00 1.0 i2: 02 00 3.0 03

02 01

etiq_2

oper_2

00 00

4.0 1.0

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

Ciclo 2: Se Ciclo2: Seactualizael actualiza el valordeRS01:5.0 valor de RS 01: 5 0 SevacíaRS01 Seactualizael valordeRS02:4.0 SevacíaRS02 Sedistribuyei3ei4 i3:MULTDF2,F4,F6 3 U , , 6 i4: ADDDF4,F2,F0 Seejecuta RS041/2 NO NOseejecutaRS01 j t RS 01

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

RS

RS ID etiq_1 i4: 01 04 02 03

04 01

4.0 50 5.0 1.0 30 3.0

oper_1

etiq_2

oper_2

xx

00

4.0

ID etiq_1 oper_1 etiq_2 oper_2 i3: 04 00 1.0 00 3.0 05 MULT/DIV

SUMA

Ciclo 3: Se Ciclo3: Sedistribuyei5 distribuye i5 i5:ADDD F2,F6,F2 SeejecutaRS042/2 S SeenvíaRS04:3.0alCDB í RS 04 3 0 l CDB NOseejecutaRS01 NOseejecutaRS02

bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

04 01

4.0 50 5.0 1.0 30 3.0

RS

RS ID etiq_1 oper_1 i4: 01 04 xx i5: 02 00 3.0 03

FR

etiq_2

oper_2

00 04

4.0 xx

ID etiq_1 oper_1 etiq_2 oper_2 i3: 04 00 1.0 00 3.0 05 MULT/DIV

SUMA

Ciclo 4: Se Ciclo4: Seactualizael actualiza el valordeRS04:3.0 valor de RS 04: 3 0 SevacíaRS04 SeejecutaRS011/1 S SeenvíaRS01:6.0alCDB í RS 01 6 0 l CDB SeejecutaRS021/1 SeenvíaRS02:6.0alCDB

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

Si Si

02 01

4.0 50 5.0 1.0 30 3.0

RS

RS ID etiq_1 oper_1 etiq_2 oper_2 i4: 01 00 3.0 00 3.0 i5: 02 00 3.0 00 3.0 03

ID 04 05

etiq_1

oper_1

etiq_2

oper_2

MULT/DIV SUMA

Ciclo 5: Se Ciclo5: Seactualizael actualiza el valordeRS01:6.0 valor de RS 01: 6 0 SevacíaRS01 Seactualizael valordeRS02:6.0 SevacíaRS02

FR bi O bitOc. etiqueta i d dato

F0 F2 F4 F6

4.0 60 6.0 6.0 30 3.0

RS

RS ID 01 02 03

etiq_1

oper_1

etiq_2

oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

oper_2

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 ALU entera

1

ALU FP

4

Memoria

3

Saltos

3

X X

X

Operaciones realizadas por la unidad

X

Comparación/suma/resta entera, operaciones lógicas

X

Aritmética de coma flotante

X

Cargas y almacenamientos X

Saltos condicionales e incondicionales

Muestre la ejecución del siguiente código en el procesador VLIW indicado previamente: void sum (int c[], int a[], int b[], int n) { int i; for (i=0; i
Solución a) Secuencia de ejecución de las instrucciones VLIW sin predicados. Ciclos

Operación 1

Operación 2

1

Inicio: LD R1,0(Ra)

LD R2,0(Rb)

2

SUBI Ra,Ra,#4

SUBI Rb,Rb,#4

Operación 3

3 4

BNEZ R1,else

5 6 7

then: ADD R3,R1,R2

JMP fin

8 9 10

else: ADDI R3,R1,#1

11

fin: SD 0(Rc),R3

SUBI Rc,Rc,#4

BNEZ Ra,inicio

12 13 1/2

b) Secuencia de ejecución de las instrucciones VLIW con predicados. Ciclos

Operación 1

Operación 2

1

Inicio: LD R1,0(Ra)

LD R2,0(Rb)

2

SUBI Ra,Ra,#4

SUBI Rb,Rb,#4

Operación 3

3 4

PRE_EQ p1,p2,R1,#0

5

ADD R3,R1,R2 (p1)

ADDI R3,R1,#1 (p2)

6

SD 0(Rc),R3

SUBI Rc,Rc,#4

BNEZ Ra,inicio

7 8

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. Ciclos

Operación 1

Operación 2

1

Inicio: LD R1,0(Ra)

LD R2,0(Rb)

2

SUBI Ra,Ra,#4

SUBI Rb,Rb,#4

Operación 3

3 4

ADD R3,R1,R2

BNEZ R1,else

5 6 7

JMP fin

8 9 10

else: ADDI R3,R1,#1

11

Fin: SD 0(Rc),R3

SUBI Rc,Rc,#4

BNEZ Ra,inicio

12 13

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) Dispone de un procesador vectorial VECTOR-A con las siguientes características: 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 a) Escriba el código vectorial que corresponde a las dos secuencias de código. b) Calcule el número de ciclos consumidos por la secuencia 1 en el procesador VECTOR-A. c) Calcule el número de ciclos consumidos por la secuencia 1 en el procesador VECTOR-B. d) Calcule el número de ciclos consumidos por la secuencia 2 en el procesador VECTOR-A. e) Calcule el número de ciclos consumidos por la secuencia 2 en el procesador VECTOR-B f) Compare y explique, razonadamente, las diferencias obtenidas al realizar ejecución de la secuencia 1 y la 2 en ambos procesadores.

Original – Nacional/Unión Europea - Septiembre - curso 2013/14 – Ingeniería de Computadores II - UNED

1/2

Solución a) El código correspondiente a la secuencia de código 1 es LV MULTVS MULTVS ADDV SV

V1, A(i) V2, Rx, V1 V3, Ry, V1 V4,V2,V3 V4, A(i+1)

y el correspondiente a la secuencia de código 2 es: LV MULTVS SV

V1,A(i) V2,x,V1 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 Tarranque = Tarranque LV + 2*Tarranque MULTVS + Tarranque ADDV + Tarranque SV Tarranque = (12 + 2*7 + 6 + 12) ciclos = 44 ciclos 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 Tarranque = Tarranque LV + Tarranque MULTVS + Tarranque ADDV + Tarranque SV Tarranque = (24 + 14 + 12 + 24) ciclos = 74 ciclos Original – Nacional/Unión Europea - Septiembre - curso 2013/14 – Ingeniería de Computadores II - UNED

2/2

Con estos valores y dado que el tiempo base es 20, la expresión del tiempo total de ejecución del bucle interior queda  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 Tarranque = Tarranque LV + Tarranque MULTVS + Tarranque SV Tarranque = (12 + 7 + 12) ciclos = 31 ciclos 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 Tarranque = Tarranque LV + Tarranque MULTVS + Tarranque SV Tarranque = (24 + 14 + 24) ciclos = 62 ciclos 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 La siguiente figura corresponde a un predictor híbrido formado por:  un predictor bimodal (P0) formado por una PHT de 2 entradas.  un predictor gshare (P1) con un BHR de 1 bit y una PHT de 2 entradas.  un selector de 2 entradas (M) con una PHT de 2 entradas. Considere la siguientes suposiciones:  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:     

Si en la última predicción P0 y P1 fallaron, el contador no se modifica. Si P0 falló y P1 acertó el contador se incrementa. Si P0 acertó y P1 falló el contador se decrementa. Si los dos acertaron, el contador no se modifica. Un valor del selector de 0 ó 1 selecciona el predictor bimodal P0 mientras que un valor de 2 ó 3 selecciona el predictor gshare P1.

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.

Estados del predictor después de resolver el salto Selector Direcc. salto

Resultado salto

Bimodal

Gshare

M

Inicial

-

-

-

-

0x654

N

0x780

T

0x78C

T

0x990

T

0xA04

N

0x78C

N

PHT0 PHT1

2

0

Predictor bimodal PHT0

PHT1

0

2

Predictor gshare BHR PHT0 PHT1

0

2

1

1/2

Solución Estados del predictor después de resolver el salto Selector Direcc. salto

Resultado salto

Bimodal

Gshare

Combin PHT0 PHT1 ado

Inicial

-

-

-

-

2

0x654

N

T

N

T

0x780

T

N

T

0x78C

T

T

0x990

T

0xA04 0x78C

Predictor bimodal

Predictor gshare

PHT0

PHT1

BHR PHT0 PHT1

0

0

2

0

2

1

2

1

0

2

0

2

0

T

3

1

0

2

1

3

0

T

T

3

1

0

3

1

3

0

N

N

N

3

1

1

3

1

3

1

N

T

T

T

3

1

1

2

0

2

1

N

T

N

T

3

2

1

2

0

2

0

Tasa de predicción del predictor P0: 1/6 = 16.7% Tasa de predicción del predictor P1: 4/6 = 66.7% Tasa de predicción del predictor M: 2/6 = 33%

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). El 37%, no provocan detenciones, empleando sólo un ciclo de reloj (57 nseg.). De acuerdo con esto, el tiempo medio consumido por una instrucción es: 0,42 · 57 · 2 0,09 · 57 · 3 0,12 · 57 · 4 0,37 · 57 · 1

= 47,88 nseg. = 15,39 nseg. = 27,36 nseg. = 21,09 nseg.

Total:

= 111,72 nseg.

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 La siguiente figura corresponde a un predictor híbrido formado por:  un predictor bimodal (P0) formado por una PHT de 2 entradas.  un predictor gshare (P1) con un BHR de 1 bit y una PHT de 2 entradas.  un selector de 2 entradas (M) con una PHT de 2 entradas. Considere la siguientes suposiciones:  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:     

Si en la última predicción P0 y P1 fallaron, el contador no se modifica. Si P0 falló y P1 acertó el contador se incrementa. Si P0 acertó y P1 falló el contador se decrementa. Si los dos acertaron, el contador no se modifica. Un valor del selector de 0 ó 1 selecciona el predictor bimodal P0 mientras que un valor de 2 ó 3 selecciona el predictor gshare P1.

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.

Estados del predictor después de resolver el salto Selector Direcc. salto

Resultado salto

Bimodal

Gshare

M

Inicial

-

-

-

-

0x654

N

0x780

T

0x78C

T

0x990

T

0xA04

N

0x78C

N

PHT0 PHT1

2

0

Predictor bimodal PHT0

PHT1

0

2

Predictor gshare BHR PHT0 PHT1

0

2

1

1/2

Solución Estados del predictor después de resolver el salto Selector Direcc. salto

Resultado salto

Bimodal

Gshare

Combin PHT0 PHT1 ado

Inicial

-

-

-

-

2

0x654

N

T

N

T

0x780

T

N

T

0x78C

T

T

0x990

T

0xA04 0x78C

Predictor bimodal

Predictor gshare

PHT0

PHT1

BHR PHT0 PHT1

0

0

2

0

2

1

2

1

0

2

0

2

0

T

3

1

0

2

1

3

0

T

T

3

1

0

3

1

3

0

N

N

N

3

1

1

3

1

3

1

N

T

T

T

3

1

1

2

0

2

1

N

T

N

T

3

2

1

2

0

2

0

Tasa de predicción del predictor P0: 1/6 = 16.7% Tasa de predicción del predictor P1: 4/6 = 66.7% Tasa de predicción del predictor M: 2/6 = 33%

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). El 46%, no provocan detenciones, empleando sólo un ciclo de reloj (61 nseg.). De acuerdo con esto, el tiempo medio consumido por una instrucción es: 0,42 · 61 · 2 = 51,24 nseg. 0,12 · 61 · 3 = 21,96 nseg. 0,46 · 61 · 1 = 28,06 nseg. Total:

= 101,26 nseg.

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 Considere el siguiente bucle: for (i=0; i<100; i++) Y[i]:= X[i]/s; X[i]:= X[i]+s; Z[i]:= Y[i]+s; Y[i]:= Y[i]-s; end for;

// // // //

i1 i2 i3 i4

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? d) Escriba el código vectorial correspondiente al código obtenido del apartado (b).

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. for (i=0; i<100; i++) Y1[i]:= X[i]/s; X1[i]:= X[i]+s; Z[i]:= Y1[i]+s; Y2[i]:= Y1[i]-s; end for;

// // // //

i1 i2 i3 i4

Las únicas que permanecen son las dependencias verdaderas entre i1-i3 e i1-i4. c) Sí es posible ya que no existen dependencias RAW entre iteraciones del bucle por lo que no evitarán la vectorización del mismo. Sin embargo, las dependencias forzarán a que las instrucciones i3 e i4 tengan que esperar a que se complete la instrucción i1 aun cuando las instrucciones i3 e i4 utilicen unidades funcionales diferentes a las de la instrucción i1. Una técnica para aumentar el rendimiento es el encadenamiento. Esto permite que no sea necesario serializar los resultados entre unidades funcionales. 1/2

d) El código vectorial resultante es el siguiente: LV DIVVS ADDSV ADDSV SUBVS SV SV SV

Vx,Rx Vy1,Vx,Fs Vx1,Vx,Fs Vz,Vy1,Fs Vy2,Vy1,Fs Rx,Vx1 Ry,Vy2 Rz,Vz

// // // // // // // //

Carga de X T=X+s X1=X+s Z=T+s Y=T+s Almacenamiento de X Almacenamiento de Z Almacenamiento de Y

2/2

Problema 1 Febrero 2015 2ª (3 puntos) A partir de la organización lógica de la segmentación de instrucciones de la ASG de cinco etapas y considerando que no existen adelantamientos entre unidades funcionales, dibuje los cronogramas de las instrucciones del siguiente fragmento de código: i1: i2 i3 i4 i5

MULT MULT SD ADD ADD

R2, R5, R6 R1, R3, R4 8 (R7), R9 R8, R10, R11 R12, R8, R13

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 i1 IF1 ID1 EX1 i2 IF2 ID2 i3 IF3 i4 i5

4 EX1 ----------

5 ME1 EX2 ID3 IF4

6 WB1 EX2 EX3 ID4 IF5

7 ME2 ----------

8

9

10

11

12

13

WB2 ME3 WB3 EX4 ME4 WB4 ---- ---- 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.

1 2 3 i1 IF1 ID1 EX1 i2 IF2 ID2 i3 IF3 i4 i5

4 EX1 EX2 ID3 IF4

5 ME1 EX2 EX3 ID4 IF5

6 WB1 ME2 ----------

7

8

9

10

11

12

WB2 ME3 WB3 EX4 ME4 WB4 ---- ---- ID5 EX5 ME5 WB5

Al ser una estructura segmentada no pueden coincidir dos ciclos MEM porque en tal caso las instrucciones acabarían a la vez y eso no puede ser.

Problema 2 Febrero 2015 Segunda Semana Considere el siguiente bucle: for (i=1; i
for (i=1; i
1/4

c) El código vectorial para los cuerpos de los dos podría ser el siguiente: ADDSV SV ...... ........ SUBI LV SV

V1,V0,Fb Ra,V1

// A[i]:= 0 + B; // Almacenamiento de A

Ra,Ra,#8 V1,Ra Rc,V2

// Carga del vector A desde i-1 // Carga del vector A empezando // Almacenamiento de A en C

d) La primera secuencia vectorial es: ADDSV SV

V1,V0,Fb Ra,V1

// A[i]:= 0 + B; // Almacenamiento de A

Analizando los riesgos estructurales se obtiene el siguiente código vectorial: Convoy 1:

ADDSV SV

V1,V0,Fb Ra,V1

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 Tarranque = Tarranque ADDSV + Tarranque SV Tarranque = (6 + 12) ciclos = 18 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  18  n  64  En lo que respecta a la segunda secuencia vectorial: LV ADDV SV

V1,Ra V2,V0,V1 Rc,V2

Analizando los riesgos estructurales se obtiene el siguiente código vectorial: Convoy 1: Convoy 2:

LV SV

V1,Ra 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 Tarranque = Tarranque LV + Tarranque SV Tarranque = (12 + 12) ciclos = 24 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  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: 2(d-1) +2* (-1+(d-1)) = 2(d-1) +2* (d-2) A continuación se presentan dos ejemplos de particionamiento de un hipercubo de dimensión 3 en partes con igual número de nodos pero que ya no son hipercubos de dimensión 2. El nº de enlaces ha pasado de 4 a 6.

1/2

Problema 1 Septiembre 2015 (3 puntos) A partir de la organización lógica de la segmentación de instrucciones de la ASG de cinco etapas y considerando que no existen adelantamientos entre unidades funcionales, dibuje los cronogramas de las instrucciones del siguiente fragmento de código: i1: i2 i3 i4 i5

ADD MULT ADD SD ADD

R3, R4, R5 R8, R3, R4 R7, R2, R1 9 (R6), R10 R11, R7, R3

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

i1 IF1 ID1 EX1 i2 IF2 ---i3 ---i4 i5

4

ME1 ----------

5

6

7

8

9

10

11

12

13

WB1 ID2 EX2 EX2 ME2 WB2 IF3 ID3 ---- EX3 ME3 WB3 ---- IF4 ---- ID4 EX4 ME4 WB4 ---- 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 La detención de la i3 en el ciclo 8 es necesario, de lo contrario se están solapando las etapas MEM y WB de dos instrucciones consecutivas.

Problema 2 (3 puntos) Septiembre 2015 Dado el siguiente fragmento de código: if (a AND b) j:=j+1; else if (c) k:=k+1; else k:=k-1; end if; end if; i:=i+1; 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 PRED_EQ ADDI PRED_NEQ ADDI SUBI ADDI

p1,p2,Ra,#0 p1,p3,Rb,#0 Rj,Rj,#1 p4,p5,Rc,#0 Rk,Rk,#1 Rk,Rk,#1 Ri,Ri,#1

(p2) (p3) (p1) (p4) (p5)

%i1 %i2: %i3: %i4: %i5: %i6: %i7

Si Si Si Si Si

a=1 a=1 y b=1 a=0 y/o b=0 c=1 c=0

b) Slot 1

Slot 2

1 PRED_EQ p1,p2,Ra,#0 2 PRED_EQ p1,p3,Rb,#0

ADDI Ri,Ri,#1 (p2)

3 PRED_NEQ p4,p5,Rc,#0 (p1)

ADDI Rj,Rj,#1 (p3)

4 ADDI Rk,Rk,#1

SUBI Rk,Rk,#1 (p5)

(p4)

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: for (i=0; i<10000; i++) { t[i]:= a[i]*s[i]; s[i]:= a[i]+b[i]; } Las características del procesador vectorial son las siguientes:       

La latencia de la unidad de memoria es de 14 ciclos de reloj. El tiempo de arranque de la unidad de suma es de 8 ciclos de reloj. El tiempo de arranque de la unidad de multiplicación es de 10 ciclos de reloj. Tbucle = 25. Tbase se considera que no existe. Frecuencia de reloj = 800 Mhz. MVL = 64.

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 LV LV MULTV ADDV SV SV

V1,Ra V2,Rb V3,Rs V4,V3,V1 V3,V2,V1 Rs,V3 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 LV LV MULTV ADDV SV SV

V1,Ra V2,Rb V3,Rs V5,V3,V1 V6,V2,V1 Rs,V5 Rt,V6

Las dependencias verdaderas permanecen y es el procesador vectorial el encargado de garantizar la semántica del código mediante la organización adecuada de la emisión/terminación de las instrucciones. 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: Convoy 2: Convoy 3: Convoy 4: Convoy 5: Convoy 6:

LV LV LV MULTV ADDV SV SV

V1,Ra V2,Rb V3,Rs V5,V3,V1 V6,V2,V1 Rs,V5 Rt,V6

El Telemento es 6 ciclos ya que hay 6 convoyes. El Tarranque total es Tarranque = 3*Tarranque LV + Tarranque MULTV + 2*Tarranque SV Tarranque = (3*14+10+2*14) ciclos=80 ciclos Con estos valores la expresión del tiempo total de ejecución queda n Tn     25  80   6  n  64  que para el caso particular de n=10000 10000  T10000    25  80  6 10000  64  T10000  157  25  80  6 10000 T10000  76485 ciclos que expresado en segundos T10000 

76485 ciclos  95,6 seg 800 *106 Hz

En lo que respecta al rendimiento teórico máximo

 2n   R  lim  n  T   n      2n   R  lim n   n       25  80   6  n    64       2n  R  lim n  n   (  1)  25  80  6  n   64  2n   R  lim  n  105  7,64  n   R  0,261 FLOP/ciclo Para expresar R en FLOPS ha que multiplicar el valor anterior por la frecuencia del procesador. Se tiene así R  0,261 FLOP/ciclo  800 MHz R  208,8 MFLOPS

b.2) Utilizando encadenamiento, el número de convoyes que se pueden formar es de cinco: Convoy 1: Convoy 2: Convoy 3: Convoy 4: Convoy 5:

LV LV LV MULTV ADDV SV SV

V1,Ra V2,Rb V3,Rs V5,V3,V1 V6,V2,V1 Rs,V5 Rt,V6

El Telemento es 5 ciclos ya que hay 6 convoyes. El Tarranque total es Tarranque = 3*Tarranque LV + Tarranque MULTV+ 2*Tarranque SV Tarranque = (3*14+10+2*14) ciclos=80 ciclos Con estos valores la expresión del tiempo total de ejecución queda n Tn     25  80   5  n  64  que para el caso particular de n=10000

10000  T10000    25  80  5 10000  64  T10000  157  25  80  5 10000 T10000  66485 ciclos que expresado en segundos T10000 

66485 ciclos  83,1seg 800 *106 Hz

En lo que respecta al rendimiento teórico máximo  2n   R  lim n  T   n      2n   R  lim n   n       25  80   5  n    64       2n  R  lim n  n   (  1)  25  80  5  n   64  2n   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í R  0,301 FLOP/ciclo  800 MHz R  240,8 MFLOPS b.3) Utilizando encadenamiento y 2 unidades de memoria el número de convoyes que se pueden formar es de tres: Convoy 1: Convoy 2:

Convoy 3:

LV LV LV MULTV ADDV SV SV

V1,Ra V2,Rb V3,Rs V5,V3,V1 V6,V2,V1 Rs,V5 Rt,V6

El Telemento es 3 ciclos ya que hay 3 convoyes. El Tarranque total es Tarranque = 3*Tarranque LV + Tarranque MULTV + Tarranque SV

Tarranque = (3*14+10+14) ciclos=66 ciclos

Con estos valores la expresión del tiempo total de ejecución queda n Tn     25  66   3  n  64  que para el caso particular de n=10000 10000  T10000    25  66  3 10000  64  T10000  157  25  66   3 10000 T10000  44287 ciclos que expresado en segundos T10000 

44287 ciclos  55,35seg 800 *106 Hz

En lo que respecta al rendimiento teórico máximo  2n   R  lim  n  T   n      2n   R  lim n   n       25  66  3  n    64       2n  R  lim n  n   (  1)  25  66   3  n   64  2n   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í R  0,452 FLOP/ciclo  800 MHz R  361,909 MFLOPS Otras dos opciones para organizar los convoyes son las siguientes: Convoy 1:

LV LV

V1,Ra V2,Rb

ADDV LV MULTV SV Convoy 3: SV Convoy 2:

V6,V2,V1 V3,Rs V5,V3,V1 Rs,V5 Rt,V6

Tarranque = 2*Tarranque LV + Tarranque ADDV+ Tarranque MULTV +2*Tarranque SV Tarranque = (2*14+10+8+2*14) ciclos=74 ciclos Convoy 1:

LV LV Convoy 2: LV MULTV ADDV SV Convoy 3: SV

V1,Ra V2,Rb V3,Rs V5,V3,V1 V6,V2,V1 Rs,V5 Rt,V6

El Tarranque total pasa a ser: Tarranque = 2*Tarranque LV + Tarranque MULTV +2*Tarranque SV Tarranque = (2*14+10+2*14) ciclos=66 ciclos

TIPO DE EXAMEN: RESERVA- NACIONAL Y U.E.- SEPTIEMBRE INSTRUCCIONES:

Lea atentamente todos los enunciados. SE PERMITE UN LIBRO CON

ANOTACIONES Y SUBRAYADOS y CALCULADORA NO PROGRAMABLE.

Problema 1 (4 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: il:

ADDD

i2:

MULTD FO, MULTD F6 , ADDD F2,

i3: i4:

F6 ,

F4, F4,

F2 F6

F6 ,

F2

F6 ,

FO

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 (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. Inicialmente, el valor de los registros es F0 =8.0, F2=3.5, F4=2.0 y F6 =3.0

Reserva- Nacional y U.E.- Septiembre- curso 2014/15- Ingeniería de Computadores 11- UNED

Problema 2 (3 puntos) El diagrama situado a continuación presenta la evolución temporal de un grupo de tres instrucciones en un procesador superescalar dotado de un buffer de historia de 4 entradas para el tratamiento de las interrupciones:

1

Instrucción

2

3

4

5

i1:

SUB

R7,

R1,

R6

IF

ID EX EX WB

i2:

MULT R3,

R1,

R4

IF

ID EX EX EX

i3:

ADD

R4,

R1,

R5

IF

6

7

EX

WB

8

9

ID EX EX WB

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. 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 (3 puntos) 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-l) 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-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

Mostrar 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 utilizando el algoritmo de Tomasulo. Tomasulo i1: i2 i2: i3: i4:

ADDD F6,F4,F2 MULTD F0,F4,F6 F0 F4 F6 MULTD F6,F6,F2 , , ADDD F2,F6,F0

• Considere las siguientes hipótesis de partida: • Para reducir el número de ciclos máquina se permite que la FLOS distribuya hasta dos i instrucciones i en cada d ciclo i l según ú ell orden d del d l p g 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. ciclos • Se permite que una instrucción reenvíe su resultado l d a instrucciones i i d dependientes di j De esta durante su último ciclo de ejecución. forma una instrucción a la espera de un resultado puede comenzar su ejecución en el siguiente ciclo si se detecta una coincidencia.

• Los valores de etiqueta 01, 02 y 03 se utilizan para identificar las tres estaciones de reserva de la unidad funcional de suma, mientras que 04 y 05 se utilizan para identificar las dos estaciones de reserva de la unidad funcional d multiplicación/división. de l i li ió /di i ió Estos E valores l d 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.

Ciclo 1: Se Ciclo1: Sedistribuyei1ei2 distribuye i1 e i2 i1: ADDDF6,F4,F2 i2: MULTD F0,F4,F6 SeejecutaRS011/1 / SeenvíaRS01:5.5alCDB NoseejecutaRS04 j

bi O bitOc. etiqueta i d dato

F0 Si F2 F4 F6 Si

04

01

8.0 35 3.5 2.0 30 3.0

RS

RS ID etiq_1 oper_1 i1: 01 00 2.0 02 03

FR

etiq_2

oper_2

00

3.5

ID etiq_1 oper_1 etiq_2 i2: 04 00 2.0 01 05 MULT/DIV

SUMA

oper_2

xx

Ciclo 2: Se Ciclo2: Sedistribuyei3ei4 distribuye i3 e i4 i3:MULTDF6,F6,F2 i4: ADDDF2,F6,F0 Seactualizael valordeRS01:5.5 SevacíaRS01 SeejecutaRS041/2 SeejecutaRS051/2 NOseejecutaRS02

FR bi O bitOc. etiqueta i d dato

F0 Si F2 Si F4 F6 Si

05

8.0 35 3.5 2.0 30 3.0

RS

RS ID etiq_1 01 i4: 02 05 03

04 02

oper_1

etiq_2

oper_2

xx

04

xx

ID etiq_1 oper_1 etiq_2 oper_2 i2: 04 00 2.0 00 5.5 i3: 05 00 5.5 00 3.5 MULT/DIV

SUMA

Ciclo 3: Se Ciclo3: SeejecutaRS042/2 ejecuta RS 04 2/2 SeejecutaRS052/2 SeenvíaRS04:11.0alCDB S SeenvíaRS05:19.25alCDB í RS 05 19 25 l CDB NOseejecutaRS02

bi O bitOc. etiqueta i d dato

F0 Si F2 Si F4 F6 Si

04 02 05

8.0 35 3.5 2.0 30 3.0

RS

RS ID etiq_1 01 i4: 02 05

FR

oper_1

etiq_2

oper_2

xx

04

xx

ID etiq_1 oper_1 etiq_2 oper_2 i2: 04 00 2.0 00 5.5 i3: 05 00 5.5 00 3.5 MULT/DIV

SUMA

Ciclo 4: Se Ciclo4: Seactualizael actualiza el valordeRS04:11.0 valor de RS 04: 11 0 Seactualizael valordeRS05:19.25 SevacíaRS04 S SevacíaRS05 í RS 05 SeejecutaRS021/1 SeenvíaRS02:30.25alCDB

FR bi O bitOc.

F0 F2 F4 F6

etiqueta i

Si

02

d dato

11.0 35 3.5 2.0 19 25 19.25

RS

RS ID etiq_1 oper_1 etiq_2 oper_2 01 i4: 02 05 19.25 04 11.0

ID 04 05

etiq_1

oper_1

etiq_2

oper_2

MULT/DIV SUMA

Ciclo 5: Ciclo5:

Seactualizael Se actualiza el valordeRS02:30.25 valor de RS 02: 30 25 SevacíaRS02

FR bi O bitOc.

F0 F2 F4 F6

etiq_1

oper_1

etiq_2

RS oper_2

ID 04 05

etiq_1

oper_1

etiq_2

MULT/DIV SUMA

d dato

11.0 30 25 30.25 2.0 19 25 19.25

RS ID 01 02

etiqueta i

oper_2

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: 2(d-1) +2* (-1+(d-1)) = 2(d-1) +2* (d-2) A continuación se presentan dos ejemplos de particionamiento de un hipercubo de dimensión 3 en partes con igual número de nodos pero que ya no son hipercubos de dimensión 2. El nº de enlaces ha pasado de 4 a 6.

1/2

TIPO DE EXAMEN: ¡a SEMANA- NACIONAL y U.E.- FEBRERO INSTRUCCIONES:

Lea

atentamente

todos

los

enunciados.

SE

PERMITE

UN

LIBRO

CON

ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

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 fragmento de código situado a continuación para los dos siguientes supuestos: 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.

i1: i2: i3: i4: i5: i6:

MULT MULT ADD SD LD ADD

R3,R4,R5 R8,R3,R4 R1,R2,R5 4(R9),R1 R6,4(R7) R8,R6,R4

Problema 2 (3 puntos) El diagrama situado a continuación presenta la evolución temporal de un grupo de tres instrucciones en un procesador superescalar dotado de un buffer de historia de 4 entradas para el tratamiento de las interrupciones: Instrucción

1

2

3

4

5

6

7

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

8

9

ID EX EX WB

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

1 • semana-Nacional y U.E. -Febrero-curso 2015/16 -Ingeniería de Computadores 11 -UNED

112

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.

Problema 3 (4 puntos) Dado el siguiente bucle:

for (i=O;

i<256;

i++)

if (i mod 2) then B(i).- B(i)+A(i); end if; end for;

a)

Genere el

código

vectorial correspondiente al

cuerpo del bucle recurriendo a las

instrucciones LVWS y SVWS. b) Calcule el tiempo de ejecución del bucle vectorizado considerando que MVL es 64, hay una unidad funcional de carga/almacenamiento, una unidad funcional de suma, Tbucle es de 10 ciclos y Tbase de 5 ciclos. El coste de arranque de la unidad de suma vectorial es de 6 ciclos y el de la unidad de carga/almacenamiento de 12 ciclos y ambas se pueden encadenar. Las direcciones de A y B se encuentran ubicadas en los registros R1 y R2.

1 • semana-Nacional y U.E. -Febrero-curso 2015/16 -Ingeniería de Computadores 11 -UNED

2/2

Problema 1 Febrero 2016 1ª (3 puntos) A partir de la organización lógica de la segmentación de instrucciones de la ASG de cinco etapas y considerando que no existen adelantamientos entre unidades funcionales, dibuje los cronogramas de las instrucciones del siguiente fragmento de código situado a continuación para los dos siguientes supuestos: i1: i2 i3 i4 i5 i6

MULT MULT ADD SD LD ADD

R3, R4, R5 R8, R3, R4 R1, R2, R5 4 (R9), R1 R6, 4(R7) R8, R6, R4

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) El diagrama situado a continuación presenta la evolución temporal de un grupo de tres instrucciones en un procesador superescalar dotado de un buffer de historia de 4 entradas para el tratamiento de las interrupciones:

Instrucción i1: SUB

1

R7,R1,R6

3

4

5

6

7

8

9

IF ID EX EX WB

i2: MULT R3,R1,R4 i3: ADD

2

IF ID EX EX EX EX WB

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

1

1

0

i2

R3

30

0

1

0

0

i3

R4

40

0

← Cola

← 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

1

1

0

i2

R3

30

0

1

1

0

i3

R4

40

0

← Cola

← Cabecera

Ciclo 5: Finaliza i1y se escribe el resultado en el ARF. 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

1

1

0

i2

R3

30

0

1

1

0

i3

R4

40

0

← Cola

← 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

1

1

1

i3

R4

40

0

← Cola ← 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

1

1

1

i3

R4

40

0

← Cola ← Cabecera

Ciclo 8: Termina i2 y se trata la interrupción 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

Problema 3 Febrero 2016 1ª (4 puntos) Dado el siguiente bucle: for (i=0; i<256; i++) if (i mod 2) then B(i):= B(i)+A(i); end if; end for; a) Genere el código vectorial correspondiente al cuerpo del bucle recurriendo a las instrucciones LVWS y SVWS. b) Calcule el tiempo de ejecución del bucle vectorizado considerando que MVL es 64, hay una unidad funcional de carga/almacenamiento, una unidad funcional de suma, Tbucle es de 10 ciclos y Tbase de 5 ciclos. El coste de arranque de la unidad de suma vectorial es de 6 ciclos y el de la unidad de carga/almacenamiento de 12 ciclos y ambas se pueden encadenar. Las direcciones de A y B se encuentran ubicadas en los registros R1 y R2. Solución a) La primera solución que se plantea tras la lectura del enunciado es operar con el registro especial de máscara vectorial VM. Sin embargo, esto no es posible dado que las operaciones con el registro de máscara son sobre vectores, no sobre un escalar. Sin embargo, si se analiza la sentencia condicional esta equivale a operar únicamente sobre los elementos de A y B que ocupen las posiciones pares, ignorando los elementos impares. Esto es equivalente a considerar que los elementos útiles de los dos vectores están separados por 8 bytes y que el total de elementos a procesar es la mitad de 256, es decir, 128. Para poder cargar y almacenar elementos con separación se dispone de las operaciones LVWS y SVWS. LVWS Vi,(Ri,Rj) SVWS (Ri,Rj),Vi

Carga Vi comenzando desde la posicion M[Ri] con una separación de Rj Almacena Vi a partir de la posición M[Ri] con una separación de Rj

Recurriendo a esta dos instrucciones, un posible fragmento de código sería el siguiente: LVWS LVWS ADDV SVWS

V1,(R1,R3) V2,(R2,R3) V2,V2,V1 (R2,R3),V2

// // // //

Carga en V1 el vector A Carga en V2 el vector B B[i] := B[i] + A[i] Almacena B

donde R3 contendría el valor de la separación existente en memoria entre los elementos, es decir, 8.

b) Dadas las características del procesador, las dependencias existentes en el código vectorial y la posibilidad de encadenamiento entre las unidades, el número de convoyes que se pueden formar es de tres: Convoy 1: Convoy 2: Convoy 3:

LVWS LVWS ADDV SVWS

V1,(R1,R3) V2,(R2,R3) V2,V2,V1 (R2,R3),V2

que se traduce en la siguiente secuencia temporal de ejecución: 1ª semana – Nacional y U.E. - Febrero - curso 2015/16 – Ingeniería de Computadores II - UNED

1/2

LVWS LVWS ADDV SVWS

Convoy V1,(R1,R3) V2,(R2, R3) V2,V2,V1 (R2,R3),V2

Comienza 0 76 158

Termina Comentario 12+64=76 Latencia sencilla 76+12+6+64=158 Espera por convoy 1 158+64+12=234

Espera por convoy 2

El tiempo en ejecutar estas cuatro instrucciones vectoriales para un vector de longitud 64 es de 234 ciclos. El Telemento es 3 ciclos puesto que se han formado 3 convoyes. El Tarranque total si se analiza la tabla anterior es Tarranque = 2*Tarranque LVWS + Tarranque ADDV + Tarranque SVWS Tarranque = (2*12 + 6 + 12) ciclos = 42 ciclos Con estos valores la expresión del tiempo total de ejecución queda n Tn  5     10  42   3  n  64  Aunque la longitud de los vectores es de 256 elementos, dada la separación entre elementos el valor real de n es 128. Se tiene así 128  T128  5    10  42   3 128  64  T128  5  2  10  42  3 128 T128  493 ciclos

1ª semana – Nacional y U.E. - Febrero - curso 2015/16 – Ingeniería de Computadores II - UNED

2/2

TIPO DE EXAMEN: 2ª SEMANA - NACIONAL - FEBRERO 2016 INSTRUCCIONES: Lea atentamente todos los enunciados. SE PERMITE UN LIBRO CON ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

Problema 1 (4 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 fragmento de código situado a continuación para los siguientes supuestos: 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. i1: i2: i3: i4: i5: i6: i7:

ADD ADD MULT SD LD ADD MULT

R2,R1,R4 R3,R5,R2 R7,R3,R5 8(R6),R10 R8,4(R9) R1,R2,R4 R12,R4,R11

Problema 2 (3 puntos) a) Aplicando la técnica de seccionamiento de bucles, escriba el código escalar y vectorial necesario para realizar la operación vectorial Y=Y+X*s, donde s es un escalar en coma flotante y X e Y son vectores de 150 elementos con una longitud de 8 bytes. Considere que s, X e Y se encuentran almacenados en la direcciones de memoria M[R1], M[R2] y M[R3], respectivamente. El direccionamiento de memoria se realiza por bytes y MVL es 64. 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

2ª semana - Nacional - Febrero - curso 2015/16 – Ingeniería de Computadores II - UNED

1/2

Problema 3 (3 puntos) 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.

2ª semana - Nacional - Febrero - curso 2015/16 – Ingeniería de Computadores II - UNED

2/2

Solución al problema 1 a) i1: i2: i3: i4: i5: i6: i7:

IF1

ID1 IF2

EX1 ---

MEM1 ---

WB1 ID2 IF3

EX2 ---

MEM2 ---

WB2 ID3 IF4

EX3 ID4 IF5

MEM3 EX4 ID5 IF6

WB3 MEM4 EX5 ID6 IF7

WB4 MEM5 EX6 ID7

WB5 MEM6 EX7

WB4 MEM5 EX6 ID7

WB5 MEM6 EX7

WB6 MEM7

WB7

b) Sí que es posible. Un posible orden de ejecución sería el siguiente: i1, i4, i5, i2, i6, i7 e i3 c) i1: i2: i3: i4: i5: i6: i7:

IF1

ID1 IF2

EX1 ---

MEM1 ---

WB1 ID2 IF3

EX2 ---

MEM2 ---

WB2 ID3 IF4

EX3 ID4 IF5

EX3 EX4 ID5 IF6

MEM3 -----

WB3 MEM4 EX5 ID6 IF7

WB6 EX7

MEM7

WB7

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: MULTI

R4,R10,#8

// Longitud del vector en bytes

ADD

R4,R4,R2

// Cálculo del fin del vector X

MOD

R5,R10,MVL

// Elementos de 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

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 Otra solución es la siguiente:  d  f  (d  f ) D min(d , f )   d  f  ( k  f  d ) Aplicando esta solución con el ejemplo anterior, se tiene que la distancia mínima es 2ª semana - Nacional - Febrero - curso 2015/16 – Ingeniería de Computadores II - UNED

4/2

Dmin (d, f) = (4-1+9) = 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 Aplicando la aproximación anterior al caso bidireccional se tiene la siguiente solución:   D  d  f d  f  min    D   k  (d  f ) D min(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.

2ª semana - Nacional - Febrero - curso 2015/16 – Ingeniería de Computadores II - UNED

5/2

TIPO DE EXAMEN: ORIGINAL- NACIONAL Y U.E.- SEPTIEMBRE INSTRUCCIONES:

Lea atentamente todos los enunciados.

SE PERMITE UN LIBRO CON

ANOTACIONES Y SUBRAYADOS y CALCULADORA NO PROGRAMABLE.

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

:

i2

:

i3

:

i4

:

i5

:

i6

:

MULT MULT MULT ADD ADD LD

R3,R6,R7 R2,R4,R5 R1,R6,R9 R8,R1,R5 R2,R8,R9 R6,4(R4)

para los siguientes supuestos: 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) El siguiente conjunto de operaciones i1

:

i2

:

i3

:

i4

:

R1 R4 R6 R7

<<<<-

R3 + R2// R5// R1 * R7 R4// R8 + R2// -

1 1 2 1

ciclo

de latencia

ciclo

de latencia

ciclo

de latencia

ciclo

de latencia

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 una de multiplicación/división

(2

ciclos y segmentada).

Original- Nacional y U. E.- Septiembre- curso 2015/16 -Ingeniería de Computadores 11- UNED

(1

ciclo) y a

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: •

Se utiliza planificación con lectura de operandos.



El ARF consta de 8 registros, Rl a R8, con valores iniciales de lO a 80, respectivamente.



El RRF consta de 4 registros Rrl, Rr2, Rr3 y Rr4.



El buffer de distribución distribuye 4 instrucciones/ciclo.



Las estaciones de reserva individuales disponen de



En el mismo ciclo en que una unidad funcional genera el resultado, la estación de

2

entradas.

reserva actualiza sus bits de validez; esto permite que en el ciclo siguiente se pueda emitir otra instrucción y terminar la finalizada.

Problema 3 (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==O) A:=B;

el se

A:=A+4; donde A se encuentra en la posición de memoria O(R3) y B en O(R2):

LD

Rl,O(R3)

BNEZ

Rl,Ll

LD

Rl,O(R2)

JMP

L2

Ll: ADD

Rl,R1,#4

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. b) Reescriba el código del enunciado pero recurriendo a operaciones con predicado.

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 i1: i2 i3 i4 i5 i6

MULT MULT MULT ADD ADD LD

R3, R6, R7 R2, R4, R5 R1, R6, R9 R8, R1, R5 R2, R8, R9 R6, 4(R4)

para los dos siguientes supuestos: 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

i1 IF1 ID1 EX1 ME1 i2 IF2 ID2 EX2 i3 IF3 ID3 i4 IF4 i5 i6

5

6

7

8

9

10

11

12

13

14

WB1 ME2 WB2 EX3 ME3 WB3 ---- ---- ID4 EX4 ME4 WB4 IF5 ---- ---- ID5 EX5 ME5 WB5 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 i1 IF1 ID1 EX1 EX1 ME1 i2 IF2 ID2 ---- EX2 i3 IF3 ---- ID3 i4 IF4 i5 i6

6 7 8 9 10 11 12 13 14 15 16 17 WB1 EX2 ME2 WB2 ---- EX3 EX3 ME3 WB3 ---- ---- ---- ---- ID4 EX4 ME4 WB4 IF5 ---- ---- ID5 EX5 ME5 WB5 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 i1 IF1 ID1 EX1 i2 IF2 ID2 i3 IF3 i4 i5 i6

4 5 6 7 8 9 10 11 12 13 14 15 EX1 ME1 WB1 EX2 EX2 ME2 WB2 ID3 EX3 EX3 ME3 WB3 IF4 ---- ---- ---- ID4 EX4 ME4 WB4 IF5 ---- ---- ID5 EX5 ME5 WB5 IF6 ID6 EX6 ME6 WB6

Problema 2 Septiembre 2016 (4 puntos) El siguiente conjunto de operaciones i1: i2: i3: i4:

R1 R4 R6 R7

<<<<-

R3 R1 R7 R8

+ − * +

R2 R5 R4 R2

// // // //

1 1 2 1

ciclo ciclo ciclo ciclo

de de de de

latencia latencia latencia latencia

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:

     

Se utiliza planificación con lectura de operandos. El ARF consta de 8 registros, R1 a R8, con valores iniciales de 10 a 80, respectivamente. El RRF consta de 4 registros Rr1, Rr2, Rr3 y Rr4. El buffer de distribución distribuye 4 instrucciones/ciclo. Las estaciones de reserva individuales disponen de 2 entradas. En el mismo ciclo en que una unidad funcional genera el resultado, la estación de reserva actualiza sus bits de validez; esto permite que en el ciclo siguiente se pueda emitir otra instrucción y terminar la finalizada.

Solución La siguiente tabla representa la secuencia temporal de emisión y ejecución de las instrucciones: 1

2

3

Dis tri bu ción

E mi sión

i1

4

5

6

i2 i3 i4

Tal y como se ha indicado en el enunciado, en el ciclo 1 se produce la llegada de las instrucciones al buffer de distribución desde la etapa de decodificación por lo que en el ciclo 2 las instrucciones se distribuyen a las estaciones de reserva. La ejecución comienza en el ciclo 3 siempre en función de las posibles dependencias verdaderas.

Original - Nacional y U.E. - Septiembre - curso 2015/16 – Ingeniería de Computadores II - UNED

EVENTOS - CICLO 1 Se distribuye i1. R1 se renombra a Rr1. Los operandos están listos. Se distribuye i2. R1 está renombrado como Rr1. Se renombra R4 a Rr2. No está lista. Se distribuye i3. R4 está renombrado como Rr2. Se renombra R6 a Rr3. No está lista.

ARF Valor Índice R1 10 Rr1 R2 20 -R3 30 -R4 40 Rr2 R5 50 -R6 60 Rr3 R7 70 -R8 80 --

i1 i2 i3 i4

Oc 1

1

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. -----

-----

1 1 1

1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. ADD R2 R3 R1 SUB R1 R5 R4 MUL R4 R7 R6 ADD R2 R8 R7 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i1 ADD R2 (20) 1 R3 (30) 1 Rr1 1 1 i2 SUB

Rr1

R5 (50) 1 Rr2

1

Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 MUL Rr2 R7 (70) 1 Rr3 1 ------ -- --

Buffer de Terminación Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr Head 1 i1 R1 Rr1 No 1 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.

ARF Valor Índice R1 10 Rr1 R2 20 -R3 30 -R4 40 Rr2 R5 50 -R6 60 Rr3 R7 70 Rr4 R8 80 --

Oc 1

1 1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. -----

-----

1 1 1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ADD R2 (20) 1 R8 (80) 1 Rr4 1 1 i2 SUB Rr1 R5 (50) 1 Rr2 1 Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 MUL Rr2 R7 (70) 1 Rr3 1 --

--

--

Buffer de Terminación Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. Ptr Head 1 1 i1 R1 Rr1 No 1 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.

ARF Valor Índice R1 10 Rr1 R2 20 -R3 30 -R4 40 Rr2 R5 50 -R6 60 Rr3 R7 70 Rr4 R8 80 --

Oc 1

1 1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. 50 ----

1 ----

1 1 1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ADD R2 (20) 1 R8 (80) 1 Rr4 1 1 i2 SUB Rr1 (50) 1 R5 (50) 1 Rr2 1 1 Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 MUL Rr2 R7 (70) 1 Rr3 1 --

--

Buffer de Terminación Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. 1 1 1 i1 R1 Rr1 No 1 1 i2 R4 Rr2 No 1 1 i3 R6 Rr3 No 1 1 i4 R7 Rr4 No 1 --------

--

Ptr Head

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.

ARF Valor Índice R1 50 -R2 20 -R3 30 -R4 40 Rr2 R5 50 -R6 60 Rr3 R7 70 Rr4 R8 80 --

Oc

1 1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. -----

-----

1 1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ADD R2 (20) 1 R8 (80) 1 Rr4 1 1 i2 SUB Rr1 (50) 1 R5 (50) 1 Rr2 1 Estacion de reserva de unidad Multiplicadora Op1 V1 Op2 v2 Dest L Ocup Cod i3 MUL Rr2 R7 (70) 1 Rr3 1 ------ -- --

Buffer de Terminación Ocup. Emit. Final. Dir. R.Dest. R.Renom. Espec. Valid. -------1 1 i2 R4 Rr2 No 1 1 i3 R6 Rr3 No 1 1 i4 R7 Rr4 No 1 --------

Ptr Head

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.

ARF Valor Índice R1 50 R2 20 R3 30 R4 40 Rr2 R5 50 R6 60 Rr3 R7 70 Rr4 R8 80

Oc

1 1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. ----

-1 ---

1 1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ADD R2 (20) 1 R8 (80) 1 Rr4 1 1 ------ -- -Estacion de reserva de unidad Multiplicadora Op1 V1 Op2 v2 Dest L Ocup Cod i3 MUL Rr2 (0) 1 R7 (70) 1 Rr3 1 1 ------ -- --

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.

ARF Valor Índice R1 50 -R2 20 -R3 30 -R4 -R5 50 -R6 60 Rr3 R7 70 Rr4 R8 80 --

Oc

1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. -----

-----

1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ADD R2 (20) 1 R8 (80) 1 Rr4 1 ------ -- -Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 MUL Rr2 (0) 1 R7 (70) 1 Rr3 1 ------ -- --

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.

ARF Valor Índice R1 50 -R2 20 -R3 30 -R4 -R5 50 -R6 60 Rr3 R7 70 Rr4 R8 80 --

Oc

1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. ---100

---1

1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ADD R2 (20) 1 R8 (80) 1 Rr4 1 ------ -- -Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 MUL Rr2 (0) 1 R7 (70) 1 Rr3 1 ------ -- --

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.

ARF Valor Índice R1 50 -R2 20 -R3 30 -R4 -R5 50 -R6 60 Rr3 R7 70 Rr4 R8 80 --

Oc

1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. ---100

---1

1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ------ -- ------- -- -Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 MUL Rr2 (0) 1 R7 (70) 1 Rr3 1 ------ -- --

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

ARF Valor Índice R1 50 -R2 20 -R3 30 -R4 -R5 50 -R6 60 Rr3 R7 70 Rr4 R8 80 --

Oc

1 1

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido Ocup. --100

--1 1

1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ------ -- ------- -- -Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 MUL Rr2 (0) 1 R7 (70) 1 Rr3 1 ------ -- --

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.

ARF Valor Índice R1 50 -R2 20 -R3 30 -R4 -R5 50 -R6 -R7 100 -R8 80 --

Oc

Buffer de distribucion de instrucciones Cod. Op1 Op2 Dest. Ocup. i1 ADD R2 R3 R1 i2 SUB R1 R5 R4 i3 MUL R4 R7 R6 i4 ADD R2 R8 R7

RRF Rr1 Rr2 Rr3 Rr4

Valor Valido --100

Ocup.

--1 1

Estacion de reserva de unidad Sumadora Cod Op1 V1 Op2 v2 Dest L Ocup i4 ----- -- -- ------ -- -- -Estacion de reserva de unidad Multiplicadora Cod Op1 V1 Op2 v2 Dest L Ocup i3 ----- -- -- ------ -- -- --

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 ifthen-else de la forma: if (A==0) A:=B; else A:=A+4; donde A se encuentra en la posición de memoria 0(R3) y B en 0(R2):

L1:

LD

R1,0(R3)

BNEZ

R1,L1

LD

R1,0(R2)

JMP

L2

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

LD

R1,0(R2)

JMP

L2

L2: SD

L1: ADDI

R1,R1,#4

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:

L3:

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

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

Otra solución, aunque no tan óptima como la anterior es la siguiente:

L3:

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

.............

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 INSTRUCCIONES:

Lea atentamente todos los enunciados. SE PERMITE UN LIBRO CON

ANOTACIONES Y SUBRAYADOS y CALCULADORA NO PROGRAMABLE.

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: 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. 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.

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: for

(i=O; if

i<64;

i++)

(B [ i] != 0) then A [ i] : = A [ i] / B [ i];

end if; end for; en el que B es una matriz dispersa y en el que las direcciones de A y B están en Ra y Rb, respectivamente y que FO contiene O. Se pide:

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:

LVI Vl, (Rl+V2)

SVI

(Rl+V2) ,Vl

Carga Vl con un vector cuyos elementos están en Rl+V2 [ i], es decir, que V2 es un índice. Almacena

Vl con

un

vector

cuyos

elementos

están

en

Rl+V2 (i) , es decir, que V2 es un índice. Crea un vector de índices almacenando en Vl los valores Rl,

CVI CVI

Vl,Rl Vl,#entero

l *Rl, 2*Rl, .... , 63* Rl (o utilizando un valor entero en lugar de Rl) en función del contenido del registro de máscara vectorial. Es decir, Vl [ i] : =i *Rl si VM [ i]

==

contrario Vl [ i] : POP

Rl,VM

=

0

1;

de lo

.

Cuenta los l s que hay en el registro de máscara vectorial y almacena la cuenta en Rl.

Teniendo en cuentas estas instrucciones y el registro de máscara vectorial escriba el código DLXV para el bucle del enunciado utilizando el método de dispersar y agrupar. Recuerde que la separación entre elementos en doble precisión es de 8 bytes.

Problema 3 (3 puntos)

a) Dibuj e una red de tipo Omega de 16 entradas y 16 salidas. b) Describa razonadamente el protocolo para enviar un mensaj e desde el nodo de entrada

3 al nodo de salida 9.

e)

Suponiendo que el tercer conmutador de la segunda etapa no funciona correctamente

(impidiendo de esta manera cualquier tipo de conexión donde esté involucrado), indique el número y las conexiones que quedan bloqueadas, y qué porcentaj e representan respecto del total de la red.

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). El 47%, no provocan detenciones, empleando sólo un ciclo de reloj (67 nseg.). De acuerdo con esto, el tiempo medio consumido por una instrucción es: 0,39 · 67 · 2 = 52,26 nseg. 0,14 · 67 · 3 = 28,14 nseg. 0,47 · 67 · 1 = 31,49 nseg. Total:

= 111,89 nseg.

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 2 Septiembre 2016 Reserva (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, considere el siguiente fragmento de código: for (i=0; i<64; i++) if (B[i] != 0) then A[i]:= A[i] / B[i]; end if; end for; en el que B es una matriz dispersa y en el que las direcciones de A y B están en Ra y Rb, respectivamente y que F0 contiene 0. Se pide: a) Escriba el cdigo 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: LVI V1,(R1+V2)

Carga V1 con un vector cuyos elementos están en R1+V2[i], es decir, que V2 es un índice.

SVI (R1+V2),V1

Almacena V1 con un vector cuyos elementos están en R1+V2(i), es decir, que V2 es un índice.

CVI CVI

V1,R1 V1,#entero

Crea un vector de índices almacenando en V1 los valores R1, 1*R1, 2*R1,...., 63* R1 (o utilizando un valor entero en lugar de R1) en función del contenido del registro de máscara vectorial. Es decir, V1[i]:=i*R1 si VM[i]==1; de lo contrario V1[i]:=0.

POP

R1,VM

Cuenta los 1s que hay en el registro de máscara vectorial y almacena la cuenta en R1.

Teniendo en cuentas estas instrucciones y el registro de máscara vectorial escriba el código DLXV para el bucle del enunciado utilizando el método de dispersar y agrupar. Recuerde que la separación entre elementos en doble precisión es de 8 bytes.

Reserva - Nacional y U.E. - Septiembre - curso 2015/16 – Ingeniería de Computadores II - UNED

Solución a) LD LV LV SNESV DIVV SV RVM

F0,#0 V0, Ra V1, Rb F0,V1 V0,V0,V1 Ra,V0

b) LV LD

V0,Rb F0,#0

% Carga vector B en V0 % Carga valor 0 en F0

SNESV

F0,V0

% Prepara la máscara VM[i]:=1 si V0[i]!=0

CVI

V1,#8

% % % %

POP

R1,VM

% Almacena cuántos 1 hay en la máscara VM, es % decir, cuántos elementos no cero hay en B

MOVI2S

VLR,R1

% Carga registro longitud vectorial solo con el % número de elementos que hay que procesar

CVM

Crea el vector índice con separación de 8 bytes teniendo en cuenta la máscara. Es decir, que si VM[i]==1 entonces V1[i]:=i*8 de lo contrario V1[i]:=0

% Pone la máscara a 1 para operar normalmente

LVI LVI

V3,(Rb+V1) % Carga los elementos de B que no son cero V2,(Ra+V1) % Carga los elementos de A asociados a los B

DIVV

V2,V2,V3

SVI

(Ra+V1),V2 % Almacena los valores de A de forma dispersa

LD MOVI2S

R1,#64 VLR,R1

% Divide ambos vectores

% Reestablece VLR a 64

Reserva - Nacional y U.E. - Septiembre - curso 2015/16 – Ingeniería de Computadores II - UNED

Problema 3 septiembre Reserva 2012. Igual que actividad 4.3 del libro de texto 1. Dibuje una red de tipo Omega de 16 entradas y 16 salidas. 2. Describa razonadamente el protocolo para enviar un mensaje desde el nodo de entrada 3 al nodo de salida 9. 3. Suponiendo que el tercer conmutador de la segunda etapa no funciona correctamente (impidiendo de esta manera cualquier tipo de conexión donde esté involucrado), indique el número y las conexiones que quedan bloqueadas, y qué porcentaje representan respecto del total de la red.

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

Para ir del procesador 0011 al 1001: Se coge el procesador de destino 1001 y desde el procesador origen 0011 1 INFERIOR 0 SUPERIOR 0 SUPERIOR 1 INFERIOR Es lo que está en trazo grueso en ROJO en la figura.

TIPO DE EXAMEN: 1 a SEMANA- NACIONAL- FEBRERO INSTRUCCIONES:

Lea

atentamente

todos

los

enunciados.

SE

PERMITE

UN

LIBRO

CON

ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

Problema 1 (3 puntos) A partir de la organización lógica de la segmentación de instrucciones de la ASG de cinco etapas dibuj e los cronogramas de las instrucciones del siguiente fragmento de código para los siguientes supuestos: 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 necesitan dos ciclos.

e)

A partir del supuesto del apartado a) la etapa EX de las instrucciones de multiplicación

necesitan dos ciclos y se considera además que se disponen de dos unidades funcionales de tal forma que se pueden solapar dos etapas EX de dos instrucciones cualesquiera en el mismo ciclo de reloj .

il: i2: i3: i4: i5: i6: i7:

ADD MULTI ADD ADDI SD ADD SD

R3,R4,R5 R6,R3,#8 R3,R7,R8 R7,R3,#4 8 (R3) ,R7 R3,R4,Rl 2 (R3) ,R2

Problema 2 (3 puntos) En un programa, una instrucción de salto condicional (a una dirección de salto anterior) dada tiene el siguiente comportamiento en una ej ecución de dicho programa:

S, S, N, N, N, S, S, N, S, N, S, N, S, S, S, S, S, N

donde S indica que se produce el salto, y N que no. Indicar la penalización efectiva que se introduce si se utiliza: a) Predicción fij a (siempre se considera que no se va a producir el salto). b) Predicción estática (si el desplazamiento es negativo se predice como que se va a producir el salto, y si es positivo no).

e)

Predicción dinámica con predictor de Smith de 2 bits. Inicialmente en el estado

(11).

La penalización por saltos incorrectamente predichos es de 5 ciclos, y para los saltos correctamente predichos es de O ciclos. 1 • semana-Nacional- Febrero- curso 2016/17 -Ingeniería de Computadores 11- UNED

112

Problema 3 (4 puntos) La memoria de un computador vectorial está distribuida en ocho bancos con una temporización de acceso de tipo asíncrono con un Ta=8r y un tiempo de transferencia al registro vectorial de un ciclo de reloj r. Suponiendo que el compilador ha almacenado en la memoria un vector de

100 elementos comenzando en el banco O,

se pide que:

a) Muestre de forma gráfica la temporización de acceso a las ocho primeros elementos del vector con una separación

(stride)

de uno. ¿Cuál es el promedio de elementos por ciclo de reloj

que se pueden ir enviando a los registros vectoriales con esta separación entre elementos? b) Muestre de forma gráfica la temporización de acceso a los ocho primeros elementos del vector con una separación

(stride)

de dos. ¿Cuál es el promedio de elementos por ciclo de reloj

que se pueden ir enviando a los registros vectoriales?

1 • semana-Nacional- Febrero- curso 2016/17 -Ingeniería de Computadores 11- UNED

212

Problema 2 Septiembre (3 puntos) En un programa, una instrucción de salto condicional (a una dirección de salto anterior) dada tiene el siguiente comportamiento en una ejecución de dicho programa: S, S, N, N, N, S, S, N, S, N, S, N, S, S, S, S, S, N donde S indica que se produce el salto, y N que no. Indicar la penalización efectiva que se introduce si se utiliza: a) Predicción fija (siempre se considera que se va a producir el salto). b) Predicción estática (si el desplazamiento es negativo se predice como que no se va a producir el salto, y si es positivo sí). c) Predicción dinámica con predictor de Smith de 2 bits. Inicialmente en el estado (00). La penalización por saltos incorrectamente predichos es de 5 ciclos, y para los saltos correctamente predichos es de 0 ciclos. Solución a) Esta estrategia considera que el salto siempre se va a producir. Salto

S

S

N

N

N

S

S

N

S

N

S

N

S

S

S

S

S

N

Predic

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

5

5

5

Penaliz.

5

5

5

5

Se produce la predicción incorrecta de 7 saltos lo que implica una penalización de 35 ciclos. b) Si el desplazamiento que se tiene que producir en el salto condicional es hacia atrás, es decir, a una instrucción previa se predice que el salto no se va a producir. Como, según el enunciado, el salto es a una dirección anterior, siempre se predice que el siguiente salto no se producirá. Salto

S

S

N

N

N

S

S

N

S

N

S

N

S

S

S

S

S

N

Predicción

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

Penaliz.

5

5

5

5

5

5

5

5

5

5

5

Se produce la predicción incorrecta de 11 saltos lo que implica una penalización de 55 ciclos. c) El estado inicial de la máquina de estados es 00 lo que indica que la predicción es que el siguiente salto que se produzca no sea efectivo. Sin embargo, el primer salto de la lista es efectivo lo que provoca que el estado de la máquina pase a 01. Salto

S

S

N

N

N

S

S

N

S

N

S

N

S

S

S

S

S

N

Estado

00

01 10

01

00

00

01

10

01

10

01

10

01

10

11

11

11

11

Predicción

N

N

S

N

N

N

N

S

N

S

N

S

N

S

S

S

S

S

Penaliz.

5

5

5

5

5

5

5

5

5

5

5

Se produce la predicción incorrecta de 12 saltos lo que implica una penalización de 60 ciclos.

5

Problema 3 (4 puntos) Febrero 2017 - Primera Semana La memoria de un computador vectorial está distribuida en ocho bancos con una temporización de acceso de tipo asíncrono con un Ta=8 y un tiempo de transferencia al registro vectorial de un ciclo de reloj . Suponiendo que el compilador ha almacenado en la memoria un vector de 100 elementos comenzando en el banco 0, se pide que: a) Muestre de forma gráfica la temporización de acceso a las ocho primeros elementos del vector con una separación (stride) de uno. ¿Cuál es el promedio de elementos por ciclo de reloj que se pueden ir enviando a los registros vectoriales con esta separación entre elementos? b) Muestre de forma gráfica la temporización de acceso a los ocho primeros elementos del vector con una separación (stride) de dos. ¿Cuál es el promedio de elementos por ciclo de reloj que se pueden ir enviando a los registros vectoriales? Solución a) <------------------8------------------>

Banco Elemento 0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8



Ta



Ta



Ta



Ta



Ta



Ta



Ta Ta



Si se hace la proyección de la figura anterior para un número de elementos n, el promedio que se pueden transferir a los registros vectoriales es de 1 elemento cada . lim n 

8  n  n elementos

  / elemento

b) Como se puede observar en la figura, los elementos se encuentran ubicados en cuatro bancos de los ocho en los que está distribuida la memoria. Esto quiere decir que cuando se va a intentar acceder al elemento 9 que está ubicado en el banco 0, debe retrasarse dicho acceso hasta que ha concluido el acceso a ese banco para acceder al elemento 1. Banco Elemento 0 1 2 3 4 5 6 7 0 9 2 11 4 13 6

Ta Ta Ta Ta

<------------------8------------------>     Ta  Ta Ta

15

Ta

  

Esto significa que el número de elementos promedio que se pueden transferir a los registros vectoriales es de un elemento cada 2. lim n 

8  8n  4n elementos

 2 / elemento

TIPO DE EXAMEN: 2a SEMANA- NACIONAL- FEBRERO

INSTRUCCIONES:

Lea

atentamente

todos

los

enunciados.

SE

PERMITE

UN

LIBRO

CON

ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

Problema

1

(3 puntos)

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 en la ejecución, utilizando el algoritmo de Tomasulo, del siguiente fragmento de código: il: i2: i3: i4:

ADDD MULTD MULTD ADDD

F6,F4,F2 FO,F4,F6 F6,F6,F2 F2,F6,FO

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 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=7.0, F2=3.0, F4=4.0 y F6=2.0

Problema 2 (5 puntos) En un procesador vectorial con las siguientes características: -La velocidad del procesador es 500 Mhz. -La memoria está organizada en

8

bancos de memoria.

-Los registros vectoriales son de 16 elementos (ML V = 16). -Dispone de una unidad de carga/almacenamiento, una unidad de suma/resta (7 ciclos de latencia) y una unidad de multiplicación ( 10 ciclos de latencia). -Tbase = 1 O ciclos y Tbucle = 15 ciclos.

2• semana- Nacional- Febrero- curso 2016/17- Ingeniería de Computadores 11- UNED

112

se ejecuta el siguiente bucle: for

( i=O; Z[2* i]

i
i++)

.- a*Z[2* i]

+ b*X[2* i]

end for;

a) Escriba el código vectorial para el cuerpo del bucle. Utilice las instrucciones LVWS y SVWS dado que hay que acceder a los elementos de los vectores con separación. b) Analice las consecuencias del acceso a los elementos de los vectores con una separación de dos en relación a los bancos de memoria. Haga un estudio del tiempo que consumirían las instrucciones LVWS y SVWS para la lectura/escritura de 16 elementos con una separación de 2. e) Utilizando el resultado que ha obtenido en el apartado (b) para las instrucciones LVWS y SVWS, dibuje la secuencia de ejecución del código vectorial del apartado (a) indicando los convoyes existentes y considerando la ausencia de encadenamiento entre las unidades funcionales. A partir del diagrama obtenga la expresión para Tn. Considere que Tarranque de LVWS y svws es 8 ciclos. d) Utilizando el resultado que ha obtenido en el estudio del apartado (b) para las instrucciones LVWS y SVWS, dibuje la secuencia de ejecución del código vectorial del apartado (a) pero considerando encadenamiento. Considere que Tarranque de LVWS y SVWS es 8 ciclos. ¿Qué fenómenos suceden debido a las diferencias en el valor de Telemento entre las unidades aritméticas y la de carga/almacenamiento?

Problema 3 (2 puntos) Dibuje una red estática con los siguientes valores en sus parámetros: Diámetro = 4

Conectividad de arco = 4

2• semana- Nacional- Febrero- curso 2016/17- Ingeniería de Computadores 11- UNED

Coste = 50

212

TIPO DE EXAMEN: ORIGINAL- NACIONAL Y UNIÓN EUROPEA- SEPTIEMBRE INSTRUCCIONES: Lea atentamente todos los enunciados. SE PERMITE ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

Problema

1

UN

LIBRO

CON

(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: i2: i3: i4: i5: i6: i7: i8: i9:

ADD SD MULT LD ADD ADD SD ADD LD

R3,R5,R8 0(R3),R6 R4,R7,R6 R6,4(R3) R2,R6,R3 R5,R1,R8 8(R9),R8 R3,R4,R1 R1,8(R4)

para los siguientes supuestos: 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), 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 negativa, justifiquela razonadamente. 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).

Problema 2 (4 puntos) En un procesador superescalar, que dispone de un predictor de saltos de dos niveles basado en historial global, se ejecuta varias veces una instrucción de salto condicional con las siguientes direcciones y resultados

I1: I2: I3: I4: I5: I6:

570 570 570 570 570 512

E E E E E NE

I7: I8: I9: I10: I11: I12:

570 570 570 570 570 512

E E E E E NE

Original- Nacional y Unión Europea- Septiembre- curso 2016/17- Ingeniería de Computadores 11- UNED

112

La longitud del registro BHR es de l bit. La función hash que se utiliza para reducir el número de bits de la dirección de la instrucción de salto consiste en quedarse con los dos bits menos significativos de su dirección. El BHR y todos los contadores de saturación de 2 bits la PHT se encuentran inicialmente en el estado cero. a) Dibuje una tabla en la que se muestre la evolución del BHR y de los contadores de la PHT. Complete la tabla de forma que se aprecie cómo queda el el estado del predictor para la llegada de una hipotética instrucción de salto i13. b) ¿Cuál es el porcentaje de acierto global del predictor?

e)

Dibuje una tabla similar a la del primer apartado pero con los contadores de saturación

inicializados a 11. EL BHR también se debe inicializar a cero. d) ¿Ahora cuál es el nuevo porcentaje de acierto global del predictor?

Problema 3 (3 puntos) Considere un procesador VLIW cuyas instrucciones pueden codificar hasta cuatro operaciones con las restricciones que se muestran en la tabla.

Unidad funcional

Latencia Opl Op2 Op3 Op4

ALU

1

X

X

Memoria

3

X

X

Salto

4

X

X

Operaciones realizadas por la unidad Comparación/suma/resta entera, operaciones lógicas Cargas y almacenamientos

X

Saltos condiciones e incondicionales

En dicha tabla también se incluye información de las latencias de cada una de las unidades funciones disponibles que se utilizan en este ejercicio. Muestre cómo se podría codificar y ejecutar el siguiente fragmento de código en el procesador VLIW indicado:

void sum(int e[], int a[], int b[], int n) int

l;

for ( i=O;

i
i++) e[i]=a[i]+b[ i]);

Algunas consideraciones que debe tener en cuenta: -Dispone de 32 registros enteros. - El valor den se almacena en R2O y siempre es múltiplo de 4. - Las direcciones de inicio de los vectores a, b y e se encuentran en R31, R32 y R3O. - Los número enteros tienen una longitud de 4 bytes. - Codifique el bucle escalar desenrollándolo 4 veces para un mejor aprovechamiento de las ventajas que ofrece el procesador VLIW.

Original- Nacional y Unión Europea- Septiembre- curso 2016/17- Ingeniería de Computadores 11- UNED

212

Problema 2 Septiembre (4 puntos) En un procesador superescalar, que dispone de un predictor de saltos de dos niveles basado en historial global, se ejecuta varias veces una instrucción de salto condicional con las siguientes direcciones y resultados

I1: I2: I3: I4: I5: I6:

570 570 570 570 570 512

I7: I8: I9: I10: I11: I12:

E E E E E NE

570 570 570 570 570 512

E E E E E NE

La longitud del registro BHR es de 1 bit. La función hash que se utiliza para reducir el número de bits de la dirección de la instrucción de salto consiste en quedarse con los dos bits menos significativos de su dirección. El BHR y todos los contadores de saturación de 2 bits la PHT se encuentran inicialmente en el estado cero. a) Dibuje una tabla en la que se muestre la evolución del BHR y de los contadores de la PHT. Complete la tabla de forma que se aprecie cómo queda el el estado del predictor para la llegada de una hipotética instrucción de salto i13. b) ¿Cuál es el porcentaje de acierto global del predictor? c) Dibuje una tabla similar a la del primer apartado pero con los contadores de saturación inicializados a 11. EL BHR también se debe inicializar a cero. d) ¿Ahora cuál es el nuevo porcentaje de acierto global del predictor?

Solución a) En esta solución se ha considerado que las direcciones de saltos son valores decimales que al pasar a binario quedan como: 570: 0010 0011 1010 512: 0010 0000 0000 En caso de suponer que los valores estaban expresados en hexadecimal se tendría: 570: 101 0111 0000 512: 101 0001 0010 Lo único que variaría en la solución final para esta situación es que las entradas afectadas de la PHT serían otras y no las indicadas aquí. La siguiente tabla muestra la evolución del estado del BHR y de los contadores de saturación de 2 bits de la PHT. La PHT cuenta con 8 contadores ya que el puntero de acceso se compone de 3 bits: 1 bit del historial global más los dos bits que proporciona el hash de la dirección de la instrucción.

1/2

Instrucción Resultado I1: ...1010 E I2: ...1010 E I3: ...1010 E I4: ...1010 E I5: ...1010 E I6: ...0000 NE I7: ...1010 E I8: ...1010 E I9: ...1010 E I10: ...1010 E I11: ...1010 E I12: ...0000 NE I13: ….......

Hash BHR 0 1 10 0 00 00 10 1 00 10 1 00 10 1 00 10 1 00 00 1 00 10 0 00 10 1 00 10 1 00 10 1 00 10 1 00 00 1 00 0 00 00

PHT de 8 entradas 2 3 4 5 6 7 00 00 00 00 00 00 01 00 01 01 01 10 01 11 01 11 01 11 10 11 10 11 10 11 10 11 10 11 00 00 10 11 00 00

Predicción NE NE NE E E NE NE E E E E NE

La última fila recoge el estado en que se queda el predictor para la llegada de una nueva instrucción de salto tras el resultado de la instrucción I12. b) De 12 predicciones se han acertado 8 por lo que la tasa de predicción global es del 66.66%. c)

Instrucción Resultado Hash BHR I1: ...1010 E 10 0 I2: ...1010 E 10 1 I3: ...1010 E 10 1 I4: ...1010 E 10 1 I5: ...1010 E 10 1 I6: ...0000 NE 00 1 I7: ...1010 E 10 0 I8: ...1010 E 10 1 I9: ...1010 E 10 1 I10: ...1010 E 10 1 I11: ...1010 E 10 1 I12: ...0000 NE 00 1 I13: …....... 0

0 11

11

1 11 11 11 11 11 11 10 10 10 10 10 10 01

PHT de 8 entradas 2 3 4 5 6 7 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11

Predicción E E E E E E E E E E E E

d) La predicción mejora notablemente dado que la inicialización coincide con la mayoría de los resultados de los saltos. Mejora al 83,333% ya que se ha acertado 10 de 12.

2/2

Problema 3 Septiembre (3 puntos) Considere un procesador VLIW cuyas instrucciones pueden codificar hasta cuatro operaciones con las restricciones que se muestran en la tabla. Unidad funcional

Latencia

ALU

1

X

X

Memoria

3

X

X

Salto

4

Op1 Op2 Op3 Op4 X

X

Operaciones realizadas por la unidad Comparación/suma/resta entera, operaciones lógicas Cargas y almacenamientos

X

Saltos condiciones e incondicionales

En dicha tabla también se incluye información de las latencias de cada una de las unidades funciones disponibles que se utilizan en este ejercicio. Muestre cómo se podría codificar y ejecutar el siguiente fragmento de código en el procesador VLIW indicado: void sum(int c[], int a[], int b[], int n) { int i; for (i=0; i
Solución al problema a) Lo primero que hay que realizar es codificar el bucle con un desenrollamiento de cuatro elementos.

inicio:

segundo:

tercero:

LD R21,0(R0)

// Inicialización de contador i a cero

LD R1,0(R31)

// Carga de a[i]

LD R2,0(R32)

// Carga de b[i]

ADD R3,R1,R2

// c[i]=a[i]+b[i]

SD 0(R30),R3

// Almacenamiento de c[i]

LD R4,4(R31)

// Carga de a[i+1]

LD R5,4(R32)

// Carga de b[i+1]

ADD R6,R4,R5

// c[i+1]=a[i+1]+b[i+1]

SD 4(R30),R6

// Almacenamiento de c[i+1]

LD R7,8(R31)

// Carga de a[i+2]

LD R8,8(R32)

// Carga de b[i+2] 1/2

cuarto:

ADD R9,R7,R8

// c[i+2]=a[i+2]+b[i+2]

SD 8(R30),R9

// Almacenamiento de c[i+2]

LD R10,12(R31)

// Carga de a[i+3]

LD R11,12(R32)

// Carga de b[i+3]

ADD R12,R10,R11

// c[i+3]=a[i+3]+b[i+3]

SD 12(R30),R12

// Almacenamiento de c[i+3]

ADDI R30,R30,#16

// Actualizar índice de c

ADDI R31,R31,#16

// Actualizar índice de a

ADDI R32,R32,#16

// Actualizar índice de b

ADDI R21,R21,#4

// Incrementar elementos procesados

SUB R22,R20,R21

// Ver si elem. procesados es igual a n

BNEZ R22,inicio Una vez realizada la codificación ya se puede comenzar a acoplar las diferentes operaciones en el formato de instrucción VLIW teniendo en cuenta las restricciones y latencias indicadas en las tabla. Op1

Op2

Op3

Op4

LD R21,0(R0) Inicio: LD R1,0(R31)

LD R2,0(R32)

LD R4,4(R31)

LD R5,4(R32)

LD R7,8(R31)

LD R8,8(R32)

LD R10,12(R31) LD R11,12(R32)

ADDI R21,R21,#4 ADD R3,R1,R2

SUB R22,R20,R21

SD 0(R30),R3

ADDI R31,R31,#16 ADD R6,R4,R5

BNEZ R22,inicio

SD 4(R30),R6

ADDI R32,R32,#16 ADD R9,R7,R8

SD 8(R30),R9

ADD R12,R10,R11

SD 12(R30),R12 ADDI R30,R30,#16

2/2

TIPO DE EXAMEN: RESERVA- NACIONAL Y UNIÓN EUROPEA- SEPTIEMBRE INSTRUCCIONES: Lea atentamente todos los enunciados. SE PERMITE ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

UN

LIBRO

CON

Problema 1 (4 puntos) 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, utilizando el algoritmo de Tomasulo, del siguiente fragmento de código:

i1: i2: i3: i4: i5: i6:

ADDD ADDD MULTD ADDD ADDD ADDD

F2, FO, F2, F4, F2, F6,

F4, F6, F4, F2, F6, F4,

FO F4 F6 FO F2 F2

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 (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 O1, 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=4.0, F2=2.0, F4=1.0 y F6=3.0.

Problema 2 (2 puntos) Considere el siguiente fragmento de pseudocódigo

OxOOOOOO Ox000100 Ox001000 Ox001100 Ox010000 Ox010100 Ox011000

x:=(1, 2, 5, 8, 9, 15, 22, 25, 26' Desde i:=1 hasta 10 hacer { Si (x es par) 11 Salto a: = a + 1 ; 11 Salto Si (x es múltiplo de 3) 11 Salto a: = a - 1 ; 11 Salto

Reserva- Nacional y U.E.- Septiembre- curso 2016/17 -Ingeniería de Computadores 11- UNED

3 o) ; 1 1 es efectivo 2 2 es efectivo

112

Utilizando un pre di ctor de un nivel basado en una PHI' de dos entradas que almacena la predicción para cada salto realizada mediante un contador de Smith de 1 bit como el de la

la que se muestre el resultado real de los dos saltos y las predicciones realizadas para la secuencia de valores de x. El valor inicíal de las dos figura situada a continuación�

díbuje

un a tabla

en

entradas de la PHT es O. ¿Cuál es la tasa de predicción del predí c tor para cada salto? ¿Y la tasa

(k� predicción global? NE

E

Problema 3 (4puntos) La memoria de

un

computador vectorial está distribuida en ocho bancos con una temporización

de acc eso de tipo asíncrono con un Ta=8 r y un tiempo de transferencia al regist ro vectorial de

un ciclo de reloj r. Suponiendo que el compilador ha almacenado en la n1emoria un vector de .1 00 elementos comen zan do en el banco O, se pide que: a) ivfuestre de forma gráfica la temporización de acceso a las ocho primeros elementos del vector con una St�paradón (srride) de uno. ¿Cuál es el promedio de elementos por ciclo de reloj que se pueden ir enviando a los registros vectoriales con esta separación entre elementos?

b) Nl uestre

de forma gráfica la temporización de acceso a los od1o primeros elementos del

vector con una separación (stride) de dos. ¿Cuál es el prornedio de elementos por ciclo de reloj que se pueden ir envíando a los registros vectoriales?

Si en esta misma organización de memoria se almacena por filas una matriz de 4x4, e) ¿Puede el procesador vectorial leer la s eg un da columna de la rnatriz realizando un único acceso a memoría? ¿Por qué?

d)

Obtenga el tiempo que necesítaría el procesador vectoríal para leer la segunda columna de la

nJatriz 4x4 suponiendo una frecuencia del pro cesador de 1 00 1\..tfhz.

ReseNa- Nacional y U E.- Septiembre- Cl:rso .2016i17- Ingeniería de Computadores 11- UNED ..

2i2

Problema 3 (4 puntos) Septiembre 2017 - Reserva La memoria de un computador vectorial está distribuida en ocho bancos con una temporización de acceso de tipo asíncrono con un Ta=8 y un tiempo de transferencia al registro vectorial de un ciclo de reloj . Suponiendo que el compilador ha almacenado en la memoria un vector de 100 elementos comenzando en el banco 0, se pide que: a) Muestre de forma gráfica la temporización de acceso a las ocho primeros elementos del vector con una separación (stride) de uno. ¿Cuál es el promedio de elementos por ciclo de reloj que se pueden ir enviando a los registros vectoriales con esta separación entre elementos? b) Muestre de forma gráfica la temporización de acceso a los ocho primeros elementos del vector con una separación (stride) de dos. ¿Cuál es el promedio de elementos por ciclo de reloj que se pueden ir enviando a los registros vectoriales? Si en esta misma organización de memoria se almacena por filas una matriz de 4x4, c) ¿Puede el procesador vectorial leer la segunda columna de la matriz realizando un único acceso a memoria? ¿Por qué? d) Obtenga el tiempo que necesitaría el procesador vectorial para leer la segunda columna de la matriz 4x4 suponiendo una frecuencia del procesador de 100 Mhz.

Solución a) <------------------8------------------>

Banco Elemento 0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8



Ta



Ta



Ta



Ta



Ta



Ta



Ta Ta



Si se hace la proyección de la figura anterior para un número de elementos n, el promedio que se pueden transferir a los registros vectoriales es de 1 elemento cada .

lim

n 

1/2

8  n  n elementos

  / elemento

b) Como se puede observar en la figura, los elementos se encuentran ubicados en cuatro bancos de los ocho en los que está distribuida la memoria. Esto quiere decir que cuando se va a intentar acceder al elemento 9 que está ubicado en el banco 0, debe retrasarse dicho acceso hasta que ha concluido el acceso a ese banco para acceder al elemento 1. Banco Elemento 0 1 2 3 4 5 6 7 0 9 2 11 4 13 6

Ta Ta Ta Ta

<------------------8------------------>     Ta  Ta Ta

15

  

Ta

Esto significa que el número de elementos promedio que se pueden transferir a los registros vectoriales es de un elemento cada 2. lim

n 

8  8n  4n elementos

 2 / elemento

c) Observe en la tabla situada a continuación la disposición de los elementos de la matriz 4x4 almacenada por fila en la organización con 8 bancos de memoria.

Banco 0 Banco 1 Banco 2 Banco 3 Banco 4 Banco 5 Banco 6 Banco 7 (1,1)

(1,2)

(1,3)

(1,4)

(2,1)

(2,2)

(2,3)

(2,4)

(3,1)

(3,2)

(3,3)

(3,4)

(4,1)

(4,2)

(4,3)

(4,4)

….

….

…..

….

…..

…..

…..

…..

No puede dado que los elementos de la columna se ubican en solo dos módulos de los ocho que posee la organización de la memoria. Esto quiere decir, que cuando se va a intentar acceder al elemento (3,2) que está ubicado en el banco 1 hay que esperar a que concluya el acceso al elementos (1,2). Análogamente sucede con los elementos (2,2) y (4,2) ubicados en el banco 5. d) Banco 1 5 1 5

Elemento (1,2) (2,2) (3,2) (4,2)



Ta Ta





Ta Ta <-----------8-------------> <-------------8-------------->

 <--2-->

El tiempo de acceso mínimo es Tacceso = Ta + Ta + 2 = 8 + 8 + 2 = 18 dado que la frecuencia es 100 Mhz, el tiempo de ciclo es 1/100 Mhz = 100 seg y el Tacceso = 1800 seg. 2/2

TIPO DE EXAMEN: 1 a SEMANA- NACIONAL- FEBRERO INSTRUCCIONES:

Lea

atentamente

todos

los

enunciados.

SE

PERMITE

UN

LIBRO

CON

ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

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

il: i2: i3: i4: i5: i6:

ADD MULT ADD LD MULT SD

R7,R2,Rl R3,R6,R7 R4,R7,R2 R6,4 (R3) R8 ,R6,R3 8 (R5),R6

para estos dos supuestos: a) Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa EX menos las instrucciones de multiplicación que requieren dos ciclos, 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. Además se considera que existen dos unidades funcionales (una para realizar las operaciones de suma y multiplicación y la otra para calcular las sumas de los direccionamientos) pudiéndose solapar, si fuese necesario, etapas EX. b) A partir del supuesto del apartado a) se añade una nueva unidad funcional para poder realizar operaciones de suma y multiplicación, es decir, existen un total de tres unidades funcionales (dos para realizar las operaciones de suma y multiplicación y otra para calcular las sumas de los direccionamientos) pudiéndose solapar, si fuese necesario, etapas EX.

Problema 2 (4 puntos) El siguiente fragmento de código

il: i2: i3: i4: i5: i6: i7: i8 :

ADD ADD MULT ADD MULT ADD ADD MULT

R3,R2,Rl R8 ,R3,R7 R6,R5,R4 R9,R6,Rl R10,R3,R6 Rll,R2,Rl R12,R3,R8 R13,R2,Rl

se encuentra ubicado en una ventana de instrucciones de

1O

entradas desde la que se distribuye

a una estación de reserva de 6 entradas que alimenta a una unidad funcional de suma/resta ciclo) y a una de multiplicación/división

(2

(1

ciclos y segmentada). Se considera que en el mismo

ciclo en que las unidades funcionales generan el resultado, la estación de reserva actualiza sus bits de validez; esto permite que en el ciclo siguiente se pueda emitir la instrucción. Se pueden emitir un máximo de dos instrucciones/ciclo, una a cada unidad funcional. 1 • semana-Nacional- Febrero- curso 2017/18 -Ingeniería de Computadores 11- UNED

112

Se pide que responda las siguientes cuestiones: a) ¿Cuál es la secuencia temporal de ejecución y la evolución de la estación de reserva ciclo a ciclo si se realiza emisión alineada ordenada? b) ¿Cuál es la secuencia temporal de ejecución y la evolución de la estación de reserva ciclo a ciclo si se realiza emisión no alineada y desordenada?

e)

¿Cuál sería la mejora en el rendimiento que se obtendría en el supuesto del apartado b) con

respecto al supuesto del apartado a)?

Problema 3 (3 puntos) El siguiente fragmento de código intermedio corresponde a un bucle

then-else for: then:

else:

final:

for

con una estructura

if­

en su interior:

LD R5,0 (Rl) BNEZ R5,else LD F4,0 (R2) ADDD F4,F4,F2 SD 0 (R2),F4 JMP final LD F4,0 (R3) SUBD F4,F4,F2 SD 0 (R3),F4 SUBI R2,R2,#8 SUBI R3,R3,#8 SUBI Rl,R1,#4 BNEZ Rl,for

11 11 11 11 11

Cargar A[i] Si (A[i] <> o) saltar a else Cargar X[i] X[i] X[i] + a Almacenar X[i]

11 11 11 11 11 11 11

Cargar Y[i] Y[i] Y[i] a Almacenar Y[i] Decrementar índice Decrementar índice Decrementar índice Comenzar una nueva

=

-

=

a) Reescriba el código intermedio aplicando la técnica

de X en 8 bytes de y en 8 bytes de A en 4 bytes iteracción

if-conversion.

b) Escriba el código VLIW del enunciado y del apartado anterior teniendo en cuenta que el formato de instrucción admite una operación de carga/almacenamiento

(2

ciclos de latencia),

una operación de coma flotante (3 ciclos de latencia) y una operación entera/salto

(1

ciclo de

latencia y el salto consume un hueco de retardo).

e)

Compare los tiempos de ejecución para procesar un vector de

que la probabilidad de ambas ramas de la estructura

if-then-else

1 • semana-Nacional- Febrero- curso 2017/18 -Ingeniería de Computadores 11- UNED

1 000

elementos suponiendo

es la misma.

112

TIPO DE EXAMEN: 2a SEMANA- NACIONAL Y U.E.- FEBRERO

INSTRUCCIONES:

Lea

atentamente

todos

los

enunciados.

SE

PERMITE

UN

LIBRO

CON

ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

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 para los siguientes supuestos:

il : i2 : i3 : i4 : i5 :

ADD ADD MULT SD ADD

R4,R2,Rl R3,R4,R7 R7,R3,R5 4 (R8) ,R3 R9,R2,R4

a) Considere que todas las instrucciones requieren de un único ciclo de reloj en la etapa EX menos las instrucciones de multiplicación que requieren tres ciclos, 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. Además se considera que existen dos unidades funcionales (una para realizar las operaciones de suma y multiplicación y la otra para calcular las sumas de los direccionamientos) pudiéndose solapar, si fuese necesario, etapas EX. b) A partir del supuesto del apartado a) se añade una nueva unidad funcional para poder realizar operaciones de suma y multiplicación, es decir, existen un total de tres unidades funcionales (dos para realizar las operaciones de suma y multiplicación y otra para calcular las sumas de los direccionamientos) pudiéndose solapar, si fuese necesario, etapas EX.

e)

A partir del supuesto del apartado b), ¿es posible eliminar las detenciones de la instrucción

i 4 incorporando al código las instrucciones im e in? Justifique la respuesta. lm:

ADD

ln:

ADD

R6,Rl,R2 Rl,R2,R5

Problema 2 (4 puntos) Dispone del siguiente fragmento de código escalar:

Inicio:

LD MULT SD SUBI BNEZ

FO,O(Rl) F4,FO,F2 O(Rl),F4 Rl,Rl,#B Rl,Inicio

2• semana- Nacional y U.E.- Febrero- curso 2017/18 -Ingeniería de Computadores 11- UNED

112

y de dos tipos de procesadores VLI\V� el A y B. El procesador A. disp one de un ft1rmato de instrucción de 4 slots (4 bytes por slot) que admite una operación de cargai'almacenarniento ( l

ciclo de latencia)� dos operaciones en coma flotante (3 ciclos de latencia) y una operación

entera/salto

(l

ciclo de latencia). El procesador B tiene un fon11ato de instrucdón de 5 slots ( 4

bytes por s lo t que admite dos operaciones de cargalalrnacenamíento (1 cie:lo de latencia), dos )

operaciones en coma Hotante (3 ciclos de latencia) y una operación enlera,isalto (1 ciclo de

latencia). Teniendo en cuenta que: •

No existe hueco de retardo de salto en la planificación.



Un slot de operación en coma fl otante puede ejecutar restas enteras.

se pide que:

a) Realice la segmentación so:th:vare del bucle escalar de forma que se visualice

daramt�nte el prólogo, el patrón y el epilogo.

b) ¿Es posible implementar la

segmentacíón sofhvare del apartado anterior en código

VLI\V para el procesador A? Si es posible> hágalo. En caso contrarío, indique la razón de ello y codifique el bucle en ínstruccíones VLI\V. En cualquier caso� el códígo VLlV•/ ckbe replicar exactamenü:� ellxlmportamieuto del bucle t�scalar del enunciado. e) Responda a lo que se indica en el apartado (h) pero aplicado al procesador B.

_Pntblema 3 (3 puntos) A partir de

la red estática de la síguiente íigura: . . . . . . . .. . - - - . -.-. . .

"

...-· __

- - - - - -- - -

.

·

�- .

-

__

-,_

- . .

-

"

"

-

,

----- . - -

".

. ._,

.

. . . . . .... . . . v.. . . .....

--�- - - ..,

-.

' ' '

_,

-

---

oo1'T>�"�·i \._'OJr-------4,\

ooo 1 ...

. ...... � .

.

. ,

. ........

..

.....

'lOO'! ··· .

,,

. . . . . . . ... -· . ·

.._�..,

. .... ·

__

"

.

.. . . ".

. .

...

. . .

_

.

..

.

....

t.�!-. '--�..� ..-;;;.

_....- · ·-· . :: .. · . ..

�- . .- . .

,.·

. ·

. .... ...

.

.

· - -

, __ ·. . . .. .

-

· - . , · · - - .... . ... . . ... . , .

.

... .. . .

. _

--·

.

.

_

_

__ __

· - ---· .. -

:

.

�;;,-::.:.

. . . . . .......... -- . . :: ..•.... . ..

a) ¿Qué tipo de red es? b) Se desea transmitir un mensaje desde d procesador O 111 al 1000. Si se comienza a buscar el canüno por el bit menos sígnificativo� explique razonadamente cuál es el camino que debe seguir el mensaje.

e) ¿Cuál

2•

semana

-

es la conectividad de arco y el ancho de bisección de la red de la figura?

Nacional y U .E.- Febrero- curso zo·t7í l 8

-

!ngemsria de Computadores !1



UNED

2i2

TIPO DE EXAMEN: ORIGINAL- NACIONAL Y U.E.- SEPTIEMBRE INSTRUCCIONES:

Lea

atentamente

todos

los

enunciados.

SE

PERMITE

UN

LIBRO

CON

ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

Problema 1 (3 puntos) A partir de la organización lógica de la segmentación de instrucciones de la ASG de cinco etapas dibuj e los cronogramas de las instrucciones del siguiente fragmento de código para los dos siguientes supuestos: 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. Además se considera que existen dos unidades funcionales (una para realizar las operaciones de suma y multiplicación y la otra para calcular las sumas de los direccionamientos) pudiéndose solapar, si fuese necesario, etapas EX. b) A partir del supuesto del apartado a) la etapa EX de las instrucciones de multiplicación necesitan dos ciclos y se añade

una nueva

unidad funcional para poder realizar operaciones de

suma y multiplicación, es decir, existen un total de tres unidades funcionales (dos para realizar las

operaciones

de

suma

y

multiplicación

y

otra

para

calcular

las

sumas

de

los

direccionamientos) pudiéndose solapar, si fuese necesario, etapas EX.

il: i2: i3: i4: i5: i6:

MULT MULT ADD SD LD ADD

R4,R5,R6 R9,R4,R5 R2,R3,R6 8(Rl),R2 R7,8(R8) R9,R7,R5

Problema 2 (3 puntos) En un programa, una instrucción de salto condicional (a una dirección de salto anterior) dada tiene el siguiente comportamiento en una ej ecución de dicho programa: S, S, N, N, N, S, S, N, S, N, S, N, S, S, S, S, S, N

donde S indica que se produce el salto, y N que no. Indicar la penalización efectiva que se introduce si se utiliza: a) Predicción fij a (siempre se considera que se va a producir el salto). b) Predicción estática (si el desplazamiento es negativo se predice como que no se va a producir el salto, y si es positivo sí).

e) Predicción dinámica con predictor de

Smith de 2 bits. Inicialmente en el estado

(00).

La penalización por saltos incorrectamente predichos es de 5 ciclos, y para los saltos correctamente predichos es de O ciclos.

Original- N acional y U.E.- Septiembre- Curso 2017/18- Ingeniería de Computadores 11- UNED

112

Problema 3 (4 puntos) La memoria de un computador vectorial está distribuida en ocho bancos con una temporización de acceso de tipo asíncrono con un Ta=8ry un tiempo de transferencia al registro vectorial de un ciclo de reloj r. Suponiendo que el compilador ha almacenado en la memoria un vector de

100 elementos comenzando en el banco O,

se pide que:

a) Muestre de forma gráfica la temporización de acceso a los ocho primeros elementos del vector con una separación

(stride)

de uno. ¿Cuál es el promedio de elementos por ciclo de reloj

que se pueden ir enviando a los registros vectoriales con esta separación entre elementos? b) Muestre de forma gráfica la temporización de acceso a los ocho primeros elementos del vector con una separación

(stride)

de dos. ¿Cuál es el promedio de elementos por ciclo de reloj

que se pueden ir enviando a los registros vectoriales?

Original- N acional y U.E.- Septiembre- Curso 2017/18- Ingeniería de Computadores 11- UNED

212

Problema 2 Septiembre (3 puntos) En un programa, una instrucción de salto condicional (a una dirección de salto anterior) dada tiene el siguiente comportamiento en una ejecución de dicho programa: S, S, N, N, N, S, S, N, S, N, S, N, S, S, S, S, S, N donde S indica que se produce el salto, y N que no. Indicar la penalización efectiva que se introduce si se utiliza: a) Predicción fija (siempre se considera que se va a producir el salto). b) Predicción estática (si el desplazamiento es negativo se predice como que no se va a producir el salto, y si es positivo sí). c) Predicción dinámica con predictor de Smith de 2 bits. Inicialmente en el estado (00). La penalización por saltos incorrectamente predichos es de 5 ciclos, y para los saltos correctamente predichos es de 0 ciclos. Solución a) Esta estrategia considera que el salto siempre se va a producir. Salto

S

S

N

N

N

S

S

N

S

N

S

N

S

S

S

S

S

N

Predic

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

S

5

5

5

Penaliz.

5

5

5

5

Se produce la predicción incorrecta de 7 saltos lo que implica una penalización de 35 ciclos. b) Si el desplazamiento que se tiene que producir en el salto condicional es hacia atrás, es decir, a una instrucción previa se predice que el salto no se va a producir. Como, según el enunciado, el salto es a una dirección anterior, siempre se predice que el siguiente salto no se producirá. Salto

S

S

N

N

N

S

S

N

S

N

S

N

S

S

S

S

S

N

Predicción

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

N

Penaliz.

5

5

5

5

5

5

5

5

5

5

5

Se produce la predicción incorrecta de 11 saltos lo que implica una penalización de 55 ciclos. c) El estado inicial de la máquina de estados es 00 lo que indica que la predicción es que el siguiente salto que se produzca no sea efectivo. Sin embargo, el primer salto de la lista es efectivo lo que provoca que el estado de la máquina pase a 01. Salto

S

S

N

N

N

S

S

N

S

N

S

N

S

S

S

S

S

N

Estado

00

01 10

01

00

00

01

10

01

10

01

10

01

10

11

11

11

11

Predicción

N

N

S

N

N

N

N

S

N

S

N

S

N

S

S

S

S

S

Penaliz.

5

5

5

5

5

5

5

5

5

5

5

Se produce la predicción incorrecta de 12 saltos lo que implica una penalización de 60 ciclos.

5

TIPO DE EXAMEN: RESERVA- NACIONAL Y U.E.- SEPTIEMBRE

INSTRUCCIONES:

Lea

atentamente

todos

los

enunciados.

SE

PERMITE

UN

LIBRO

CON

ANOTACIONES Y SUBRAYADOS Y CALCULADORA NO PROGRAMABLE.

Problema

1

(3 puntos)

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, utilizando el algoritmo de Tomasulo, del siguiente fragmento de código: il: i2: i3: i4:

ADDD MULTD MULTD ADDD

FO,F6,F4 F2,F6,FO FO,FO,F4 F4,FO,F2

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 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) En un procesador vectorial con las siguientes características: -La velocidad del procesador es 500 Mhz. -La memoria está organizada en 8 bancos de memoria. -Los registros vectoriales son de 16 elementos (ML V = 16). -Dispone de una unidad de carga/almacenamiento, una unidad de suma/resta (7 ciclos de latencia) y una unidad de multiplicación (10 ciclos de latencia). -Tbase = 1 O ciclos y Tbucle = 1 5 ciclos. se ejecuta el siguiente bucle:

Reserva- Nacional y U.E.- Septiembre- Curso 2017/18- Ingeniería de Computadores 11- UNED

112

for

( i=O;

i
Z[2* i]

i++)

.- a*Z[2* i]

+ b*X[2* i]

end for;

a) Escriba el código vectorial para el cuerpo del bucle. Utilice las instrucciones LVWS y SVWS dado que hay que acceder a los elementos de los vectores con separación. b) Analice las consecuencias del acceso a los elementos de los vectores con una separación de dos en relación a los bancos de memoria. Haga un estudio del tiempo que consumirían las instrucciones LVWS y SVWS para la lectura/escritura de 16 elementos con una separación de 2. e) Utilizando el resultado que ha obtenido en el apartado (b) para las instrucciones LVWS y SVWS, dibuje la secuencia de ejecución del código vectorial del apartado (a) indicando los convoyes existentes y considerando la ausencia de encadenamiento entre las unidades funcionales. A partir del diagrama obtenga la expresión para Tn. Considere que Tarranque de LVWS y svws es 8 ciclos.

Problema 3 (3 puntos) a) Sabiendo que X= (Xn-1 permutaciones: •



) y que las

Xn-2 ... X1 xo

Perfect shujjle se describe como ak (Xn-1 Xn-2 ... X1 xo) = (Xn-2 ... X1 xo Xn-1 ) realiza un desplazamiento cíclico hacia la izquierda de los dígitos de X en log2 k pOSICIOnes. Inverse perfect shujjle se describe como k -l a (Xn-1 Xn-2 ... X¡ Xo) = (xo ... Xn-1 Xn-2 X¡ ) realiza un desplazamiento cíclico hacia la derecha de los dígitos de X en log2 k pOSICIOnes.

dibuje el patrón correspondiente a: •

a



a

k

para

k- l

k=4

para

de

conexión

y n=8.

k=2

y n=8.

b) La figura situada a la derecha corresponde a una red Butterfly ¿En qué se basa la permutación que define el patrón de conexión �i de entradas/salidas entre las etapas en una red de este tipo? Al igual que en el enunciado del apartado (a) se han definido dos patrones de conexión de forma genérica paran entradas/salidas, defina�¡. e) ¿Cuáles son las permutaciones de conexión de las cinco etapas de la red Butterfly de la figura? Reserva- Nacional y U.E.- Septiembre- Curso 2017/18- Ingeniería de Computadores 11- UNED

212

Related Documents


More Documents from "Laura Valencia Medina"