9
8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas, se ejecutan independien- temente dos fragmentos de programa que corresponden a dos implementaciones distintas de la misma funci´on. La funci´on separa los elementos que ocupan las posiciones pares de un vector de entrada, de los que ocupan las posiciones impares, dejando el resultado en dos vectores de salida. El procesador introduce ciclos de parada para resolver las dependencias de control y tiene las siguientes etapas (entre par´ entesis se indica el tiempo real que requiere cada una): E1: Traducci´on en la TLB de instrucciones e incremento del PC (1 ns) E2: Lectura de la instrucci´on en la McaI (2 ns) E3: Decodificaci´on, lectura de registros, evaluaci´on de la condici´on en los saltos condicionales, c´alculo de la direcci´on de salto y actualizaci´on del PC (1,5 ns) E4: Ejecuci´on, c´alculo de direcciones en las instrucciones ld y st (1,5 ns) E5: Traducci´on en la TLB de datos (1 ns) E6: Acceso a la McaD para lectura o escritura de datos (2 ns) E7: Escritura en registros (1 ns) Implementaci´on1 (200 iteraciones): (1) F1: and r10, r10, r0 (2) and r11, r11, r0 (3) and r5, r5, r0 (4) buc1: ld r8, r20, r11 (5) and r6, r5, 1 (6) cmp r7, r6, 1 (7) beq r7, impar (8) st r8, r21, r10 (9) br com (10) impar: st r8, r22, r10 (11) add r10, r10, 4 (12) com: add r11, r11, 4 (13) add r5, r5, 1 (14) cmp r7, r5, r9 (15) blt r7, buc1 Implementaci´on2 (100 iteraciones): (1) F2: and r10, r10, r0 (2) and r11, r11, r0 (3) and r5, r5, r0 (4) buc2: ld r8, r20, r11 (5) st r8, r21, r10 (6) add r11, r11, 4 (7) ld r8, r20, r11 (8) st r8, r22, r10 (9) add r10, r10, 4 (10) add r11, r11, 4 (11) add r5, r5, 2 (12) cmp r7, r5, r9 (13) blt r7, buc2 a) Indique razonadamente cu´al es el tiempo de ciclo del pipeline de este procesador y calcule la m´axima productividad (throughput) que se podr´ ıa obtener, expresada en MIPS. b) Si el procesador no dispusiese de mecanismos de adelantamiento, indique razonadamente cu´antos ci- clos de espera deber´ ıa introducir para resolver las dependencias de datos existentes entre dos instrucciones consecutivas y cu´antos para resolver las dependencias de control. c) Suponga ahora que el procesador dispone de todo tipo de mecanismos de adelantamiento. c.1) Determine razonadamente, para ambos programas, entre qu´ e instrucciones introducir´a el procesador ciclos de espera para resolver las dependencias existentes y en cada caso cu´antos. c.2) Calcule el tiempo de ejecuci´on, as´ ı como el CPI, para ambos programas. Considere para ello que el vector de entrada consta de 200 elementos (valor inicial de r9=200 en ambas implementaciones). c.3) Calcule la ganancia (speedup) que se obtiene con la implementaci´on 2 ¿Qu´ e significado tiene el valor obtenido? c.4) Reordene el c´odigo de cada una de las versiones para reducir los ciclos de parada y calcule los nuevos CPIs y la ganancia que obtiene la versi´on 2 frente a la versi´on 1, ambas reordenadas. d) Suponga finalmente que el procesador utilizase predicci´on din´amica de 1 bit para tratar las dependencias de control, actuando en la primera etapa del pipeline, y que los saltos incondicionales se tratan como saltos condicionales en los que se cumple la condici´on. Calcule los fallos de predicci´on que se producir´ ıan en la ejecuci´ on de la implementaci´on 1, as´ ı como los ciclos de parada que se ahorrar´ ıan en este procesador respecto al original. Para ello tenga en cuenta que la BTB est´a invalidada al iniciarse dicha ejecuci´on. DATSI

8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

8 de junio de 2018 AC-jun2018-P3 Pagina 1 de 5

1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas, se ejecutan independien-temente dos fragmentos de programa que corresponden a dos implementaciones distintas de la misma funcion.La funcion separa los elementos que ocupan las posiciones pares de un vector de entrada, de los que ocupanlas posiciones impares, dejando el resultado en dos vectores de salida. El procesador introduce ciclos de paradapara resolver las dependencias de control y tiene las siguientes etapas (entre parentesis se indica el tiempo realque requiere cada una):

• E1: Traduccion en la TLB de instrucciones e incremento del PC (1 ns)• E2: Lectura de la instruccion en la McaI (2 ns)• E3: Decodificacion, lectura de registros, evaluacion de la condicion en los saltos condicionales, calculo de

la direccion de salto y actualizacion del PC (1,5 ns)• E4: Ejecucion, calculo de direcciones en las instrucciones ld y st (1,5 ns)• E5: Traduccion en la TLB de datos (1 ns)• E6: Acceso a la McaD para lectura o escritura de datos (2 ns)• E7: Escritura en registros (1 ns)

Implementacion 1 (200 iteraciones):(1) F1: and r10, r10, r0(2) and r11, r11, r0(3) and r5, r5, r0(4) buc1: ld r8, r20, r11(5) and r6, r5, 1(6) cmp r7, r6, 1(7) beq r7, impar(8) st r8, r21, r10(9) br com(10) impar: st r8, r22, r10(11) add r10, r10, 4(12) com: add r11, r11, 4(13) add r5, r5, 1(14) cmp r7, r5, r9(15) blt r7, buc1

Implementacion 2 (100 iteraciones):

(1) F2: and r10, r10, r0(2) and r11, r11, r0(3) and r5, r5, r0(4) buc2: ld r8, r20, r11(5) st r8, r21, r10(6) add r11, r11, 4(7) ld r8, r20, r11(8) st r8, r22, r10(9) add r10, r10, 4(10) add r11, r11, 4(11) add r5, r5, 2(12) cmp r7, r5, r9(13) blt r7, buc2

a) Indique razonadamente cual es el tiempo de ciclo del pipeline de este procesador y calcule la maximaproductividad (throughput) que se podrıa obtener, expresada en MIPS.

b) Si el procesador no dispusiese de mecanismos de adelantamiento, indique razonadamente cuantos ci-clos de espera deberıa introducir para resolver las dependencias de datos existentes entre dos instruccionesconsecutivas y cuantos para resolver las dependencias de control.

c) Suponga ahora que el procesador dispone de todo tipo de mecanismos de adelantamiento.

c.1) Determine razonadamente, para ambos programas, entre que instrucciones introducira el procesadorciclos de espera para resolver las dependencias existentes y en cada caso cuantos.

c.2) Calcule el tiempo de ejecucion, ası como el CPI, para ambos programas. Considere para ello que elvector de entrada consta de 200 elementos (valor inicial de r9=200 en ambas implementaciones).

c.3) Calcule la ganancia (speedup) que se obtiene con la implementacion 2 ¿Que significado tiene elvalor obtenido?

c.4) Reordene el codigo de cada una de las versiones para reducir los ciclos de parada y calcule los nuevosCPIs y la ganancia que obtiene la version 2 frente a la version 1, ambas reordenadas.

d) Suponga finalmente que el procesador utilizase prediccion dinamica de 1 bit para tratar las dependenciasde control, actuando en la primera etapa del pipeline, y que los saltos incondicionales se tratan como saltoscondicionales en los que se cumple la condicion. Calcule los fallos de prediccion que se producirıan en laejecucion de la implementacion 1, ası como los ciclos de parada que se ahorrarıan en este procesador respectoal original. Para ello tenga en cuenta que la BTB esta invalidada al iniciarse dicha ejecucion.

DATSI

Page 2: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

8 de junio de 2018 AC-jun2018-P3 Pagina 2 de 5

SOLUCION

a) El tiempo de ciclo viene determinado por la duracion de la etapa mas lenta, en este caso 2 ns. La maximaproductividad serıa por lo tanto de 1 instruccion cada 2 ns, esto es (1/2× 10−9)/106 = 500 MIPS.

b) Sin adelantamientos, la instruccion i+1 debe esperar a que la instruccion anterior i escriba en el banco deregistros para poder leer el valor actualizado de los registros. Como la escritura se realiza en la etapa E7 y lalectura en la etapa E3, la instruccion i+1 debe esperar cuatro ciclos. Si el procesador tuviera el ciclo de accesoal banco de registros dividido en semiciclos la espera serıa unicamente de tres ciclos.

Independientemente de que el procesador disponga o no de mecanismos de adelantamiento, para resolverlas dependencias de control debe introducir dos ciclos de parada detras de cada instruccion de salto, ya el PCse actualiza en la etapa E3.

c) El hecho de que el procesador disponga de todo tipo de mecanismos de adelantamiento, afecta solo a losciclos de parada por dependencias de datos. Los debidos a las dependencias de control siguen siendo los dosciclos calculados en el apartado anterior.

c.1) Ciclos de parada en ambas implementaciones:

Implementacion 1:

Dependencias de datos:(6) → (7) por r7 → 1 paron(14) → (15) por r7 → 1 paron

Dependencias de control:(7) salto condicional → 2 parones(9) salto incondicional → 2 parones(15) salto condicional → 2 parones

Implementacion 2:

Dependencias de datos:(12) → (13) por r7 → 1 paron

Dependencias de control:(13) salto condicional → 2 parones

Para resolver las dependencias de datos, en ambos casos el procesador introducirıa 1 ciclo de parada entrelas instrucciones, ya que el dato se obtiene en la etapa E4 y se requiere en la etapa E3.

El resto de las dependencias de datos se resuelve sin producir ciclos de parada, ya sea por adelantamientosentre la salida y la entrada de la etapa de ejecucion E4 (por ejemplo entre las instrucciones (5)-(6) de laimplementacion 1), o entre la salida y la entrada de la etapa de memoria E6 (por ejemplo entre las instrucciones(4)-(5) y (7)-(8) de la implementacion 2).

c.2) Tiempo de ejecucion y CPI para las dos implementaciones:

Implementacion 1:

El codigo consta de un bucle de 200 iteraciones que contiene 12 instrucciones, mas tres al comienzo que seejecutan una sola vez. De las 12 instrucciones del bucle, la (8) y la (9) solo se ejecutan cuando se tratan lasposiciones pares del vector (50 % de las veces), y la (10) y la (11) cuando se tratan las posiciones impares (elotro 50%). Las 8 instrucciones restantes se ejecutan en todas las iteraciones. En consecuencia, el numero deinstrucciones ejecutadas es:

Ninst = 3 + 200× (4 + 0, 5× 2 + 0, 5× 2 + 4) = 2.003 instrucciones

Por otra parte, los parones debidos a las dependencias de datos siempre se producen entre instruccionesque se ejecutan 200 veces. Por lo tanto, los ciclos de parada por dependencias de datos seran:

NciclosDD = 200× (1 + 1) = 400 ciclos

Finalmente, los parones debidos a las dependencias de control se producen en las instrucciones (7) y (15),que se ejecutan 200 veces, y en la (9), que se ejecuta unicamente 100 veces:

NciclosDC = 200× (2 + 0, 5× 2 + 2) = 1.000 ciclos

CPI = (2.003 + 400 + 1.000) ciclos/2.003 instrucciones = 3.403/2.003 = 1, 7

Tejecucion = (6 + 3.403) ciclos× 2 ns/ciclo = 6.818 ns

DATSI

Page 3: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

8 de junio de 2018 AC-jun2018-P3 Pagina 3 de 5

Implementacion 2:

En este caso el codigo consta de un bucle de 100 iteraciones que contiene 10 instrucciones, mas tres alcomienzo que se ejecutan una sola vez. El numero de instrucciones ejecutadas es:

Ninst = 3 + 100× 10 = 1.003 instrucciones

Los parones debidos a dependencias de datos seran: NciclosDD = 100× 1 = 100 ciclos

y los debidos a dependencias de control: NciclosDC = 100× 2 = 200 ciclos

Tejecucion = 6 + 1.003 + 100 + 200 = 1.309 ciclos → 2.618 ns

CPI = (1.309− 6) ciclos/1.003 instrucciones = 1, 3

c.3) La ganancia (speedup) se calcula dividiendo el tiempo de ejecucion de la primera implementacion entreel tiempo de la segunda:

Speedup = 3.409/1.309 = 2, 6

lo que significa que la segunda implementacion es 2,6 veces mas rapida que la primera en este computador.

c.4) Se podrıan anular los ciclos de parada por dependencias de datos reordenando de la forma siguiente:

Implementacion 1:(1) F1: and r10, r10, r0(2) and r11, r11, r0(3) and r5, r5, r0(5) buc1: and r6, r5, 1(6) cmp r7, r6, 1(4) ld r8, r20, r11 ; Reordenada(7) beq r7, impar(8) st r8, r21, r10(9) br com(10) impar: st r8, r22, r10(11) add r10, r10, 4(13) com: add r5, r5, 1(14) cmp r7, r5, r9(12) add r11, r11, 4 ; Reordenada(15) blt r7, buc1

Implementacion 2:

(1) F2: and r10, r10, r0(2) and r11, r11, r0(3) and r5, r5, r0(4) buc2: ld r8, r20, r11(5) st r8, r21, r10(6) add r11, r11, 4(7) ld r8, r20, r11(8) st r8, r22, r10(9) add r10, r10, 4(11) add r5, r5, 2(12) cmp r7, r5, r9(10) add r11, r11, 4 ; Reordenada(13) blt r7, buc2

El CPI se obtendra en cada caso igual que en el apartado anterior, descontando los 400 ciclos de paradaeliminados con la reordenacion en la primera implementacion y 100 ciclos con la reordenacion en la segunda.

CPI(Implementacion1) = (3.403− 400)/2.003 = 3.003 ciclos/2.003 instrucciones = 1, 5

CPI(Implementacion2) = (1.303− 100)/1.309 = 1.203 ciclos/1.003 instrucciones = 1, 2

y la ganancia obtenida con la segunda implementacion con respecto a la primera:

Speedup = 3.003 ciclos/1.203 ciclos = 2, 5

d) Con prediccion dinamica los aciertos de prediccion no producen ciclos de parada (ya que se predice en laetapa E1) y los fallos de prediccion se resuelven introduciendo 2 ciclos de parada, ya que se evalua la condicionde salto y se actualiza el PC en la etapa E3, una vez que han entrado en el pipeline las dos instruccionessiguientes al salto. A continuacion se analiza independientemente el comportamiento de las tres instruccionesde salto que hay en la implementacion 1:

La instruccion (7) (beq r7, impar) presenta el siguiente comportamiento, dependiente de si la posiciondel vector de entrada es par o impar:

posicion 0 1 2 3 4 5 ...es par Si No Si No Si No ...Se salta No Si No Si No Si ...Bit de Prediccion ? 0 1 0 1 0 ...Prediccion de saltar No No Si No Si No ...Acierto/Fallo A F F F F F ...

En consecuencia, de las 200 veces que se ejecuta, solo se acierta la primera vez (el sımbolo ? significa queno se encuentra la informacion en la BTB, lo que equivale a predecir no-salto), fallando las 199 veces restantes.

DATSI

Page 4: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

8 de junio de 2018 AC-jun2018-P3 Pagina 4 de 5

La instruccion (9) (br com) es un salto incondicional que, segun el enunciado se implementa como un saltocondicional en el que siempre se cumple la condicion. En esta instruccion se produce solo un fallo de prediccionla primera vez que se ejecuta (2 ciclos de parada), dado que no se dispone de la direccion destino del salto enla BTB, y no vuelve a fallar durante la ejecucion de este programa.

La instruccion (15) (blt r7, buc1) es el final del bucle de 200 iteraciones, por lo que falla la primera vez(no esta la informacion en la BTB) y la ultima (en la que predice que salta y en realidad no toma el salto).Las 198 veces restantes, el predictor dinamico acierta en la prediccion.

En consecuencia: NciclosDC = (199 + 1 + 2) fallos× 2 ciclos/fallo = 404 ciclos, por lo que se ahorrarıan1.000− 404 = 596 ciclos con la prediccion dinamica.

2 [1 punto] Al ejecutar un programa en un computador secuencial se observa que tarda 30 s y el mismoprograma, del que un 10 % es inherentemente secuencial, tarda 10 s cuando se ejecuta en un multiprocesadordotado de cuatro procesadores identicos.

a) Calcule cual es el speedup y la eficiencia alcanzada al ejecutar la version paralela en el multiprocesador.

b) Calcule el tiempo mınimo (teorico) necesario para ejecutar el programa en el multiprocesador indicado.

SOLUCION

a) El speedup se calcula como el tiempo consumido en la version original entre el que emplea la versionparalela. La eficiencia es la proporcion entre el speedup alcanzado y el maximo teorico que se podrıa alcanzarpara el numero de procesadores considerado (en este ejemplo, 4):

Speedup = 30s/10s = 3 Eficiencia = 3/4 = 0, 75 → 75%

b) La parte secuencial del programa (un 10% del total) se ejecuta en un unico procesador, por lo quetardara 0, 1× 30s = 3 segundos. La parte paralelizable del programa (el 90% restante) se ejecuta en 4 proce-sadores, por lo que su tiempo de ejecucion sera: 0, 9× 30s/4 = 6, 75 segundos. El tiempo mınimo de ejecuciondel programa completo en cuatro procesadores es la suma de las partes secuencial y paralelizada:

tiempo mınimo teorico = 3 + 6, 75 = 9, 75 segundos.

3 [2 puntos] Sea un multiprocesador UMA en el que se emplea un mecanismo de coherencia de caches conimplementacion snoopy y protocolo MSI, basado en invalidacion.

a) Describa el significado de cada uno de los estados en que puede estar un bloque de memoria cache.

b) En este sistema se suceden los tres accesos siguientes y en el mismo orden en que aparecen:

b.1) Un procesador Pi accede en lectura a la variable A, cuyo bloque correspondiente se encuentra en estado no-valido (I) en su cache. Suponiendo que dicho bloque esta en la cache del procesador Pj en estado compartido (S),indique la secuencia de acciones que se da en el sistema para que el procesador Pi obtenga el valor actualizadode A. Senale que modificaciones se producen en el sistema.

b.2) A continuacion, el procesador Pi escribe un nuevo valor en A. Indique la secuencia de acciones a que dalugar esta escritura y las modificaciones que conlleva en el sistema.

b.3) En un instante posterior, el procesador Pj accede en lectura a la variable A. Suponga que durante estetiempo, el bloque que contenıa A en la cache de este procesador no ha sido reemplazado, e indique la secuenciade acciones a que da lugar esta lectura, ası como las modificaciones que se producen en el sistema.

SOLUCION

a) Los tres estados posibles de cada lınea (o bloque) de cache son los siguientes:• I (invalidated): La lınea no contiene informacion valida.• S (shared): La lınea contiene un bloque de memoria principal que es coherente con esta. Este bloque

puede estar copiado tambien en las caches de otros procesadores (con el mismo contenido, coherente conmemoria principal).

• M (modified): La lınea contiene un bloque de memoria principal que ha sido modificado por el procesadoral que esta conectada la cache sin que se haya propagado esa modificacion a la memoria principal, por lo

DATSI

Page 5: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

8 de junio de 2018 AC-jun2018-P3 Pagina 5 de 5

que el contenido de ambas (principal y cache) no es coherente. El bloque de memoria principal no puedeestar copiado en la cache de otros procesadores.

b) Las modificaciones que se producen en los sucesivos accesos son las siguientes:

b.1) Pi lanza un BusRd de la direccion de A, ya que no esta en cache. El BLQ(A) sube a la cache en estado S.

b.2) Pi escribe en la direccion de A, modificando BLQ(A), que ya estaba en su cache y que queda en estado M.Esa modificacion provoca que se lance un BusInv (invalidacion) y que la cache de Pj ponga su copia de BLQ(A)en estado I.

b.3) Pj lanza un BusRd de la direccion de A, ya que no esta en cache (en su ubicacion hay ahora una lıneainvalida). Pi observa en el bus esa lectura y, al tener el bloque modificado, se adelanta lanzando un BusWr paraescribirlo en memoria principal y cambia el estado de su copia del BLQ(A) a S. A continuacion Pj lee el BLQ(A)de la memoria principal, subiendolo a su cache en estado S.

DATSI

Page 6: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

6 de julio de 2018 AC-jul2018-P3 Pagina 1 de 4

1 (3 puntos) Considere un multiprocesador de memoria compartida que utiliza el protocolo de coherencia decaches MSI. Se muestran a continuacion las funciones utilizadas para implementar las operaciones de adquisiciony liberacion de un cerrojo, siendo ts la instruccion atomica test-and-set:

lock: ts r1, /dir_cerrojo unlock: st #0, /dir_cerrojobnz r1 $lock retret

Suponiendo que el procesador P1 tiene invalidada la lınea de cache donde se ubicara la variable dir_cerrojo,considere la siguiente secuencia de operaciones realizada en los procesadores P1, P2 y P3:

1. P1 adquiere el cerrojo

2. P2 intenta adquirir el cerrojo

3. P3 intenta adquirir el cerrojo

4. P1 libera el cerrojo

5. P2 adquiere el cerrojo

6. P3 intenta adquirir el cerrojo

7. P2 libera el cerrojo

a) Indique razonadamente para cada uno de esos siete casos que procesador envıa una senal por el bus, eltipo de esta senal (por ejemplo BusRd, BusRdX o BusInv) y en cuales se produce la invalidacion de un bloqueen la cache de otros procesadores.

b) Reescriba la funcion de adquisicion utilizando el par de instrucciones ll, sc (load-locked, store-conditional)en lugar de ts.

c) Indique razonadamente en que casos de la secuencia de operaciones del enunciado se producen invalida-ciones con esta ultima implementacion.

d) Comente brevemente las diferencias que considere mas significativas entre ambas implementaciones.

SOLUCION

a) Acciones realizadas en cada uno de los casos de la secuencia de operaciones del enunciado:

1.- Como P1 no tiene la variable dir cerrojo en su cache (fallo de escritura) envıa la senal BusRdX por elbus, invalidando la copia que pudiera haber en la cache de otros procesadores. La variable se copia en lacache de P1 y se pone la lınea correspondiente en estado Modificado.

2.- P2 intenta adquirir el cerrojo ejecutando ts. Como la variable no se encuentra en su cache, P2 envıaBusRdX por el bus, invalidando la copia de la cache de P1. La variable se copia en la cache de P2 y sepone la lınea correspondiente en estado Modificado.

3.- P3 intenta adquirir el cerrojo. Las acciones realizadas son las mismas que en el caso anterior, invalidandoseen este caso la copia de P2 y quedando la variable en la cache de P3 en estado Modificado.

4.- P1 ejecuta st para escribir un 0 en la variable y liberar el cerrojo. Como no se encuentra la variable ensu cache, P1 envıa BusRdX, invalidando la copia de P3. La variable se copia en la cache de P1 y se ponela lınea correspondiente en estado Modificado.

Los casos 5, 6 y 7 presentan el mismo comportamiento que los casos 1, 2 y 4. El procesador correspondiente(P2, P3 y P2 respectivamente) envıa BusRdX por el bus, con la correspondiente invalidacion de la copiaque hubiera en otro procesador. Finalmente, la variable queda unicamente en la cache de P2, y en estadoModificado.

b) Implementacion de la adquisicion con ll y sc

lock: ll r1, /dir_cerrojo // (dir_cerrojo) -> r1bnz r1 $lock // si esta ocupado reintentaradd r1, #1sc r1, /dir_cerrojo // si exito escribir 1 en (dir_cerrojo)bz r1 $lock // si no reintentarret

c) Con esta ultima implementacion se producen invalidaciones unicamente en los casos en los que se adquierey se libera el cerrojo (casos 1, 4, 5 y 7):

• En la adquisicion se ejecuta la instruccion sc con exito, que conlleva el envıo de la senal BusInv por elbus, ya que previamente se ejecuto ll que dejo la lınea de cache correspondiente en estado compartido.

DATSI

Page 7: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

6 de julio de 2018 AC-jul2018-P3 Pagina 2 de 4

• En la liberacion se ejecuta st, que conlleva tambien una invalidacion de las copias de la variable quehubiera en las caches de otros procesadores, que previamente la hubieran leıdo al intentar adquirir elcerrojo mediante la ejecucion de la instruccion ll.

d) Diferencias entre ambas implementaciones. Con la segunda implementacion:

• Cuando un procesador adquiere el cerrojo se envıan dos senales por el bus:

- BusRd para leer el bloque en el que esta el cerrojo (al ejecutar ll)

- BusInv para invalidar el resto de las posibles copias (al ejecutar sc con exito)• Solo se envıan senales de invalidacion cuando un proceso adquiere el cerrojo (entra en la seccion crıtica)

y cuando lo libera, mientras que en la primera se envıan tambien cada vez que un proceso intenta entraren la region crıtica sin conseguirlo (consulta el valor del cerrojo y lo encuentra cerrado).

• Durante la espera para adquirir el cerrojo se hacen unicamente operaciones de lectura, por lo que siconsideramos sucesivos intentos de un mismo procesador dichas operaciones se harıan localmente, en lacache privada del procesador. En la implementacion con test-and-set todos los intentos conllevan senalesde invalidacion, lo que provoca una considerable sobrecarga del bus y en consecuencia una disminucionimportante de las prestaciones del multiprocesador.

2 (7 puntos) Sea un computador cuyo procesador tiene una estructura de pipeline de instrucciones con las5 etapas que se indica a continuacion. Todas las instrucciones pasan por todas las etapas.

• E1: Fetch• E2: Decodificacion, lectura de registros y calculo de direcciones de salto• E3: Ejecucion, evaluacion de la condicion de salto, calculo de direcciones de acceso a datos• E4: Acceso a memoria para datos• E5: Escritura en registros.

Este procesador no resuelve automaticamente ningun tipo de dependencias –ni tampoco, en consecuencia,dispone de ningun mecanismo de adelantamiento–, sean de control o de datos, por lo que, en principio, sedeberan insertar en el codigo las instrucciones de NOP necesarias para la correcta ejecucion de los programas.Ademas, este procesador no emplea division en semiciclos en los accesos al banco de registros.

a) Indique razonadamente cuantas instrucciones NOP es necesario insertar para resolver: 1) las dependenciasde datos entre dos instrucciones consecutivas, y 2) las dependencias de control asociadas a cada salto condicionaly a cada salto incondicional.

b) Al final del enunciado se presentan dos versiones de un fragmento de cierto programa escrito originalmentepara un computador secuencial (el de la parte izquierda). Este codigo ha sido modificado a mano por unprogramador novel y con escasos conocimientos de ILP para que ejecutase correctamente en el pipeline descrito(codigo de la parte derecha). La funcion que realiza es la cuenta del numero de elementos negativos, nulos ypositivos de un vector de N elementos, donde N es un valor positivo. En el codigo modificado se conserva lanumeracion de las instrucciones originales, para resaltar los NOPs incluidos en la modificacion.

Analice el codigo propuesto y justifique si el numero de instrucciones NOP que se ha insertado resuelvecorrectamente 1) las dependencias de datos, y 2) las de control. Compruebe tambien si se ha insertado algunNOP que no fuese necesario y, en caso afirmativo, indique de cual o de cuales se trata.

c) Suponga ahora que se cambia el procesador por otro que trata automaticamente las dependencias de datosy las de control introduciendo los ciclos de espera o parones necesarios y que, ademas, dispone de todo tipode mecanismos de adelantamiento. Se usa la version del codigo mostrada en la parte izquierda, la que no tieneinstrucciones NOP. Indique razonadamente las dependencias que aparecen ahora en este codigo (ya sean dedatos o de control), ası como el numero de ciclos de espera que debe introducir el procesador para resolverlas.

d) Calcule el CPI de este fragmento de codigo en este ultimo procesador. Para ello suponga que el 30 % de loselementos que se leen en la instruccion (4) son nulos y el 40 % son negativos.

e) Suponga ahora que el procesador tiene prediccion estatica de “sı salta” en instruccion 14 –que es un saltohacia “atras”, tıpico de cierre de un bucle–. Calcule como afecta este nuevo mecanismo al numero de ciclos deespera debidos a esta instruccion.

f) Suponga por ultimo que para este salto de la instruccion 14 se utiliza prediccion dinamica de 1 bit y que laprimera vez que se ejecuta se encuentra vacıa la BTB (tabla de prediccion de saltos). Esta prediccion se realizaen la E1, fetch, como es habitual. Indique el numero fallos de prediccion que se produce en este caso. Indique

DATSI

Page 8: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

6 de julio de 2018 AC-jul2018-P3 Pagina 3 de 4

tambien si cambia en alguna medida el numero de parones que se produce con respecto al caso anterior de laprediccion estatica.

(1) add r1, r0, r0(2) add r2, r0, r0(3) add r3, r0, r0(4)bucle: ld r13, r10, r0 ; Lee v[i](5) blt r13, r0, $menor ; si < 0(6) bgt r13, r0, $mayor ; si > 0(7)igual: add r2, r2, 1 ; cont-ceros++(8) br $fin(9)menor: add r1, r1, 1 ; cont-neg++

(10) br $fin(11)mayor: add r3, r3, 1 ; cont-pos++(12)fin: add r10, r10, 4(13) sub r11, r11, 1(14) bne r11, r0, $bucle(15) st r1, r12, 0(16) st r2, r12, 4(17) st r3, r12, 8

(1) add r1, r0, r0NOP

(2) add r2, r0, r0NOP

(3) add r3, r0, r0NOP

(4)bucle: ld r13, r10, r0 ; Lee v[i]NOPNOPNOP

(5) blt r13, r0, $menor ; si < 0NOPNOP

(6) bgt r13, r0, $mayor ; si > 0NOPNOP

(7)igual: add r2, r2, 1 ; cont-ceros++(8) br $fin

NOPNOP

(9)menor: add r1, r1, 1 ; cont-neg++(10) br $fin

NOPNOP

(11)mayor: add r3, r3, 1 ; cont-pos++(12)fin: add r10, r10, 4(13) sub r11, r11, 1

NOPNOPNOP

(14) bne r11, r0, $bucleNOPNOP

(15) st r1, r12, 0(16) st r2, r12, 4(17) st r3, r12, 8

SOLUCION

a) El numero de instrucciones NOP que sera necesario incrustar en el codigo para el correcto funcionamientodel programa sera el siguiente:

a.1) Entre dos instrucciones consecutivas con dependencia de datos hay que esperar a que la primera finalicesu paso por la etapa E5 antes de que la segunda comience su paso por la etapa E2, por lo que serıa necesariosituar tres NOPs entre ambas.

a.2) Los saltos incondicionales no se veran resueltos hasta el final de la E2, donde se realiza el calculo de lasdirecciones. Por lo tanto deberan ir seguidos de una instruccion NOP, que serıa la que entrarıa en el pipelinedespues de la de salto incondicional.

a.3) En el caso de los saltos condicionales no se determinan hasta la E3, cuando se evalua si se verifica lacondicion para bifurcar. Consecuentemente, sera necesario introducir dos NOPs, que se ejecutaran siempre, sesalte o no.

b) Si se analiza el codigo propuesto siguiendo el criterio establecido en el apartado anterior se observa losiguiente:

b.1) Se producen dependencias de datos entre las instrucciones con el identificador 4 y 5 y entre las 13 y14. En ambos casos, segun el criterio establecido arriba habra que colocar tres instrucciones NOP, algo quepodemos comprobar que se ha realizado debidamente.

b.2) Se comprueba que las tres instrucciones de salto condicional –5, 6 y 14– van seguidas de dos NOPs, denuevo de acuerdo al criterio que se establecio en el apartado anterior. Tambien las de bifurcacion incondicional

DATSI

Page 9: 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 · 8 de junio de 2018 AC-jun2018-P3 P´agina 1 de 5 1 [ 7 puntos] En un computador cuyo procesador dispone de un pipeline de 7 etapas,

6 de julio de 2018 AC-jul2018-P3 Pagina 4 de 4

van seguidas de un NOP, aunque se observa que el programador, probablemente en un exceso de prudencia, hainsertado un segundo NOP, el cual es prescindible segun el analisis realizado.

c) Si repasamos los NOPs que aparecen en el codigo se encuentran algunos que no son necesarios segunel criterio anterior: despues de los saltos incondicionales es suficiente con un NOP, tal y como acabamos decomentar. Tambien aparecen unos NOPs injustificados detras de las tres primeras instrucciones, 1, 2 y 3, aunqueen este caso no parezca que resulte facil imaginar el porque del programador para hacerlo.

d) Para esta nueva version del procesador y para el codigo original, sin las instrucciones NOP, las dependenciascontinuan siendo las estudiadas anteriormente, solo que se resuelven por hardware:

• Dependencias de datos:

- 4 → 5: por el registro r13.- 4 → 6: tambien por r13.- 13 → 14: por el registro r11.

Si se utiliza adelantamiento, para resolver la primera dependencia y utilizando adelantamiento de la salidade la memoria a la entrada de la evaluacion de la condicion (E4 → E3) se debe introducir solo 1 ciclo deespera. La resolucion de esta dependencia hace que desaparezca la que acabamos de identificar entre 4 y6. La dependencia entre 13 y 14 se puede resolver sin ningun ciclo de espera, utilizando adelantamientode la salida de la ALU a la entrada de la evaluacion de la condicion, ya que ambas acciones se realizanen E3 (adelantamiento E3 → E3).

• Dependencias de control:

Los adelantamientos no afectan a este tipo de dependencias, por lo que siguen existiendo las previamentedetectadas y sus consiguientes ciclos de espera.

- 5, 6 y 14: por salto condicional. El procesador debe introducir 2 ciclos de espera detras de cada unade ellas, de nuevo segun lo establecido en nuestro analisis del primer apartado.

- 8 y 10: por salto incondicional. En este caso el procesador debe introducir 1 ciclo de espera detrasde cada una, de nuevo segun el criterio que surgio del analisis que hicimos al comienzo.

e) El CPI que se obtiene utilizando adelantamientos es el siguiente:

• Numero de instrucciones ejecutadas (NI):

3 + N × [2 + 0, 40 × 2 + 0, 60 × 1 + 0, 3 × 2 + 0, 3 × 1 + 3] + 3 = 6 + N × 7, 3

• Numero de ciclos empleados en la ejecucion (NC):

3+N×[(2+1dd+2dc)+0, 40×(2+1dc)+0, 6×(1+2dc)+0, 3×(2+1dc)+0, 3×1+(3+2dc)]+3 = 6+N×14, 2

donde dd y dc indican los parones debidos a dependencias de datos y de control respectivamente.• Numero de ciclos por instruccion:

CPI =NC

NI≈

14, 2

7, 3= 1, 94

f) Si se dispusiese de prediccion estatica de que el salto es efectivo, la primera vez que se alcanzase la instruccionse producirıa un unico paron, ya que es en E2 cuando calcula la direccion de bifurcacion. El resto de la iteracionesmenos la ultima se seguira produciendo ese unico paron debido a esta necesidad de calcular la direccion en E2.En la ultima iteracion, la N-esima, se produciran dos parones, puesto que es en E3 cuando se comprobarıa quela prediccion de sı saltar no se cumplirıa en ese caso, lo que llamarıamos fallo de prediccion.

Desde una perspectiva cuantitativa, en este caso particular, el numero total de ciclos de espera debidos a lainstruccion 14 se reducirıa a la mitad, N parones, uno por cada iteracion en lugar de los dos que se producirıansin prediccion.

g) Utilizando prediccion dinamica se producen ciclos de espera la primera vez que se ejecuta la instrucciondebido al fallo en la BTB, tabla de direcciones de salto y de bit o bits de prediccion. En este caso, se introducirıandos parones en esa primera iteracion, puesto que no es hasta la E3 cuando se determina que sı se cumple labifurcacion. En el resto de las iteraciones menos la ultima, N-2 iteraciones, no se producira ningun paron debidoa esta instruccion de salto, siempre en el supuesto de que la prediccion se efectua en la E1, etapa de fetch.En la ultima iteracion, fallara la prediccion –se averigua en la E3– y se deberan introducir otros dos parones,cuatro parones en total debidos a esta instruccion.

DATSI