Sei sulla pagina 1di 64

Arquitectura e Ingenier a de Computadores - 4o Curso Ejercicios y soluciones de la Unidad Tem atica 2. Computadores segmentados Ejercicio 2.1.

Un procesador compatible binario con el MIPS64 posee su ciclo de instrucci on segmentado en 5 fases: BI: B usqueda de la instrucci on a ejecutar. DE: Decodicaci on de la instrucci on y lectura de los registros operandos. UAL: Operaci on en la U.A.L. Escritura del PC en las instrucciones de salto. MEM: Acceso a memoria en las instrucciones de Carga y Almacenamiento. ER: Escritura del resultado sobre el registro destino. La m aquina resuelve los riesgos de control mediante el salto retardado. Tambi en posee antememorias de instrucciones y datos separadas, as como dos puertos de lectura y uno de escritura en el banco de registros. Sobre dicho procesador se est a ejecutando el siguiente bucle, compuesto de n iteraciones:
L : ... LD R1,X(R2) DADD R1,R1,R3 SD R1,X(R2) DADD R2,R2,#8 DSUB R4,R4,#1 BNEZ R4,L NOP NOP

1. Dibuja un diagrama en el que se indique, para cada instrucci on y ciclo de reloj, qu e fase de la instrucci on se est a completando. Considera s olo la primera iteraci on. Calcula los CPI y el tiempo de ejecuci on obtenidos, en funci on del n umero de iteraciones n. Considera los siguientes casos: a) Los riesgos de datos se resuelven mediante la inserci on de ciclos de parada. b) Los riesgos de datos se resuelven mediante la t ecnica del cortocircuito. 2. Suponiendo que los riesgos de datos se resuelven mediante la t ecnica de la anticipaci on (forwarding), optimiza el c odigo. Soluci on: Puesto que el PC se escribe en la tercera fase del ciclo de instrucci on, el branch delay slot es de dos instrucciones:
pc BI DE UA ME BI DE UA BI DE BI

d: d+4: d+8: d+16/L:

BNEZ R4,L ds1 ds2

WB ME WB UA ME WB DE UA ME WB

1. C odigo original con ciclos de parada. 1

1 2 3 begin: LD R1,X(R2) BI DE UA DADD R1,R1,R3 BI DE SD R1,X(R2) BI DADD R2,R2,#8 DSUB R4,R4,#1 BNEZ R4,begin NOP NOP begin: LD R1,X(R2)

4 ME DE BI

5 6 WB DE UA BI DE BI

10 11 12 13 14 15 16 17 18 19

ME WB DE DE UA ME BI BI DE UA BI DE BI

WB ME UA DE BI

WB ME WB DE DE UA ME BI BI DE UA BI DE BI

WB ME WB UA ME WB DE UA ME WB

Para una iteraci on, se ejecutan 8 instrucciones en 14 ciclos de reloj. Por lo tanto: 14 CP I = 8 = 1,75 Y el tiempo de ejecuci on para n iteraciones es 14n ciclos: Tej = I CP I T = 8n 1,75 T = 14nT s 2. C odigo original con anticipaci on.
1 2 3 begin: LD R1,X(R2) BI DE UA DADD R1,R1,R3 BI DE SD R1,X(R2) BI DADD R2,R2,#8 DSUB R4,R4,#1 BNEZ R4,begin NOP NOP begin: LD R1,X(R2) 4 ME DE BI 5 WB UA DE BI 6 ME UA DE BI 7 WB ME UA DE BI 8 9 10 11 12 13 14

WB ME UA DE BI

WB ME UA DE BI

WB ME UA DE BI

WB ME WB UA ME WB DE UA ME WB

Para una iteraci on, se ejecutan 8 instrucciones en 9 ciclos de reloj. Por lo tanto: 9 CP I = 8 = 1,125 Y el tiempo de ejecuci on para n iteraciones es 9n ciclos: Tej = I CP I T = 8n 1,125 T = 9nT s 3. Optimizaci on. La optimizaci on pretende, por una parte, rellenar el branch delay slot con instrucciones u tiles, y, por otra, eliminar los ciclos de parada. Hay diversas soluciones que obtienen las mismas prestaciones: Rellenamos el branch delay slot con instrucciones anteriores al salto:
1 2 3 4 5 6 7 begin: LD R1,X(R2) BI DE UA ME WB DSUB R4,R4,#1 BI DE UA ME WB DADD R1,R1,R3 BI DE UA ME WB BNEZ R4,begin BI DE UA ME SD R1,X(R2) BI DE UA DADD R2,R2,#8 BI DE begin: LD R1,X(R2) BI 8 9 10 11

WB ME WB UA ME WB DE UA ME WB

Rellenamos el branch delay slot con instrucciones anteriores al salto, y movemos una instrucci on que modica un registro que se emplea para el c alculo de direcciones de acceso a memoria:
1 2 3 begin: LD R1,X(R2) BI DE UA DADD R2,R2,#8 BI DE DSUB R4,R4,#1 BI 4 ME UA DE 5 6 7 8 WB ME WB UA ME WB 9 10 11

BNEZ R4,begin DADD R1,R1,R3 SD R1,X-8(R2) begin: LD R1,X(R2)

BI DE UA ME BI DE UA BI DE BI

WB ME WB UA ME WB DE UA ME WB 10 11

Rellenamos el branch delay slot con instrucciones del destino del salto:
1 2 3 4 5 6 7 8 9 begin: LD R1,X(R2) BI DE UA ME WB DSUB R4,R4,#1 BI DE UA ME WB L: DADD R1,R1,R3 BI DE UA ME WB SD R1,X(R2) BI DE UA ME WB DADD R2,R2,#8 BI DE UA ME WB BNEZ R4,L BI DE UA ME LD R1,X(R2) BI DE UA DSUB R4,R4,#1 BI DE L: DADD R1,R1,R3 BI

WB ME WB UA ME WB DE UA ME WB

Para una iteraci on, se ejecutan 6 instrucciones en 6 ciclos de reloj. Por lo tanto: 6 CP I = 6 = 1 Y el tiempo de ejecuci on para n iteraciones es 6n ciclos: Tej = I CP I T = 6n 1 T = 6nT s

Ejercicio 2.2. Se tiene el siguiente c odigo en alto nivel:


TYPE elem=RECORD x : ARRAY[1..10] OF LONGINT; siguiente: elem; END; VAR cont : LONGINT; p : elem; ... REPEAT cont := cont + 1; p := p.sig; UNTIL p = NIL; ...

El tipo LONGINT y los punteros ocupan 32 bits. La constante NIL se representa con un 0. El compilador genera el bucle como se muestra seguidamente:
; cont se ubica en R2 ; p se ubica en R1 ... eti: add r2, r2, #1 lw r1, 40(r1) bnez r1, eti nop ; tantos nops como haga falta

Dicho c odigo se pretende ejecutar sobre distintas versiones de un procesador segmentado en 5 etapas: 3

IF: B usqueda de la instrucci on a ejecutar. ID: Decodicaci on de la instrucci on y lectura de los registros operandos (2o semiciclo del reloj). EX: Operaci on en la U.A.L. ME: Acceso a memoria en las instrucciones de Carga y Almacenamiento. WB: Escritura del resultado sobre el registro destino (1er semiciclo del reloj). La m aquina resuelve los riesgos de datos mediante la t ecnica del cortocircuito, y funciona a 100 MHz. 1. Suponiendo que el bucle se ejecuta 10.000 veces, calcular los CPI, los MIPS y el tiempo de ejecuci on que el procesador alcanza ejecutando este bucle bajo los siguientes supuestos: a) El c alculo de la direcci on efectiva, condici on de salto y escritura del PC se realiza en ID, y se emplea arquitectura Harvard. b) El c alculo de la direcci on efectiva, condici on de salto y escritura del PC se realiza en ID, y se emplea antememoria com un para instrucciones y datos. c) El c alculo de la direcci on efectiva y condici on de salto se realiza en EX, y la escritura del PC se realiza en M. Se emplea arquitectura Harvard. 2. Asumiendo el supuesto a), optimizar el c odigo. Soluci on: 1. C alculo de los par ametros solicitados: a) Escritura del PC en ID; arquitectura Harvard. El branch delay slot es de una instrucci on, por lo que se ejecutan cuatro instrucciones en cada iteraci on. El riesgo de datos entre lw y bnez requiere dos ciclos de parada, dando un total de seis ciclos por iteraci on. En consecuencia: 6 CP I = 4 = 1,5 ciclos MIP S = I I 1 f (en MHz) = = = = 6 6 6 Tej 10 I CP I T 10 CP I T 10 CP I 100 = 66,7MIPS 1,5

Para procesar 10.000 iteraciones har an falta 60.000 ciclos de reloj, que, a 10 ns por ciclo, son 600.000 ns = 0.6 ms. Al mismo resultado llegamos tras aplicar la ecuaci on del tiempo de ejecuci on con I = 4 104 instrucciones: T (10000 iteraciones) = (4 104 ) 1,5 1 = 6 104 s. 100 106

b) Escritura del PC en ID; antememoria com un de instrucciones y datos. El branch delay slot es tambi en de una instrucci on: se ejecutan cuatro instrucciones en cada iteraci on. El riesgo estructural entre lw y nop se superpone al de datos entre load y bnez. El bucle contin ua consumiendo seis ciclos por iteraci on. Los par ametros son los mismos que en el caso anterior. 4

c) Escritura del PC en M; arquitectura Harvard. El branch delay slot es ahora de tres instrucciones: se ejecutan seis instrucciones en cada iteraci on. El riesgo de de datos entre lw y bnez requiere ahora un u nico ciclo de parada. El bucle consume siete ciclos por iteraci on. Se obtienen los siguientes par ametros: 7 CP I = 6 = 1,17 cpi 100 MIP S = 1 = 85,7 MIPS ,17 Para procesar 10.000 iteraciones har an falta 70.000 ciclos de reloj, que, a 10 ns por ciclo, son 700.000 ns = 0.7 ms. 2. Para la optimizaci on, hay dos alternativas v alidas: Separar las instrucciones lw y bnez con el objeto reducir a uno los ciclos de parada que se insertan para resolver el riesgo de datos que se produce entre ambas:
eti: lw r1,40(r1) add r2,r2,#1 bnez r1,eti nop

Rellenar el branch delay slot con una instrucci on u til:


eti: lw r1,40(r1) bnez r1,eti add r2,r2,#1

El tiempo de ejecuci on se reduce en un ciclo por iteraci on en ambos casos.

Ejercicio 2.3. Un computador, valorado en 2000$, lleva un MIPS/LC, id entico al MIPS (5 etapas de segmentaci on: b usqueda de la instrucci on (IF), Decodicaci on y lectura de registros (ID), Ejecuci on (EX), Acceso a memoria (MEM) y Escritura de registros (WB)) pero con una sola antememoria com un para instrucciones y datos, con branch slot de una instrucci on, cortocircuitos y reloj a 80 MHz. Se tiene instalado un compilador de dominio p ublico que compila el siguiente texto:
repeat if v[i] <> 0 then begin temp := v[i]; v[i] := w[i]; w[i] := temp; end; i := i-1; until i = 0;

y genera el siguiente c odigo:


eti1: ld r2,v(r1) beqz r2,eti2 nop ld r3,w(r1) sd r3,v(r1) sd r2,w(r1) dsub r1,r1,#8 bnez r1,eti1 nop

eti2:

El bucle se aplica a vectores con un 80 % de componentes iguales a 0. 1. Calcula el CPI medio para tallas n grandes. 2. Optimiza el c odigo para reducir su tiempo de ejecuci on, y cuantica la mejora. 3. Sup on que el bucle original es una buena muestra de la carga usual de dicho computador. Para mejorar el rendimiento, considera dos posibles inversiones: Cambiar el procesador por la versi on MIPS/ST con antememorias de instrucciones y datos separadas, con un coste de 200$. Comprar un compilador comercial, valorado en 200$, capaz de optimizar el c odigo anterior reduciendo en 3 ciclos de reloj cada iteraci on en que v [i] <> 0 y en 2 ciclos cada iteraci on en que v [i] = 0. El n umero de instrucciones ejecutadas no se modica. Desde el punto de vista de la relaci on coste/prestaciones, y suponiendo que s olo podemos gastarnos 200$, ser a interesante alguna de las dos mejoras anteriores? En caso armativo, cu al convendr a aplicar? Soluci on: 1. Cuando v (r 1) <> 0, en el bucle se ejecutan nueve instrucciones. Para resolver los riesgos, se introducen 6 ciclos de parada: Dos ciclos que ha de esperar la instrucci on beqz r2,eti2 para que la fase ID disponga del valor de r2 generado por la instrucci on previa ld r2,v(r1). Recu erdese que si el branch delay slot es de una instrucci on, el PC se escribe en la segunda etapa (ID) del ciclo de instrucci on, por lo que la condici on debe calcularse tambi en en dicha etapa. Tres ciclos ocasionados por las restantes instrucciones de carga y almacenamiento al producirse un riesgo estructural por tener una u nica antememoria de instrucciones y datos. Un ciclo que ha de esperar la instrucci on bnez r1,eti1 para que la fase ID disponga del valor de r1 modicado por la instrucci on previa dsub r1,r1,#8. El total de ciclos requeridos es de 9+2+3+1=15. Si v (r 1) = 0, se ejecutan seis instrucciones. Los ciclos de parada son los correspondientes a las instrucciones beqz y bnez, porque el resto de instrucciones de carga y almacenamiento no se ejecutan. El total de ciclos es, pues, de 6+2+1=9. Para calcular el CPI medio hay que tener en cuenta las proporciones de ceros en el vector v : 0,2+90,8 Numero de ciclos = 15 = 1,55 CP I = Numero de instrucciones 90,2+60,8 2. Una posible optimizaci on, en la que se eliminan los branch slots, ser a la siguiente:
eti1: ld r2,v(r1) beqz r2,eti2 dsub r1,r1,#8 ld r3,w+8(r1) sd r3,v+8(r1) sd r2,w+8(r1) bnez r1,eti1+4 ld r2,v(r1)

eti2:

en la que se ahorran tres ciclos por iteraci on si v (r 1) <> 0 (dos ciclos al eliminar los nop y uno al eliminar el riesgo de dsub r1,r1,#8 y bnez r1,eti1+4) y dos ciclos (al eliminar los nop) cuando v (r 1) = 0 . 150,2+90,8 La mejora es t = 12 = 1,28 0,2+70,8 3. C alculo de las mejoras en tiempo medio de ejecuci on del bucle, medido en ciclos, en uno y otro caso:
150,2+90,8 t = 12 = 1,06 (nuevo procesador, en el que se eliminan los tres riesgos estruc0,2+90,8 turales s olo cuando v (r 1) <> 0) 150,2+90,8 t = 120,2+70,8 = 1, 28 (nuevo compilador)

Para el mismo incremento de coste (10 %), queda claro que la mejora apropiada es la adquisici on del nuevo compilador. Por otra parte, la mejora obtenida cambiando el procesador es inferior al incremento del coste, por lo que, desde el punto de vista de mantener una relaci on coste prestaciones constante, no ser a interesante.

Ejercicio 2.4. El ciclo de instrucci on de un procesador load/store no segmentado se descompone en las siguientes fases (se indica entre par entesis la duraci on de cada una): LI (10 ns): lectura de instrucci on. DI (5 ns): decodicaci on de la instrucci on y lectura de registros fuente. EXE (10 ns): c alculo de direcciones efectivas en instrucciones L/S, operaci on en instrucciones ALU, c alculo de condici on y de valor del PC en instrucciones de salto. EPC (5 ns): escritura de PC en instrucciones de salto MEM (10 ns): acceso a memoria en instrucciones L/S ER (5 ns): escritura de registro destino en instrucciones de almacenamiento y de ALU. El aut omata que implementa el circuito de control cableado genera las fases en funci on del c odigo de operaci on. El reloj funciona a 200 MHz, de manera que unas fases requieren dos ciclos y otras s olo uno. Todos los ciclos de instrucci on comienzan por las fases LI y DI. Seg un el tipo de instrucci on, las restantes fases del ciclo son (se indica entre par entesis la frecuencia de cada tipo de instrucci on): Instrucciones de carga (20 %): EXE, MEM y ER Instrucciones de almacenamiento (10 %): EXE y MEM Instrucciones ALU (50 %): EXE y ER Instrucciones de salto (20 %): EXE y EPC Se pretende segmentar el procesador, utilizando registros de 2 ns de retardo y un reloj con desfase nulo. Desaparece la fase EPC y toda la l ogica de salto pasa a la etapa DI, con lo que el retardo de esta etapa es ahora de 10 ns. El procesador queda con las 5 etapas LI, DI, EXE, MEM y ER. Se toman medidas reales y se observa que el 5 % de las instrucciones de carga generan un ciclo de parada por riesgo de datos, y que el compilador rellena el 10 % de los casos de branch delay slot con una instrucci on in util nop. Se pide: 7

1. Los CPI del procesador no segmentado. 2. La frecuencia del reloj del procesador segmentado. 3. El n umero de instrucciones ejecutadas por el procesador segmentado en relaci on al no segmentado. 4. Los CPI del procesador segmentado. 5. La aceleraci on en el tiempo de ejecuci on obtenido por la segmentaci on. Soluci on: 1. CPI del procesador no segmentado. Obtengamos primero el valor de CPI para cada tipo de instrucci on: % tipo CPI 20 carga 8 10 almacenamiento 7 50 c alculo (ALU) 6 20 bifurcaci on 6 La media ponderada es: CP I N S = 0,20 8 + 0,10 7 + 0,50 6 + 0,2 6 = 6,5. 2. Frecuencia del reloj del procesador segmentado. El m aximo retardo de etapa es de 10 ns, y el de registro de 2 ns. Por lo tanto, el periodo de reloj es tS = 10 + 2 = 12 ns. 1 6 La frecuencia es f = t1 = 1210 9 = 83,3 10 Hz = 83.3 MHz. S 3. N umero de instrucciones ejecutadas por el procesador segmentado en relaci on al no segmentado. El programa del procesador segmentado tendr a el mismo n umero de instrucciones que el del no segmentado, m as las instrucciones nop que en el 10 % de los casos siguen al 20 % de bifurcaciones. Como la l ogica de salto est a ubicada en la segunda etapa (DI), el branch delay slot es de una instrucci on. Por tanto, IS = IN S (1 + 0,1 0,2) = 1,02 IN S . 4. CPI del procesador segmentado. Cada instrucci on buscada contribuye con un ciclo al tiempo de ejecuci on. Tambi en hay que contabilizar los ciclos perdidos por conictos de datos en el 5 % de casos del 20 % de instrucciones de carga. Hay que tener en cuenta que el n umero total de instrucciones ha aumentado debido a las instrucciones nop: cantidad tipo CPI 20 carga 1+(0, 05 1)=1,05 10 almacenamiento 1 50 c alculo (ALU) 1 20 bifurcaci on 1 2 (0, 1 20) nop 1 102 total La media ponderada es: 1+201+21 CP I S = 201,05+101+50 = 1, 01 ciclos. 102

Otra forma de proceder es considerar que, al estar segmentado, el CPI ser a de 1 m as el n umero medio de ciclos de parada que origina cada instrucci on. En nuestro caso, solo el 5 % de las instrucci ones de carga (que son 20 de cada 102) insertan un ciclo de parada. Por lo tanto: 0,05 CP I S = 1 + 0,2 = 1,01 ciclos. 1,02 5. Aceleraci on debida a la segmentaci on. Dividiendo las expresiones del tiempo de ejecuci on del procesador no segmentado y segmentado, obtenemos: S= TN S IN S CP IN S tN S IN S 6,5 5 = = = 2,63 TS IS CP IS tS 1,02 IN S 1,01 12

Ejercicio 2.5. Se tiene un procesador segmentado en 5 etapas (IF: b usqueda de la instrucci on; ID: decodicaci on y lectura de registros; EX: operaci on en la ud. aritm etica; MEM: acceso a memoria y WB: escritura de registros). El procesador incorpora el juego de instrucciones del MIPS y posee cache de instrucciones y de datos separadas. La frecuencia de reloj es de 200 MHz. Los riesgos de datos y de control se resuelven mediante la t ecnicas del forwarding e insertando dos ciclos de parada cada vez que aparece una instrucci on de salto, respectivamente. Los programas ejecutan, por t ermino medio, un 18 % de saltos, un 39 % de cargas/almacenamientos y un 43 % de instrucciones aritm eticas. Las cargas son doble frecuentes que los almacenamientos. Los accesos a bytes y halfwords suponen un 20 % de los accesos a memoria. La frecuencia de riesgos de datos entre una instrucci on LOAD y otra posterior que consume el dato procedente de la memoria es la siguiente: Frecuencia: 25 % LOAD R1, ... Instrucci on que lee R1 ... Frecuencia: 15 % LOAD R1, ... Instrucci on que no lee R1 Instrucci on que lee R1

Con el objeto de mejorar las prestaciones, se plantea realizar las siguientes modicaciones: Eliminar las instrucciones de acceso a bytes y halfwords del juego de instrucciones. Como consecuencia, los programas que necesiten esta funcionalidad deber an utilizar otras instrucciones del procesador:
LB R1,x o LH R1,x LW R1,x SRL R1,R1,#pos AND R1,R1,#masc SB R1,x o SH R1,x LW R2,x SLL R1,R1,#pos 5 instrucciones ALU m as SW x,R1

Aumentar la frecuencia de reloj, al simplicar el dise no del procesador. Se pide: 1. Los CPI del procesador original. 2. El n umero de instrucciones del procesador modicado en relaci on al original. 3. Los CPI del procesador modicado. 4. La frecuencia de reloj que deber a alcanzarse, como m nimo, para que sea interesante incorporar las modicaciones propuestas. Soluci on: 9

1. CPI del procesador original. Al ser un procesador segmentado, los CPI ser an 1 m as los ciclos medios de parada por instrucci on. En este caso, se insertan cuando aparecen saltos (18 %, 2 ciclos de parada) y cuando se producen riesgos de datos en los que interviene una instrucci on de carga y otra instrucci on inmediatamente a continuaci on que consume el dato cargado (25 % de las cargas, 1 ciclo de parada). Sabemos que hay un 39 % de carga/almacenamiento, y que las cargas son doble frecuente que los almacenamientos. Si c y a son los porcentajes de carga y almacenamiento, respectivamente, tenemos: c + a = 39 c = 2a Resolviendo, c = 26 % y s = 13 %. Por lo tanto, los ciclos de parada son: 18 % 2(Saltos) + 26 % 0,25 1(Cargas) = 0,425 CPI = 1.43 ciclos. 2. Numero de instrucciones en el procesador mejorado. El procesador mejorado ejecuta las mismas instrucciones originales, menos las que hemos sustituido, m as las que equivalen a las sustituidas. Teniendo en cuenta que los accesos a bytes y halfwords suponen el 20 % de los accesos a memoria, la frecuencias de aparici on de LB/LH y SB/SH es de: Frecuencia LB/LH = 0,26 0,20 = 0.052 Frecuencia SB/SH = 0,13 0,20 = 0.026 Cada instrucci on LB/LH se sustituye por 3 nuevas instrucciones, y cada instrucci on SB/SH se sustituye por 8 nuevas instrucciones. Por tanto, la nueva cuenta de instrucciones es: I = I 0,052 1 + 0,052 3 0,026 1 + 0,026 8 = 1, 286I 3. CPI del procesador mejorado. Los ciclos de parada se modican debido a que las sustituciones de LB/LH introducen siempre un ciclo de parada, independientemente de si antes lo produc an o no. Tambi en hay que tener en cuenta que el numero total de instrucciones ha cambiado: 0,18 ,26 ,26 No de ciclos de parada: 1 2(Saltos)+ 0 0,80,251(LW )+ 0 0,21(LB/LH ) = 0, 359 ,29 1,29 1,29 CPI=1,36 ciclos. 4. Compararemos el tiempo de ejecuci on de la mejora propuesta con la conguraci on original. Original: T ej = I CP I T = I 1,43 5 = 7,15I ns Mejora: T ej = I CP I T = 1,286I 1,359 T = 1,75IT ns Igualando y despejando: T = 4.08 ns. Por lo tanto, la frecuencia deber a aumentar hasta 245 MHz para fuera interesante la propuesta.

Ejercicio 2.6. Se dispone de un procesador segmentado similar al MIPS. Las fases del ciclo de instrucci on son: IF (b usqueda de la instrucci on), ID (decodicaci on de la instrucci on y lectura de registros en el segundo semiciclo), EX (operaci on en la UAL, c alculo de direcci on, condici on y escritura de PC en branch, c alculo de la direcci on efectiva en load/store), M (acceso a memoria en load/store) y WB (escritura de registro, en su caso en el primer semiciclo). La etapa m as larga es EX, jando el reloj en 200 MHz. Todos los riesgos de datos y de control se resuelven insertando ciclos de parada, lo que supone que el CPI medio sea de 1.8. Los programas que se ejecutan contienen, por termino medio, los siguientes % de instrucciones: 10

Instruccion % LOAD 17 STORE 8 ALU 60 BRANCH 15 1. Se pretende modicar la ruta de datos para resolver los riesgos de datos mediante la t ecnica del cortocircuito. Como consecuencia, el retardo de la etapa EX aumenta hasta 5.5 ns. Por otra parte, un 30 % de las instrucciones load van seguidas de otra instrucci on que consume el dato cargado, lo que obliga a insertar ciclos de parada. Indica si es interesante realizar la modicaci on propuesta, cuanticando, en su caso, la mejora obtenida. 2. Partiendo de la m aquina que utiliza la t ecnica del cortocircuito, se plantea ahora utilizar la t ecnica de la carga retardada para evitar los ciclos de parada que se insertan al resolver los riesgos de datos en los que hay involucrada una instrucci on load. Tambi en se pretende utilizar el salto retardado para resolver los riesgos de control. Para ello, se modica el compilador para que coloque instrucciones u tiles en los delay slot, y si no lo consigue, inserte instrucciones NOP. El optimizador tiene la tasa de e xito siguiente: 30 % de los casos no encuentra ninguna instrucci on, insertando las instrucciones NOP necesarias. 40 % de los casos encuentra una sola instrucci on capaz de ocupar el delay slot. 20 % de los casos encuentra dos instrucciones capaces de ocupar el delay slot. 10 % de los casos encuentra tres o m as instrucciones capaces de ocupar el delay slot. Indica si es interesante la modicaci on propuesta, cuanticando, en su caso, la mejora obtenida. Soluci on: 1. Utilizaci on de la t ecnica del cortocircuito para resolver los riesgos de datos. Compararemos el tiempo de ejecuci on de la mejora propuesta (mejora1) con el obtenido con la conguracion original: T ej = I CP I T Original Mejora1 I I I CPI 1.8 1.35(*) T 5ns 5.5ns Tej 9I 7.43 I (*) Al ser un procesador segmentado, los CPI ser an 1 m as los ciclos de parada, los cuales se insertan cuando se ejecutan algunas instrucciones LOAD (el 30 %, 1 ciclo de parada) y cuando se ejecuta un BRANCH (2 ciclos de parada): No de ciclos de parada: 0,17 0,3 1 + 0,15 2 = 0,35 = 1,21 veces m as r apida que la original. La m aquina con forwarding es 7,9 43 2. Utilizaci on de la carga y salto retardados. Compararemos el tiempo de ejecuci on obtenido en las nuevas condiciones (mejora2) con el obtenido en el caso anterior. T ej = I CP I T

11

Mejora2 I 1.17 I (*) CPI 1 (+) T 5.5ns Tej 6.44 I (*) Hay que a nadir a I los NOPS necesarios, que se insertan cuando hay instrucciones LW (17 %) y BRANCH (15 %) y el compilador no es capaz de rellenar los delay-slot con instrucciones u tiles. En el caso de LW, hay que insertar una sola instrucci on en el 30 % de los casos (en el resto de casos, el compilador encuentra al menos una instrucci on para rellenar el delay-slot. En el caso de BRANCH, como el PC se escribe en la fase EX, el delay-slot es de 2 instrucciones, por lo que se insertan dos NOPS en un 30 % de los casos, y uno en otro 40 % de ellos: No de NOPs: 0,17 0,3 0,3 1 + 0,15 (0,3 2 + 0,4 1) = 0,1653 (+) Al aplicar la carga y el salto retardado, no se inserta ning un ciclo de parada. 7,43I a a La 2 mejora es 6,44I = 1,15 veces m as r apida que la la 1 mejora (un 15 % m as r apida). La 2a mejora es
9I 6,44I

= 1,40 veces m as r apida que la m aquina original (un 40 % m as r apida).

Ejercicio 2.7. Se dispone de un procesador segmentado, similar al MIPS, cuya ruta de datos se muestra en la gura.
IF
IF/ID

ID

ID/EX

EX

EX/MEM

MEM

MEM/WB

WB

2 3

3 Cero?

+4

4 Rfte1 Registros PC Memoria Instruccion 8 Rfte2 Rdst W R Memoria R 3 Ext. Signo 3 5 Datos 3

Al lado de cada componente se ha indicado, en cursiva, su retardo medido en ns. Los registros intermedios y el contador de programa (PC) tienen un retardo de 2 ns. Las etapas m as lentas son IF y MEM, cuyo retardo es de 10 ns (8 para acceder a memoria m as el retardo de los registros), lo que ja la frecuencia de reloj en 100 MHz. El banco de registros se escribe durante el primer semiciclo de reloj, y se lee durante el segundo. Se pretende resolver los riesgos de datos mediante la t ecnica del cortocircuito, y los riesgos de control insertando ciclos de parada. Los programas que se ejecutan contienen, por t ermino medio, los siguientes % de instrucciones: Instrucci on % LOAD 17 STORE 8 ALU 60 BRANCH 15 El 30 % de las instrucciones LOAD participa en un riesgo de datos que precisa insertar un ciclo de parada. 12

1. A nade a la ruta de datos los cortocircuitos necesarios para resolver los riesgos que se producen en el siguiente fragmento de c odigo, y dise na la l ogica de control que los aplica:
LD R1,100(R5) DADD R2,R3,R4 SD R1,200(R2)

2. Dise na la l ogica para resolver los riesgos de control. 3. Se plantea modicar la resoluci on de los riesgos de control, empleando la t ecnica del salto retardado. Para ello, se modica el compilador para que coloque instrucciones u tiles en el branch delay slot y, si no lo consigue, inserte tantas instrucciones NOP como haga falta. La tasa de e xito del optimizador es: 30 % de los casos no encuentra ninguna instrucci on, insertando las instrucciones NOP necesarias. 40 % de los casos encuentra una sola instrucci on capaz de ocupar el branch delay slot. 20 % de los casos encuentra dos instrucciones capaces de ocupar el branch delay slot. 10 % de los casos encuentra tres o m as instrucciones capaces de ocupar el branch delay slot. Indica si es interesante la mejora, cuantic andola de la forma la m aquina X es un % m as r apida que la Y. 4. Utilizando tambi en el salto retardado, con el objeto de reducir el branch delay slot se plantea escribir el PC en la fase EX, modicando la ruta de datos como se muestra en la gura. Compara esta soluci on con las anteriores, cuantic andola de la forma la m aquina X es un % m as r apida que la Y.
IF
IF/ID

ID

ID/EX

EX

EX/MEM

MEM

MEM/WB

WB

2 3

3 Cero?

+4

4 Rfte1 Registros PC Memoria Instruccion 8 Rfte2 Rdst W R Memoria R 3 Ext. Signo 3 5 Datos 3

Se nales disponibles: IF.stall, . . . , WB.stall: Mantienen la instrucci on en la misma etapa durante el siguiente ciclo de reloj. IF.stop, . . . , WB.stop: Convierten la instrucci on presente en la etapa correspondiente en nop. EX/MEM.cond: Indica, a TRUE, que el salto es efectivo. 13

WBtoID, etc: aplica el cortocircuito entre las fases indicadas. Para expresar la l ogica de control, utiliza el formato:
nal) SI EX/M.CODOP=IF/ID.Rfte2 ENT activar(se

Soluci on: 1. El diagrama instrucciones-tiempo correspondiente al segmento de codigo es el mostrado seguidamente:


1

lw r1,100(r5)

IF

ID

EX

MEM

WB

add r2,r3,r4

IF

ID

EX

MEM

WB

sw 200(r2),r1

IF

ID

EX

MEM

WB

Para ejecutar correctamente el codigo no es necesario insertar ciclos de parada, pero hay que efectuar dos cortocircuitos: Si ((MEM/WB.IRcodop = ld) AND (ID/EX.IRcodop = sd) AND (MEM/WB.IRRdst = ID/EX.IRRdst )) ent activar(WBtoEX) Si ((EX/MEM.IRcodop = alu) AND (ID/EX.IRcodop = sd) AND (EX/MEM.IRRdst = ID/EX.IRRf te1 )) ent activar(MEMtoEX) La ruta de datos con los cortocircuitos se muestra en la gura:
IF
IF/ID

ID

ID/EX

EX

EX/MEM

MEM

MEM/WB

2 3

3 Cero?

+4

4 Rfte1 Registros PC Memoria Instruccion 8 Rfte2 Rdst W R R

MEMtoEX

Memoria Datos

3 Ext. Signo 3 8 WBtoEX

2. La l ogica de control debe insertar ciclos de parada en cuanto se detecta la instrucci on de salto, hasta que alcanza la etapa WB: Salto IF ID EX M WB i1 IF IF IF OK IF ID EX M WB Si ((IF/ID.IRcodop = salto) OR (ID/EX.IRcodop = salto) OR (EX/MEM.IRcodop = salto)) ent activar(IF.stall,IF.stop) 14

3. Compararemos el tiempo de ejecuci on de la mejora propuesta (mejora1) con la conguracion original. T ej = I CP I T Original Mejora1 I I 1,29I (*) CPI 1.5 (+) 1.04(**) T 10ns 10ns Tej 15 I 13.42 I (*) Hay que a nadir a I los NOPS necesarios, que se insertan cuando hay instrucciones BRANCH (15 % de las ejecutadas) y el compilador no es capaz de rellenar el delay-slot con instrucciones u tiles. Como el PC se escribe en la fase MEM, el delay-slot es de 3 instrucciones y el compilador no siempre es capaz de encontrar tres instrucciones capaces de ocupar el delay-slot: No de NOPs: 0,15 (0,3 3 + 0,4 2 + 0,2 1) = 0, 29 (+) Al ser un procesador segmentado, los CPI ser an 1 m as los ciclos de parada, que se insertan cuando se ejecutan algunas instrucciones LOAD (30 % de LOAD, 1 ciclo de parada) y cuando se ejecuta un BRANCH (3 ciclos de parada): No de ciclos de parada: 0,17 0,3 1 + 0,15 3 = 0, 501 (**) El n umero de ciclos de parada se reduce a los insertados por las instrucciones LOAD, que suponen 17 de cada 129 instrucciones: 17 0,3 1 = 0, 039 No de ciclos de parada: 129 15I La m aquina mejorada es 13,42I = 1, 12 veces m as r apida que la original (un 12 % m as rapida) 4. Compararemos el tiempo de ejecuci on de la nueva mejora (mejora2) con las anteriores. T ej = I CP I T Mejora2 I 1.15 (*) CPI 1.04 (+) T 12ns (!) Tej 14.35 (*) Como el delay-slot es de 2 instrucciones, se a naden menos NOPS: No de NOPs: 0,15 (0,3 2 + 0,4 1) = 0, 15 (*) El n umero de ciclos de parada se reduce a los insertados por las instrucciones LOAD, que suponen ahora 17 de cada 115 instrucciones: 17 0,3 1 = 0, 044 No de ciclos de parada: 115 (!) El periodo de reloj se debe modicar de acuerdo a la etapa m as lenta, que es ahora EX: Retardo EX: 3+5+2 = 10, m as los 2 ns de los registros, ja el periodo de reloj en 12 ns. 15,01I a as r apida que la original (un 5 % m as rapida). La 2 mejora es 14,35I = 1, 05 veces m La 1a mejora es
14,35I 13,42I

= 1, 07 veces m as r apida que la 2a mejora (un 7 % m as rapida).

Ejercicio 2.8. Se dispone de un procesador similar al MIPS, cuya ruta de datos se muestra en la gura. El banco de registros se escribe durante el primer semiciclo de reloj, y se lee durante el segundo. Todos los riesgos de datos se resuelven aplicando la t ecnica del cortocircuito y los riesgos de control mediante la t ecnica predict-not-taken.

15

IF

IF/ID

ID

ID/EX

EX

EX/MEM

MEM

MEM/WB

WB

2 3

3 Cero?

+4

4 Rfte1 Registros PC Memoria Instruccion 8 Rfte2 Rdst W R R 3 Ext. Signo 3 5 Memoria Datos 3

1. A nade a la ruta de datos los cortocircuitos necesarios para resolver los riesgos que se producen en el siguiente fragmento de c odigo, y dise na la l ogica de control que los aplica:
DADD R2,R3,R5 ; CODOP Rdst,Rfte1,Rfte2 LD R1,60(R2) ; CODOP Rdst,desp(Rfte1) SD R1,20(R2) ; CODOP Rdst,desp(Rfte1) SD R1,40(R2) ; CODOP Rdst,desp(Rfte1)

2. Dise na la l ogica para resolver los riesgos de control. Se nales disponibles: IF.stall, . . . , WB.stall: Mantienen la instrucci on en la misma etapa durante el siguiente ciclo de reloj. IF.stop, . . . , WB.stop: Convierten la instrucci on presente en la etapa correspondiente en nop. EX/MEM.cond: Indica, a TRUE, que el salto es efectivo. Para expresar la l ogica de control, utiliza el formato:
SI (EX/M.CODOP=IF/ID.Rfte2) ENT activar(cortocircuito1)

Soluci on: 1. El diagrama instrucciones-tiempo correspondiente al segmento de c odigo es el mostrado seguidamente:

16

5
WBtoEX

DADD R2,R3,R5

IF

ID

EX

MEM
MEMtoEX

WB
WBtoMEM

LD R1,60(R2)

IF

ID

EX

MEM

WB

SD R1,20(R2)

IF

ID

EX

MEM
WBtoEX2

WB

SD R1,40(R2)

IF

ID

EX

MEM

WB

Para ejecutar correctamente el c odigo no es necesario insertar ciclos de parada, pero hay que efectuar cuatro cortocircuitos: Si ((EX/MEM.IRcodop = alu) AND (ID/EX.IRcodop = ld) AND (EX/MEM.IRRdst = ID/EX.IRRf te1 )) ent activar(MEMtoEX) Si ((MEM/WB.IRcodop = alu) AND (ID/EX.IRcodop = sd) AND (MEM/WB.IRRdst = ID/EX.IRRf te1 )) ent activar(WBtoEX) Si ((MEM/WB.IRcodop = ld) AND (EX/MEM.IRcodop = sd) AND (MEM/WB.IRRdst = ID/EX.IRRdst )) ent activar(WBtoMEM) Si ((MEM/WB.IRcodop = ld) AND (ID/EX.IRcodop = sd) AND (MEM/WB.IRRdst = ID/EX.IRRdst )) ent activar(WBtoEX2) La gura muestra la ruta de datos con los cortocircuitos a nadidos:
IF
IF/ID

ID

ID/EX

EX

EX/MEM

MEM
MEMtoEX

MEM/WB

WB
WBtoEX

2 3

3 Cero?

+4

4 Rfte1 Registros PC Memoria Instruccion 8 Rfte2 Rdst W R Memoria R 3 Ext. Signo 3 WBtoEX2 WBtoMEM 5 Datos 3

2. La l ogica de control debe buscar instrucciones posteriores a la de salto, hasta que se escribe el nuevo valor del PC (etapa MEM), cancel andolas en caso de que el salto sea efectivo: Salto IF ID EX MEM WB i1 IF ID EX i2 IF ID i3 IF dest IF ID EX MEM WB 17

La l ogica de control queda como sigue: Si ((EX/MEM.IRcodop = salto) AND (EX/MEM.cond =true)) ent activar(IF.stop,ID.stop,EX.stop)

Ejercicio 2.9. Un procesador con arquitectura registro-memoria tiene el ciclo de instrucci on segmentado en 6 etapas: IF: B usqueda de la instrucci on e incremento del PC. RF: Decodicaci on y lectura de registros (2o semiciclo). ALU1: C alculo de la direcci on efectiva en accesos a memoria y saltos. MEM: Acceso a memoria. ALU2: Operaciones aritm eticas, evaluaci on de la condici on de salto y escritura del nuevo PC, en su caso. WB: Escritura del registro destino (1er semiciclo). Todas las instrucciones ejecutan las 6 etapas. Hay dos tipos de instrucciones aritm eticas: Tipo R: ALUop Rdst,Rfte1,Rfte2 Tipo M: ALUop Rdst,Rfte1,desp(Rfte2) En el formato, Rdst, Rfte1 y Rfte2 ocupan los bits 11 al 15, 16..21, y 22..26, respectivamente. La m aquina posee arquitectura Harvard y resuelve los riesgos de datos mediante la t ecnica del cortocircuito. 1. Para evitar riesgos estructurales, cu al es el n umero m nimo de sumadores necesario en esta segmentaci on? Encuentra el n umero m nimo de puertos de lectura/escritura tanto para el banco de registros como para memoria, a n de evitar riesgos estructurales. 2. Si la m aquina utiliza la t ecnica del salto retardado, cu anto vale el delay-slot? 3. Tiene inter es aplicar una estrategia predict-taken para los saltos condicionales hacia posiciones anteriores del c odigo en este procesador? En caso armativo, qu e penalizaci on en ciclos de reloj conllevan los saltos correctamente predichos? 4. Dise na la l ogica de control de los multiplexores que aplican la t ecnica del cortocircuito tomando en consideraci on s olo la ejecuci on de instrucciones aritm eticas de tipo R. El nombre de los registros inter-etapas en la unidad de instrucci on segmentada es el resultado de concatenar los nemot ecnicos de las etapas que se separan (Ej.: IF/RF) 5. Cuando se ejecutan secuencias de instrucciones R-M, tales como: ADD R1,R2,R3 ADD R4,R5,100(R1) es necesario insertar alg un ciclo de parada? En caso armativo, dise na la l ogica que lo detecta. Soluci on: 1. Recursos necesarios para evitar riesgos estructurales. N umero de sumadores. Hay tres etapas que pueden requerir un sumador: 18

IF: para incrementar el PC ALU1: para calcular la direcci on efectiva de alguna referencia a memoria ALU2: para realizar alguna operaci on ALU Banco de registros: Se leen (2 registros) en la etapa RF, y se escribe (1 registro) en la etapa WB. Por tanto, necesitamos al menos 1 puerto de escritura y 2 puertos de lectura. Por otra parte, puesto que el banco de registros es de de ciclo partido, una optimizaci on ser a tener un unico puerto combinado de lectura/escritura m as otro puerto s olo de lectura. Memoria: Se lee en la etapa IF (instrucci on) y en la etapa MEM (dato), y se escribe en la etapa MEM (dato). Por tanto, se requieren dos puertos, uno de lectura y otro de lectura/escritura o bien una utilizar antememorias de instrucciones y datos separadas (arquitectura Harvard). 2. Tama no del delay slot. Puesto que el PC se escribe en la fase ALU2, es cuando la instrucci on de salto est a ejecutando la fase WB cuando se puede buscar la instrucci on destino del salto. Por lo tanto, se buscan y comienzan a ejecutar hasta 4 instrucciones entre la del salto y la instrucci on destino del mismo. Salto IF RF A1 ME A2 WB instr. 1 IF RF A1 ME A2 WB instr. 2 IF RF A1 ME A2 instr. 3 IF RF A1 ME instr. 4 IF RF A1 Destino IF RF 3. Inter es de una estrategia predict-taken. S , ya que: Se sabe la direcci on de salto antes que la condici on. Los saltos condicionales hacia atr as suelen ser efectivos en un alto porcentaje de los casos. La penalizaci on cuando la condici on se cumple es de dos ciclos de reloj: Salto IF RF A1 ME A2 WB instr. 1 IF RF instr. 2 IF Destino IF RF A1 ME 4. L ogica de control para resolver el riesgo de datos entre instrucciones de tipo R. Consideremos una secuencia de instrucciones: instr. 1 IF RF A1 ME A2 WB instr. 2 IF RF A1 ME A2 instr. 3 IF RF A1 ME A2 instr. 4 IF RF A1 ME A2 instr. 5 IF RF A1 ME A2 WB Aunque el banco de registros se lee en RF, los datos se necesitan en la fase ALU2. Por lo tanto, hay que realizar tres cortocircuitos: a) De WB a ALU2, si (ALU2/WB.IRcodop =Tipo R) & (MEM/ALU2.IRcodop =Tipo R) & & ((ALU2/WB.IR11.,15 =MEM/ALU2.IR16.,20 ) or (ALU2/WB.IR11.,15 =MEM/ALU2.IR22.,26 )) b) De WB a MEM, si (ALU2/WB.IRcodop =Tipo R) & (ALU1/MEM.IRcodop =Tipo R) & & ((ALU2/WB.IR11.,15 =ALU1/MEM.IR16.,20 ) or (ALU2/WB.IR11.,15 =ALU1/MEM.IR22.,26 )) 19

c) De WB a ALU1, si (ALU2/WB.IRcodop =Tipo R) & (RF/ALU1.IRcodop =Tipo R) & & ((ALU2/WB.IR11.,15 =RF/ALU1.IR16.,20 ) or (ALU2/WB.IR11.,15 =RF/ALU1.IR22.,26 )) 5. L ogica de control para resolver el riesgo de datos entre instrucciones de tipo R y R-M. Es necesario insertar dos ciclos de parada, ya que los datos se necesitan en la fase ALU1 para calcular la direcci on efectiva: instr. 1 IF RF A1 ME A2 WB instr. 2 IF RF RF RF A1 M instr. 3 IF IF IF RF A1 instr. 4 IF RF instr. 5 IF Hay que insertar un ciclo de parada si: (RF/ALU1.IRcodop =Tipo R) & (IF/RF.IRcodop =Tipo M) & (RF/ALU1.IR11.,15 =IF/RF.IR22.,26 ) (ALU1/MEM.IRcodop=Tipo R) & (IF/RF.IRcodop =Tipo M) & (ALU1/MEM.IR11.,15 =IF/RF.IR22.,26 )

Ejercicio 2.10. Los siguientes diagramas instruccionestiempo corresponden a la ejecuci on de ciertos fragmentos de c odigo en varios procesadores. Indica, para cada uno de los casos, qu e t ecnica se utiliza para resolver los riesgos de datos (inserci on de ciclos de parada o cortocircuito) y los riesgos de control (inserci on de ciclos de parada, predict-nottaken o salto retardado), as como la fase en la que se escribe el PC.
1. L L+4 L+8 L+12 L+16 L+20 L+24 L 2. L L+4 L+8 L+12 L+16 L+20 L 3. L L+4 L+8 L+12 L+16 L LW r2,a(r1) ADD r3,r2,r3 ADD r3,r4,r3 SUB r1,r1,#4 BNEZ r1, L SW z(r0), r3 ADD r3,r0,r0 LW r2,a(r1) LW r2,a(r1) ADD r3,r2,r3 ADD r3,r4,r3 SUB r1,r1,#4 BNEZ r1, L SW z(r0), r3 LW r2,a(r1) LW r2,a(r1) SUB r1,r1,#4 ADD r3,r2,r3 BNEZ r1, L ADD r3,r4,r3 LW r2,a(r1) IF ID EX M WB IF ID ID EX M IF IF ID EX IF ID IF WB M EX ID IF

WB M WB EX M WB ID IF IF ID EX M

WB

IF ID EX M WB IF ID ID EX M IF IF ID EX IF ID IF

WB M EX ID IF

WB M WB EX M WB IF IF IF ID EX M

WB

IF ID EX M IF ID EX IF ID IF

WB M WB ID EX M IF ID EX IF ID IF

WB M WB ID EX M WB IF ID EX M WB

Soluci on: 1. Riesgos de datos: cortocircuito; riesgos de control: predict-not-taken, escritura del PC en EX. 20

2. Riesgos de datos: cortocircuito; riesgos de control: inserci on de ciclos de parada, escritura del PC en M. 3. Riesgos de datos: inserci on de ciclos de parada; riesgos de control: salto retardado, escritura del PC en ID.

Ejercicio 2.11. Se dispone de un procesador MIPS con los siguientes operadores multiciclo: Sumador/Restador segmentado lineal. Lat= 2, IR= 1 Multiplicador segmentado lineal. Lat= 3, IR= 1 Divisor convencional. Lat= 4, IR=
1 4

Los riesgos estructurales y de datos se detectan en la fase ID, insertando tantos ciclos de parada como sean necesarios. Tambi en se utilizan cortocircuitos. Mostrar el diagrama de ejecuci on del siguiente fragmento de c odigo, representando las etapas que atraviesan cada una de las instrucciones, utilizando la siguiente notaci on: IF fase de b usqueda, ID fase de decodicaci on, EX fase de ejecuci on monociclo, A1,A2 fases de ejecuci on del sumador/restador, M1,M2,M3 fases de ejecuci on del multiplicador, D1,D2,D3,D4 fases de ejecuci on del divisor, ME fase de acceso a memoria y WB fase de escritura en registros. Las instrucciones multiciclo no realizan la fase ME.
L.D DIV.D ADD.D L.D MULT.D L.D F1, F4, F2, F4, F3, F5, 0(R1) F0, F1 F3, F4 4(R1) F4, F2 8(R1)

Soluci on:
1 2 3 L.D F1, 0(R1) IF ID EX DIV.D F4,F0,F1 IF ID ADD.D F2,F3,F4 IF L.D F4,4(R1) MULT.D F3,F4,F5 L.D F5,8(R1) 4 M ID IF 5 WB D1 ID IF 6 7 8 9 10 11 12 13 14 15 16

D2 D3 D4 WB ID ID ID A1 A2 WB IF IF IF ID EX M WB IF ID ID M1 M2 M3 WB IF IF ID ID EX M WB

Ejercicio 2.12. Se dispone de un procesador compatible con el juego de instrucciones del MIPS. En dicho procesador se ejecuta la siguiente secuencia de c odigo.
i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 L: L.D F0,X(R1) MULT.D F0,F0,F4 L.D F2,Y(R1) ADD.D F0,F0,F2 S.D F0,Y(R1) DSUB R1,R1,#8 BNEZ R1,L L.D F0,X(R1) MULT.D F0,F0,F4 L.D F2,Y(R1) DADD R1,R0,#dir

21

Identica al menos dos dependencias de cada tipo en el fragmento de c odigo anterior. Soluci on: La siguiente gura muestra algunas de las dependencias existentes en la secuencia de c odigo propuesta.
Dependencias de datos Antidependencias Dependencias de salida Dependencias de control

LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADDD F0,F0,F2 SD Y(R1),F0 SUB R1,R1,#8 BNEZ R1,L LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADD R1,R0,#dir

LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADDD F0,F0,F2 SD Y(R1),F0 SUB R1,R1,#8 BNEZ R1,L LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADD R1,R0,#dir

LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADDD F0,F0,F2 SD Y(R1),F0 SUB R1,R1,#8 BNEZ R1,L LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADD R1,R0,#dir

LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADDD F0,F0,F2 SD Y(R1),F0 SUB R1,R1,#8 BNEZ R1,L LD F0,X(R1) MULTD F0,F0,F4 LD F2,Y(R1) ADD R1,R0,#dir

Ejercicio 2.13. Aplica el m etodo de Tomasulo a la siguiente versi on del bucle SAXPY para el procesador MIPS funcionando a 80MHz. Las etapas de la unidad de ejecuci on para las instrucciones multiciclo son IF (b usqueda), ID (decodicaci on), I (lanzamiento a ejecuci on, aplicando el algoritmo de Tomasulo), En (ejecuci on en el operador multiciclo) y WB (escritura en el bus com un de datos). Todos los operadores multiciclo est an segmentados, con tasa de iniciaci on IR=1 y las siguientes latencias: 2 ciclos para load/store, 4 ciclos para suma/resta y 7 ciclos para multiplicaci on/divisi on. Cada operador tiene asociadas dos estaciones de reserva. Los riesgos de control se resuelven mediante salto retardado con delay-slot=1.
bucle: l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) add.d f6,f4,f6 s.d f6,y(r1) bnez r1,bucle dsub r1,r1,#8

Suponiendo que en el mismo ciclo se puede escribir un dato en el bus com un de datos e iniciar una operaci on que estuviera en espera de ese dato, dibuja el diagrama instrucciones-tiempo correspondiente a las dos primeras iteraciones e indica el estado en que se encuentran los operadores virtuales, tampones de lectura y escritura y los registros, en el ciclo 16. Calcula el tiempo de ejecuci on y los MFLOPS que alcanza el computador para ese fragmento de c odigo.

22

Estaci on a1 a2 m1 m2

Ocup.

Estaciones de reserva: Oper. Qj Vj

Qk

Vk

F0 busy Valor Qi Tampones de lectura: Nombre busy Direcci on l1 l2

Banco de Registros: F2 F4

F6

Tamp on s1 s2

Tampones de escritura: busy Vk Qk Direcci on

Soluci on: Seguidamente, se muestra c omo evoluciona el estado de la unidad de ejecuci on multiciclo en los primeros ciclos de la ejecuci on del bucle:

23

Ciclo 3: Lanzamiento de la instrucci on ld f2,x(r1)


Instruc-Tiempo l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) 1 2 3 4 IF ID I IF ID IF 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Estaciones de reserva: Banco de registros: Estaci on Ocup. Oper. Qj Vj Qk Vk a1 f0 f2 f4 f6 a2 Qi l1 m1 Vi a m2 Tampones de lectura: Tampones de escritura: Tamp on Ocup. Direcci on Tamp on Ocup. Qj Vj Direcci on l1 s x+[r1] e1 l2 e2 Ciclo 4: Lanzamiento de la instrucci on multd f4,f2,f0
Instruc-Tiempo l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) add.d f6,f4,f6 1 2 3 IF ID I IF ID IF 4 5 L1 I ID IF 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Estaciones de reserva: Banco de registros: Estaci on Ocup. Oper. Qj Vj Qk Vk a1 f0 f2 f4 f6 a2 Qi l1 m1 m1 s mult l1 a Vi a m2 Tampones de lectura: Tampones de escritura: Tamp on Ocup. Direcci on Tamp on Ocup. Qj Vj Direcci on l1 s x+[r1] e1 l2 e2

24

Ciclo 5: Lanzamiento de la instrucci on ld f6,y(r1)


Instruc-Tiempo l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) add.d f6,f4,f6 s.d f6,y(r1) 1 2 3 IF ID I IF ID IF 4 L1 I ID IF 5 6 L2 I ID IF 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Estaciones de reserva: Banco de registros: Estaci on Ocup. Oper. Qj Vj Qk Vk a1 f0 f2 f4 f6 a2 Qi l1 m1 l2 m1 s mult l1 a Vi a m2 Tampones de lectura: Tampones de escritura: Tamp on Ocup. Direcci on Tamp on Ocup. Qj Vj Direcci on l1 s x+[r1] e1 l2 s y+[r1] e2 Ciclo 6: Lanzamiento de la instrucci on addd f6,f4,f6
Instruc-Tiempo l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) add.d f6,f4,f6 s.d f6,y(r1) bnez r1,bucle 1 2 3 IF ID I IF ID IF 4 L1 I ID IF 5 L2 I ID IF 6 7 WB M1 L1 I ID IF 8 9 10 11 12 13 14 15 16 17 18 19 20

Estaciones de reserva: Banco de registros: Estaci on Ocup. Oper. Qj Vj Qk Vk a1 s add m1 l2 f0 f2 f4 f6 a2 Qi m1 a1 m1 s mult x1 a Vi a x1 m2 Tampones de lectura: Tampones de escritura: Tamp on Ocup. Direcci on Tamp on Ocup. Qj Vj Direcci on l1 e1 l2 s y+[r1] e2

25

Ciclo 7: Lanzamiento de la instrucci on sd y(r1),f6


Instruc-Tiempo l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) add.d f6,f4,f6 s.d f6,y(r1) bnez r1,bucle dsub r1,r1,#8 1 2 3 IF ID I IF ID IF 4 L1 I ID IF 5 L2 I ID IF 6 WB M1 L1 I ID IF 7 M2 L2 I ID IF 8 9 10 11 12 13 14 15 16 17 18 19 20

Estaciones de reserva: Estaci on Ocup. Oper. Qj Vj Qk Vk a1 s add m1 l2 a2 m1 s mult x1 a m2 Tampones de lectura: Tamp on Ocup. Direcci on l1 l2 s y+[r1]

Banco de registros: f0 f2 f4 f6 Qi m1 a1 Vi a x1

Tampones de escritura: Tamp on Ocup. Qj Vj Direcci on e1 s a1 y+[r1] e2

El diagrama instruccionestiempo evoluciona hasta el estado mostrado por la siguiente gura:


Instruc-Tiempo l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) add.d f6,f4,f6 s.d f6,y(r1) bnez r1,bucle dsub r1,r1,#8 l.d f2,x(r1) mult.d f4,f2,f0 l.d f6,y(r1) add.d f6,f4,f6 s.d f6,y(r1) bnez r1,bucle dsub r1,r1,#8 1 2 3 IF ID I IF ID IF 4 L1 I ID IF 5 L2 I ID IF 6 WB M1 L1 I ID IF 7 M2 L2 I ID IF 8 M3 WB EX ID IF 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

M4 M5 M6 M7 WB ME EX ID IF WB ME I ID IF WB L1 I ID IF A1 A2 A3 A4 WB - - - - S1 S2

L2 I ID IF

L1 I ID IF

WB M1 L2 I ID IF

M2 WB EX ID

M3 M4 M5 M6 M7 WB ME EX - - - - WB ME WB A1 A2 A3 A4 WB - - - - S1 S2

Nota: En la soluci on aparece un conicto de acceso al bus com un de datos (ciclo 13), que se ha resuelto dando prioridad a la instrucci on m as antigua.

26

El estado del la unidad de ejecuci on multiciclo en el ciclo 16 ser a la siguiente: Estaciones de reserva: Estaci on Ocup. Oper. Qj Vj a1 s add.d a*x1 a2 s add.d m2 m1 m2 s mult.d x2 Tampones de lectura: Tamp on Ocup. Direcci on l1 l2 Qk Vk y1 y2 a Tampones de escritura: Tamp on Ocup. Qj Vj Direcci on e1 s a1 y+[r1] e2 s a2 y-8+[r1] Banco de registros: f0 f2 f4 f6 Qi m2 a2 Vi a x2

En cuanto al c alculo del tiempo de ejecuci on, se observa que cada iteraci on requerir a 7 ciclos, cada una de las cuales realiza 2 operaciones en coma otante: T (n) = 7 n ciclos y los MFLOPS: R = l mn
oper T (n)

= l mn

2n 7n

2 7

oper/ciclos =

280106 7

oper/seg = 22,86 MFLOPS

Ejercicio 2.14. Cierto programa consume la mayor parte de su tiempo de ejecuci on llevando a cabo la siguiente operaci on: Y =Y +X Dicho programa se pretende ejecutar sobre dos procesadores MIPS y MIPS/T. Las dos m aquinas poseen operaciones de coma otante en su juego de instrucciones, funcionan a una frecuencia de 100 MHz, el CPI de las instrucciones enteras es 1 y el delay slot es de 1 instrucci on. En ambos procesadores, las instrucciones enteras atraviesan las siguientes etapas: IF (b usqueda de la instrucci on), ID (decodicaci on de la instrucci on, lectura de registros fuente y detecci on de riesgos), EX (ejecuci on), MEM (acceso a memoria, en su caso) y WB (escritura del resultado en el registro destino). En el MIPS, las etapas que atraviesa una instrucci on de coma otante son: IF, ID, En (ejecuci on en el operador multiciclo correspondiente) y WB. Los riesgos de datos se resuelven mediante cortocircuitos, insertando en ID los ciclos de parada necesarios. El MIPS/T posee gesti on din amica de instrucciones, aplicando el algoritmo de Tomasulo en una nueva etapa I (Issue) ubicada a continuaci on de ID, y escribiendo en el bus com un de datos en WB (duraci on de la transferencia 1 ciclo). Las caracter sticas de las unidades funcionales multiciclo no segmentadas de cada m aquina son las siguientes:
Uds. carga Sumadores Multiplicadores Uds. almacenamiento MIPS 1 (2 ciclos) 1 (3 ciclos) 1 (4 ciclos) 1 (2 ciclos) MIPS/T 1 (2 ciclos, 3 tampones) 1 (3 ciclos, 2 tampones) 1 (4 ciclos, 2 tampones) 1 (2 ciclos, 3 tampones) El c odigo generado por el compilador es el siguiente:
loop: L.D F2,X(R1) L.D F4,Y(R1) ADD.D F4,F2,F4 S.D F4,Y(R1) BNEZ R1,loop DSUB R1,R1,#8

Calcula el tiempo necesario, expresado en segundos, para procesar el fragmento de c odigo en cada una de las m aquinas, as como la velocidad de ejecuci on del mismo en MFLOPS para vectores de tama no muy grande. 27

Soluci on: 1. MIPS. La gura muestra el diagrama de ejecuci on de las instrucciones.


loop: 1 2 3 L.D F2,X(R1) IF ID L1 L.D F4,Y(R1) IF id ADD.D F4,F2,F4 if S.D Y(R1),F4 BNEZ R1,loop DSUB R1,R1,#8 L.D F2,X(R1) L.D F4,Y(R1) ADD.D F4,F2,F4 S.D F4,Y(R1) BNEZ R1,loop DSUB R1,R1,#8 L.D F2,X(R1) 4 L2 ID IF 5 WB L1 id if 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

loop:

L2 WB ID A1 A2 A3 WB IF id id ID S1 S2 if if IF ID EX M IF ID EX IF ID IF

WB M L1 id if

loop:

WB L2 WB ID L1 L2 WB IF id ID A1 A2 A3 WB if IF id id ID S1 S2 if if IF ID IF ID EX M WB IF ID L1 L2 WB

Cada iteraci on le cuesta 10 ciclos de reloj, por lo que el tiempo de ejecuci on ser a: 8 T (n) 10n ciclos @ 100 MHz = 10n 10 s. Como s olo hay 1 operaci on en coma otante por cada iteraci on, la velocidad sostenida ser a: 1100 R = 10 = 10 MFLOPS 2. MIPS/T:
loop: L.D F2,X(R1) L.D F4,Y(R1) ADD.D F4,F2,F4 S.D Y(R1),F4 BNEZ R1,loop DSUB R1,R1,#8 L.D F2,X(R1) L.D F4,Y(R1) ADD.D F4,F2,F4 S.D F4,Y(R1) BNEZ R1,loop DSUB R1,R1,#8 L.D F2,X(R1) 1 2 3 IF ID I IF ID IF 4 L1 I ID IF 5 L2 I ID IF 6 WB L1 I ID IF 7 L2 EX ID IF 8 WB M EX ID IF 9 10 11 12 13 14 15 16 17 18 19 20 21 22

loop:

A1 WB M I ID IF

A2 A3 WB - - - S1 S2 WB L1 I ID IF

L2 I ID IF

L2 I ID IF

WB L1 L2 WB - - - A1 A2 A3 WB - - - - - - - S1 S2 ID EX M IF ID I WB L1 L2 WB

loop:

Cada iteraci on le cuesta 6 ciclos de reloj, por lo que el tiempo de ejecuci on ser a: 8 T (n) 6n ciclos @ 100 MHz = 6n 10 s. Como hay 1 operaci on en coma otante por cada iteraci on: 100 = 16,7 MFLOPS R = 16

Ejercicio 2.15. Se dispone de un procesador similar al MIPS que ejecuta las operaciones de coma otante aplicando gesti on din amica de instrucciones basada en el algoritmo de Tomasulo. En dicho procesador se ha ejecutado un cierto c odigo, del cual se muestra su diagrama instruccionestiempo.
1 2 3 4 5 6 7 8 loop: L.D F2,X(R1) IF ID I L1 L2 L3 WB L.D F4,Y(R1) IF ID I - - L1 L2 ADD.D F6,F2,F4 IF ID I - - SUB.D F0,F0,F4 IF ID I - S.D F6,Y(R1) IF ID I BNEZ R1,loop IF ID EX DSUB R1,R1,#8 IF ID loop: L.D F2,X(R1) IF 9 L3 ME EX ID 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 WB WB ME I

A1 A2 A3 WB - A1 A2 A3 WB - - - - S1 S2 S3 WB L1 L2 L3 -

WB

28

L.D F4,Y(R1) ADD.D F6,F2,F4 SUB.D F0,F0,F4 S.D F6,Y(R1) BNEZ R1,loop DSUB R1,R1,#8

IF ID I IF ID I IF ID IF

I id if

L1 I ID IF

L2 I ID IF

L3 EX ID

WB ME EX

A1 WB ME

A2 A3 WB A1 A2 A3 WB - - - S1 S2 S3 WB

A partir de esta informaci on, determinar las caracter sticas del procesador en lo referente a: 1. Operadores disponibles en la ruta de datos de coma otante, n umero de operadores de cada tipo, la latencia de los mismos y detalles de implementaci on (segmentados lineales o no segmentados). 2. N umero m nimo de estaciones de reserva, tampones de lectura y escritura disponibles. 3. Existencia de una cola de instrucciones de coma otante entre la etapa ID e I. 4. Tiempo de transferencia por el bus com un de datos. 5. C omo se resuelven los riesgos de control. Se deber a justicar brevemente cada respuesta, indicando las instrucciones y los ciclos a partir de los cuales se ha extra do la informaci on. Soluci on: 1. Los operadores disponibles son: a) Un operador de carga no segmentado con latencia 3. Esta informaci on se puede obtener a partir de las instrucciones L.D F2,X(R1) y L.D F4,Y(R1) en los ciclos del 4 al 9. En este intervalo, aunque est an las dos operaciones disponibles, la segunda carga no comienza hasta que ha terminado la primera. b) Un operador de suma/resta segmentado lineal con latencia 3. Esta informaci on se puede obtener a partir de las instrucciones ADD.D F6,F2,F4 y SUB.D F0,F0,F4 en los ciclos del 11 al 14. En dichos ciclos se ejecutan solapadamente las dos instrucciones, pero la segunda comienza un ciclo m as tarde, lo que indica que no existen dos operadores distintos, ni dos unidades del operador de suma/resta. c) Un operador de almacenamiento con latencia 3. En la ejecuci on de la instrucci on S.D Y(R1),F6 en los ciclos 15 a 17 se puede determinar que existe un operador de almacenamiento de latencia 3 independiente del operador de carga, pues solapa su ejecuci on con una operaci on de carga durante los ciclos 14 y 15, y ya se hab a determinado que el operador de carga era no segmentado. No existe informaci on para determinar si el operador es segmentado o no. 2. Las estaciones de reserva disponibles son: a) Tampones de lectura: 2 como m nimo, puesto que en los ciclos del 4 al 6 hay dos instrucciones de carga lanzadas o en ejecuci on. b) Estaciones de reserva de suma/resta: exactamente 3. En el ciclo 13 la instrucci on SUB.D F0,F0,F4 no se puede lanzar porque no quedan estaciones de reserva, y se produce un ciclo de parada. En ese instante, hay 3 operaciones de suma/resta lanzadas o en ejecuci on. c) Tampones de escritura: 2 como m nimo, puesto que en los ciclos del 15 al 17 hay dos instrucciones de almacenamiento lanzadas o en ejecuci on.

29

3. No dispone de cola de instrucciones entre la etapa ID e I. Se puede observar que en el ciclo 15 se repite la etapa I de la instrucci on SUB.D F0,F0,F4, insert andose un ciclo de parada y bloqueando la instrucci on de almacenamiento en la etapa ID. Si existiera dicha cola de instrucciones, la instrucci on SD Y(R1),F6 habr a pasado a la cola y las instrucciones enteras habr an continuado su ejecuci on normalmente. 4. El tiempo de transferencia por el bus com un de datos es de un ciclo de reloj. Esto se puede obtener f acilmente observando los instantes en que se generan los resultados y comienzan las operaciones pendientes. Por ejemplo, en el ciclo 10 la instrucci on L.D F4,Y(R1) vuelca el dato procedente de la memoria sobre el bus, pero la instrucci on ADD.D F6,F2,F4 no comienza su ejecuci on hasta el ciclo 11. 5. Riesgos de control. Puesto que la instrucci on BNEZ R1,L salta, y no se cancela ninguna instrucci on, los riesgos de control se resuelven mediante un salto retardado con delay-slot igual a 1. Una estrategia predict-taken no puede ser, ya que la instrucci on siguiente al salto se ha buscado antes de decodicar BNEZ R1,L, por lo que no se ha podido calcular ninguna direcci on. Otra posibilidad factible ser a que se emplease un predictor din amico de saltos del tipo Branch Target Buffer, el cual obtiene la predicci on sin necesidad de decodicar la instrucci on de salto, en la etapa IF.

Ejercicio 2.16. Se tiene un procesador segmentado en 6 etapas (IF, IS, ID, EX, M, WB). La direcci on destino y la condici on de los saltos se calculan en las fases ID y EX, respectivamente. Mostrar las instrucciones que se buscar an despu es de la de salto y sus fases para las 4 opciones posibles (se predice que no salta y nalmente no salta, se predice que no salta y nalmente si salta, se predice que si salta y nalmente no salta, se predice que si salta y nalmente si salta), en los siguientes casos: 1. La m aquina utiliza un predictor del tipo Branch Prediction Buffer de 1 bit, que obtiene la predicci on en la fase ID. 2. La m aquina utiliza un predictor del tipo Branch Target Buffer, que obtiene su resultado durante la fase IS. Las instrucciones se representar an como: I.Salto, instrucci on de salto, PC+i (i= 1, 2, ...), instrucciones posteriores a la instrucci on de salto, Dest, instrucci on destino del salto y Dest+i (i= 1, 2, ...), instrucciones posteriores a la instrucci on destino del salto. Soluci on: Branch Prediction Buffer 1. Se predice que no salta y nalmente no salta.
Instrucci on I.Salto PC+1 PC+2 PC+3 PC+4 PC+5 PC+6 1 IF 2 IS IF 3 p,d ID IS IF 4 c EX ID IS IF 5 M EX ID IS IF 6 WB M EX ID IS IF 7 8 9 10 11 12

WB M EX ID IS IF

WB M EX ID IS

WB M EX ID

WB M EX

WB M

WB

30

2. Se predice que no salta y nalmente s salta.


Instrucci on I.Salto PC+1 PC+2 PC+3 DEST DEST+1 DEST+2 1 IF 2 IS IF 3 p,d ID IS IF 4 c EX ID IS IF 5 M 6 WB 7 8 9 10 11 12

IF

IS IF

ID IS IF

EX ID IS

M EX ID

WB M EX

WB M

WB

3. Se predice que s salta y nalmente no salta.


Instrucci on I.Salto PC+1 PC+2 DEST PC+1 PC+2 PC+3 1 IF 2 IS IF 3 p,d ID IS IF 4 c EX 5 M 6 WB 7 8 9 10 11 12

IF IF IS IF ID IS IF EX ID IS M EX ID WB M EX WB M

WB

4. Se predice que s salta y nalmente s salta.


Instrucci on I.Salto PC+1 PC+2 DEST DEST+1 DEST+2 DEST+3 1 IF 2 IS IF 3 p,d ID ID IF 4 c EX 5 M 6 WB 7 8 9 10 11 12

IF

IS IF

ID IS IF

EX ID IS IF

M EX ID IS

WB M EX ID

WB M EX

WB M

WB

Branch Target Buffer. 1. Se predice que no salta y nalmente no salta.


Instrucci on I.Salto PC+1 PC+2 PC+3 PC+4 PC+5 PC+6 1 IF 2 p IS IF 3 d ID IS IF 4 c EX ID IS IF 5 M EX ID IS IF 6 WB M EX ID IS IF 7 8 9 10 11 12

WB M EX ID IS IF

WB M EX ID IS

WB M EX ID

WB M EX

WB M

WB

31

2. Se predice que no salta y nalmente s salta.


Instrucci on I.Salto PC+1 PC+2 PC+3 DEST DEST+1 DEST+2 1 IF 2 p IS IF 3 d ID IS IF 4 c EX ID IS IF 5 M 6 WB 7 8 9 10 11 12

IF

IS IF

ID IS IF

EX ID IS

M EX ID

WB M EX

WB M

WB

3. Se predice que s salta y nalmente no salta.


Instrucci on I.Salto PC+1 DEST DEST+1 PC+1 PC+2 PC+3 1 IF 2 p IS IF 3 d ID IF 4 c EX IS IF IF IS IF ID IS IF EX ID IS M EX ID WB M EX WB M 5 M 6 WB 7 8 9 10 11 12

WB

4. Se predice que s salta y nalmente s salta.


Instrucci on I.Salto PC+1 DEST DEST+1 DEST+2 DEST+3 DEST+4 1 IF 2 p IS IF 3 d ID IF 4 c EX IS IF 5 M ID IS IF 6 WB EX ID IS IF M EX ID IS IF WB M EX ID IS 7 8 9 10 11 12

WB M EX ID

WB M EX

WB M

WB

Ejercicio 2.17. Un procesador dispone de un predictor din amico de saltos del tipo BTB (Branch Target Buffer) que obtiene su predicci on en la fase de b usqueda de la instrucci on. La direcci on y condici on de salto se calcula a en la 3 fase del ciclo de instruccion. La probabilidad de que un salto se encuentre en la tabla es del 80 % y de que se acierte en la prediccion es del 90 %. Los saltos son efectivos en el 60 % de los casos. Se pide: 1. Mostrar las instrucciones que se buscar an despu es de la de salto y sus fases para las opciones siguientes: No hay una entrada en la tabla de predicci on y el salto no salta. No hay una entrada en la tabla de predicci on y el salto salta. El predictor predice que no salta y nalmente el salto no salta. El predictor predice que no salta y nalmente el salto s salta. El predictor predice que s salta y nalmente el salto no salta. El predictor predice que s salta y nalmente el salto s salta. 32

Las instrucciones se representar an como: I.Salto, instrucci on de salto, PC+i (i= 1, 2, ...), instrucciones posteriores a la instrucci on de salto, Dest, instrucci on destino del salto y Dest+i (i= 1, 2, ...), instrucciones posteriores a la instrucci on destino del salto. Las fases del ciclo de instrucci on como F1, F2, etc... 2. Calcula el CPI medio de las instrucciones de salto. 3. Sup ongase que se puede modicar el dise no del BTB de dos formas. La primera consiste en aumentar el n umero de entradas de la tabla, de forma que aloje el 90 % de los saltos ejecutados. La segunda es utilizar un predictor de dos bits de manera que se aumente la precisi on de la predicci on hasta el 95 %. Cual de las dos es la que permite reducir los CPI de las instrucciones de salto? Soluci on: 1. Mostrar las instrucciones que se buscar an despu es de la de salto y sus fases para las opciones siguientes: No hay una entrada en la tabla de predicci on y el salto no salta. p d,c I. Salto F1 F2 F3 F4 F5 F6 PC + 1 F1 F2 F3 F4 F5 F6 0 ciclos de penalizaci on. PC + 2 F1 F2 F3 F4 F5 F6 PC + 3 F1 F2 F3 F4 F5 F6 No hay una entrada en la tabla de predicci on y el salto salta. p d,c I. Salto F1 F2 F3 F4 F5 F6 PC + 1 F1 F2 X 2 ciclos de penalizaci on. PC + 2 F1 X Dest F1 F2 F3 F4 F5 F6 El predictor predice que no salta y nalmente el salto no salta. p d,c I. Salto F1 F2 F3 F4 F5 F6 PC + 1 F1 F2 F3 F4 F5 F6 0 ciclos de penalizaci on. PC + 2 F1 F2 F3 F4 F5 F6 PC + 3 F1 F2 F3 F4 F5 F6 El predictor predice que no salta y nalmente el salto s salta. p d,c I. Salto F1 F2 F3 F4 F5 F6 PC + 1 F1 F2 X 2 ciclos de penalizaci on. PC + 2 F1 X Dest F1 F2 F3 F4 F5 F6 El predictor predice que s salta y nalmente el salto no salta. p d,c I. Salto F1 F2 F3 F4 F5 F6 Dest F1 F2 X 2 ciclos de penalizaci on. Dest + 1 F1 X PC + 1 F1 F2 F3 F4 F5 F6 El predictor predice que s salta y nalmente el salto s salta.

33

I. Salto Dest Dest + 1 Dest + 2

p F1

F2 F1

d,c F3 F2 F1

F4 F3 F2 F1

F5 F4 F3 F2

F6 F5 F4 F3

F6 F5 F4

0 ciclos de penalizaci on. F6 F5 F6

2. Calcula el CPI medio de las instrucciones de salto. La tabla siguiente muestra los casos posibles, as como la probabilidad de que se produzcan y su CPI (1 de la instrucci on de salto m as los posibles ciclos de parada: Caso Probabilidad CPI 1 0.2*0.4 1 2 0.2*0.6 3 3 0.8*0.4*0.9 1 4 0.8*0.6*0.1 3 5 0.8*0.4*0.1 3 6 0.8*0.6*0.9 1 CPI 1.4 Casos: 1. No hay una entrada en la tabla de predicci on y el salto no salta. 2. No hay una entrada en la tabla de predicci on y el salto salta. 3. El predictor predice que no salta y nalmente el salto no salta. 4. El predictor predice que no salta y nalmente el salto s salta. 5. El predictor predice que s salta y nalmente el salto no salta. 6. El predictor predice que s salta y nalmente el salto s salta. El CPI medio se calcula obteniendo la media aritm etica ponderada. 3. Sup ongase que se puede modicar el dise no del BTB de dos formas. La primera consiste en aumentar el n umero de entradas de la tabla, de forma que aloje el 90 % de los saltos ejecutados. La segunda es utilizar un predictor de dos bits de manera que se aumente la precisi on de la predicci on hasta el 95 %. Cual de las dos es la que permite reducir los CPI de las instrucciones de salto? Las tablas siguientes muestran los nuevo valores de la probabilidad de cada caso para cada una de las opciones: Se aumenta el tama no de la tabla de predicci on. Caso Probabilidad CPI 1 0.1*0.4 1 2 0.1*0.6 3 3 0.9*0.4*0.9 1 4 0.9*0.6*0.1 3 5 0.9*0.4*0.1 3 6 0.9*0.6*0.9 1 CPI 1.3 Se aumenta la precisi on en la predicci on.

34

Caso 1 2 3 4 5 6 CPI

Probabilidad 0.2*0.4 0.2*0.6 0.8*0.4*0.95 0.8*0.6*0.05 0.8*0.4*0.05 0.8*0.6*0.95

CPI 1 3 1 3 3 1 1.32

La primera opci on es ligeramente mejor que la segunda.

Ejercicio 2.18. Se dispone de un procesador con un juego de instrucciones similar al MIPS con una unidad de ejecuci on segmentada con las siguientes etapas: IF B usqueda de la instrucci on. ID Decodicaci on de la instrucci on y lectura de registros. ALU C alculo de la direcci on de destino del salto y de la direcci on de acceso a memoria. MEM Acceso a memoria. EX1 Primera fase de ejecuci on y c alculo de la condici on de salto. EX2 Segunda fase de ejecuci on. WB Escritura en registros. Se desea evaluar dos esquemas de predicci on de saltos para su implementaci on en el procesador. Los predictores que se desean evaluar son: un Branch Prediction Buffer y un Branch Target Buffer, los cuales ofrecen su predicci on al nal de la etapa ID. Ambos mecanismos est an implementados con 4 entradas en el buffer y utilizan un predictor de 2 bits, cuyo funcionamiento se ilustra en la gura:
Salta No salta

Prediccion: "Salta" Salta Salta No salta

Prediccion: "Salta" No salta Prediccion: "No salta" Salta No salta

Prediccion: "No salta"

Para la evaluaci on de los mecanismos de predicci on se utiliza un programa de prueba, del que se muestra un fragmento a continuaci on:

35

on Direcci ... 0x03 lfor: ... 0x05 ... lendif: ... ldo: 0x09 0x0A 0x0B 0x0C 0x0D

Instrucciones add r1, r0, r0

on Direcci ... 0x10 0x11 0x12 lbreak: ... 0x15 0x16 0x17 0x18

Instrucciones

beqz r1, lendif

add r2, r2, #1 slt r4, r2, #3 bnez r4, ldo

sub r8, r8, r2 slt r3, r2, #2 seq r4, r1, r0 and r5, r3, r4 beqz r5, lbreak

add r1, r1, #1 slt r6, r1, #2 bnez r6, lfor sw z(r0), r8

Inicialmente el Branch Prediction Buffer contiene todas las entradas en estado D, y el Branch Target Buffer tiene todas las entradas vac as. Cuando se a nade una nueva entrada en el Branch Target Buffer, su estado ser a A si el salto ha sido efectivo y D si el salto no ha sido efectivo. Las estad sticas nales de la ejecuci on del programa de prueba son las siguientes: el 15 % de las instrucciones son saltos condicionales, el 60 % de los saltos condicionales son efectivos (saltan), el Branch Prediction Buffer acierta en la predicci on el 75 % de los casos, y el Branch Target Buffer acierta en la predicci on el 90 %, incluyendo los casos en los que no hay una entrada en la tabla (los cuales se predicen como no salta). Se solicita: 1. Realizar una traza de la ejecuci on del fragmento de c odigo hasta que se complete la instrucci on sw z(r0), r8. Se deber a mostrar el contenido de las entradas de ambos predictores despu es de cada uno de los saltos (beqz r1, lendif, beqz r5, lbreak, bnez r4, ldo y bnez r6, lfor). Se deber an utilizar las etiquetas para anotar las direcciones de destino.
Instrucci on de salto beqz r1, lendif. (r1 = 0) BPB BTB Indice Estado Indice Dir. destino 00 01 10 11 Instrucci on de salto beqz r5, lbreak. (r5 = 1) BPB BTB Indice Estado Indice Dir. destino 00 01 10 11 Instrucci on de salto bnez r4, ldo. (r4 = 1)

Estado

Estado

36

BPB Indice 00 01 10 11

Estado

BTB Indice

Dir. destino

Estado

Instrucci on de salto beqz r5, lbreak. (r5 = 1) BPB BTB Indice Estado Indice Dir. destino 00 01 10 11 Instrucci on de salto bnez r4, ldo. (r4 = 1) BPB BTB Indice Estado Indice 00 01 10 11

Estado

Dir. destino

Estado

Instrucci on de salto beqz r5, lbreak. (r5 = 0) BPB BTB Indice Estado Indice Dir. destino 00 01 10 11 Instrucci on de salto bnez r6, lfor. (r6 = 1) BPB BTB Indice Estado Indice 00 01 10 11

Estado

Dir. destino

Estado

Instrucci on de salto beqz r1, lendif. (r1 = 1) BPB BTB Indice Estado Indice Dir. destino 00 01 10 11 Instrucci on de salto beqz r5, lbreak. (r5 = 0)

Estado

37

BPB Indice 00 01 10 11

Estado

BTB Indice

Dir. destino

Estado

Instrucci on de salto bnez r6, lfor. (r6 = 0) BPB BTB Indice Estado Indice 00 01 10 11

Dir. destino

Estado

2. Analizar el comportamiento de ambos predictores cuando se equivocan en la predicci on, indicando qu e instrucciones son las que se ejecutan en los ciclos siguientes al salto. Se deber a indicar en cada caso el n umero ciclos de ejecuci on perdidos. Las instrucciones canceladas se representar an con una X en el ciclo correspondiente. Las instrucciones siguientes al salto se representar an como pc+1, pc+2, ... y las instrucciones de destino del salto como dest, dest+1, etc. 3. Calcular el n umero medio de ciclos por instrucci on (CPI) para el programa de prueba, utilizando cada uno de los esquemas de predicci on propuestos. Suponer que las instrucciones que no son saltos se ejecutan con CPI=1. Determinar cu al es la mejor opci on atendiendo a los resultados de CPI obtenidos. Soluci on: 1. Traza de la ejecuci on. Instrucci on de salto 0x05 (00000101) beqz r1, lendif. (r1 = 0) Salta BTB BPB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif A 01 C 10 D 11 D Instrucci on de salto 0x0D (00001101) beqz r5, lbreak. (r5 = 1) No salta BPB BTB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif A 01 D 0x0D lbreak D 10 D 11 D Instrucci on de salto 0x12 (00010010) bnez r4, ldo. (r4 = 1) Salta

38

BPB Indice 00 01 10 11

Estado D D C D

BTB Indice 0x05 0x0D 0x12

Dir. destino Estado lendif A lbreak D ldo A

Instrucci on de salto 0x0D (00001101) beqz r5, lbreak. (r5 = 1) No salta BPB BTB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif A 01 D 0x0D lbreak D 10 C 0x12 ldo A 11 D Instrucci on de salto 0x12 (00010010) bnez r4, ldo. (r4 = 1) Salta BTB BPB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif A 01 D 0x0D lbreak D 10 A 0x12 ldo A 11 D

39

Instrucci on de salto 0x0D (00001101) beqz r5, lbreak. (r5 = 0) Salta BPB BTB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif A 01 C 0x0D lbreak C 10 A 0x12 ldo A 11 D Instrucci on de salto 0x17 (00010111) bnez r6, lfor. (r6 = 1) Salta BTB BPB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif A 01 C 0x0D lbreak C 10 A 0x12 ldo A 11 C 0x17 lfor A Instrucci on de salto 0x05 (00000101) beqz r1, lendif. (r1 = 1) No salta BTB BPB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif B 01 D 0x0D lbreak C 10 A 0x12 ldo A 11 C 0x17 lfor A Instrucci on de salto 0x0D (00001101) beqz r5, lbreak. (r5 = 0) Salta BTB BPB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif B 01 C 0x0D lbreak A 10 A 0x12 ldo A 11 C 0x17 lfor A Instrucci on de salto 0x17 (00010111) bnez r6, lfor. (r6 = 0) No salta BTB BPB Indice Estado Indice Dir. destino Estado 00 D 0x05 lendif B 01 C 0x0D lbreak A 10 A 0x12 ldo A 11 D 0x17 lfor B

40

2. Comportamiento de los predictores en caso de fallo en la predicci on. Para el BPB: Predice que no salta y s salta. I. Salto PC+1 PC+2 PC+3 PC+4 DEST IF p d ID ALU IF ID IF c ME EX1 EX2 ALU ME X ID ALU X IF ID X IF X IF WB

ID

ALU ME EX1 EX2

WB

Se producen cuatro ciclos de parada. Predice que s salta y no salta. I. Salto PC+1 PC+2 DEST DEST+1 PC+1 p IF ID IF d c ALU ME EX1 EX2 X X IF ID X IF X IF WB

ID

ALU ME EX1 EX2

WB

Se producen cuatro ciclos de parada. Para el BTB: Predice que no salta y s salta. I. Salto PC+1 PC+2 PC+3 PC+4 DEST IF p d ID ALU IF ID IF c ME EX1 EX2 ALU ME X ID ALU X IF ID X IF X IF WB

ID

ALU ME EX1 EX2

WB

Se producen cuatro ciclos de parada. Predice que s salta y no salta. I. Salto PC+1 DEST DEST+1 DEST+2 PC+1 p IF ID IF d c ALU ME EX1 EX2 X IF ID ALU X IF ID X IF X IF WB

ID

ALU ME EX1 EX2

WB

Se producen cuatro ciclos de parada. 3. CPI medio. Faltar a obtener la penalizaci on en caso de acierto en la predicci on. En caso de que el salto no sea efectivo, ninguno de los dos predictores tiene penalizaci on alguna. En caso contrario, el BPB puede buscar la instrucci on correcta en cuanto se conoce la direcci on (fase ALU), intro41

duciendo dos ciclos de parada, mientras que el BTB la busca tras acceder al predictor (fase ID), introduciendo s olo un ciclo. Para el BPB: Predicci on Condici on Probabilidad Penalizaci on No No 0.75*0.4 0 No Si 0.25*0.6 4 Si No 0.25*0.4 4 Si Si 0.75*0.6 2 El n umero medio de ciclos de parada de penalizaci on es: 1.9 ciclos. Teniendo en cuenta que los saltos son el 15 % de las instrucciones ejecutadas, y que el resto se ejecuta con CPI=1, el CPI medio es de: 1 + 0,15 1,9 = 1,29 ciclos. Para el BTB: Predicci on Condici on Probabilidad Penalizaci on No No 0.9*0.4 0 No Si 0.1*0.6 4 Si No 0.1*0.4 4 Si Si 0.9*0.6 1 El n umero medio de ciclos de parada de penalizaci on es: 0.94 ciclos, y el CPI medio de: 1 + 0,15 0,94 = 1,14 ciclos.

Ejercicio 2.19. El MIPS64 contiene la instrucci on condicional MOVZ Ra,Rb,Rc, donde Ra,Rb y Rc representan tres registros del procesador y cuyo signicado es el siguiente: MOVZ Ra,Rb,Rc Si (Rc=0) entonces Ra Rb 1. Modica el siguiente c odigo de manera que se emplee la nueva instrucci on:
DSLT DSUB BNEZ DADD L: R1,R3,R0 R2,R0,R3 R1,L R2,R3,R0

2. Justica las siguientes armaciones sobre las instrucciones condicionales: a) La utilizaci on de instrucciones condicionales no siempre reduce el n umero de instrucciones ejecutadas en un programa. b) Los procesadores s olo suelen incluir unas pocas instrucciones condicionales sencillas. Soluci on: 1. Un posible c odigo es:
DSUB R2,R0,R3 DSLT R1,R3,R0 MOVZ R2,R3,R1 L:

42

2. La utilizaci on de instrucciones condicionales no siempre reduce el n umero de instrucciones ejecutadas en un programa, ya que hay que incorporar la condici on a todas las instrucciones del guardadas por e sta. Estas instrucciones condicionales se ejecutan completamente, tanto si la condici on se cumple como sino. Sin embargo, empleando saltos condicionales, en cuanto la condici on no se cumple, ya no se ejecutan las instrucciones del bloque. Por otra parte, la adici on de instrucciones condicionales consume c odigos de operaci on, aumenta el n umero de instrucciones a decodicar y complica la implementaci on de la ruta de datos, lo que puede aumentar los CPI o el periodo de reloj. Todo esto, unido a que tienen una utilidad limitada, sugiere que se a nadan s olo unas pocas instrucciones condicionales.

Ejercicio 2.20. Se dispone de un procesador basado en el MIPS64, y diversos mecanismos para la realizaci on de especulaci on est atica. Se pretende evaluar el comportamiento de dichos mecanismos con el siguiente c odigo especulativo:
ld* r1, 0(r2) beqz r3, endif_1 dadd r1, r4, #8 endif_1: ld* r5, 0(r2) if_2: beqz r6, endif_2 dsub r5, r7, #1 endif_2: dadd r8, r1, r5 sd r8,0(r2) dadd r9, r0, #1 if_1: ; Carga especulativa

; Carga especulativa

El estado de los registros y de la memoria antes de ejecutar dicho c odigo es: R1 R2 R3 R4 R5 R6 R7 R8 R9 10 0 0 4 5 6 7 8 9 Cabe destacar que el acceso a la direcci on de memoria 0 est a prohibido, y que por lo tanto, cualquier intento de leer o escribir en dicha posici on lanzar a una excepci on por acceso ilegal. Indicar las instrucciones que lanzan alguna excepci on, y si e sta termina o no termina el programa, as como el valor de los registros al nalizar el programa, para los siguientes mecanismos: 1. Un procesador sin ayuda para la especulaci on. 2. Mecanismo de cooperaci on hardware/software sin distinci on entre instrucciones normales e instrucciones especulativas. Es decir, la rutina de servicio de la excepci on siempre devuelve un valor indenido, y no termina el programa. 3. Mecanismo de cooperaci on hardware/software con distinci on entre instrucciones normales e instrucciones especulativas. Es decir, la rutina de servicio de la excepci on devuelve un valor indenido si la instrucci on es especulativa, y termina el programa s olo en caso de que la instrucci on sea normal. 4. Especulaci on con poison bits. Utilizar las etiquetas indenido y sucio para indicar cuando el valor de un registro es indenido, o tiene el poison bit a 1, respectivamente. Soluci on: 43

Caso A: Un procesador sin ayuda para la especulaci on. Instrucciones ld* r1, 0(r2) Lanza excepci on Termina el prog. Acciones SI SI Termina

La instrucci on ld* r1, 0(r2) intenta acceder a una posici on protegida, se lanza una excepci on y la rutina de tratamiento de la excepci on hace terminar el programa. El contenido del banco de registros al nal de la ejecuci on del programa es: R1 10 R2 0 R3 0 R4 4 R5 R6 5 6 R7 7 R8 8 R9 9

Caso B: Mecanismo de cooperaci on hardware/software sin distinci on entre instrucciones normales e instrucciones especulativas. Instrucciones ld* r1, 0(r2) beqz r3, endif 1 ld* r5, 0(r2) beqz r6, endif 2 dsub r5, r7, #1 dadd r8, r1, r5 sd r8,0(r2) dadd r9, r0, #1 Lanza excepci on Termina el prog. Acciones SI NO r1= Indenido Salta SI NO r5= Indenido No salta r5= 7 - 1 = 6 r8= Indenido SI NO No almacena r9= 1

Las instrucciones ld* r1, 0(r2), ld* r5, 0(r2) y sd r8,0(r2) realizan un acceso ilegal a la posici on de memoria 0, generando una excepci on en todos los casos, pero la rutina de tratamiento de dicha excepci on devuelve un valor indenido y no termina con el programa. Nota: Las instrucciones no pueden detectar un valor indenido en un registro, y por lo tanto, la instrucci on dadd r8, r1, r5 no genera ning un tipo de excepci on. El contenido del banco de registros al nal de la ejecuci on del programa es: R1 Indef. R2 0 R3 R4 0 4 R5 6 R6 6 R7 7 R8 Indef. R9 1

Caso C: Mecanismo de cooperaci on hardware/software con distinci on entre instrucciones normales e instrucciones especulativas. Instrucciones ld* r1, 0(r2) beqz r3, endif 1 ld* r5, 0(r2) beqz r6, endif 2 dsub r5, r7, #1 dadd r8, r1, r5 sd r8,0(r2) Lanza excepci on Termina el prog. Acciones SI NO r1= Indenido Salta SI NO r5= Indenido No salta r5= 7 - 1 = 6 r8= Indenido SI SI Termina

Las instrucciones ld* r1, 0(r2), ld* r5, 0(r2) y sd r8,0(r2) realizan un acce44

so ilegal a la posici on de memoria 0, generando una excepci on en todos los casos. La rutina de tratamiento de dicha excepci on devolver a un valor indenido en caso de que la instrucci on sea especulativa (ld* r1, 0(r2) y ld* r5, 0(r2)), y no terminar a con el programa, y terminar a con el programa en caso de que se trate de una instrucci on normal (sd r8,0(r2)). Nota: Las instrucciones no pueden detectar un valor indenido en un registro, y por lo tanto, la instrucci on dadd r8, r1, r5 no genera ning un tipo de excepci on. El contenido del banco de registros al nal de la ejecuci on del programa es: R1 Indef. R2 0 R3 R4 0 4 R5 6 R6 6 R7 7 R8 Indef. R9 9

Caso D: Especulaci on con poison bits. Instrucciones ld* r1, 0(r2) beqz r3, endif 1 ld* r5, 0(r2) beqz r6, endif 2 dsub r5, r7, #1 dadd r8, r1, r5 Lanza excepci on Termina el prog. SI NO SI NO Acciones r1= Sucio Salta r5= Sucio No salta r5= 7 - 1 = 6 Termina

SI

SI

El contenido del banco de registros al nal de la ejecuci on del programa es: R1 Sucio R2 R3 0 0 R4 4 R5 6 R6 6 R7 7 R8 8 R9 9

Ejercicio 2.21. Se posee un procesador del tipo MIPS64 dotado de un banco de registros con poison bits, sobre el que se ejecuta el siguiente c odigo en alto nivel: if (ptr != NULL) a= *ptr + b; else a= b; El correspondiente c odigo especulativo en lenguaje ensamblador es: ld R4, 0(R2) ld* R5, 0(R1) dadd* R6, R4, R5 bnez R1, salto dadd R6, R0, R4 sd R6,0(R3)

salto:

donde se ha utilizado especulaci on est atica y las instrucciones especulativas est an marcadas con un asterisco on de (*). Teniendo en cuenta que el procesador aplicar a la t ecnica del poison bit, realizar una traza de la ejecuci dicho c odigo para los casos:

45

1. ptr = 0 (R1 = 0) Instrucciones Estado inicial 2. ptr = 1 (R1 = 1) Instrucciones Estado inicial Mem[R1] Mem[R2] Prohibido 4 Mem[R3] 0 R4 0 R5 0 R6 0 Mem[R1] Mem[R2] Prohibido 4 Mem[R3] 0 R4 0 R5 0 R6 0

3. ptr <> 0 (R1 <> 0) Instrucciones Estado inicial Mem[R1] Mem[R2] 5 4 Mem[R3] 0 R4 0 R5 0 R6 0

teniendo en cuenta que las direcciones 0 y 1 corresponden al n ucleo del SO, y por lo tanto, no se tiene permiso para acceder a ellas. En la traza se mostrar a el contenido de los registros R4, R5 y R6, y de la posici on de memoria Mem[R3], tras cada una de las instrucciones ejecutadas. Para indicar que un registro tiene el poison bit activo se utilizar a la palabra sucio y para indicar que no se sabe el contenido de la posici on de memoria se escribir a indenido. Indicar en cada caso, si se lanzar a una excepci on que termine el programa y despu es de que instrucci on. Soluci on: 1. ptr = 0 (R1 = 0) Instrucci on Mem[R1] Mem[R2] Mem[R3] Estado inicial Prohibido 4 0 ld R4,0(R2) Prohibido 4 0 ld* R5,0(R1) Prohibido 4 0 dadd* R6,R4,R5 Prohibido 4 0 bnez R1,salto Prohibido 4 0 dadd R6, R0, R4 Prohibido 4 0 sd R6,0(R3) Prohibido 4 4 No se produce ninguna excepci on. 2. ptr = 1 (R1 = 1) Instrucci on Mem[R1] Mem[R2] Mem[R3] Estado inicial Prohibido 4 0 ld R4,0(R2) Prohibido 4 0 ld* R5,0(R1) Prohibido 4 0 dadd* R6,R4,R5 Prohibido 4 0 bnez R1,salto Prohibido 4 0 sd R6,0(R3) Prohibido 4 0 Se produce una excepci on que termina el programa. 3. ptr <> 0 (R1 <> 0) Instrucci on Mem[R1] Mem[R2] Mem[R3] Estado inicial 5 4 0 ld R4,0(R2) 5 4 0 ld* R5,0(R1) 5 4 0 dadd* R6,R4,R5 5 4 0 bnez R1,salto 5 4 0 sd R6,0(R3) 5 4 9 No se produce ninguna excepci on. 46 R4 0 4 4 4 4 4 4 R5 0 0 Sucio Sucio Sucio Sucio Sucio R6 0 0 Sucio Sucio 4 4

R4 0 4 4 4 4 4

R5 0 0 Sucio Sucio Sucio Sucio

R6 0 0 0 Sucio Sucio Sucio

R4 0 4 4 4 4 4

R5 0 0 5 5 5 5

R6 0 0 0 9 9 9

Ejercicio 2.22. Se posee un procesador MIPS con soporte para la ejecuci on especulativa mediante la t ecnica de los poison bits. El procesador ejecuta todas las instrucciones mediante gesti on din amica de instrucciones usando el algoritmo de Tomasulo, pasando por las etapas IF (b usqueda de la instrucci on), I (decodicaci on y lanzamiento), Ei (ejecuci on multiciclo) y WB (escritura de registros). Todas las fases duran un ciclo de reloj, excepto la fase Ei cuya duraci on depende del operador multiciclo correspondiente. El procesador posee las siguientes caracter sticas: Un predictor del tipo Branch Target Buffer que nos ofrece la predicci on y la direcci on de salto al nal de la fase IF de la instrucci on de salto. Los bancos de registros, las estaciones de reserva y el bus tienen los bits y l neas necesarias para la implementaci on de la t ecnica de los poison bits. Las transferencias por el bus de coma otante ocupan un ciclo completo. Al comienzo de la fase WB de las operaciones de coma otante ya se ha liberado la estaci on de reserva correspondiente. Al nal de la fase de ejecuci on (en la fase WB, en su caso) cualquier operador que lo considere oportuno puede activar la l nea de excepci on fatal del bus, cancelando todas las operaciones que est en en marcha, o activar la l nea de poison bit. Caracter sticas de los operadores multiciclo: Tipo Unidades Latencia (ciclos) Otras Entera/Salto 1 1 4 estaciones de reserva (e1..4) Suma/Resta FP 1 2 Segmentada, 3 estaciones de reserva (a1..3) Mult./Divisi on FP 1 4 Segmentada, 3 estaciones de reserva (m1..3) Carga/Almac. FP 1 2 No segmentada 4 tampones carga (l1..4), 2 tampones almacenamiento (s1..2) A continuaci on se muestran el c odigo que se quiere ejecutar en lenguaje C y el c odigo en ensamblador generado por un compilador capaz de realizar especulaci on est atica.
if (a >= 0) { b= a + c / d; a= a - c * d; } /* endif */ l.d f2, a(r1) l.d* f4, c(r2) l.d* f6, d(r2) lt.d f2, f0 div.d* f8, f4, f6 add.d* f10, f2, f8 mult.d* f8, f4, f6 sub.d* f2, f2, f8 bc1t endif s.d f10,b(r1) s.d f2,a(r1) endif:

Las instrucciones especulativas est an indicadas con el c odigo *. El predictor predice (correctamente) que la instrucci on bc1t endif no salta. Se pretende ejecutar dicho c odigo bajo dos posibles supuestos, en los que var an el contenido de los registros y las posiciones de memoria ligeramente: 47

1.

f0 0 f0 0

f2 2 f2 2

f4 f6 4 6 f4 f6 4 6

f8 f10 8 10 f8 f10 8 10

a(r1) 10 a(r1) 10

b(r1) c(r2) 0 6 b(r1) c(r2) 0 8

d(r2) 3 d(r2) 0

2.

Se solicita: 1. Dibujar un diagrama temporal en el que se indique qu e fase est a ejecutando cada instrucci on en cada ciclo, para los dos supuestos anteriores. Para representar las fases de ejecuci on en el diagrama temporal utilizad E para el operador de entero/saltos, M1, M2, M3 y M4 para las fases de la multiplicaci on/divisi on, A1 y A2 para las fases de la suma/resta o comparaci on, y L1 y L2 para la unidad de carga/almacenamiento. Utilizad WB para una transferencia normal por el bus, PB cuando se active la l nea del poison bit y EF cuando se active la l nea excepci on fatal. 2. Mostrar el valor de los bancos de registros y de la memoria al nal de la ejecuci on del c odigo para cada supuesto. Utilizar la etiqueta sucio en el caso de que alg un registro tenga el poison bit activado. Indicar si el programa termina debido a la aparici on de alguna excepci on. Soluci on: 1. l.d f2, a(r1)
l.d* f4, c(r2) l.d* f6, d(r2) lt.d f2, f0 div.d* f8, f4, f6 add.d* f10, f2, f8 mult.d* f8, f4, f6 sub.d* f2, f2, f8 bc1t endif s.d f10,b(r1) s.d f2,a(r1) IF I L1 L2 IF I IF I IF WB L1 I IF L2 A1 I IF WB L1 A2 I IF

L2 WB I IF

WB I IF M1 I IF M2 M1 E I IF M3 M2 WB I M4 M3 WB - A1 A2 WB M4 WB - - A1 A2 WB S1 S2 - - S1 S2

f0 0

f2 f4 -8 6

f6 f8 3 18

f10 12

a(r1) -8

b(r1) 12
WB L1 I IF L2 A1 I IF

c(r2) 6
WB L1 A2 I IF

d(r2) 3

2. l.d f2, a(r1)


l.d* f4, c(r2) l.d* f6, d(r2) lt.d f2, f0 div.d* f8, f4, f6 add.d* f10, f2, f8 mult.d* f8, f4, f6 sub.d* f2, f2, f8 bc1t endif sd f10, b(r1) sd f2, a(r1)

IF I L1 L2 IF I IF I IF

L2 WB I IF

WB I IF M1 I IF M2 M1 E I IF M3 M2 WB I M4 M3 PB - A1 A2 PB M4 WB - - A1 A2 WB EF X

f0 0

f2 f4 f6 10 8 0

f8 0

f10 sucio

a(r1) 10

b(r1) 0

c(r2) 8

d(r2) 0

Ejercicio 2.23. Un procesador MIPS aplica planicaci on din amica de instrucciones con especulaci on para todas las instrucciones. Las instrucciones siguen las siguientes fases: IF B usqueda de la instrucci on. 48

IS Decodicaci on de la instrucci on y lanzamiento a ejecuci on siguiendo el m etodo de Tomasulo con especulaci on. Ei Ejecuci on en el operador correspondiente. WB Fase de transferencia de resultados por el bus interno (el resultado transferido est a disponible en el mismo ciclo de reloj). C Fase de conrmaci on. Escritura de resultados en el registro destino. Todas las fases duran un ciclo de reloj, excepto la fase Ei cuya duraci on depende del operador. El procesador dispone de un predictor de saltos del tipo branch target buffer que obtiene la predicci on al nal de la fase IF. Las caracter sticas de las unidades funcionales del procesador son: Tipo Aritm etica entera Multiplicaci on FP Suma/Resta FP Carga/Almac. FP Unidades Latencia (ciclos) 1 1 1 4 1 2 2 2 Otras 3 estaciones de reserva Segmentada, 4 estaciones de reserva Segmentada, 4 estaciones de reserva Segmentada 2 tampones carga, 2 tampones almacenamiento

Sobre dicho procesador se pretende ejecutar el siguiente fragmento de c odigo:


l.d l.d sub.d mult.d mult.d lt.d bc1t s.d ... f8,d(r0) f6,n(r0) f4,f2,f8 f8,f8,f4 f6,f6,f4 f8,f0 bucle f6,q(r0)

bucle:

; Salta si f8 < f0

La instrucci on lt.d f8,f0 se eval ua en la unidad de suma/resta, y escribe su resultado en un registro interno (registro de estado de coma otante). La instrucci on bc1t salto salta si el registro de estado de coma otante est a a true, calculando la direcci on de salto y evaluando la condici on en la unidad entera. En el momento de empezar a ejecutar este c odigo, el reorder buffer y los operadores se encuentran vac os, y el banco de registros y la memoria contienen los siguientes valores: F0 1 F2 F4 2 0 F6 0 F8 0 d(r0) 1 n(r0) 0.25

Obs ervese que, para los datos indicados, s olo debe ejecutarse una vez cada instrucci on del bucle. Sin embargo, sup ongase que el predictor predice incorrectamente que la instrucci on bc1t salto salta en las dos primeras iteraciones. 1. Dibuja un diagrama temporal en el que se indique qu e fase est a ejecutando cada instrucci on en cada ciclo, desde el ciclo en que la instrucci on l.d f8,d(r0) ejecuta la fase IF hasta el ciclo en que la instrucci on s.d f6, q(r0) termina completamente. 2. Muestra el estado del reorder buffer, de las estaciones de reserva y tampones y del banco de registros al nal del ciclo de reloj en que la instrucci on sub.d f4,f2,f8 de la primera iteraci on ejecuta la fase C.

49

Nota: Para representar las fases de ejecuci on en el diagrama temporal utilizar: M1, M2, M3 y M4 para las fases de la multiplicaci on/divisi on, A1, A2 para las fases de la suma/resta, L1, L2 para la unidad de carga/almacenamiento y EX para la unidad entera. Soluci on: Diagrama temporal

1 2 3 4 5 6 7 8 9 10 11 12 l.d f8,d(r0) IF IS L1 L2 WB C l.d f6,n(r0) IF IS L1 L2 WB C sub.d f4,f2,f8 IF IS A1 A2 WB C mult.d f8,f8,f4 IF IS r4 M1 M2 M3 M4 WB C mult.d f6,f6,f4 IF IS r5 M1 M2 M3 M4 WB lt.d f8,f0 IF IS r6 r6 r6 A1 A2 bc1t bucle IF IS r7 r7 r7 r7 sub.d f4,f2,f8 IF IS r8 r8 A1 mult.d f8,f8,f4 IF IS r9 r9 mult.d f6,f6,f4 IF IS r10 lt.d f8,f0 IF IS bc1t bucle IF sub.d f4,f2,f8 mult.d f8,f8,f4 mult.d f6,f6,f4 s.d f6,q(r0)

13

14

15

16

17

18

19

20

C WB EX A2 r9 r10 r11 IS IF

C WB A2 r9 r10 r11 r12 IS IF

C WB r9 r10 r11 r12 r13 IS IF IF IS C L1 L2

Estado en el ciclo 8:
Nombre E1 E2 E3 E4 A1 A2 A3 A4 M1 M2 M3 M4 busy 1 op Salto Estaciones de reserva: Qj Vj Qk #6 Vk reorder #7

0 1

+ <

2 #4

1.0 1.0

#3 #6

1 1

* *

1.0 0.25

1.0 1.0

#4 #5

50

Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

busy 0 0 0 1 1 1 1

Reorder buffer: instr estado l.d f8,d(r0) l.d f6,n(r0) sub.d f4,f2,f8 mult.d f8,f8,f4 mult.d f6,f6,f4 lt.d f8,f0 bc1t bucle

dest F8 F6 F4 F8 F6 FPSR bucle

value 1.0 0.25 1.0

pred

Salta

F0 busy reorder valor

1.0

Registros: F2 F4 F6 0 1 #3 #5 2.0 1.0 0.25

F8 1 #4 1.0

FPSR 1 #6

Tampones de lectura: Nombre busy Direcci on l1 0 d l2 0 n

reorder #1 #2

Tamp on s1 s2

Tampones de escritura: busy Vk Qk Direcci on

conf

Ejercicio 2.24. Un procesador compatible binario con el MIPS64 aplica gesti on din amica de instrucciones con especulaci on hardware. Las instrucciones siguen las siguientes fases: IF B usqueda de la instrucci on. IS Decodicaci on de la instrucci on y lanzamiento a ejecuci on siguiendo el m etodo de Tomasulo con buffer de reordenaci on. Ei Ejecuci on en el operador correspondiente. WB Fase de transferencia de resultados por el bus interno (el resultado transferido no estar a disponible hasta el siguiente ciclo). C Fase de conrmaci on. Escritura de resultados en el registro destino. Todas las fases duran un ciclo de reloj, excepto la fase Ei cuya duraci on depende del operador. El procesador dispone de un predictor de saltos perfecto que obtiene la predicci on y direcci on de destino al nal de la fase IF.

51

Las caracter sticas de las unidades funcionales del procesador son: Tipo Aritm etica entera Suma/Resta FP Multiplicaci on FP Carga/Almac. FP Unidades Latencia (ciclos) Otras 1 1 3 estaciones de reserva (E1..3) 1 2 Segmentada, 3 estaciones de reserva (A1..3) 1 4 Segmentada, 2 estaciones de reserva (M1..2) 1 2 No segmentada 2 tampones carga (L1..2), 2 tampones almacenamiento (S1..2)

Sobre dicho procesador se pretende ejecutar el siguiente fragmento de c odigo:


l.d l.d mult.d l.d sub.d s.d dsub bnez f0, A(r0) f2, X(r1) f4, f2, f0 f6, Y(r1) f4, f4, f6 f4, Z(r1) r1, r1, #8 r1, salto

salto:

En el momento de empezar a ejecutar este c odigo, el reorder buffer y los operadores se encuentran vac os. Los valores accedidos de los vectores X e Y se representar an como: x1, x2, ... e y1, y2, ... respectivamente. El valor que se encuentra en la direcci on Mem[R0 + A] es a. Mostrar el diagrama temporal de ejecuci on de las dos primeras iteraciones, y el estado de las estructuras de datos al nal del ciclo en que el salto bnez r1, salto entra por segunda vez en la fase de b usqueda (IF). Calcular los MFLOPS que alcanzar a este c odigo en un procesador con una frecuencia de reloj de 150 MHz. Nota: Para representar las fases de ejecuci on Ei en el diagrama temporal utilizar: EX para operaciones enteras, Ai para la suma y resta otante, Mi para la multiplicaci on otante y Li para las cargas y los almacenamientos; donde el sub ndice indica el n umero de ciclos en ejecuci on (1, 2, ...). Soluci on: Estado de la unidad de ejecuci on en el ciclo 15:

52

Estaciones de reserva: Nombre busy op Qj Vj Qk Vk reorder E1 SI [r 1] 8 8 14 E2 E3 A1 A2 SI - 10 11 12 A3 M2 M1 SI * x2 a 10 Tampones de lectura Nombre busy Direcci on reorder L1 L2 Si Y+[r1] #11 Tampones de escritura Nombre busy Direcci on Qk Vk conf S1 SI Z+[r1] a x1 y 1 S2 SI Z+[r1]-8 12

Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Reorder buffer: busy instr estado dest NO l.d f0, A(r0) F0 NO l.d f2, X(r1) F2 NO mult.d f4, f2, f0 F4 NO l.d f6, Y(r1) F6 SI sub.d f4, f4, f6 W F4 SI s.d f4,Z(r1) W s1 SI dsub r1, r1, #8 W R1 SI bnez r1, salto W salto SI l.d f2, X(r1) W F2 SI mult.d f4, f2, f0 F4 SI l.d f6, Y(r1) F6 SI sub.d f4, f4, f6 F4 SI s.d f4,Z(r1) W s2 SI dsub r1, r1, #8 R1

valor prediccion a x1 a x1 y1 a x1 y 1 [r 1] 8 salta x2

salta

F0 Busy Reorder Valor

Banco de registros: F2 F4 SI SI 9 12 a x1 a x1

F6 SI 11 y1

R1 SI 14 [r 1]

Diagrama temporal:

53

l.d l.d mult.d l.d sub.d s.d dsub bnez l.d mult.d l.d sub.d s.d dsub bnez

f0, f2, f4, f6, f4, f4, r1, r1, f2, f4, f6, f4, f4, r1, r1,

A(r0) X(r1) f2, f0 Y(r1) f4, f6 Z(r1) r1, #8 salto X(r1) f2, f0 Y(r1) f4, f6 Z(r1) r1, #8 salto

1 2 3 IF I L1 IF I IF

4 L2 I IF

5 W L1 I IF

6 C L2 I IF

7 W L1 I IF

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

C M1 M2 M3 M4 W L2 W - - - - -

C C A1 A2 W C C L1 L2 C C C M1 M2 M3 M4 W L2 W - - - - I EX W IF I C C A1 A2 W C C EX EX W L1 L2 C C

I EX W IF I - EX EX W IF I L1 L2 L2 IF I - IF I IF I IF

W L1 I IF

Sin contar la primera instrucci on, que no pertenece al bucle principal, el procesador propuesto lanza una instrucci on por ciclo, luego tarda 7 ciclos en lanzar las instrucciones pertenecientes a una iteraci on. En cada iteraci on del bucle se realizan 2 operaciones de coma otante (multd y subd). As pues, los MFLOPs que puede alcanzar este procesador en la ejecuci on del presente c odigo son: R = 300 2 op./ciclo 150 106 ciclos/seg. = 106 op./seg. = 42,86 MF LOP S 7 7

Ejercicio 2.25. Se pretende utilizar el c odigo correspondiente al bucle y = a x para evaluar las prestaciones de cierto computador. Dicho computador posee un procesador similar al MIPS que aplica especulaci on hardware para todas las instrucciones. Las instrucciones siguen las siguientes fases: IF B usqueda de la instrucci on. I Decodicaci on de la instrucci on y lanzamiento a ejecuci on siguiendo el m etodo de Tomasulo con especulaci on. Ei Ejecuci on en el operador correspondiente. WB Fase de transferencia de resultados por el bus com un de datos. C Fase de conrmaci on. Escritura de resultados en el registro destino. Comprobaci on de la predicci on y cancelaci on de las intrucciones, en su caso. Todas las fases duran un ciclo de reloj, excepto la fase Ei cuya duraci on depende del operador. El procesador dispone de un predictor de saltos de dos bits, del tipo branch target buffer, que obtiene la predicci on al nal de la fase IF. El tiempo de transferencia por el bus com un de datos es de 1 ciclo de reloj. Las caracter sticas de las unidades funcionales del procesador son: Tipo Aritm etica entera Multiplicai on FP Carga/Almac. FP Unidades Latencia (ciclos) 1 1 1 3 1 2 Otras 3 estaciones de reserva Segmentada, 3 estaciones de reserva No segmentada 3 tampones carga, 3 tampones almacenamiento

El c odigo que genera el compilador para dicho bucle es el siguiente:

54

loop:

l.d f2,x(r1) mult.d f2,f2,f0 s.d y(r1),f2 dsub r1,r1,#8 bnez r1,loop <sgte>

El estado de los registros y la memoria, antes de la u ltima iteraci on, es el siguiente: Reg. R1 Valor 8 F0 3 F2 2 Mem Valor x x+8 100 102 y y+8 10 12

1. Dibuja un diagrama instrucciones-tiempo en el que se muestre la ejecuci on de las instrucciones que se lanzan en la u ltima iteraci on del bucle, hasta el ciclo en el que se busca la instrucci on <sgte>. Advi ertase que el predictor predecir a incorrectamente la instrucci on bnez r1, loop (predice que salta y nalmente no salta). Para representar las fases de ejecuci on en el diagrama utilizar: M1, M2 y M3 para las fases de la multiplicaci on, L1 y L2 para la unidad de carga/almacenamiento y EX para la unidad entera. 2. Suponiendo que los campos rob del banco de registros y el reorder buffer est an vacios antes de ejecutar la u ltima iteraci on, muestra cu al ser a el estado del reorder buffer, el banco de registros y de la memoria al nal del ciclo de reloj en el que la instrucci on sd y(r1), f2 ejecuta la fase Commit. 3. Sup ongase ahora que el salto bnez r1, loop no se encuentra en la tabla al comenzar la ejecuci on del bucle, que el valor inicial de R1 es 160 y que, a lo largo de la ejecuci on del bucle, el predictor falla dos de las predicciones con entrada en la tabla (considerando s olo los saltos que llegan a la etapa Commit). Indicar, justicando la respuesta, el tiempo de ejecuci on del bucle en ciclos. Considerar que el bucle acaba cuando la instrucci on de salto de la u ltima iteraci on llega a la etapa Commit. Soluci on: 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 loop: l.d f2,x(r1) IF I L1 L2 WB C mult.d f2,f2,f0 IF I - - M1 M2 M3 WB C s.d f2,y(r1) IF I - - - - - - C S1 S2 dsub r1,r1,#8 IF I EX WB C bnez r1,loop IF I - EX - WB C loop: l.d f2,x(r1) IF I L1 L2 - WB X mult.d f2,f2,f0 IF I - - - M1 X s.d f2,y(r1) IF I - - - X dsub r1,r1,#8 IF I EX WB X bnez r1,loop IF I - X loop: l.d f2,x(r1) IF I X mult.d f2,f2,f0 IF X s.d f2,y(r1) X <sgte> IF

2. Estado al nal del ciclo 11. Reorder buffer:

55

Entrada busy instr 1 NO load 2 NO alu 3 NO store 4 SI alu 5 SI branch 6 SI load 7 SI alu 8 SI store 9 SI alu 10 SI branch Registros y memoria: Reg. Valor rob R1 8 #9 F0 3 F2 306 #7 Mem Valor

Reorder buffer: estado WB WB WB WB WB WB WB

dest f2 f2 s1 r1 f2 f2 s2 r1

valor prediccion 102 306 0 No salta Salta 100 Salta

x x+8 y 100 102 10

y+8 12

3. Con el valor de R1 a 160, el bucle realizar a 20 iteraciones. Cuando el predictor acierta, el tiempo para realizar una iteraci on es de 5 ciclos de reloj. Cada vez que se falla en la predicci on (dos veces) o no se encuentra el salto en la tabla del predictor (la primera iteraci on) se pierden 8 ciclos, por lo tanto: Tejecucion = 20 5 + 3 8 = 100 + 24 = 124 ciclos

Ejercicio 2.26. Se tiene el siguiente c odigo en ensamblador del MIPS, obtenido tras la compilaci on de B := A + y B :
; F2 contiene y loop: L.D F4, A(R1) L.D F6, B(R1) MULT.D F6,F6,F2 ADD.D F4,F4,F6 S.D B(R1),F4 DSUB R1,R1,#8 BNEZ R1, loop

Se pretende ejecutar este programa sobre dos procesadores MIPS/T y MIPS/S. Los dos incorporan instrucciones de coma otante y funcionan a 600 MHz. Tambi en resuelven los riesgos de control mediante un predictor perfecto de cero ciclos de penalizaci on. Las instrucciones pasan por las siguientes fases para ejecutarse: IF: B usqueda de instrucci on. I: Decodicaci on de la instrucci on. En : Ejecuci on en el operador correspondiente. WB: Escritura del resultado en el registro destino.

56

Todas las fases duran un ciclo de reloj, excepto la fase En que puede durar varios ciclos, en funci on del tipo de instrucci on. La unidad de ejecuci on dispone de los siguientes operadores independientes: Tipo Unidades Latencia (ciclos) Otras Entera 1 1 5 estaciones de reserva Carga/almac. 1 2 Segmentada, 4 tampones lectura, 4 tampones escritura Suma otante 1 3 Segmentada, 4 estaciones de reserva Mult. otante 1 5 Segmentada, 4 estaciones de reserva Los dos procesadores dieren en la forma de buscar y lanzar las instrucciones. El MIPS/T permite ejecutar las instrucciones fuera de orden, aplicando para ello el algoritmo de Tomasulo para todas las instrucciones (en las fases I y WB). Por su parte, el MIPS/S, adem as de permitir la ejecuci on fuera de orden, es capaz de buscar y lanzar a ejecuci on dos instrucciones en cada ciclo de reloj. Los dos tienen bancos de registros enteros y de coma otante separados, teniendo el MIPS/T dos puertos de lectura y uno de escritura en cada uno, mientras que el MIPS/S tiene cuatro puertos de lectura y dos de escritura en cada banco. Para cada uno de los procesadores: 1. Dibuja un diagrama en el que se indique, para cada instrucci on y ciclo de reloj, qu e fase de la instrucci on se est a ejecutando. Considera u nicamente la primera iteraci on del bucle. Para representar las fases de ejecuci on en el diagrama utilizar: A1, A2 y A3 para las fases de la suma, M1, M2, M3, M4 y M5 para las fases de la multiplicaci on, L1 y L2 para la unidad de carga/almacenamiento y EX para la unidad entera. 2. Calcula el tiempo de ejecuci on para vectores de 10000 componentes. Soluci on: Para el MIPS/T:
1 2 loop: L.D F4, A(R1) IF I L.D F6, B(R1) | IF MULT.D F6,F6,F2| ADD.D F4,F4,F6 | S.D F4,B(R1) | DSUB R1,R1,#8 | BNEZ R1, loop | loop: L.D F4, A(R1) | L.D F6, B(R1) | MULT.D F6,F6,F2| ADD.D F4,F4,F6 | S.D F4,B(R1) | DSUB R1,R1,#1 | BNEZ R1, loop | | 3 L1 I IF 4 L2 L1 I IF 5 WB L2 m1 I IF 6 WB m1 a1 I IF 7 8 9 10 11

M1 a1 s1 I IF

Bucle=7

M2 a1 s1 EX I IF | | | | | | |

M3 a1 s1 WB i1 I IF

M4 M5 WB a1 a1 a1 A1 A2 A3 WB s1 s1 s1 s1 s1 s1 s1 L1 L2 EX L1 I IF WB L2 L1 I IF

L2 L1 m2 I IF

WB L2 m2 a2 I IF

WB m2 a2 s2 I IF

M1 a2 s2 EX I

M2 a2 s2 WB i1

M3 M4 M5 WB a2 a2 a2 a2 A1 A2 A3 WB s2 s2 s2 s2 s2 s2 s2 s2 L1 L2 EX WB

Cada iteraci on necesita 7 ciclos de reloj. Por lo tanto, para 10000 componentes, el tiempo de ejecuci on son 70000 ciclos @ 600 MHz = 1.17 104 s. Para el MIPS/S:
1 loop: L.D F4, A(R1) IF L.D F6, B(R1) IF MULT.D F6,F6,F2| ADD.D F4,F4,F6 | S.D F4,B(R1) | DSUB R1,R1,#1 | BNEZ R1, loop | <sigte> | loop: L.D F4, A(R1) | L.D F6, B(R1) | MULT.D F6,F6,F2| ADD.D F4,F4,F6 | S.D F4,B(R1) | 2 I I IF IF 3 L1 l2 I I IF IF 4 L2 L1 m1 a1 I I IF IF 5 6 7 8 WB L2 WB m1 m1 M1 M2 a1 a1 a1 a1 s1 s1 s1 s1 EX WB I i1 EX WB cancelada IF I L1 L2 IF I l2 L1 | IF I m2 | IF I a2 | IF I 9 10 11

M3 M4 M5 WB a1 a1 a1 a1 A1 A2 A3 WB s1 s1 s1 s1 s1 s1 s1 s1 L1 L2

WB L2 m2 a2 s2

WB m2 M1 M2 M3 M4 M5 WB a2 a2 a2 a2 a2 a2 a2 A1 A2 A3 WB s2 s2 s2 s2 s2 s2 s2 s2 s2 s2 s2 L1 L2

57

DSUB R1,R1,#8 BNEZ R1, loop <sigte>

| | | | | Bucle=4

| | | | |

IF I EX WB IF I i1 EX WB IF cancelada

Cada iteraci on necesita 4 ciclos de reloj. Por lo tanto, para 10000 componentes, el tiempo de ejecuci on son 40000 ciclos @ 600 MHz = 6.7 105 s.

Ejercicio 2.27. Se pretende utilizar el c odigo correspondiente al bucle y = ax + by + c para evaluar las prestaciones de cierto computador. Dicho computador posee un procesador superescalar de dos v as que aplica planicaci on din amica de instrucciones con especulaci on para todas las instrucciones. Las instrucciones siguen las siguientes fases: IF B usqueda de la instrucci on. I Decodicaci on de la instrucci on y lanzamiento a ejecuci on. Ei Ejecuci on en el operador correspondiente. WB Fase de transferencia de resultados por el bus interno. C Fase de conrmaci on. Escritura de resultados en el registro destino. Todas las fases duran un ciclo de reloj, excepto la fase Ei cuya duraci on depende del operador. El procesador dispone de un predictor de saltos del tipo branch target buffer que obtiene la predicci on al nal de la fase IF. El tiempo de transferencia por los buses comunes de datos es de 1 ciclo de reloj. Las caracter sticas de las unidades funcionales del procesador son: Tipo Aritm etica entera Multiplicaci on FP Suma/Resta FP Carga/Almac. FP Unidades Latencia (ciclos) Otras 2 1 6 estaciones de reserva 1 4 Segmentada, 4 estaciones de reserva 1 2 Segmentada, 4 estaciones de reserva 2 2 2 tampones carga, 2 tampones almacenamiento

El c odigo que genera el compilador para dicho bucle es el siguiente:


loop: odigo escalar ; C l.d f2,x(r1) l.d f4,y(r2) mult.d f2,f2,f0 mult.d f4,f4,f8 add.d f6,f10,f2 add.d f6,f6,f4 s.d f6,y(r2) dsub r1,r1,#8 dsub r2,r2,#8 bnez r1,loop ...

El estado de los registros y la memoria es el siguiente: R1 R2 100 150 F0 F2 3 2 F4 0 F6 0 F8 F10 0.5 2 x+100 x+92 100 102 y+150 y+142 10 12

58

1. Dibuja un diagrama temporal en el que se muestre la ejecuci on de las instrucciones que se lanzan en las dos primeras iteraciones. Sup ongase que el predictor predice correctamente que la instrucci on bnez r1, loop salta. Se deber a indicar qu e fase est a ejecutando cada instrucci on en cada ciclo. Para representar las fases de ejecuci on en el diagrama temporal utilizar: M1, M2, M3 y M4 para las fases de la multiplicaci on, A1, A2 para las fases de la suma/resta, L1, L2 para la unidad de carga/almacenamiento y EX para la unidad entera. 2. Muestra el estado del reorder buffer, de las estaciones de reserva y tampones, del banco de registros y de memoria al nal del ciclo de reloj en que la instrucci on s.d f6,y(r2) de la primera iteraci on ejecuta la fase C. Soluci on:
l.d f2,x(r1) l.d f4,y(r2) mult.d f2,f2,f0 mult.d f4,f4,f8 add.d f6,f10,f2 add.d f6,f6,f4 s.d f6,y(r2) dsub r1,r1,#8 dsub r2,r2,#8 bnez r1,loop l.d f2,x(r1) l.d f4,y(r2) mult.d f2,f2,f0 mult.d f4,f4,f8 add.d f6,f10,f2 add.d f6,f6,f4 s.d f6,y(r2) dsub r1,r1,#8 dsub r2,r2,#8 bnez r1,loop 1 2 IF I IF I IF IF 3 L1 L1 I I IF IF 4 L2 L2 I I IF IF 5 WB WB I I IF IF 6 C C M1 EX I I IF IF 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

M2 M1 WB EX I I IF IF

M3 M4 WB C M2 M3 M4 WB C - - - A1 A2 WB C - - - - - - A1 A2 WB - - - - - - - - WB EX L1 I I IF IF

WB L2 L1 I I IF IF

WB L2 I I IF IF

C C L1 L2 C C C C

WB M1 EX I I

M2 M1 WB EX -

C M3 M4 WB C M2 M3 M4 WB C - - - A1 A2 WB C - - - - - - A1 A2 WB - - - - - - - - WB EX WB

C C L1 L2 C C C

El estado de la unidad en el ciclo 17 es el siguiente:


Nombre E1 E2 E3 E4 E5 E6 A1 A2 A3 A4 M1 M2 M3 M4 busy Estaciones de reserva: op Qj Vj Qk Vk reorder

s s

+ +

2 #15

306 6

#15 #16

59

Entrada 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

busy no no no no no no no s s s s s s s s s s s s s

Reorder buffer: instr estado l.d f2,x(r1) l.d f4,y(r2) mult.d f2,f2,f0 mult.d f4,f4,f8 add.d f6,f10,f2 add.d f6,f6,f4 s.d f6, y(r2) dsub r1,r1,#8 WB dsub r2,r2,#8 WB bnez r1,loop WB l.d f2,x(r1) WB l.d f4,y(r2) WB mult.d f2,f2,f0 WB mult.d f4,f4,f8 WB add.d f6,f10,f2 add.d f6,f6,f4 s.d f6, y(r2) WB dsub r1,r1,#8 WB dsub r2,r2,#8 WB bnez r1,loop WB Registros: F0 F2 no s #13 3 300

dest f2 f4 f2 f4 f6 f6 s1 r1 r2 loop f2 f4 f2 f4 f6 f6 s2 r1 r2 loop

value 100 10 300 5 302 307 92 142 salta 102 12 306 6

pred

salta

84 134 salta

salta

busy reorder valor

R1 s #18 100

R2 s #19 150

F4 s #14 5

F6 s #16 307

F8 no 0.5

F10 no 2

valor

Memoria de datos: x+100 x+92 y+150 100 102 10

y+142 12 Tampones de escritura: busy Vk Qk Direcci on s 307 y+150 s #16 y+142

Tampones de lectura: Nombre busy Direcci on l1 no l2 no

reorder

Tamp on s1 s2

conf s no

Ejercicio 2.28. Se tiene un procesador superescalar compatible binario con el MIPS, capaz de buscar y lanzar a ejecuci on hasta dos instrucciones por ciclo de reloj. La frecuencia de reloj es 900 MHz, y posee instrucciones enteras y de coma otante, aplicando gesti on din amica de instrucciones con especulaci on para todas las instrucciones. Las fases que atraviesan las instrucciones durante su ejecuci on son: IF Fase de b usqueda de la instrucci on. I Fase de lanzamiento de la instrucci on. En Fase de ejecuci on en los operadores correspondientes. 60

WB Fase de transferencia de resultados por el bus interno (el resultado transferido no estar a disponible hasta el siguiente ciclo). C Fase de conrmaci on de la instrucci on. Comprobaci on de las predicciones. Escritura en registros. Lanzamiento de las escrituras a memoria. Todas las fases duran un ciclo de reloj, excepto la fase En que puede durar varios ciclos, en funci on del tipo de instrucci on. La unidad de ejecuci on dispone de los siguientes operadores independientes: Tipo Unidades Latencia (ciclos) Otras Entera/saltos 2 1 Carga/almac 2 2 Segmentada lineal, 6 tampones Coma otante 2 3 Segmentada lineal, 6 tampones La unidad de carga/almacenamiento calcula la direcci on efectiva en el primer ciclo de su ejecuci on. El procesador resuelve los riesgos de control mediante un predictor perfecto de cero ciclos de reloj de penalizaci on. Cada uno de los bancos de registros tiene cuatro puertos de lectura y dos de escritura. Se necesita un ciclo de reloj para transferir un dato por los buses comunes de datos en la unidad de ejecuci on. Sobre este procesador se pretende ejecutar el c odigo obtenido de la compilaci on de B (i) := x + A(i):
loop: DSUB R1,R1,#8 L.D F0, A(R1) ADD.D F4, F0, F2 S.D B(R1),F4 BNEZ R1,loop

Dibuja un diagrama en el que se indique, para cada instrucci on y ciclo de reloj, qu e fase de la instrucci on se est a ejecutando. Considera u nicamente la primera y segunda iteraci on del bucle. Para representar las fases de ejecuci on multiciclo En en el diagrama temporal utilizar: EX para operaciones enteras, Ai para coma otante y Li para las cargas y los almacenamientos; donde el sub ndice indica el n umero de ciclos en ejecuci on (1, 2, ...). Suponiendo que la segunda iteraci on es representativa de lo que ocurre en el resto de iteraciones Cu antos MFLOPS alcanza el computador ejecutando ese fragmento de c odigo? Soluci on:
loop: DSUB R1,R1,#8 L.D F0, 0(R1) ADD.D F4, F0, F2 S.D F4,0(R1) BNEZ R1,loop <sigte> DSUB R1,R1,#8 L.D F0, 0(R1) ADD.D F4, F0, F2 S.D F4,0(R1) BNEZ R1,loop <sigte> DSUB R1,R1,#8 L.D F0, 0(R1) 1 2 IF I IF I IF IF 3 EX r2 I I IF IF 4 5 6 7 8 9 10 11 12 13 14 15 WB C r2 L1 L2 WB C r3 r3 r3 r3 A1 A2 A3 WB C r4 r4 r4 r4 r4 r4 r4 r4 C S1 S2 I EX WB - - - - - - C cancelada+ IF I EX WB - - - - - C IF I r8 r8 L1 L2 WB - - - C | IF I r9 r9 r9 r9 A1 A2 A3 WB C | IF I r10r10r10r10r10r10r10r10C | IF I EX WB - - - - - | IF cancelada+ | IF I EX WB - - - - | IF I r14r14L1 L2 WB - | Bucle=3| 16 17 18 19 20

loop:

S1 S2 C C -

loop:

(+) Se cancela en cuanto se decodica la instrucci on de salto. Cada iteraci on necesita 3 ciclos de reloj, y realiza una operaci on en coma otante: v=
1 3

= 0,33 op/ciclo @ 900 MHz = 297 MFLOPS. 61

Ejercicio 2.29. Se dispone de un procesador superescalar similar al MIPS, capaz de lanzar 2 instrucciones por ciclo. La unidad de ejecuci on de instrucciones se encuentra segmentada en cinco etapas: IF, ID, EX, ME y WB. Durante la fase de b usqueda de la instrucci on (IF), la antememoria de instrucciones suministra siempre un bloque de dos instrucciones, la primera de ellas ubicada en una direcci on par y la segunda en direcci on impar. En caso de que s olo se necesite acceder a una de ellas, la otra se desecha. S olo se puede lanzar a ejecuci on una instrucci on de salto. La condici on y la direcci on de destino de las instrucciones de salto se calcula durante la etapa ID. Dicho procesador dispone de un predictor del tipo Branch Target Buffer que suministra la predicci on y la direcci on de destino al nal de la etapa IF. Se pretende evaluar el comportamiento del predictor ante las instrucciones de salto para los siguientes casos: 1. El predictor predice que no salta o no existe una entrada en la tabla, y nalmente el salto no salta. 2. El predictor predice que no salta o no existe una entrada en la tabla, y nalmente el salto s salta. 3. El predictor predice que s salta y nalmente el salto no salta. 4. El predictor predice que s salta y nalmente el salto s salta. Para realizar dicha evaluaci on, se utilizar an los siguientes ejemplos de c odigo:
a) BEQZ R1, salto ADD R2, R3, R4 SW 0(R4), R2 AND R3, R2, #63 salto: OR R4, R3, #128 LW R1, 0(R5) sgte. 1 sgte. 2 b) SUB R3, R2, R1 BEQZ R1, salto ADD R2, R3, R4 SW 0(R4), R2 AND R3, R2, #63 salto: OR R4, R5, #128 sgte. 1 sgte. 2

Dibuja, para cada uno de los c odigos y para cada uno de los ejemplos, un diagrama instruccionestiempo que muestre las instrucciones buscadas y las fases ejecutadas por estas. Las instrucciones canceladas se representar an con una X en el ciclo correspondiente. Soluci on: Secuencia de c odigo A: 1. El predictor predice que no salta o no existe una entrada en la tabla, y nalmente el salto no salta. BEQZ R1, salto IF ID EX ME WB ADD R2, R3, R4 IF ID EX ME WB SW 0(R4), R2 IF ID EX ME WB AND R3, R2, #63 IF ID EX ME WB OR R4, R3, #128 IF ID EX ME LW r1, 0(R5) IF ID EX ME No pierde ninguna instrucci on.

WB WB

62

2. El predictor predice que no salta o no existe una entrada en la tabla, y nalmente el salto s salta. BEQZ R1, salto IF ID ADD R2, R3, R4 IF ID SW 0(R4), R2 IF AND R3, R2, #63 IF OR R4, R3, #128 LW r1, 0(R5) Pierde 3 instrucciones. EX ME WB X X X IF ID EX ME WB IF ID EX ME WB

3. El predictor predice que s salta y nalmente el salto no salta. BEQZ R1, salto IF ID ADD R2, R3, R4 IF X OR R4, R3, #128 IF LW r1, 0(R5) IF BEQZ R1, salto ADD R2, R3, R4 Pierde 4 instrucciones. EX X X X IF ME WB

ID

EX

ME WB

4. El predictor predice que s salta y nalmente el salto s salta. BEQZ R1, salto IF ID ADD R2, R3, R4 IF X OR R4, R3, #128 IF LW r1, 0(R5) IF sgte. 1 sgte. 2 Pierde 1 instrucci on. Secuencia de c odigo B: 1. El predictor predice que no salta o no existe una entrada en la tabla, y nalmente el salto no salta. SUB R3, R2, R1 IF ID EX ME WB BEQZ R1, salto IF ID EX ME WB ADD R2, R3, R4 IF ID EX ME WB SW 0(R4), R2 IF ID EX ME WB AND R3, R2, #63 IF ID EX ME OR R4, R5, #128 IF ID EX ME No pierde ninguna instrucci on. EX ID ID IF IF ME WB EX EX ID ID ME ME EX EX WB WB ME WB ME WB

WB WB

2. El predictor predice que no salta o no existe una entrada en la tabla, y nalmente el salto s salta. SUB R3, R2, R1 IF ID BEQZ R1, salto IF ID ADD R2, R3, R4 IF SW 0(R4), R2 IF AND R3, R2, #63 OR R4, R5, #128 Pierde 3 instrucciones. EX ME WB EX ME WB X X X IF ID EX ME WB

63

3. El predictor predice que s salta y nalmente el salto no salta. SUB R3, R2, R1 IF ID BEQZ R1, salto IF ID AND R3, R2, #63 X OR R4, R5, #128 IF ADD R2, R3, R4 SW 0(R4), R2 Pierde 2 instrucciones. EX ME WB EX ME WB X IF IF

ID ID

EX EX

ME WB ME WB

4. El predictor predice que s salta y nalmente el salto s salta. SUB R3, R2, R1 IF ID BEQZ R1, salto IF ID AND R3, R2, #63 X OR R4, R5, #128 IF sgte. 1 sgte. 2 Pierde 1 instrucci on. EX ME WB EX ME WB ID IF IF EX ID ID ME EX EX WB ME ME

WB WB

64

Potrebbero piacerti anche