ejer2s

64
Arquitectura e Ingenier´ ıa de Computadores - 4 o 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: usqueda de la instrucci´ on a ejecutar. DE: Decodificaci´ 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 d: BNEZ R4,L BI DE UA ME WB d+4: ds1 BI DE UA ME WB d+8: ds2 BI DE UA ME WB d+16/L: BI DE UA ME WB 1. C´ odigo original con ciclos de parada. 1

Upload: ariel-hdez

Post on 01-Jan-2016

30 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ejer2s

Arquitectura e Ingenier ıa de Computadores - 4o CursoEjercicios y soluciones de la Unidad Tematica 2. “Computadores segmentados”

Ejercicio 2.1. Un procesador compatible binario con el MIPS64 posee su ciclo de instruccion segmentado en 5fases:

BI: Busqueda de la instruccion a ejecutar.

DE: Decodificacion de la instruccion y lectura de los registros operandos.

UAL: Operacion 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 maquina resuelve los riesgos de control mediante el salto retardado. Tambien posee antememorias deinstrucciones y datos separadas, ası como dos puertos de lectura y uno de escritura en el banco de registros.

Sobre dicho procesador se esta ejecutando el siguiente bucle, compuesto den iteraciones:

...L : LD R1,X(R2)

DADD R1,R1,R3SD R1,X(R2)DADD R2,R2,#8DSUB R4,R4,#1BNEZ R4,LNOPNOP

1. Dibuja un diagrama en el que se indique, para cada instruccion y ciclo de reloj, que fase de la instruccion seesta completando. Considera solo la primera iteracion.Calcula los CPI y el tiempo de ejecucion obtenidos,en funcion del numero de iteracionesn. Considera los siguientes casos:

a) Los riesgos de datos se resuelven mediante la insercion deciclos de parada.

b) Los riesgos de datos se resuelven mediante la tecnica del cortocircuito.

2. Suponiendo que los riesgos de datos se resuelven mediantela tecnica de la anticipacion (forwarding),optimiza el codigo.

Solucion:

Puesto que el PC se escribe en la tercera fase del ciclo de instruccion, elbranch delay slotes de dosinstrucciones:

pcd: BNEZ R4,L BI DE UA ME WBd+4: ds1 BI DE UA ME WBd+8: ds2 BI DE UA ME WBd+16/L: BI DE UA ME WB

1. Codigo original con ciclos de parada.

1

Page 2: ejer2s

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19begin: LD R1,X(R2) BI DE UA ME WB

DADD R1,R1,R3 BI DE DE DE UA ME WBSD R1,X(R2) BI BI BI DE DE DE UA ME WBDADD R2,R2,#8 BI BI BI DE UA ME WBDSUB R4,R4,#1 BI DE UA ME WBBNEZ R4,begin BI DE DE DE UA ME WBNOP BI BI BI DE UA ME WBNOP BI DE UA ME WB

begin: LD R1,X(R2) BI DE UA ME WB

Para una iteracion, se ejecutan 8 instrucciones en 14 ciclos de reloj. Por lo tanto:

CPI = 148= 1,75

Y el tiempo de ejecucion paran iteraciones es14n ciclos:

Tej = I · CPI · T = 8n · 1,75 · T = 14nT s

2. Codigo original con anticipacion.

1 2 3 4 5 6 7 8 9 10 11 12 13 14begin: LD R1,X(R2) BI DE UA ME WB

DADD R1,R1,R3 BI DE DE UA ME WBSD R1,X(R2) BI BI DE UA ME WBDADD R2,R2,#8 BI DE UA ME WBDSUB R4,R4,#1 BI DE UA ME WBBNEZ R4,begin BI DE UA ME WBNOP BI DE UA ME WBNOP BI DE UA ME WB

begin: LD R1,X(R2) BI DE UA ME WB

Para una iteracion, se ejecutan 8 instrucciones en 9 ciclosde reloj. Por lo tanto:

CPI = 98= 1,125

Y el tiempo de ejecucion paran iteraciones es9n ciclos:

Tej = I × CPI × T = 8n× 1,125× T = 9nT s

3. Optimizacion.

La optimizacion pretende, por una parte, rellenar elbranch delay slotcon instrucciones utiles,y, por otra, eliminar los ciclos de parada. Hay diversas soluciones que obtienen las mismasprestaciones:

Rellenamos elbranch delay slotcon instrucciones anteriores al salto:1 2 3 4 5 6 7 8 9 10 11

begin: LD R1,X(R2) BI DE UA ME WBDSUB R4,R4,#1 BI DE UA ME WBDADD R1,R1,R3 BI DE UA ME WBBNEZ R4,begin BI DE UA ME WBSD R1,X(R2) BI DE UA ME WBDADD R2,R2,#8 BI DE UA ME WB

begin: LD R1,X(R2) BI DE UA ME WB

Rellenamos elbranch delay slotcon instrucciones anteriores al salto, y movemos una in-struccion que modifica un registro que se emplea para el calculo de direcciones de accesoa memoria:

1 2 3 4 5 6 7 8 9 10 11begin: LD R1,X(R2) BI DE UA ME WB

DADD R2,R2,#8 BI DE UA ME WBDSUB R4,R4,#1 BI DE UA ME WB

2

Page 3: ejer2s

BNEZ R4,begin BI DE UA ME WBDADD R1,R1,R3 BI DE UA ME WBSD R1,X-8(R2) BI DE UA ME WB

begin: LD R1,X(R2) BI DE UA ME WB

Rellenamos elbranch delay slotcon instrucciones del destino del salto:1 2 3 4 5 6 7 8 9 10 11

begin: LD R1,X(R2) BI DE UA ME WBDSUB R4,R4,#1 BI DE UA ME WB

L: DADD R1,R1,R3 BI DE UA ME WBSD R1,X(R2) BI DE UA ME WBDADD R2,R2,#8 BI DE UA ME WBBNEZ R4,L BI DE UA ME WBLD R1,X(R2) BI DE UA ME WBDSUB R4,R4,#1 BI DE UA ME WB

L: DADD R1,R1,R3 BI DE UA ME WB

Para una iteracion, se ejecutan 6 instrucciones en 6 ciclosde reloj. Por lo tanto:

CPI = 66= 1

Y el tiempo de ejecucion paran iteraciones es6n ciclos:

Tej = I × CPI × T = 6n× 1× T = 6nT s

Ejercicio 2.2. Se tiene el siguiente codigo en alto nivel:

TYPE elem=RECORDx : ARRAY[1..10] OF LONGINT;siguiente: ˆelem;

END;

VARcont : LONGINT;p : ˆelem;

...

REPEATcont := cont + 1;p := pˆ.sig;

UNTIL p = NIL;...

El tipo LONGINTy los punteros ocupan 32 bits. La constanteNIL se representa con un 0. El compiladorgenera 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, etinop ; tantos nops como haga falta

Dicho codigo se pretende ejecutar sobre distintas versiones de un procesador segmentado en 5 etapas:

3

Page 4: ejer2s

IF: Busqueda de la instruccion a ejecutar.

ID: Decodificacion de la instruccion y lectura de los registros operandos (2o semiciclo del reloj).

EX: Operacion 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 maquina resuelve los riesgos de datos mediante la tecnica del cortocircuito, y funciona a 100 MHz.

1. Suponiendo que el bucle se ejecuta 10.000 veces, calcularlos CPI, los MIPS y el tiempo de ejecucion queel procesador alcanza ejecutando este bucle bajo los siguientes supuestos:

a) El calculo de la direccion efectiva, condicion de saltoy escritura del PC se realiza en ID, y se empleaarquitecturaHarvard.

b) El calculo de la direccion efectiva, condicion de saltoy escritura del PC se realiza en ID, y se empleaantememoria comun para instrucciones y datos.

c) El calculo de la direccion efectiva y condicion de saltose realiza en EX, y la escritura del PC se realizaen M. Se emplea arquitecturaHarvard.

2. Asumiendo el supuesto a), optimizar el codigo.

Solucion:

1. Calculo de los parametros solicitados:

a) Escritura del PC en ID; arquitecturaHarvard.El branch delay slotes de una instruccion, por lo que se ejecutan cuatro instrucciones encada iteracion. El riesgo de datos entrelw y bnezrequiere dos ciclos de parada, dando untotal de seis ciclos por iteracion. En consecuencia:CPI = 6

4= 1,5 ciclos

MIPS =I

Tej · 106=

I

I · CPI · T · 106=

1

CPI · T · 106=

f (en MHz)CPI

=

=100

1,5= 66,7MIPS

Para procesar 10.000 iteraciones haran 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 ecuacion del tiempode ejecucion conI = 4 · 104 instrucciones:

T (10000 iteraciones) = (4 · 104) · 1,5 ·1

100 · 106= 6 ∗ 10−4s.

b) Escritura del PC en ID; antememoria comun de instrucciones y datos.El branch delay slotes tambien de una instruccion: se ejecutan cuatro instrucciones en cadaiteracion. El riesgo estructural entrelw y nopse superpone al de datos entreloady bnez. Elbucle continua consumiendo seis ciclos por iteracion. Los parametros son los mismos queen el caso anterior.

4

Page 5: ejer2s

c) Escritura del PC en M; arquitecturaHarvard.El branch delay slotes ahora de tres instrucciones: se ejecutan seis instrucciones en cadaiteracion. El riesgo de de datos entrelw y bnezrequiere ahora un unico ciclo de parada. Elbucle consume siete ciclos por iteracion. Se obtienen los siguientes parametros:CPI = 7

6= 1,17 cpi

MIPS = 1001,17

= 85,7 MIPSPara procesar 10.000 iteraciones haran falta 70.000 ciclos de reloj, que, a 10 ns por ciclo,son 700.000 ns = 0.7 ms.

2. Para la optimizacion, hay dos alternativas validas:

Separar las instruccioneslw y bnezcon el objeto reducir a uno los ciclos de parada que seinsertan para resolver el riesgo de datos que se produce entre ambas:

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

Rellenar elbranch delay slotcon una instruccion util:

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

El tiempo de ejecucion se reduce en un ciclo por iteracion en ambos casos.

Ejercicio 2.3.Un computador, valorado en 2000$, lleva un MIPS/LC, identico al MIPS (5 etapas de segmentacion: busqueda

de la instruccion (IF), Decodificacion y lectura de registros (ID), Ejecucion (EX), Acceso a memoria (MEM) yEscritura de registros (WB)) pero con una sola antememoria comun para instrucciones y datos, conbranch slotde una instruccion, cortocircuitos y reloj a 80 MHz. Se tiene instalado un compilador de dominio publico quecompila el siguiente texto:

repeatif 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 codigo:

eti1: ld r2,v(r1)beqz r2,eti2nopld r3,w(r1)sd r3,v(r1)sd r2,w(r1)

eti2: dsub r1,r1,#8bnez r1,eti1nop

5

Page 6: ejer2s

El bucle se aplica a vectores con un 80 % de componentes iguales a 0.

1. Calcula el CPI medio para tallasn grandes.

2. Optimiza el codigo para reducir su tiempo de ejecucion,y cuantifica la mejora.

3. Supon que el bucle original es una buena muestra de la carga usual de dicho computador. Para mejorar elrendimiento, considera dos posibles inversiones:

Cambiar el procesador por la version MIPS/ST con antememorias de instrucciones y datos separadas,con un coste de 200$.

Comprar un compilador comercial, valorado en 200$, capaz deoptimizar el codigo anterior reducien-do en 3 ciclos de reloj cada iteracion en quev[i] <> 0 y en 2 ciclos cada iteracion en quev[i] = 0. Elnumero de instrucciones ejecutadas no se modifica.

Desde el punto de vista de la relacion coste/prestaciones,y suponiendo que solo podemos gastarnos 200$,¿serıa interesante alguna de las dos mejoras anteriores? En caso afirmativo, ¿cual convendrıa aplicar?

Solucion:

1. Cuandov(r1) <> 0, en el bucle se ejecutan nueve instrucciones. Para resolverlos riesgos, seintroducen 6 ciclos de parada:

Dos ciclos que ha de esperar la instruccionbeqz r2,eti2 para que la fase ID dispongadel valor de r2 generado por la instruccion previald r2,v(r1) . Recuerdese que si elbranch delay slotes de una instruccion, el PC se escribe en la segunda etapa (ID) del ciclode instruccion, por lo que la condicion debe calcularse tambien en dicha etapa.

Tres ciclos ocasionados por las restantes instrucciones decarga y almacenamiento al pro-ducirse un riesgo estructural por tener una unica antememoria de instrucciones y datos.

Un ciclo que ha de esperar la instruccionbnez r1,eti1 para que la fase ID dispongadel valor de r1 modificado por la instruccion previadsub r1,r1,#8 .

El total de ciclos requeridos es de 9+2+3+1=15.

Si v(r1) = 0, se ejecutan seis instrucciones. Los ciclos de parada son los correspondientes a lasinstruccionesbeqz y bnez , porque el resto de instrucciones de carga y almacenamientono seejecutan. 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 vectorv:

CPI = Numero de ciclosNumero de instrucciones

= 15·0,2+9·0,89·0,2+6·0,8

= 1,55

2. Una posible optimizacion, en la que se eliminan losbranch slots, serıa la siguiente:

eti1: ld r2,v(r1)beqz r2,eti2dsub r1,r1,#8ld r3,w+8(r1)sd r3,v+8(r1)sd r2,w+8(r1)

eti2: bnez r1,eti1+4ld r2,v(r1)

6

Page 7: ejer2s

en la que se ahorran tres ciclos por iteracion siv(r1) <> 0 (dos ciclos al eliminar losnop y unoal eliminar el riesgo dedsub r1,r1,#8 y bnez r1,eti1+4 ) y dos ciclos (al eliminar losnop ) cuandov(r1) = 0 .

La mejora es∆t = 15·0,2+9·0,812·0,2+7·0,8

= 1,28

3. Calculo de las mejoras en tiempo medio de ejecucion del bucle, medido en ciclos, en uno y otrocaso:

∆t = 15·0,2+9·0,812·0,2+9·0,8

= 1,06 (nuevo procesador, en el que se eliminan los tres riesgos estruc-turales solo cuandov(r1) <> 0)

∆t = 15·0,2+9·0,812·0,2+7·0,8

= 1, 28 (nuevo compilador)

Para el mismo incremento de coste (10 %), queda claro que la mejora apropiada es la adquisiciondel nuevo compilador. Por otra parte, la mejora obtenida cambiando el procesador es inferioral incremento del coste, por lo que, desde el punto de vista demantener una relacion coste–prestaciones constante, no serıa interesante.

Ejercicio 2.4. El ciclo de instruccion de un procesadorload/storeno segmentado se descompone en las siguientesfases (se indica entre parentesis la duracion de cada una):

LI (10 ns): lectura de instruccion.

DI (5 ns): decodificacion de la instruccion y lectura de registros fuente.

EXE (10 ns): calculo de direcciones efectivas en instrucciones L/S, operacion en instrucciones ALU, calculode condicion 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 dealmacenamiento y de ALU.

El automata que implementa el circuito de control cableadogenera las fases en funcion del codigo de op-eracion. El reloj funciona a 200 MHz, de manera que unas fases requieren dos ciclos y otras solo uno. Todos losciclos de instruccion comienzan por las fases LI y DI. Segun el tipo de instruccion, las restantes fases del cicloson (se indica entre parentesis la frecuencia de cada tipo de instruccion):

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 registrosde 2 ns de retardo y un reloj con desfase nulo.Desaparece la fase EPC y toda la logica de salto pasa a la etapa DI, con lo que el retardo de esta etapa es ahora de10 ns. El procesador queda con las 5 etapas LI, DI, EXE, MEM y ER. Se toman medidas reales y se observa queel 5 % de las instrucciones de carga generan un ciclo de paradapor riesgo de datos, y que el compilador rellena el10 % de los casos debranch delay slotcon una instruccion inutilnop .

Se pide:

7

Page 8: ejer2s

1. Los CPI del procesador no segmentado.

2. La frecuencia del reloj del procesador segmentado.

3. El numero de instrucciones ejecutadas por el procesadorsegmentado en relacion al no segmentado.

4. Los CPI del procesador segmentado.

5. La aceleracion en el tiempo de ejecucion obtenido por lasegmentacion.

Solucion:

1. CPI del procesador no segmentado.

Obtengamos primero el valor de CPI para cada tipo de instruccion:% tipo CPI20 carga 810 almacenamiento 750 calculo (ALU) 620 bifurcacion 6

La media ponderada es:

CPINS = 0,20 · 8 + 0,10 · 7 + 0,50 · 6 + 0,2 · 6 = 6,5.

2. Frecuencia del reloj del procesador segmentado.

El maximo retardo de etapa es de 10 ns, y el de registro de 2 ns.Por lo tanto, el periodo de relojestS = 10 + 2 = 12 ns.

La frecuencia esf = 1tS

= 112∗10−9 = 83,3 ∗ 106 Hz = 83.3 MHz.

3. Numero de instrucciones ejecutadas por el procesador segmentado en relacion al no segmenta-do.

El programa del procesador segmentado tendra el mismo numero de instrucciones que el del nosegmentado, mas las instruccionesnopque en el 10 % de los casos siguen al 20 % de bifurca-ciones. Como la logica de salto esta ubicada en la segunda etapa (DI), elbranch delay slotes deuna instruccion. Por tanto,

IS = INS(1 + 0,1 ∗ 0,2) = 1,02 ∗ INS.

4. CPI del procesador segmentado.

Cada instruccion buscada contribuye con un ciclo al tiempode ejecucion. Tambien hay que con-tabilizar los ciclos perdidos por conflictos de datos en el 5 %de casos del 20 % de instruccionesde carga. Hay que tener en cuenta que el numero total de instrucciones ha aumentado debido alas instruccionesnop:cantidad tipo CPI20 carga 1+(0, 05 · 1)=1,0510 almacenamiento 150 calculo (ALU) 120 bifurcacion 12 (0, 1 · 20) nop 1102 total

La media ponderada es:

CPIS = 20·1,05+10·1+50·1+20·1+2·1102

= 1, 01 ciclos.

8

Page 9: ejer2s

Otra forma de proceder es considerar que, al estar segmentado, el CPI sera de 1 mas el numeromedio de ciclos de parada que origina cada instruccion. En nuestro caso, solo el 5 % de lasinstrucciones de carga (que son 20 de cada 102) insertan un ciclo de parada. Por lo tanto:

CPIS = 1 + 0,2∗0,051,02

= 1,01 ciclos.

5. Aceleracion debida a la segmentacion.

Dividiendo las expresiones del tiempo de ejecucion del procesador no segmentado y segmenta-do, obtenemos:

S =TNS

TS

=INS ∗ CPINS ∗ tNS

IS ∗ CPIS ∗ tS=

INS ∗ 6,5 ∗ 5

1,02 ∗ INS ∗ 1,01 ∗ 12= 2,63

Ejercicio 2.5.Se tiene un procesador segmentado en 5 etapas (IF: busquedade la instruccion; ID: decodificacion y lectura

de registros; EX: operacion en la ud. aritmetica; MEM: acceso a memoria y WB: escritura de registros). Elprocesador 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 tecnicas delforwardinge insertando dos ciclos de parada cada vez que aparece una instruccion de salto, respectivamente.

Los programas ejecutan, por termino medio, un 18 % de saltos, un 39 % de cargas/almacenamientos y un43 % de instrucciones aritmeticas. Las cargas son doble frecuentes que los almacenamientos. Los accesos abytesy halfwordssuponen un 20 % de los accesos a memoria. La frecuencia de riesgos de datos entre una instruccionLOAD y otra posterior que consume el dato procedente de la memoria es la siguiente:

Frecuencia: 25 % Frecuencia: 15 %LOAD R1, ... LOAD R1, ...Instruccion que leeR1 Instruccion que no leeR1... Instruccion que leeR1

Con el objeto de mejorar las prestaciones, se plantea realizar las siguientes modificaciones:

Eliminar las instrucciones de acceso abytesy halfwordsdel juego de instrucciones. Como consecuencia,los programas que necesiten esta funcionalidad deberan utilizar otras instrucciones del procesador:

LB R1,x LW R1,x’o SRL R1,R1,#pos

LH R1,x AND R1,R1,#masc

SB R1,x LW R2,x’o SLL R1,R1,#pos

SH R1,x 5 instrucciones ALU masSW x’,R1

Aumentar la frecuencia de reloj, al simplificar el diseno del procesador.

Se pide:

1. Los CPI del procesador original.

2. El numero de instrucciones del procesador modificado en relacion al original.

3. Los CPI del procesador modificado.

4. La frecuencia de reloj que deberıa alcanzarse, como mınimo, para que sea interesante incorporar las modi-ficaciones propuestas.

Solucion:

9

Page 10: ejer2s

1. CPI del procesador original.

Al ser un procesador segmentado, los CPI seran 1 mas los ciclos medios de parada por in-struccion. En este caso, se insertan cuando aparecen saltos (18 %, 2 ciclos de parada) y cuandose producen riesgos de datos en los que interviene una instruccion de carga y otra instruc-cion inmediatamente a continuacion que consume el dato cargado (25 % de las cargas, 1 ciclode parada). Sabemos que hay un 39 % de carga/almacenamiento,y que las cargas son doblefrecuente que los almacenamientos. Sic y a son los porcentajes de carga y almacenamiento,respectivamente, tenemos:c+ a = 39c = 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 susti-tuido, mas las que equivalen a las sustituidas.

Teniendo en cuenta que los accesos abytes y halfwordssuponen el 20 % de los accesos a memo-ria, la frecuencias de aparicion 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 instruccion LB/LH se sustituye por 3 nuevas instrucciones, y cada instruccion SB/SH sesustituye 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 modifican debido a que las sustituciones de LB/LH introducen siempreun ciclo de parada, independientemente de si antes lo producıan o no. Tambien hay que tener encuenta que el numero total de instrucciones ha cambiado:

No de ciclos de parada:0,181,29∗2(Saltos)+ 0,26

1,29∗0,8∗0,25∗1(LW )+ 0,26

1,29∗0,2∗1(LB/LH) = 0, 359

CPI’=1,36 ciclos.

4. Compararemos el tiempo de ejecucion de la mejora propuesta con la configuracion original.

Original:Tej = I × CPI × T = I · 1,43 · 5 = 7,15I ns

Mejora:Tej′ = I ′ × CPI ′ × 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 interesantela propuesta.

Ejercicio 2.6. Se dispone de un procesador segmentado similar al MIPS. Las fases del ciclo de instruccion son: IF(busqueda de la instruccion), ID (decodificacion de la instruccion y lectura de registros en el segundo semiciclo),EX (operacion en la UAL, calculo de direccion, condicion y escritura de PC enbranch, calculo de la direccionefectiva enload/store), M (acceso a memoria enload/store) y WB (escritura de registro, en su caso en el primersemiciclo). La etapa mas larga es EX, fijando el reloj en 200 MHz.

Todos los riesgos de datos y de control se resuelven insertando ciclos de parada, lo que supone que el CPImedio sea de 1.8.

Los programas que se ejecutan contienen, por termino medio,los siguientes % de instrucciones:

10

Page 11: ejer2s

Instruccion %LOAD 17STORE 8ALU 60BRANCH 15

1. Se pretende modificar la ruta de datos para resolver los riesgos de datos mediante la tecnica del cortocir-cuito. Como consecuencia, el retardo de la etapa EX aumenta hasta 5.5 ns. Por otra parte, un 30 % de lasinstruccionesload van seguidas de otra instruccion que consume el dato cargado, lo que obliga a insertarciclos de parada. Indica si es interesante realizar la modificacion propuesta, cuantificando, en su caso, lamejora obtenida.

2. Partiendo de la maquina que utiliza la tecnica del cortocircuito, se plantea ahora utilizar la tecnica de la“carga retardada” para evitar los ciclos de parada que se insertan al resolver los riesgos de datos en los quehay involucrada una instruccionload. Tambien se pretende utilizar el “salto retardado” para resolver losriesgos de control. Para ello, se modifica el compilador paraque coloque instrucciones utiles en losdelayslot, y si no lo consigue, inserte instruccionesNOP. El optimizador tiene la tasa de exito siguiente:

30 % de los casos no encuentra ninguna instruccion, insertando las instruccionesNOPnecesarias.

40 % de los casos encuentra una sola instruccion capaz de ocupar eldelay slot.

20 % de los casos encuentra dos instrucciones capaces de ocupar eldelay slot.

10 % de los casos encuentra tres o mas instrucciones capacesde ocupar eldelay slot.

Indica si es interesante la modificacion propuesta, cuantificando, en su caso, la mejora obtenida.

Solucion:

1. Utilizacion de la tecnica del cortocircuito para resolver los riesgos de datos.

Compararemos el tiempo de ejecucion de la mejora propuesta(mejora1) con el obtenido con laconfiguracion original:

Tej = I × CPI × T

Original Mejora1I I ICPI 1.8 1.35(*)T 5ns 5.5nsTej 9 I 7.43I

(*) Al ser un procesador segmentado, los CPI seran 1 mas losciclos de parada, los cuales seinsertan cuando se ejecutan algunas instrucciones LOAD (el30 %, 1 ciclo de parada) y cuandose ejecuta un BRANCH (2 ciclos de parada):

No de ciclos de parada:0,17 · 0,3 · 1 + 0,15 · 2 = 0,35

La maquina conforwardinges 97,43

= 1,21 veces mas rapida que la original.

2. Utilizacion de la carga y salto retardados.

Compararemos el tiempo de ejecucion obtenido en las nuevascondiciones (mejora2) con elobtenido en el caso anterior.

Tej = I × CPI × T

11

Page 12: ejer2s

Mejora2I 1.17I(*)CPI 1 (+)T 5.5nsTej 6.44I

(*) Hay que anadir aI los NOPS necesarios, que se insertan cuando hay instrucciones LW(17 %) y BRANCH (15 %) y el compilador no es capaz de rellenar los delay-slotcon instruc-ciones utiles. En el caso de LW, hay que insertar una sola instruccion en el 30 % de los casos (enel resto de casos, el compilador encuentra al menos una instruccion para rellenar eldelay-slot.En el caso de BRANCH, como el PC se escribe en la fase EX, eldelay-slotes 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 ningun ciclo de parada.La 2a mejora es7,43I

6,44I= 1,15 veces mas rapida que la la 1a mejora (un 15 % mas rapida).

La 2a mejora es 9I6,44I

= 1,40 veces mas rapida que la maquina original (un 40 % mas rapida).

Ejercicio 2.7. Se dispone de un procesador segmentado, similar al MIPS, cuya ruta de datos se muestra en lafigura.

IF/ID ID/EX EX/MEM MEM/WB WBMEMEXIDIF

Memoria

Datos

Memoria

InstruccionPC

Ext.

Signo

Cero?

+4

8

3

35

3

8

3

3

2

4

Rfte1

Rdst

W

Rfte2

Reg

istr

os R

R

Al lado de cada componente se ha indicado, encursiva, su retardo medido en ns. Los registros intermedios yel contador de programa (PC) tienen un retardo de 2 ns. Las etapas mas lentas son IF y MEM, cuyo retardo es de10 ns (8 para acceder a memoria mas el retardo de los registros), lo que fija la frecuencia de reloj en 100 MHz.El banco de registros se escribe durante el primer semiciclode reloj, y se lee durante el segundo. Se pretenderesolver los riesgos de datos mediante la tecnica del cortocircuito, y los riesgos de control insertando ciclos deparada. Los programas que se ejecutan contienen, por termino medio, los siguientes % de instrucciones:

Instruccion %LOAD 17STORE 8ALU 60BRANCH 15

El 30 % de las instrucciones LOAD participa en un riesgo de datos que precisa insertar un ciclo de parada.

12

Page 13: ejer2s

1. Anade a la ruta de datos los cortocircuitos necesarios para resolver los riesgos que se producen en elsiguiente fragmento de codigo, y disena la logica de control que los aplica:

LD R1,100(R5)DADD R2,R3,R4SD R1,200(R2)

2. Disena la logica para resolver los riesgos de control.

3. Se plantea modificar la resolucion de los riesgos de control, empleando la tecnica del “salto retardado”.Para ello, se modifica el compilador para que coloque instrucciones utiles en elbranch delay sloty, si no loconsigue, inserte tantas instruccionesNOPcomo haga falta. La tasa de exito del optimizador es:

30 % de los casos no encuentra ninguna instruccion, insertando las instruccionesNOPnecesarias.

40 % de los casos encuentra una sola instruccion capaz de ocupar elbranch delay slot.

20 % de los casos encuentra dos instrucciones capaces de ocupar elbranch delay slot.

10 % de los casos encuentra tres o mas instrucciones capacesde ocupar elbranch delay slot.

Indica si es interesante la mejora, cuantificandola de la forma ”la maquina X es un % mas rapida que la Y”.

4. Utilizando tambien el “salto retardado”, con el objeto de reducir elbranch delay slotse plantea escribir elPC en la fase EX, modificando la ruta de datos como se muestra enla figura. Compara esta solucion conlas anteriores, cuantificandola de la forma ”la maquina X es un % mas rapida que la Y”.

IF/ID ID/EX EX/MEM MEM/WB WBMEMEXIDIF

Rfte1

Rdst

W

Rfte2

Reg

istr

os R

R

Memoria

Datos

Memoria

InstruccionPC

Ext.

Signo

Cero?

+4

8

3

35

3

8

3

3

2

4

Senales disponibles:

IF.stall, . . . , WB.stall: Mantienen la instruccion en la misma etapa durante el siguiente ciclo de reloj.

IF.stop, . . . , WB.stop: Convierten la instruccion presente en la etapa correspondiente ennop .

EX/MEM.cond: Indica, aTRUE, que el salto es efectivo.

13

Page 14: ejer2s

WBtoID, etc: aplica el cortocircuito entre las fases indicadas.

Para expresar la logica de control, utiliza el formato:SI EX/M.CODOP=IF/ID.Rfte2 ENT activar( se nal )

Solucion:

1. El diagrama instrucciones-tiempo correspondiente al segmento de codigo es el mostrado seguida-mente:

sw 200(r2),r1

add r2,r3,r4

lw r1,100(r5) IF ID EX

IF ID

IF

MEM

EX

ID

WB

MEM WB

EX MEM WB

1 6 75432

Para ejecutar correctamente el codigo no es necesario insertar ciclos de parada, pero hay queefectuar 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.IR codop = sd) AND (EX/MEM.IRRdst = ID/EX.IRRfte1))ent activar(MEMtoEX)

La ruta de datos con los cortocircuitos se muestra en la figura:

IF/ID ID/EX EX/MEM MEM/WBMEMEXIDIF

Memoria

Datos

Memoria

InstruccionPC

Ext.

Signo

Cero?

+4

8

3

3

3

8

3

2

4

Rfte1

Rdst

W

Rfte2

Reg

istr

os R

R

WBtoEX

MEMtoEX

2. La logica de control debe insertar ciclos de parada en cuanto se detecta la instruccion de salto,hasta que alcanza la etapa WB:Salto IF ID EX M WBi1 IF IF IFOK IF ID EX M WB

Si ((IF/ID.IRcodop = ”salto”) OR (ID/EX.IRcodop = ”salto”) OR (EX/MEM.IRcodop = ”salto”)) entactivar(IF.stall,IF.stop)

14

Page 15: ejer2s

3. Compararemos el tiempo de ejecucion de la mejora propuesta (mejora1) con la configuracionoriginal.

Tej = I × CPI × T

Original Mejora1I I 1,29I (*)CPI 1.5 (+) 1.04(**)T 10ns 10nsTej 15 I 13.42 I

(*) Hay que anadir aI los NOPS necesarios, que se insertan cuando hay instrucciones BRANCH(15 % de las ejecutadas) y el compilador no es capaz de rellenar el delay-slotcon instruccionesutiles. Como el PC se escribe en la fase MEM, eldelay-slotes de 3 instrucciones y el compiladorno siempre es capaz de encontrar tres instrucciones capacesde ocupar eldelay-slot:

No de NOPs:0,15 · (0,3 · 3 + 0,4 · 2 + 0,2 · 1) = 0, 29

(+) Al ser un procesador segmentado, los CPI seran 1 mas losciclos de parada, que se insertancuando se ejecutan algunas instrucciones LOAD (30 % de LOAD,1 ciclo de parada) y cuandose ejecuta un BRANCH (3 ciclos de parada):

No de ciclos de parada:0,17 · 0,3 · 1 + 0,15 · 3 = 0, 501

(**) El numero de ciclos de parada se reduce a los insertadospor las instrucciones LOAD, quesuponen 17 de cada 129 instrucciones:

No de ciclos de parada:17129· 0,3 · 1 = 0, 039

La maquina mejorada es15I13,42I

= 1, 12 veces mas rapida que la original (un 12 % mas rapida)

4. Compararemos el tiempo de ejecucion de la nueva mejora (mejora2) con las anteriores.

Tej = I × CPI × T

Mejora2I 1.15 (*)CPI 1.04 (+)T 12ns (!)Tej 14.35

(*) Como eldelay-slotes de 2 instrucciones, se anaden menos NOPS:

No de NOPs:0,15 · (0,3 · 2 + 0,4 · 1) = 0, 15

(*) El numero de ciclos de parada se reduce a los insertados por las instrucciones LOAD, quesuponen ahora 17 de cada 115 instrucciones:

No de ciclos de parada:17115· 0,3 · 1 = 0, 044

(!) El periodo de reloj se debe modificar de acuerdo a la etapa mas lenta, que es ahora EX:

Retardo EX: 3+5+2 = 10, mas los 2 ns de los registros, fija el periodo de reloj en 12 ns.

La 2a mejora es15,01I14,35I

= 1, 05 veces mas rapida que la original (un 5 % mas rapida).

La 1a mejora es14,35I13,42I

= 1, 07 veces mas rapida que la 2a mejora (un 7 % mas rapida).

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

15

Page 16: ejer2s

IF/ID ID/EX EX/MEM MEM/WB WBMEMEXIDIF

Memoria

Datos

Memoria

InstruccionPC

Ext.

Signo

Cero?

+4

8

3

35

3

8

3

3

2

4

Rfte1

Rdst

W

Rfte2

Reg

istr

os R

R

1. Anade a la ruta de datos los cortocircuitos necesarios para resolver los riesgos que se producen en elsiguiente fragmento de codigo, y disena la logica de control que los aplica:

DADD R2,R3,R5 ; CODOP Rdst,Rfte1,Rfte2LD R1,60(R2) ; CODOP Rdst,desp(Rfte1)SD R1,20(R2) ; CODOP Rdst,desp(Rfte1)SD R1,40(R2) ; CODOP Rdst,desp(Rfte1)

2. Disena la logica para resolver los riesgos de control.

Senales disponibles:

IF.stall, . . . , WB.stall: Mantienen la instruccion en la misma etapa durante el siguiente ciclo de reloj.

IF.stop, . . . , WB.stop: Convierten la instruccion presente en la etapa correspondiente ennop .

EX/MEM.cond: Indica, aTRUE, que el salto es efectivo.

Para expresar la logica de control, utiliza el formato:SI (EX/M.CODOP=IF/ID.Rfte2) ENT activar(cortocircuito1 )

Solucion:

1. El diagrama instrucciones-tiempo correspondiente al segmento de codigo es el mostrado seguida-mente:

16

Page 17: ejer2s

DADD R2,R3,R5

LD R1,60(R2)

SD R1,20(R2)

SD R1,40(R2)

IF ID EX

IF ID

IF

MEM

EX

ID

IF ID EX MEM WB

WB

MEM WB

EX MEM WB

1 6 7 85432

WBtoEX

WBtoMEMMEMtoEX

WBtoEX2

Para ejecutar correctamente el codigo no es necesario insertar ciclos de parada, pero hay queefectuar cuatro cortocircuitos:

Si ((EX/MEM.IRcodop = alu) AND (ID/EX.IRcodop = ld) AND (EX/MEM.IRRdst = ID/EX.IRRfte1))ent activar(MEMtoEX)

Si ((MEM/WB.IRcodop = alu) AND (ID/EX.IRcodop = sd) AND (MEM/WB.IRRdst = ID/EX.IRRfte1))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 figura muestra la ruta de datos con los cortocircuitos anadidos:

IF/ID ID/EX EX/MEM MEM/WB WBMEMEXIDIF

WBtoEXMEMtoEX

WBtoMEMWBtoEX2

Memoria

Datos

Memoria

InstruccionPC

Ext.

Signo

Cero?

+4

8

3

35

3

8

3

3

2

4

Rfte1

Rdst

W

Rfte2

Reg

istr

os R

R

2. La logica de control debe buscar instrucciones posteriores a la de salto, hasta que se escribe elnuevo valor del PC (etapa MEM), cancelandolas en caso de queel salto sea efectivo:Salto IF ID EX MEM WBi1 IF ID EXi2 IF IDi3 IFdest IF ID EX MEM WB

17

Page 18: ejer2s

La logica 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 instruccion segmentado en 6etapas:

IF: Busqueda de la instruccion e incremento del PC.

RF: Decodificacion y lectura de registros (2o semiciclo).

ALU1: Calculo de la direccion efectiva en accesos a memoria y saltos.

MEM: Acceso a memoria.

ALU2: Operaciones aritmeticas, evaluacion de la condicion 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 tiposde instrucciones aritmeticas:Tipo R: ALUop Rdst,Rfte1,Rfte2Tipo 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 maquina posee arquitectura Harvard y resuelve los riesgos de datos mediante la tecnica del cortocircuito.

1. Para evitar riesgos estructurales, ¿cual es el numero mınimo de sumadores necesario en esta segmentacion?

Encuentra el numero mınimo de puertos de lectura/escritura tanto para el banco de registros como paramemoria, a fin de evitar riesgos estructurales.

2. Si la maquina utiliza la tecnica del salto retardado, ¿cuanto vale eldelay-slot?

3. ¿Tiene interes aplicar una estrategiapredict-takenpara los saltos condicionales hacia posiciones anterioresdel codigo en este procesador? En caso afirmativo, ¿que penalizacion en ciclos de reloj conllevan los saltoscorrectamente predichos?

4. Disena la logica de control de los multiplexores que aplican la tecnica del cortocircuito tomando en con-sideracion solo la ejecucion de instrucciones aritmeticas de tipo R. El nombre de los registros inter-etapasen la unidad de instruccion segmentada es el resultado de concatenar los nemotecnicos de las etapas que seseparan (Ej.: IF/RF)

5. Cuando se ejecutan secuencias de instrucciones R-M, tales como:

ADD R1,R2,R3ADD R4,R5,100(R1)

¿es necesario insertar algun ciclo de parada? En caso afirmativo, disena la logica que lo detecta.

Solucion:

1. Recursos necesarios para evitar riesgos estructurales.

Numero de sumadores. Hay tres etapas que pueden requerir unsumador:

18

Page 19: ejer2s

IF: para incrementar el PC

ALU1: para calcular la direccion efectiva de alguna referencia a memoria

ALU2: para realizar alguna operacion ALU

Banco de registros: Se leen (2 registros) en la etapa RF, y se escribe (1 registro) en la etapaWB. Por tanto, necesitamos al menos1 puerto de escritura y 2 puertos de lectura.Por otra parte, puesto que el banco de registros es de de ciclopartido, una optimizacionserıa tenerun unico puerto combinado de lectura/escritura mas otro puerto solo de lectura.

Memoria: Se lee en la etapa IF (instruccion) y en la etapa MEM(dato), y se escribe enla etapa MEM (dato). Por tanto, se requieren dos puertos, unode lectura y otro de lec-tura/escritura o bien una utilizar antememorias de instrucciones y datos separadas (arqui-tectura Harvard).

2. Tamano deldelay slot.

Puesto que el PC se escribe en la fase ALU2, es cuando la instruccion de salto esta ejecutandola fase WB cuando se puede buscar la instruccion destino delsalto. Por lo tanto, se buscan ycomienzan a ejecutar hasta 4 instrucciones entre la del salto y la instruccion destino del mismo.Salto IF RF A1 ME A2 WBinstr. 1 IF RF A1 ME A2 WBinstr. 2 IF RF A1 ME A2instr. 3 IF RF A1 MEinstr. 4 IF RF A1Destino IF RF

3. Interes de una estrategiapredict-taken.

Sı, ya que:

Se sabe la direccion de salto antes que la condicion.

Los saltos condicionales hacia atras suelen ser efectivosen un alto porcentaje de los casos.

La penalizacion cuando la condicion se cumple es de dos ciclos de reloj:Salto IF RF A1 ME A2 WBinstr. 1 IF RFinstr. 2 IFDestino IF RF A1 ME

4. Logica 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 WBinstr. 2 IF RF A1 ME A2instr. 3 IF RF A1 ME A2instr. 4 IF RF A1 ME A2instr. 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.IR codop =“Tipo R”) && ((ALU2/WB.IR 11.,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.IR codop =“Tipo R”) && ((ALU2/WB.IR 11.,15=ALU1/MEM.IR16.,20) or (ALU2/WB.IR11.,15=ALU1/MEM.IR22.,26))

19

Page 20: ejer2s

c) De WB a ALU1, si (ALU2/WB.IRcodop=“Tipo R”) & (RF/ALU1.IR codop =“Tipo R”) && ((ALU2/WB.IR 11.,15=RF/ALU1.IR16.,20) or (ALU2/WB.IR11.,15=RF/ALU1.IR22.,26))

5. Logica 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 paracalcular la direccion efectiva:instr. 1 IF RF A1 ME A2 WBinstr. 2 IF RF RF RF A1 Minstr. 3 IF IF IF RF A1instr. 4 IF RFinstr. 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 instrucciones–tiempo corresponden a la ejecucion de ciertos fragmentos de codigo

en varios procesadores. Indica, para cada uno de los casos, que tecnica se utiliza para resolver los riesgos de datos(insercion de ciclos de parada o cortocircuito) y los riesgos de control (insercion de ciclos de parada,predict-not-takeno salto retardado), ası como la fase en la que se escribe el PC.

1. L LW r2,a(r1) IF ID EX M WBL+4 ADD r3,r2,r3 IF ID ID EX M WBL+8 ADD r3,r4,r3 IF IF ID EX M WBL+12 SUB r1,r1,#4 IF ID EX M WBL+16 BNEZ r1, L IF ID EX M WBL+20 SW z(r0), r3 IF IDL+24 ADD r3,r0,r0 IFL LW r2,a(r1) IF ID EX M WB

2. L LW r2,a(r1) IF ID EX M WBL+4 ADD r3,r2,r3 IF ID ID EX M WBL+8 ADD r3,r4,r3 IF IF ID EX M WBL+12 SUB r1,r1,#4 IF ID EX M WBL+16 BNEZ r1, L IF ID EX M WBL+20 SW z(r0), r3 IF IF IFL LW r2,a(r1) IF ID EX M WB

3. L LW r2,a(r1) IF ID EX M WBL+4 SUB r1,r1,#4 IF ID EX M WBL+8 ADD r3,r2,r3 IF ID ID EX M WBL+12 BNEZ r1, L IF IF ID EX M WBL+16 ADD r3,r4,r3 IF ID ID EX M WBL LW r2,a(r1) IF IF ID EX M WB

Solucion:

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

20

Page 21: ejer2s

2. Riesgos de datos: cortocircuito; riesgos de control: insercion de ciclos de parada, escritura delPC en M.

3. Riesgos de datos: insercion de ciclos de parada; riesgosde control: salto retardado, escritura delPC 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=14

Los riesgos estructurales y de datos se detectan en la fase ID, insertando tantos ciclos de parada como seannecesarios. Tambien se utilizan cortocircuitos.

Mostrar el diagrama de ejecucion del siguiente fragmento de codigo, representando las etapas que atraviesancada una de las instrucciones, utilizando la siguiente notacion: IF fase de busqueda,ID fase de decodificacion,EX fase de ejecucion monociclo,A1,A2 fases de ejecucion del sumador/restador,M1,M2,M3 fases de ejecuciondel multiplicador,D1,D2,D3,D4 fases de ejecucion del divisor,MEfase de acceso a memoria yWBfase deescritura en registros. Las instrucciones multiciclo no realizan la faseME.

L.D F1, 0(R1)DIV.D F4, F0, F1ADD.D F2, F3, F4L.D F4, 4(R1)MULT.D F3, F4, F2L.D F5, 8(R1)

Solucion:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16L.D F1, 0(R1) IF ID EX M WBDIV.D F4,F0,F1 IF ID ID D1 D2 D3 D4 WBADD.D F2,F3,F4 IF IF ID ID ID ID A1 A2 WBL.D F4,4(R1) IF IF IF IF ID EX M WBMULT.D F3,F4,F5 IF ID ID M1 M2 M3 WBL.D F5,8(R1) IF IF ID ID EX M WB

Ejercicio 2.12. Se dispone de un procesador compatible con el juego de instrucciones del MIPS. En dichoprocesador se ejecuta la siguiente secuencia de codigo.

i1 L.D F0,X(R1)i2 MULT.D F0,F0,F4i3 L.D F2,Y(R1)i4 ADD.D F0,F0,F2i5 S.D F0,Y(R1)i6 DSUB R1,R1,#8i7 BNEZ R1,Li8 L.D F0,X(R1)i9 MULT.D F0,F0,F4i10 L.D F2,Y(R1)i11 L: DADD R1,R0,#dir

21

Page 22: ejer2s

Identifica al menos dos dependencias de cada tipo en el fragmento de codigo anterior.

Solucion:

La siguiente figura muestra algunas de las dependencias existentes en la secuencia de codigo prop-uesta.

ADD R1,R0,#dir

LD F2,Y(R1)

MULTD F0,F0,F4

LD F0,X(R1)

BNEZ R1,L

SUB R1,R1,#8

SD Y(R1),F0

ADDD F0,F0,F2

LD F2,Y(R1)

MULTD F0,F0,F4

LD F0,X(R1)

ADD R1,R0,#dir

LD F2,Y(R1)

MULTD F0,F0,F4

LD F0,X(R1)

BNEZ R1,L

SUB R1,R1,#8

SD Y(R1),F0

ADDD F0,F0,F2

LD F2,Y(R1)

MULTD F0,F0,F4

LD F0,X(R1)

ADD R1,R0,#dir

LD F2,Y(R1)

MULTD F0,F0,F4

LD F0,X(R1)

BNEZ R1,L

SUB R1,R1,#8

SD Y(R1),F0

ADDD F0,F0,F2

MULTD F0,F0,F4

LD F0,X(R1)

ADD R1,R0,#dir

LD F2,Y(R1)

MULTD F0,F0,F4

LD F0,X(R1)

BNEZ R1,L

SUB R1,R1,#8

SD Y(R1),F0

ADDD F0,F0,F2

LD F2,Y(R1)

MULTD F0,F0,F4

LD F0,X(R1)

LD F2,Y(R1)

Antidependencias Dependencias de salida Dependencias de controlDependencias de datos

Ejercicio 2.13. Aplica el metodo de Tomasulo a la siguiente version del bucle SAXPY para el procesador MIPSfuncionando a 80MHz. Las etapas de la unidad de ejecucion para las instrucciones multiciclo son IF (busque-da), ID (decodificacion), I (lanzamiento a ejecucion, aplicando el algoritmo de Tomasulo), En (ejecucion en eloperador multiciclo) y WB (escritura en el bus comun de datos).

Todos los operadores multiciclo estan segmentados, con tasa de iniciacion IR=1 y las siguientes latencias:2 ciclos paraload/store, 4 ciclos para suma/resta y 7 ciclos para multiplicacion/division. Cada operador tieneasociadas dos estaciones de reserva.

Los riesgos de control se resuelven mediante salto retardado condelay-slot=1.

bucle: l.d f2,x(r1)mult.d f4,f2,f0l.d f6,y(r1)add.d f6,f4,f6s.d f6,y(r1)bnez r1,bucledsub r1,r1,#8

Suponiendo que en el mismo ciclo se puede escribir un dato en el bus comun de datos e iniciar una operacionque estuviera en espera de ese dato, dibuja el diagrama instrucciones-tiempo correspondiente a las dos primerasiteraciones e indica el estado en que se encuentran los operadores virtuales, tampones de lectura y escritura y losregistros, en el ciclo 16.

Calcula el tiempo de ejecucion y los MFLOPS que alcanza el computador para ese fragmento de codigo.

22

Page 23: ejer2s

Estaciones de reserva:Estacion Ocup. Oper. Qj Vj Qk Vka1a2m1m2

Banco de Registros:F0 F2 F4 F6

busyValorQi

Tampones de lectura:Nombre busy Direccionl1l2

Tampones de escritura:Tampon busy Vk Qk Direccions1s2

Solucion:

Seguidamente, se muestra como evoluciona el estado de la unidad de ejecucion multiciclo en losprimeros ciclos de la ejecucion del bucle:

23

Page 24: ejer2s

Ciclo 3: Lanzamiento de la instruccionld f2,x(r1)

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

Estaciones de reserva:

Estacion Ocup. Oper. Qj Vj Qk Vka1a2m1m2

Banco de registros:

f0 f2 f4 f6Qi l1Vi a

Tampones de lectura:

Tampon Ocup. Direccionl1 sı x+[r1]l2

Tampones de escritura:

Tampon Ocup. Qj Vj Direccione1e2

Ciclo 4: Lanzamiento de la instruccionmultd f4,f2,f0

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

Estaciones de reserva:

Estacion Ocup. Oper. Qj Vj Qk Vka1a2m1 sı mult l1 am2

Banco de registros:

f0 f2 f4 f6Qi l1 m1Vi a

Tampones de lectura:

Tampon Ocup. Direccionl1 sı x+[r1]l2

Tampones de escritura:

Tampon Ocup. Qj Vj Direccione1e2

24

Page 25: ejer2s

Ciclo 5: Lanzamiento de la instruccionld f6,y(r1)

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

Estaciones de reserva:

Estacion Ocup. Oper. Qj Vj Qk Vka1a2m1 sı mult l1 am2

Banco de registros:

f0 f2 f4 f6Qi l1 m1 l2Vi a

Tampones de lectura:

Tampon Ocup. Direccionl1 sı x+[r1]l2 sı y+[r1]

Tampones de escritura:

Tampon Ocup. Qj Vj Direccione1e2

Ciclo 6: Lanzamiento de la instruccionaddd f6,f4,f6

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

Estaciones de reserva:

Estacion Ocup. Oper. Qj Vj Qk Vka1 sı add m1 l2a2m1 sı mult x1 am2

Banco de registros:

f0 f2 f4 f6Qi m1 a1Vi a x1

Tampones de lectura:

Tampon Ocup. Direccionl1l2 sı y+[r1]

Tampones de escritura:

Tampon Ocup. Qj Vj Direccione1e2

25

Page 26: ejer2s

Ciclo 7: Lanzamiento de la instruccionsd y(r1),f6

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

Estaciones de reserva:

Estacion Ocup. Oper. Qj Vj Qk Vka1 sı add m1 l2a2m1 sı mult x1 am2

Banco de registros:

f0 f2 f4 f6Qi m1 a1Vi a x1

Tampones de lectura:

Tampon Ocup. Direccionl1l2 sı y+[r1]

Tampones de escritura:

Tampon Ocup. Qj Vj Direccione1 sı a1 y+[r1]e2

El diagrama instrucciones–tiempo evoluciona hasta el estado mostrado por la siguiente figura:

Instruc-Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26l.d f2,x(r1) IF ID I L1 L2 WBmult.d f4,f2,f0 IF ID I - M1 M2 M3 M4 M5 M6 M7 WBl.d f6,y(r1) IF ID I L1 L2 WBadd.d f6,f4,f6 IF ID I - - - - - - A1 A2 A3 A4 WBs.d f6,y(r1) IF ID I - - - - - - - - - S1 S2bnez r1,bucle IF ID EX ME WBdsub r1,r1,#8 IF ID EX ME WBl.d f2,x(r1) IF ID I L1 L2 - WBmult.d f4,f2,f0 IF ID I - - M1 M2 M3 M4 M5 M6 M7 WBl.d f6,y(r1) IF ID I L1 L2 WBadd.d f6,f4,f6 IF ID I - - - - - - - A1 A2 A3 A4 WBs.d f6,y(r1) IF ID I - - - - - - - - - - S1 S2bnez r1,bucle IF ID EX ME WBdsub r1,r1,#8 IF ID EX ME WB

Nota: En la solucion aparece un conflicto de acceso al bus comun dedatos (ciclo 13), que se haresuelto dando prioridad a la instruccion mas antigua.

26

Page 27: ejer2s

El estado del la unidad de ejecucion multiciclo en elciclo 16sera la siguiente:

Estaciones de reserva:

Estacion Ocup. Oper. Qj Vj Qk Vka1 sı add.d a*x1 y1a2 sı add.d m2 y2m1m2 sı mult.d x2 a

Banco de registros:

f0 f2 f4 f6Qi m2 a2Vi a x2

Tampones de lectura:

Tampon Ocup. Direccionl1l2

Tampones de escritura:

Tampon Ocup. Qj Vj Direccione1 sı a1 y+[r1]e2 sı a2 y-8+[r1]

En cuanto al calculo del tiempo de ejecucion, se observa que cada iteracion requerira7 ciclos, cadauna de las cuales realiza2 operaciones en coma flotante:

T (n) = 7× n ciclos

y los MFLOPS:

R∞ = lımn→∞

oper

T (n)= lımn→∞

2·n7·n

= 27oper/ciclos = 2·80·106

7oper/seg = 22,86 MFLOPS

Ejercicio 2.14. Cierto programa consume la mayor parte de su tiempo de ejecucion llevando a cabo la siguienteoperacion:

~Y = ~Y + ~XDicho programa se pretende ejecutar sobre dos procesadoresMIPS y MIPS/T. Las dos maquinas poseen op-

eraciones de coma flotante en su juego de instrucciones, funcionan a una frecuencia de 100 MHz, el CPI de lasinstrucciones enteras es 1 y eldelay slotes de 1 instruccion. En ambos procesadores, las instrucciones enterasatraviesan las siguientes etapas: IF (busqueda de la instruccion), ID (decodificacion de la instruccion, lectura deregistros fuente y deteccion de riesgos), EX (ejecucion), MEM (acceso a memoria, en su caso) y WB (escrit-ura del resultado en el registro destino). En el MIPS, las etapas que atraviesa una instruccion de coma flotanteson: IF, ID, En (ejecucion en el operador multiciclo correspondiente) y WB. Los riesgos de datos se resuelvenmediante cortocircuitos, insertando en ID los ciclos de parada necesarios. El MIPS/T posee gestion dinamica deinstrucciones, aplicando el algoritmo de Tomasulo en una nueva etapa I (Issue) ubicada a continuacion de ID, yescribiendo en el bus comun de datos en WB (duracion de la transferencia 1 ciclo).

Las caracterısticas de las unidades funcionales multiciclo no segmentadasde cada maquina son las siguientes:

Uds. carga Sumadores Multiplicadores Uds. almacenamientoMIPS 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 codigo generado por el compilador es el siguiente:

loop: L.D F2,X(R1)L.D F4,Y(R1)ADD.D F4,F2,F4S.D F4,Y(R1)BNEZ R1,loopDSUB R1,R1,#8

Calcula el tiempo necesario, expresado en segundos, para procesar el fragmento de codigo en cada una de lasmaquinas, ası como la velocidad de ejecucion del mismo enMFLOPS para vectores de tamano muy grande.

27

Page 28: ejer2s

Solucion:

1. MIPS. La figura muestra el diagrama de ejecucion de las instrucciones.

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

L.D F4,Y(R1) IF id ID L1 L2 WBADD.D F4,F2,F4 if IF id ID A1 A2 A3 WBS.D Y(R1),F4 if IF id id ID S1 S2BNEZ R1,loop if if IF ID EX M WBDSUB R1,R1,#8 IF ID EX M WB

loop: L.D F2,X(R1) IF ID L1 L2 WBL.D F4,Y(R1) IF id ID L1 L2 WBADD.D F4,F2,F4 if IF id ID A1 A2 A3 WBS.D F4,Y(R1) if IF id id ID S1 S2BNEZ R1,loop if if IF IDDSUB R1,R1,#8 IF ID EX M WB

loop: L.D F2,X(R1) IF ID L1 L2 WB

Cada iteracion le cuesta 10 ciclos de reloj, por lo que el tiempo de ejecucion sera:

T (n) ≈ 10n ciclos @ 100 MHz =10n× 10−8 s.

Como solo hay1 operacion en coma flotante por cada iteracion, la velocidad sostenida serıa:

R = 1×10010

= 10 MFLOPS

2. MIPS/T:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22loop: L.D F2,X(R1) IF ID I L1 L2 WB

L.D F4,Y(R1) IF ID I - L1 L2 WBADD.D F4,F2,F4 IF ID I - - - A1 A2 A3 WBS.D Y(R1),F4 IF ID I - - - - - - S1 S2BNEZ R1,loop IF ID EX M WBDSUB R1,R1,#8 IF ID EX M WB

loop: L.D F2,X(R1) IF ID I L1 L2 L2 WBL.D F4,Y(R1) IF ID I - - L1 L2 WBADD.D F4,F2,F4 IF ID I - - - - A1 A2 A3 WBS.D F4,Y(R1) IF ID I - - - - - - - S1 S2BNEZ R1,loop IF IDDSUB R1,R1,#8 IF ID EX M WB

loop: L.D F2,X(R1) IF ID I L1 L2 WB

Cada iteracion le cuesta 6 ciclos de reloj, por lo que el tiempo de ejecucion sera:

T (n) ≈ 6n ciclos @ 100 MHz =6n× 10−8 s.

Como hay 1 operacion en coma flotante por cada iteracion:

R = 1×1006

= 16,7 MFLOPS

Ejercicio 2.15.Se dispone de un procesador similar al MIPS que ejecuta las operaciones de coma flotante aplicando gestion

dinamica de instrucciones basada en el algoritmo de Tomasulo. En dicho procesador se ha ejecutado un ciertocodigo, del cual se muestra su diagrama instrucciones–tiempo.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24loop: L.D F2,X(R1) IF ID I L1 L2 L3 WB

L.D F4,Y(R1) IF ID I - - L1 L2 L3 WBADD.D F6,F2,F4 IF ID I - - - - - A1 A2 A3 WBSUB.D F0,F0,F4 IF ID I - - - - - A1 A2 A3 WBS.D F6,Y(R1) IF ID I - - - - - - - S1 S2 S3BNEZ R1,loop IF ID EX ME WBDSUB R1,R1,#8 IF ID EX ME WB

loop: L.D F2,X(R1) IF ID I L1 L2 L3 - - WB

28

Page 29: ejer2s

L.D F4,Y(R1) IF ID I - - L1 L2 L3 WBADD.D F6,F2,F4 IF ID I - - - - - A1 A2 A3 WBSUB.D F0,F0,F4 IF ID I I - - - - A1 A2 A3 WBS.D F6,Y(R1) IF id ID I - - - - - - S1 S2 S3BNEZ R1,loop if IF ID EX ME WBDSUB R1,R1,#8 IF ID EX ME WB

A partir de esta informacion, determinar las caracterısticas del procesador en lo referente a:

1. Operadores disponibles en la ruta de datos de coma flotante, numero de operadores de cada tipo, la latenciade los mismos y detalles de implementacion (segmentados lineales ono segmentados).

2. Numero mınimo de estaciones de reserva, tampones de lectura y escritura disponibles.

3. Existencia de una cola de instrucciones de coma flotante entre la etapaID e I .

4. Tiempo de transferencia por el bus comun de datos.

5. Como se resuelven los riesgos de control.

Se debera justificar brevemente cada respuesta, indicandolas instrucciones y los ciclos a partir de los cualesse ha extraıdo la informacion.

Solucion:

1. Los operadores disponibles son:

a) Un operador de carga no segmentado con latencia 3. Esta informacion se puede obtener apartir de las instruccionesL.D F2,X(R1) y L.D F4,Y(R1) en los ciclos del 4 al 9. Eneste intervalo, aunque estan las dos operaciones disponibles, la segunda carga no comienzahasta que ha terminado la primera.

b) Un operador de suma/resta segmentado lineal con latencia 3. Esta informacion se puedeobtener a partir de las instruccionesADD.D F6,F2,F4 y SUB.D F0,F0,F4 en losciclos del 11 al 14. En dichos ciclos se ejecutan solapadamente las dos instrucciones, pero lasegunda comienza un ciclo mas 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 ejecucion de la instruccionS.DY(R1),F6 en los ciclos 15 a 17 se puede determinar que existe un operador de almace-namiento de latencia 3 independiente del operador de carga,pues solapa su ejecucion conuna operacion de carga durante los ciclos 14 y 15, y ya se hab´ıa determinado que el oper-ador de carga era no segmentado. No existe informacion paradeterminar si el operador essegmentado 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 instruc-ciones de carga lanzadas o en ejecucion.

b) Estaciones de reserva de suma/resta: exactamente 3. En el ciclo 13 la instruccionSUB.DF0,F0,F4 no se puede lanzar porque no quedan estaciones de reserva, y se produce unciclo de parada. En ese instante, hay 3 operaciones de suma/resta lanzadas o en ejecucion.

c) Tampones de escritura: 2 como mınimo, puesto que en los ciclos del 15 al 17 hay dosinstrucciones de almacenamiento lanzadas o en ejecucion.

29

Page 30: ejer2s

3. No dispone de cola de instrucciones entre la etapaID e I . Se puede observar que en el ciclo15 se repite la etapaI de la instruccionSUB.D F0,F0,F4 , insertandose un ciclo de paraday bloqueando la instruccion de almacenamiento en la etapaID . Si existiera dicha cola de in-strucciones, la instruccionSD Y(R1),F6 habrıa pasado a la cola y las instrucciones enterashabrıan continuado su ejecucion normalmente.

4. El tiempo de transferencia por el bus comun de datos es de un ciclo de reloj. Esto se puedeobtener facilmente observando los instantes en que se generan los resultados y comienzan lasoperaciones pendientes. Por ejemplo, en el ciclo 10 la instruccion L.D F4,Y(R1) vuelcael dato procedente de la memoria sobre el bus, pero la instruccion ADD.D F6,F2,F4 nocomienza su ejecucion hasta el ciclo 11.

5. Riesgos de control. Puesto que la instruccionBNEZ R1,L salta, y no se cancela ninguna in-struccion, los riesgos de control se resuelven mediante unsalto retardado condelay-slotigual a1. Una estrategiapredict-takenno puede ser, ya que la instruccion siguiente al salto se ha bus-cado antes de decodificarBNEZ R1,L, por lo que no se ha podido calcular ninguna direccion.Otra posibilidad factible serıa que se emplease un predictor dinamico de saltos del tipoBranchTarget Buffer, el cual obtiene la prediccion sin necesidad de decodificarla instruccion de salto,en la etapaIF .

Ejercicio 2.16.Se tiene un procesador segmentado en 6 etapas (IF, IS, ID, EX,M, WB). La direccion destino y la condicion

de los saltos se calculan en las fases ID y EX, respectivamente. Mostrar las instrucciones que se buscarıan despuesde la de salto y sus fases para las 4 opciones posibles (se predice que no salta y finalmente no salta, se prediceque no salta y finalmente si salta, se predice que si salta y finalmente no salta, se predice que si salta y finalmentesi salta), en los siguientes casos:

1. La maquina utiliza un predictor del tipoBranch Prediction Buffer de 1 bit, que obtiene la prediccion enla fase ID.

2. La maquina utiliza un predictor del tipoBranch Target Buffer , que obtiene su resultado durante la fase IS.

Las instrucciones se representaran como:I.Salto, instruccion de salto,PC+i (i= 1, 2, ...), instrucciones poste-riores a la instruccion de salto,Dest, instruccion destino del salto yDest+i (i= 1, 2, ...), instrucciones posterioresa la instruccion destino del salto.

Solucion:

Branch Prediction Buffer

1. Se predice queno salta y finalmenteno salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p,d c

I.Salto IF IS ID EX M WBPC+1 IF IS ID EX M WBPC+2 IF IS ID EX M WBPC+3 IF IS ID EX M WBPC+4 IF IS ID EX M WBPC+5 IF IS ID EX M WBPC+6 IF IS ID EX M WB

30

Page 31: ejer2s

2. Se predice queno salta y finalmentesı salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p,d c

I.Salto IF IS ID EX M WBPC+1 IF IS IDPC+2 IF ISPC+3 IFDEST IF IS ID EX M WBDEST+1 IF IS ID EX M WBDEST+2 IF IS ID EX M WB

3. Se predice quesı salta y finalmenteno salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p,d c

I.Salto IF IS ID EX M WBPC+1 IF ISPC+2 IFDEST IFPC+1 IF IS ID EX M WBPC+2 IF IS ID EX M WBPC+3 IF IS ID EX M WB

4. Se predice quesı salta y finalmentesı salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p,d c

I.Salto IF IS ID EX M WBPC+1 IF IDPC+2 IFDEST IF IS ID EX M WBDEST+1 IF IS ID EX M WBDEST+2 IF IS ID EX M WBDEST+3 IF IS ID EX M WB

Branch Target Buffer.

1. Se predice queno salta y finalmenteno salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p d c

I.Salto IF IS ID EX M WBPC+1 IF IS ID EX M WBPC+2 IF IS ID EX M WBPC+3 IF IS ID EX M WBPC+4 IF IS ID EX M WBPC+5 IF IS ID EX M WBPC+6 IF IS ID EX M WB

31

Page 32: ejer2s

2. Se predice queno salta y finalmentesı salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p d c

I.Salto IF IS ID EX M WBPC+1 IF IS IDPC+2 IF ISPC+3 IFDEST IF IS ID EX M WBDEST+1 IF IS ID EX M WBDEST+2 IF IS ID EX M WB

3. Se predice quesı salta y finalmenteno salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p d c

I.Salto IF IS ID EX M WBPC+1 IFDEST IF ISDEST+1 IFPC+1 IF IS ID EX M WBPC+2 IF IS ID EX M WBPC+3 IF IS ID EX M WB

4. Se predice quesı salta y finalmentesı salta.

Instruccion 1 2 3 4 5 6 7 8 9 10 11 12p d c

I.Salto IF IS ID EX M WBPC+1 IFDEST IF IS ID EX M WBDEST+1 IF IS ID EX M WBDEST+2 IF IS ID EX M WBDEST+3 IF IS ID EX M WBDEST+4 IF IS ID EX M WB

Ejercicio 2.17. Un procesador dispone de un predictor dinamico de saltos del tipo BTB (Branch Target Buffer)que obtiene su prediccion en la fase de busqueda de la instruccion. La direccion y condicion de salto se calculaen la 3a fase del ciclo de instruccion. La probabilidad de que un salto se encuentre en la tabla es del 80 % y deque 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 despues de la de salto y sus fases para las opciones siguientes:

No hay una entrada en la tabla de prediccion y el saltono salta.

No hay una entrada en la tabla de prediccion y el saltosalta.

El predictor predice queno saltay finalmente el saltono salta.

El predictor predice queno saltay finalmente el saltosı salta.

El predictor predice quesı salta y finalmente el saltono salta.

El predictor predice quesı salta y finalmente el saltosı salta.

32

Page 33: ejer2s

Las instrucciones se representaran como:I.Salto, instruccion de salto,PC+i (i= 1, 2, ...), instruccionesposteriores a la instruccion de salto,Dest, instruccion destino del salto yDest+i (i= 1, 2, ...), instruccionesposteriores a la instruccion destino del salto. Las fases del ciclo de instruccion comoF1, F2, etc...

2. Calcula el CPI medio de las instrucciones de salto.

3. Supongase que se puede modificar el diseno del BTB de dos formas. La primera consiste en aumentar elnumero de entradas de la tabla, de forma que aloje el 90 % de los saltos ejecutados. La segunda es utilizarun predictor de dos bits de manera que se aumente la precision de la prediccion hasta el 95 %. ¿Cual de lasdos es la que permite reducir los CPI de las instrucciones de salto?

Solucion:

1. Mostrar las instrucciones que se buscarıan despues de la de salto y sus fases para las opcionessiguientes:

No hay una entrada en la tabla de prediccion y el saltono salta.p d,c

I. Salto F1 F2 F3 F4 F5 F6PC + 1 F1 F2 F3 F4 F5 F6PC + 2 F1 F2 F3 F4 F5 F6PC + 3 F1 F2 F3 F4 F5 F6

→ 0 ciclos de penalizacion.

No hay una entrada en la tabla de prediccion y el saltosalta.p d,c

I. Salto F1 F2 F3 F4 F5 F6PC + 1 F1 F2 XPC + 2 F1 XDest F1 F2 F3 F4 F5 F6

→ 2 ciclos de penalizacion.

El predictor predice queno saltay finalmente el saltono salta.p d,c

I. Salto F1 F2 F3 F4 F5 F6PC + 1 F1 F2 F3 F4 F5 F6PC + 2 F1 F2 F3 F4 F5 F6PC + 3 F1 F2 F3 F4 F5 F6

→ 0 ciclos de penalizacion.

El predictor predice queno saltay finalmente el saltosı salta.p d,c

I. Salto F1 F2 F3 F4 F5 F6PC + 1 F1 F2 XPC + 2 F1 XDest F1 F2 F3 F4 F5 F6

→ 2 ciclos de penalizacion.

El predictor predice quesı saltay finalmente el saltono salta.p d,c

I. Salto F1 F2 F3 F4 F5 F6Dest F1 F2 XDest + 1 F1 XPC + 1 F1 F2 F3 F4 F5 F6

→ 2 ciclos de penalizacion.

El predictor predice quesı saltay finalmente el saltosı salta.

33

Page 34: ejer2s

p d,cI. Salto F1 F2 F3 F4 F5 F6Dest F1 F2 F3 F4 F5 F6Dest + 1 F1 F2 F3 F4 F5 F6Dest + 2 F1 F2 F3 F4 F5 F6

→ 0 ciclos de penalizacion.

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 ysu CPI (1 de la instruccion de salto mas los posibles ciclosde parada:Caso Probabilidad CPI

1 0.2*0.4 12 0.2*0.6 33 0.8*0.4*0.9 14 0.8*0.6*0.1 35 0.8*0.4*0.1 36 0.8*0.6*0.9 1

CPI 1.4Casos:

1. No hay una entrada en la tabla de prediccion y el saltono salta.2. No hay una entrada en la tabla de prediccion y el saltosalta.3. El predictor predice queno saltay finalmente el saltono salta.4. El predictor predice queno saltay finalmente el saltosı salta.5. El predictor predice quesı saltay finalmente el saltono salta.6. El predictor predice quesı saltay finalmente el saltosı salta.

El CPI medio se calcula obteniendo la media aritmetica ponderada.

3. Supongase que se puede modificar el diseno del BTB de dos formas. La primera consiste enaumentar el numero 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 precision de laprediccion hasta el 95 %. ¿Cual de las dos es la que permite reducir los CPI de las instruccionesde salto?

Las tablas siguientes muestran los nuevo valores de la probabilidad de cada caso para cada unade las opciones:

Se aumenta el tamano de la tabla de prediccion.Caso Probabilidad CPI

1 0.1*0.4 12 0.1*0.6 33 0.9*0.4*0.9 14 0.9*0.6*0.1 35 0.9*0.4*0.1 36 0.9*0.6*0.9 1

CPI 1.3Se aumenta la precision en la prediccion.

34

Page 35: ejer2s

Caso Probabilidad CPI1 0.2*0.4 12 0.2*0.6 33 0.8*0.4*0.95 14 0.8*0.6*0.05 35 0.8*0.4*0.05 36 0.8*0.6*0.95 1

CPI 1.32

La primera opcion 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 deejecucion segmentada con las siguientes etapas:

IF Busqueda de la instruccion.

ID Decodificacion de la instruccion y lectura de registros.

ALU Calculo de la direccion de destino del salto y de la direccion de acceso a memoria.

MEM Acceso a memoria.

EX1 Primera fase de ejecucion y calculo de la condicion de salto.

EX2 Segunda fase de ejecucion.

WB Escritura en registros.

Se desea evaluar dos esquemas de prediccion de saltos para su implementacion en el procesador. Los predic-tores que se desean evaluar son: unBranch Prediction Buffery un Branch Target Buffer, los cuales ofrecen suprediccion al final de la etapa ID. Ambos mecanismos estan implementados con 4 entradas en elbuffery utilizanun predictor de 2 bits, cuyo funcionamiento se ilustra en la figura:

"Salta"

"No salta"

Prediccion:

Prediccion: Prediccion:

Prediccion:

Salta

No salta

Salta

Salta

SaltaNo salta

No salta

No salta

"Salta"

"No salta"

BA

C D

Para la evaluacion de los mecanismos de prediccion se utiliza un programa de prueba, del que se muestra unfragmento a continuacion:

35

Page 36: ejer2s

Direcci on Instrucciones Direcci on Instrucciones...0x03 add r1, r0, r0 ...

lfor: 0x10 add r2, r2, #1... 0x11 slt r4, r2, #30x05 beqz r1, lendif 0x12 bnez r4, ldo... lbreak:

lendif: ...... 0x15 add r1, r1, #1

ldo: 0x16 slt r6, r1, #20x09 sub r8, r8, r2 0x17 bnez r6, lfor0x0A slt r3, r2, #2 0x18 sw z(r0), r80x0B seq r4, r1, r00x0C and r5, r3, r40x0D beqz r5, lbreak

Inicialmente elBranch Prediction Buffercontiene todas las entradas en estado “D”, y elBranch Target Buffertiene todas las entradas vacıas. Cuando se anade una nuevaentrada en elBranch Target Buffer, su estado sera “A”si el salto ha sido efectivo y “D” si el salto no ha sido efectivo.

Las estadısticas finales de la ejecucion del programa de prueba son las siguientes: el 15 % de las instruccionesson saltos condicionales, el 60 % de los saltos condicionales son efectivos (saltan), elBranch Prediction Bufferacierta en la prediccion el 75 % de los casos, y elBranch Target Bufferacierta en la prediccion el 90 %, incluyendolos 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 ejecucion del fragmento de codigo hasta que se complete la instruccion “swz(r0), r8 ”. Se debera mostrar el contenido de las entradas de ambos predictores despues de cadauno de los saltos (“beqz r1, lendif ”, “ beqz r5, lbreak ”, “ bnez r4, ldo ” y “ bnez r6,lfor ”). Se deberan utilizar las etiquetas para anotar las direcciones de destino.

Instruccion de saltobeqz r1, lendif . (r1 = 0)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobeqz r5, lbreak . (r5 = 1)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobnez r4, ldo . (r4 = 1)

36

Page 37: ejer2s

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobeqz r5, lbreak . (r5 = 1)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobnez r4, ldo . (r4 = 1)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobeqz r5, lbreak . (r5 = 0)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobnez r6, lfor . (r6 = 1)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobeqz r1, lendif . (r1 = 1)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobeqz r5, lbreak . (r5 = 0)

37

Page 38: ejer2s

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

Instruccion de saltobnez r6, lfor . (r6 = 0)

BPB

Indice Estado00011011

BTB

Indice Dir. destino Estado

2. Analizar el comportamiento de ambos predictores cuando se equivocan en la prediccion, indicando que in-strucciones son las que se ejecutan en los ciclos siguientesal salto. Se debera indicar en cada caso elnumero ciclos de ejecucion perdidos. Las instrucciones canceladas se representaran con unaX en el ciclocorrespondiente. Las instrucciones siguientes al salto serepresentaran comopc+1, pc+2, ... y las instruc-ciones de destino del salto comodest, dest+1, etc.

3. Calcular el numero medio de ciclos por instruccion (CPI) para el programa de prueba, utilizando cada unode los esquemas de prediccion propuestos. Suponer que las instrucciones que no son saltos se ejecutan conCPI=1. Determinar cual es la mejor opcion atendiendo a losresultados de CPI obtenidos.

Solucion:

1. Traza de la ejecucion.

Instruccion de salto0x05 (00000101) beqz r1, lendif . (r1 = 0)SaltaBPB

Indice Estado00 D01 C10 D11 D

BTB

Indice Dir. destino Estado0x05 lendif A

Instruccion de salto0x0D (00001101) beqz r5, lbreak . (r5 = 1)No saltaBPB

Indice Estado00 D01 D10 D11 D

BTB

Indice Dir. destino Estado0x05 lendif A0x0D lbreak D

Instruccion de salto0x12 (00010010) bnez r4, ldo . (r4 = 1)Salta

38

Page 39: ejer2s

BPB

Indice Estado00 D01 D10 C11 D

BTB

Indice Dir. destino Estado0x05 lendif A0x0D lbreak D0x12 ldo A

Instruccion de salto0x0D (00001101) beqz r5, lbreak . (r5 = 1)No saltaBPB

Indice Estado00 D01 D10 C11 D

BTB

Indice Dir. destino Estado0x05 lendif A0x0D lbreak D0x12 ldo A

Instruccion de salto0x12 (00010010) bnez r4, ldo . (r4 = 1)SaltaBPB

Indice Estado00 D01 D10 A11 D

BTB

Indice Dir. destino Estado0x05 lendif A0x0D lbreak D0x12 ldo A

39

Page 40: ejer2s

Instruccion de salto0x0D (00001101) beqz r5, lbreak . (r5 = 0)SaltaBPB

Indice Estado00 D01 C10 A11 D

BTB

Indice Dir. destino Estado0x05 lendif A0x0D lbreak C0x12 ldo A

Instruccion de salto0x17 (00010111) bnez r6, lfor . (r6 = 1)SaltaBPB

Indice Estado00 D01 C10 A11 C

BTB

Indice Dir. destino Estado0x05 lendif A0x0D lbreak C0x12 ldo A0x17 lfor A

Instruccion de salto0x05 (00000101) beqz r1, lendif . (r1 = 1)No saltaBPB

Indice Estado00 D01 D10 A11 C

BTB

Indice Dir. destino Estado0x05 lendif B0x0D lbreak C0x12 ldo A0x17 lfor A

Instruccion de salto0x0D (00001101) beqz r5, lbreak . (r5 = 0)SaltaBPB

Indice Estado00 D01 C10 A11 C

BTB

Indice Dir. destino Estado0x05 lendif B0x0D lbreak A0x12 ldo A0x17 lfor A

Instruccion de salto0x17 (00010111) bnez r6, lfor . (r6 = 0)No saltaBPB

Indice Estado00 D01 C10 A11 D

BTB

Indice Dir. destino Estado0x05 lendif B0x0D lbreak A0x12 ldo A0x17 lfor B

40

Page 41: ejer2s

2. Comportamiento de los predictores en caso de fallo en la prediccion.

Para el BPB:Predice queno salta ysı salta.

p d cI. Salto IF ID ALU ME EX1 EX2 WBPC+1 IF ID ALU ME XPC+2 IF ID ALU XPC+3 IF ID XPC+4 IF XDEST IF ID ALU ME EX1 EX2 WB

Se producencuatro ciclos de parada.Predice quesı salta yno salta.

p d cI. Salto IF ID ALU ME EX1 EX2 WBPC+1 IF XPC+2 XDEST IF ID XDEST+1 IF XPC+1 IF ID ALU ME EX1 EX2 WB

Se producencuatro ciclos de parada.Para el BTB:Predice queno salta ysı salta.

p d cI. Salto IF ID ALU ME EX1 EX2 WBPC+1 IF ID ALU ME XPC+2 IF ID ALU XPC+3 IF ID XPC+4 IF XDEST IF ID ALU ME EX1 EX2 WB

Se producencuatro ciclos de parada.Predice quesı salta yno salta.

p d cI. Salto IF ID ALU ME EX1 EX2 WBPC+1 IF XDEST IF ID ALU XDEST+1 IF ID XDEST+2 IF XPC+1 IF ID ALU ME EX1 EX2 WB

Se producencuatro ciclos de parada.

3. CPI medio.Faltarıa obtener la penalizacion en caso de acierto en la prediccion. En caso de que el saltono sea efectivo, ninguno de los dos predictores tiene penalizacion alguna. En caso contrario, elBPB puede buscar la instruccion correcta en cuanto se conoce la direccion (fase ALU), intro-

41

Page 42: ejer2s

duciendo dos ciclos de parada, mientras que el BTB la busca tras acceder al predictor (fase ID),introduciendo solo un ciclo.

Para el BPB:Prediccion Condicion Probabilidad Penalizacion

No No 0.75*0.4 0No Si 0.25*0.6 4Si No 0.25*0.4 4Si Si 0.75*0.6 2

El numero medio de ciclos de parada de penalizacion es: 1.9ciclos.Teniendo en cuenta que los saltos son el 15 % de las instrucciones ejecutadas, y que el restose ejecuta con CPI=1, el CPI medio es de:1 + 0,15 · 1,9 = 1,29 ciclos.

Para el BTB:Prediccion Condicion Probabilidad Penalizacion

No No 0.9*0.4 0No Si 0.1*0.6 4Si No 0.1*0.4 4Si Si 0.9*0.6 1

El numero medio de ciclos de parada de penalizacion es: 0.94 ciclos, y el CPI medio de:1 + 0,15 · 0,94 = 1,14 ciclos.

Ejercicio 2.19.El MIPS64 contiene la instruccion condicional MOVZ Ra,Rb,Rc, donde Ra,Rb y Rc representan tres registros

del procesador y cuyo significado es el siguiente:MOVZ Ra,Rb,Rc→ Si (Rc=0) entonces Ra← Rb

1. Modifica el siguiente codigo de manera que se emplee la nueva instruccion:

DSLT R1,R3,R0DSUB R2,R0,R3BNEZ R1,LDADD R2,R3,R0

L:

2. Justifica las siguientes afirmaciones sobre las instrucciones condicionales:

a) La utilizacion de instrucciones condicionales no siempre reduce el numero de instrucciones ejecutadasen un programa.

b) Los procesadores solo suelen incluir unas pocas instrucciones condicionales sencillas.

Solucion:

1. Un posible codigo es:

DSUB R2,R0,R3DSLT R1,R3,R0MOVZ R2,R3,R1

L:

42

Page 43: ejer2s

2. La utilizacion de instrucciones condicionales no siempre reduce el numero de instruccionesejecutadas en un programa, ya que hay que incorporar la condicion a todas las instruccionesdel guardadas por esta. Estas instrucciones condicionales se ejecutan completamente, tanto sila condicion se cumple como sino. Sin embargo, empleando saltos condicionales, en cuanto lacondicion no se cumple, ya no se ejecutan las instruccionesdel bloque.Por otra parte, la adicion de instrucciones condicionalesconsume codigos de operacion, aumen-ta el numero de instrucciones a decodificar y complica la implementacion de la ruta de datos,lo que puede aumentar los CPI o el periodo de reloj. Todo esto,unido a que tienen una utilidadlimitada, sugiere que se anadan solo unas pocas instrucciones condicionales.

Ejercicio 2.20. Se dispone de un procesador basado en el MIPS64, y diversos mecanismos para la realizacionde especulacion estatica. Se pretende evaluar el comportamiento de dichos mecanismos con el siguiente codigoespeculativo:

ld * r1, 0(r2) ; Carga especulativaif_1: beqz r3, endif_1

dadd r1, r4, #8endif_1:

ld * r5, 0(r2) ; Carga especulativaif_2: beqz r6, endif_2

dsub r5, r7, #1endif_2:

dadd r8, r1, r5sd r8,0(r2)dadd r9, r0, #1

El estado de los registros y de la memoria antes de ejecutar dicho codigo es:

R1 R2 R3 R4 R5 R6 R7 R8 R910 0 0 4 5 6 7 8 9

Cabe destacar que el acceso a la direccion de memoria0 estaprohibido , y que por lo tanto, cualquier intentode leer o escribir en dicha posicion lanzara una excepcion por acceso ilegal.

Indicar las instrucciones que lanzan alguna excepcion, y si esta termina o no termina el programa, ası comoel valor de los registros al finalizar el programa, para los siguientes mecanismos:

1. Un procesador sin ayuda para la especulacion.

2. Mecanismo de cooperacion hardware/softwaresin distincion entre instrucciones normales e instruccionesespeculativas. Es decir, la rutina de servicio de la excepcion siempre devuelve un valor indefinido, y notermina el programa.

3. Mecanismo de cooperacion hardware/softwarecon distincion entre instrucciones normales e instruccionesespeculativas. Es decir, la rutina de servicio de la excepcion devuelve un valor indefinido si la instrucciones especulativa, y termina el programa solo en caso de que lainstruccion sea normal.

4. Especulacion con poison bits.

Utilizar las etiquetasindefinidoy suciopara indicar cuando el valor de un registro es indefinido, o tiene elpoison bit a 1, respectivamente.

Solucion:

43

Page 44: ejer2s

CasoA: Un procesador sin ayuda para la especulacion.

Instrucciones Lanza excepcion Termina el prog. Accionesld * r1, 0(r2) SI SI Termina

La instruccionld * r1, 0(r2) intenta acceder a una posicion protegida, se lanza una excep-cion y la rutina de tratamiento de la excepcion hace terminar el programa.El contenido del banco de registros al final de la ejecucion del programa es:

R1 R2 R3 R4 R5 R6 R7 R8 R910 0 0 4 5 6 7 8 9

CasoB: Mecanismo de cooperacion hardware/softwaresin distincion entre instrucciones nor-males e instrucciones especulativas.

Instrucciones Lanza excepcion Termina el prog. Accionesld * r1, 0(r2) SI NO r1= Indefinidobeqz r3, endif 1 Saltald * r5, 0(r2) SI NO r5= Indefinidobeqz r6, endif 2 No saltadsub r5, r7, #1 r5= 7 - 1 = 6dadd r8, r1, r5 r8= Indefinidosd r8,0(r2) SI NO No almacenadadd r9, r0, #1 r9= 1

Las instruccionesld * r1, 0(r2) , ld * r5, 0(r2) y sd r8,0(r2) realizan un acce-so ilegal a la posicion de memoria 0, generando una excepci´on en todos los casos, pero la rutinade tratamiento de dicha excepcion devuelve un valor indefinido y no termina con el programa.Nota: Las instrucciones no pueden detectar un valor indefinido en un registro, y por lo tanto, lainstrucciondadd r8, r1, r5 no genera ningun tipo de excepcion.

El contenido del banco de registros al final de la ejecucion del programa es:

R1 R2 R3 R4 R5 R6 R7 R8 R9Indef. 0 0 4 6 6 7 Indef. 1

CasoC: Mecanismo de cooperacion hardware/softwarecon distincion entre instrucciones nor-males e instrucciones especulativas.

Instrucciones Lanza excepcion Termina el prog. Accionesld * r1, 0(r2) SI NO r1= Indefinidobeqz r3, endif 1 Saltald * r5, 0(r2) SI NO r5= Indefinidobeqz r6, endif 2 No saltadsub r5, r7, #1 r5= 7 - 1 = 6dadd r8, r1, r5 r8= Indefinidosd r8,0(r2) SI SI Termina

Las instruccionesld * r1, 0(r2) , ld * r5, 0(r2) y sd r8,0(r2) realizan un acce-

44

Page 45: ejer2s

so ilegal a la posicion de memoria 0, generando una excepci´on en todos los casos. La rutinade tratamiento de dicha excepcion devolvera un valor indefinido en caso de que la instruccionsea especulativa (ld * r1, 0(r2) y ld * r5, 0(r2) ), y no terminara con el programa, yterminara con el programa en caso de que se trate de una instruccion normal (sd r8,0(r2) ).

Nota: Las instrucciones no pueden detectar un valor indefinido en un registro, y por lo tanto, lainstrucciondadd r8, r1, r5 no genera ningun tipo de excepcion.

El contenido del banco de registros al final de la ejecucion del programa es:

R1 R2 R3 R4 R5 R6 R7 R8 R9Indef. 0 0 4 6 6 7 Indef. 9

CasoD: Especulacion con poison bits.

Instrucciones Lanza excepcion Termina el prog. Accionesld * r1, 0(r2) SI NO r1= Suciobeqz r3, endif 1 Saltald * r5, 0(r2) SI NO r5= Suciobeqz r6, endif 2 No saltadsub r5, r7, #1 r5= 7 - 1 = 6dadd r8, r1, r5 SI SI Termina

El contenido del banco de registros al final de la ejecucion del programa es:

R1 R2 R3 R4 R5 R6 R7 R8 R9Sucio 0 0 4 6 6 7 8 9

Ejercicio 2.21. Se posee un procesador del tipo MIPS64 dotado de un banco de registros conpoison bits, sobreel que se ejecuta el siguiente codigo en alto nivel:

if (ptr != NULL)a= * ptr + b;

elsea= b;

El correspondiente codigoespeculativoen lenguaje ensamblador es:

ld R4, 0(R2)ld * R5, 0(R1)dadd * R6, R4, R5bnez R1, saltodadd R6, R0, R4

salto: sd R6,0(R3)

donde se ha utilizado especulacion estatica y las instrucciones especulativas estan marcadas con un asterisco(*). Teniendo en cuenta que el procesador aplicara la tecnica delpoison bit, realizaruna traza de la ejecucion dedicho codigo para los casos:

45

Page 46: ejer2s

1. ptr = 0 (R1 = 0)

Instrucciones Mem[R1] Mem[R2] Mem[R3] R4 R5 R6Estado inicial Prohibido 4 0 0 0 0

2. ptr = 1 (R1 = 1)

Instrucciones Mem[R1] Mem[R2] Mem[R3] R4 R5 R6Estado inicial Prohibido 4 0 0 0 0

3. ptr <> 0 (R1 <> 0)

Instrucciones Mem[R1] Mem[R2] Mem[R3] R4 R5 R6Estado inicial 5 4 0 0 0 0

teniendo en cuenta que las direcciones0 y 1 corresponden al nucleo del SO, y por lo tanto, no se tiene permisopara acceder a ellas.

En la traza se mostrara el contenido de los registrosR4, R5 y R6, y de la posicion de memoriaMem[R3] ,tras cada una de las instrucciones ejecutadas. Para indicarque un registro tiene elpoison bitactivo se utilizara lapalabrasucioy para indicar que no se sabe el contenido de la posicion de memoria se escribiraindefinido.

Indicaren cada caso, si se lanzara una excepcion que termine el programa y despues de que instruccion.

Solucion:

1. ptr = 0 (R1 = 0)Instruccion Mem[R1] Mem[R2] Mem[R3] R4 R5 R6Estado inicial Prohibido 4 0 0 0 0ld R4,0(R2) Prohibido 4 0 4 0 0ld* R5,0(R1) Prohibido 4 0 4 Suciodadd* R6,R4,R5 Prohibido 4 0 4 Sucio Suciobnez R1,salto Prohibido 4 0 4 Sucio Suciodadd R6, R0, R4 Prohibido 4 0 4 Sucio 4sd R6,0(R3) Prohibido 4 4 4 Sucio 4

No se produce ninguna excepcion.

2. ptr = 1 (R1 = 1)Instruccion Mem[R1] Mem[R2] Mem[R3] R4 R5 R6Estado inicial Prohibido 4 0 0 0 0ld R4,0(R2) Prohibido 4 0 4 0 0ld* R5,0(R1) Prohibido 4 0 4 Sucio 0dadd* R6,R4,R5 Prohibido 4 0 4 Sucio Suciobnez R1,salto Prohibido 4 0 4 Sucio Suciosd R6,0(R3) Prohibido 4 0 4 Sucio Sucio

Se produce una excepcion que termina el programa.

3. ptr <> 0 (R1 <> 0)Instruccion Mem[R1] Mem[R2] Mem[R3] R4 R5 R6Estado inicial 5 4 0 0 0 0ld R4,0(R2) 5 4 0 4 0 0ld* R5,0(R1) 5 4 0 4 5 0dadd* R6,R4,R5 5 4 0 4 5 9bnez R1,salto 5 4 0 4 5 9sd R6,0(R3) 5 4 9 4 5 9

No se produce ninguna excepcion.

46

Page 47: ejer2s

Ejercicio 2.22. Se posee un procesador MIPS con soporte para la ejecucion especulativa mediante la tecnica delospoison bits. El procesador ejecuta todas las instrucciones mediante gestion dinamica de instrucciones usando elalgoritmo de Tomasulo, pasando por las etapas IF (busquedade la instruccion), I (decodificacion y lanzamiento),Ei (ejecucion multiciclo) y WB (escritura de registros). Todas las fases duran un ciclo de reloj, excepto la fase Eicuya duracion depende del operador multiciclo correspondiente.

El procesador posee las siguientes caracterısticas:

Un predictor del tipo Branch Target Buffer que nos ofrece la prediccion y la direccion de salto al final de lafase IF de la instruccion de salto.

Los bancos de registros, las estaciones de reserva y el bus tienen los bits y lıneas necesarias para la imple-mentacion de la tecnica de lospoison bits.

Las transferencias por el bus de coma flotante ocupan un ciclocompleto.

Al comienzo de la fase WB de las operaciones de coma flotante yase ha liberado la estacion de reservacorrespondiente.

Al final de la fase de ejecucion (en la fase WB, en su caso) cualquier operador que lo considere oportunopuede activar la lınea deexcepcion fataldel bus, cancelando todas las operaciones que esten en marcha, oactivar la lınea depoison bit.

Caracterısticas de los operadores multiciclo:

Tipo Unidades Latencia (ciclos) OtrasEntera/Salto 1 1 4 estaciones de reserva (e1..4)Suma/Resta FP 1 2 Segmentada, 3 estaciones de reserva (a1..3)Mult./Division 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 continuacion se muestran el codigo que se quiere ejecutar en lenguaje “C” y el codigo en ensambladorgenerado por un compilador capaz de realizar especulacionestatica.

if (a >= 0) { l.d f2, a(r1)b= a + c / d; l.d * f4, c(r2)a= a - c * d; l.d * f6, d(r2)

} / * endif * / lt.d f2, f0div.d * f8, f4, f6add.d * f10, f2, f8mult.d * f8, f4, f6sub.d * f2, f2, f8bc1t endifs.d f10,b(r1)s.d f2,a(r1)

endif:

Las instrucciones especulativas estan indicadas con el c´odigo ’*’. El predictor predice (correctamente) que lainstruccion “bc1t endif ” no salta.

Se pretende ejecutar dicho codigo bajo dos posibles supuestos, en los que varıan el contenido de los registrosy las posiciones de memoria ligeramente:

47

Page 48: ejer2s

1.f0 f2 f4 f6 f8 f10 a(r1) b(r1) c(r2) d(r2)0 2 4 6 8 10 10 0 6 3

2.f0 f2 f4 f6 f8 f10 a(r1) b(r1) c(r2) d(r2)0 2 4 6 8 10 10 0 8 0

Se solicita:

1. Dibujar un diagrama temporal en el que se indique que faseesta ejecutando cada instruccion en cada ciclo,para los dos supuestos anteriores. Para representar las fases de ejecucion en el diagrama temporal utilizadEpara el operador de entero/saltos,M1, M2, M3 y M4para las fases de la multiplicacion/division,A1 y A2para las fases de la suma/resta o comparacion, yL1 y L2 para la unidad de carga/almacenamiento. UtilizadWBpara una transferencia normal por el bus,PB cuando se active la lınea delpoison bity EF cuando seactive la lıneaexcepcion fatal.

2. Mostrar el valor de los bancos de registros y de la memoria al final de la ejecucion del codigo para cadasupuesto. Utilizar la etiquetasucioen el caso de que algun registro tenga elpoison bitactivado. Indicar siel programa termina debido a la aparicion de alguna excepcion.

Solucion:

1. l.d f2, a(r1) IF I L1 L2 WBl.d * f4, c(r2) IF I - L1 L2 WBl.d * f6, d(r2) IF I - - L1 L2 WBlt.d f2, f0 IF I A1 A2 WBdiv.d * f8, f4, f6 IF I - - - M1 M2 M3 M4 WBadd.d * f10, f2, f8 IF I - - - - - - - A1 A2 WBmult.d * f8, f4, f6 IF I - - M1 M2 M3 M4 WBsub.d * f2, f2, f8 IF I - - - - - - A1 A2 WBbc1t endif IF I E WBs.d f10,b(r1) IF I - - - - - - S1 S2s.d f2,a(r1) IF I - - - - - - - S1 S2

f0 f2 f4 f6 f8 f10 a(r1) b(r1) c(r2) d(r2)0 -8 6 3 18 12 -8 12 6 3

2. l.d f2, a(r1) IF I L1 L2 WBl.d * f4, c(r2) IF I - L1 L2 WBl.d * f6, d(r2) IF I - - L1 L2 WBlt.d f2, f0 IF I A1 A2 WBdiv.d * f8, f4, f6 IF I - - - M1 M2 M3 M4 PBadd.d * f10, f2, f8 IF I - - - - - - - A1 A2 PBmult.d * f8, f4, f6 IF I - - M1 M2 M3 M4 WBsub.d * f2, f2, f8 IF I - - - - - - A1 A2 WBbc1t endif IF I E WBsd f10, b(r1) IF I - - - - - - EFsd f2, a(r1) IF I - - - - - X

f0 f2 f4 f6 f8 f10 a(r1) b(r1) c(r2) d(r2)0 10 8 0 0 sucio 10 0 8 0

Ejercicio 2.23.Un procesador MIPS aplica planificacion dinamica de instrucciones con especulacion para todas las instruc-

ciones. Las instrucciones siguen las siguientes fases:

IF Busqueda de la instruccion.

48

Page 49: ejer2s

IS Decodificacion de la instruccion y lanzamiento a ejecuci´on siguiendo el metodo de Tomasulo con espec-ulacion.

Ei Ejecucion en el operador correspondiente.

WB Fase de transferencia de resultados por el bus interno (el resultado transferido esta disponible en elmismo ciclo de reloj).

C Fase de confirmacion. Escritura de resultados en el registro destino.

Todas las fases duran un ciclo de reloj, excepto la faseEi cuya duracion depende del operador. El procesadordispone de un predictor de saltos del tipo branch target buffer que obtiene la prediccion al final de la faseIF .

Las caracterısticas de las unidades funcionales del procesador son:

Tipo Unidades Latencia (ciclos) OtrasAritmetica entera 1 1 3 estaciones de reservaMultiplicacion FP 1 4 Segmentada, 4 estaciones de reservaSuma/Resta FP 1 2 Segmentada, 4 estaciones de reservaCarga/Almac. FP 2 2 Segmentada

2 tampones carga, 2 tampones almacenamiento

Sobre dicho procesador se pretende ejecutar el siguiente fragmento de codigo:

l.d f8,d(r0)l.d f6,n(r0)

bucle: sub.d f4,f2,f8mult.d f8,f8,f4mult.d f6,f6,f4lt.d f8,f0bc1t bucle ; Salta si f8 < f0s.d f6,q(r0)...

La instruccionlt.d f8,f0 se evalua en la unidad de suma/resta, y escribe su resultadoen un registrointerno (registro de estado de coma flotante). La instrucci´onbc1t salto salta si el registro de estado de comaflotante esta atrue, calculando la direccion de salto y evaluando la condicion en la unidad entera.

En el momento de empezar a ejecutar este codigo, elreorder buffery los operadores se encuentran vacıos, yel banco de registros y la memoria contienen los siguientes valores:

F0 F2 F4 F6 F8 d(r0) n(r0)

1 2 0 0 0 1 0.25

Observese que, para los datos indicados, solo debe ejecutarse una vez cada instruccion del bucle. Sin embargo,supongase que el predictor prediceincorrectamenteque la instruccionbc1t salto salta en las dos primerasiteraciones.

1. Dibuja un diagrama temporal en el que se indique que fase esta ejecutando cada instruccion en cada ciclo,desde el ciclo en que la instruccionl.d f8,d(r0) ejecuta la faseIF hasta el ciclo en que la instruccions.d f6, q(r0) termina completamente.

2. Muestra el estado delreorder buffer, de las estaciones de reserva y tampones y del banco de registros alfinal del ciclo de reloj en que la instruccionsub.d f4,f2,f8 de la primera iteracion ejecuta la faseC.

49

Page 50: ejer2s

Nota: Para representar las fases de ejecucion en el diagrama temporal utilizar: M1, M2, M3 y M4 paralas fases de la multiplicacion/division,A1, A2 para las fases de la suma/resta,L1, L2 para la unidad de car-ga/almacenamiento yEXpara la unidad entera.

Solucion:

Diagrama temporal

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20l.d f8,d(r0) IF IS L1 L2 WB Cl.d f6,n(r0) IF IS L1 L2 WB Csub.d f4,f2,f8 IF IS A1 A2 WB Cmult.d f8,f8,f4 IF IS r4 M1 M2 M3 M4 WB Cmult.d f6,f6,f4 IF IS r5 M1 M2 M3 M4 WB Clt.d f8,f0 IF IS r6 r6 r6 A1 A2 WB Cbc1t bucle IF IS r7 r7 r7 r7 EX WB Csub.d f4,f2,f8 IF IS r8 r8 A1 A2 A2 WBmult.d f8,f8,f4 IF IS r9 r9 r9 r9 r9mult.d f6,f6,f4 IF IS r10 r10 r10 r10lt.d f8,f0 IF IS r11 r11 r11bc1t bucle IF IS r12 r12sub.d f4,f2,f8 IF IS r13mult.d f8,f8,f4 IF ISmult.d f6,f6,f4 IFs.d f6,q(r0) IF IS C L1 L2

Estado en el ciclo 8:Estaciones de reserva:

Nombre busy op Qj Vj Qk Vk reorderE1 1 Salto #6 #7E2E3E4A1 0 + 2 1.0 #3A2 1 < #4 1.0 #6A3A4M1 1 * 1.0 1.0 #4M2 1 * 0.25 1.0 #5M3M4

50

Page 51: ejer2s

Reorder buffer:Entrada busy instr estado dest value pred1 0 l.d f8,d(r0) F8 1.02 0 l.d f6,n(r0) F6 0.253 0 sub.d f4,f2,f8 F4 1.04 1 mult.d f8,f8,f4 F85 1 mult.d f6,f6,f4 F66 1 lt.d f8,f0 FPSR7 1 bc1t bucle bucle Salta89101112131415

Registros:F0 F2 F4 F6 F8 FPSR

busy 0 1 1 1reorder #3 #5 #4 #6valor 1.0 2.0 1.0 0.25 1.0

Tampones de lectura:Nombre busy Direccion reorderl1 0 d #1l2 0 n #2

Tampones de escritura:Tampon busy Vk Qk Direccion confs1s2

Ejercicio 2.24. Un procesador compatible binario con el MIPS64 aplica gestion dinamica de instrucciones conespeculacionhardware. Las instrucciones siguen las siguientes fases:

IF Busqueda de la instruccion.

IS Decodificacion de la instruccion y lanzamiento a ejecuci´on siguiendo el metodo de Tomasulo conbufferde reordenacion.

Ei Ejecucion en el operador correspondiente.

WB Fase de transferencia de resultados por el bus interno (el resultado transferido no estara disponiblehasta el siguiente ciclo).

C Fase de confirmacion. Escritura de resultados en el registro destino.

Todas las fases duran un ciclo de reloj, excepto la faseEi cuya duracion depende del operador. El procesadordispone de un predictor de saltos perfecto que obtiene la prediccion y direccion de destino al final de la faseIF .

51

Page 52: ejer2s

Las caracterısticas de las unidades funcionales del procesador son:

Tipo Unidades Latencia (ciclos) OtrasAritmetica entera 1 1 3 estaciones de reserva (E1..3)Suma/Resta FP 1 2 Segmentada, 3 estaciones de reserva (A1..3)Multiplicacion FP 1 4 Segmentada, 2 estaciones de reserva (M1..2)Carga/Almac. FP 1 2 No segmentada

2 tampones carga (L1..2),2 tampones almacenamiento (S1..2)

Sobre dicho procesador se pretende ejecutar el siguiente fragmento de codigo:

l.d f0, A(r0)salto: l.d f2, X(r1)

mult.d f4, f2, f0l.d f6, Y(r1)sub.d f4, f4, f6s.d f4, Z(r1)dsub r1, r1, #8bnez r1, salto

En el momento de empezar a ejecutar este codigo, elreorder buffery los operadores se encuentran vacıos.Los valores accedidos de los vectores X e Y se representarancomo:x1 , x2 , ... ey1 , y2 , ... respectivamente. Elvalor que se encuentra en la direccionMem[R0 + A] esa.

Mostrar el diagrama temporal de ejecucion de las dos primeras iteraciones, y el estado de las estructuras dedatos al final del ciclo en que el salto “bnez r1, salto ” entra porsegundavez en la fase de busqueda (IF).Calcular los MFLOPS que alcanzarıa este codigo en un procesador con una frecuencia de reloj de 150 MHz.

Nota: Para representar las fases de ejecucionEi en el diagrama temporal utilizar:EX para operacionesenteras,Ai para la suma y resta flotante,Mi para la multiplicacion flotante yLi para las cargas y los almace-namientos; donde el subındice indica el numero de ciclos en ejecucion (1, 2, ...).

Solucion:

Estado de la unidad de ejecucion en el ciclo 15:

52

Page 53: ejer2s

Estaciones de reserva:Nombre busy op Qj Vj Qk Vk reorderE1 SI - [r1]− 8 8 14E2E3

A1A2 SI - 10 11 12A3

M2M1 SI * x2 a 10

Tampones de lectura Tampones de escrituraNombre busy Direccion reorder Nombre busy Direccion Qk Vk confL1 S1 SI Z+[r1] a · x1 − y1L2 Si Y+[r1] #11 S2 SI Z+[r1]-8 12

Reorder buffer:Entrada busy instr estado dest valor prediccion1 NO l.d f0, A(r0) F0 a2 NO l.d f2, X(r1) F2 x13 NO mult.d f4, f2, f0 F4 a · x14 NO l.d f6, Y(r1) F6 y15 SI sub.d f4, f4, f6 W F4 a · x1− y16 SI s.d f4,Z(r1) W s17 SI dsub r1, r1, #8 W R1 [r1]− 88 SI bnez r1, salto W salto salta salta9 SI l.d f2, X(r1) W F2 x210 SI mult.d f4, f2, f0 F411 SI l.d f6, Y(r1) F612 SI sub.d f4, f4, f6 F413 SI s.d f4,Z(r1) W s214 SI dsub r1, r1, #8 R115

Banco de registros:F0 F2 F4 F6 R1

Busy SI SI SI SIReorder 9 12 11 14Valor a x1 a · x1 y1 [r1]

Diagrama temporal:

53

Page 54: ejer2s

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26l.d f0, A(r0) IF I L1 L2 W Cl.d f2, X(r1) IF I - L1 L2 W Cmult.d f4, f2, f0 IF I - - - M1 M2 M3 M4 W Cl.d f6, Y(r1) IF I - L1 L2 W Csub.d f4, f4, f6 IF I - - - - - - A1 A2 W Cs.d f4, Z(r1) IF I C L1 L2dsub r1, r1, #8 IF I EX W Cbnez r1, salto IF I - EX EX W Cl.d f2, X(r1) IF I L1 L2 L2 W Cmult.d f4, f2, f0 IF I - - - M1 M2 M3 M4 W Cl.d f6, Y(r1) IF I - L1 L2 W Csub.d f4, f4, f6 IF I - - - - - - A1 A2 W Cs.d f4, Z(r1) IF I C L1 L2dsub r1, r1, #8 IF I EX W Cbnez r1, salto IF I - EX EX W C

Sin contar la primera instruccion, que no pertenece al bucle principal, el procesador propuesto lan-za una instruccion por ciclo, luego tarda7 ciclos en lanzar las instrucciones pertenecientes a unaiteracion. En cada iteracion del bucle se realizan2 operaciones decoma flotante(multd y subd ).Ası pues, los MFLOPs que puede alcanzar este procesador en la ejecucion del presente codigo son:

R∞ =2

7op./ciclo · 150 · 106 ciclos/seg. =

300

7· 106 op./seg. = 42,86 MFLOPS

Ejercicio 2.25.Se pretende utilizar el codigo correspondiente al bucle~y = a · ~x para evaluar las prestaciones de cierto

computador. Dicho computador posee un procesador similar al MIPS que aplica especulacion hardware paratodas las instrucciones. Las instrucciones siguen las siguientes fases:

IF Busqueda de la instruccion.

I Decodificacion de la instruccion y lanzamiento a ejecuci´on siguiendo el metodo de Tomasulo con espec-ulacion.

Ei Ejecucion en el operador correspondiente.

WB Fase de transferencia de resultados por el bus comun de datos.

C Fase de confirmacion. Escritura de resultados en el registro destino. Comprobacion de la prediccion ycancelacion de las intrucciones, en su caso.

Todas las fases duran un ciclo de reloj, excepto la faseEi cuya duracion depende del operador. El procesadordispone de un predictor de saltos dedosbits, del tipobranch target buffer, que obtiene la prediccion al final de lafaseIF . El tiempo de transferencia por el bus comun de datos es de 1 ciclo de reloj.

Las caracterısticas de las unidades funcionales del procesador son:

Tipo Unidades Latencia (ciclos) OtrasAritmetica entera 1 1 3 estaciones de reservaMultiplicaion FP 1 3 Segmentada, 3 estaciones de reservaCarga/Almac. FP 1 2 No segmentada

3 tampones carga, 3 tampones almacenamiento

El codigo que genera el compilador para dicho bucle es el siguiente:

54

Page 55: ejer2s

loop: l.d f2,x(r1)mult.d f2,f2,f0s.d y(r1),f2dsub r1,r1,#8bnez r1,loop<sgte>

El estado de los registros y la memoria, antes de la ultima iteracion, es el siguiente:

Reg. R1 F0 F2 Mem x x+8 y y+8

Valor 8 3 2 Valor 100 102 10 12

1. Dibuja un diagrama instrucciones-tiempo en el que se muestre la ejecucion de las instrucciones que se lan-zan en la ultima iteracion del bucle, hasta el ciclo en el que se busca la instruccion<sgte> . Adviertase queel predictor predeciraincorrectamente la instruccionbnez r1, loop (predice que salta y finalmenteno salta). Para representar las fases de ejecucion en el diagrama utilizar:M1, M2 y M3para las fases de lamultiplicacion,L1 y L2 para la unidad de carga/almacenamiento yEXpara la unidad entera.

2. Suponiendo que los camposrob del banco de registros y elreorder bufferestan vacios antes de ejecutar laultima iteracion, muestra cual serıa el estado delreorder buffer, el banco de registros y de la memoria alfinal del ciclo de reloj en el que la instruccionsd y(r1), f2 ejecuta la faseCommit.

3. Supongase ahora que el saltobnez r1, loop no se encuentra en la tabla al comenzar la ejecucion delbucle, que el valor inicial deR1 es 160 y que, a lo largo de la ejecucion del bucle, el predictor falla dosdelas predicciones con entrada en la tabla (considerando solo los saltos que llegan a la etapaCommit). Indicar,justificando la respuesta, el tiempo de ejecucion del bucleen ciclos. Considerar que el bucle acaba cuandola instruccion de salto de la ultima iteracion llega a la etapaCommit.

Solucion:

1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14loop: l.d f2,x(r1) IF I L1 L2 WB C

mult.d f2,f2,f0 IF I - - M1 M2 M3 WB Cs.d f2,y(r1) IF I - - - - - - C S1 S2dsub r1,r1,#8 IF I EX WB Cbnez r1,loop IF I - EX - WB C

loop: l.d f2,x(r1) IF I L1 L2 - WB Xmult.d f2,f2,f0 IF I - - - M1 Xs.d f2,y(r1) IF I - - - Xdsub r1,r1,#8 IF I EX WB Xbnez r1,loop IF I - X

loop: l.d f2,x(r1) IF I Xmult.d f2,f2,f0 IF Xs.d f2,y(r1) X<sgte> IF

2. Estado al final del ciclo 11.

Reorder buffer:

55

Page 56: ejer2s

Reorder buffer:Entrada busy instr estado dest valor prediccion1 NO load WB f2 1022 NO alu WB f2 3063 NO store WB s1 -4 SI alu WB r1 05 SI branch WB No salta Salta6 SI load WB f2 1007 SI alu f28 SI store WB s2 -9 SI alu r110 SI branch Salta

Registros y memoria:

Reg. R1 F0 F2 Mem x x+8 y y+8

Valor 8 3 306 Valor 100 102 10 12rob #9 #7 – – – – –

3. Con el valor de R1 a 160, el bucle realizara 20 iteraciones. Cuando el predictor acierta, el tiempopara realizar una iteracion es de 5 ciclos de reloj. Cada vezque se falla en la prediccion (dosveces) o no se encuentra el salto en la tabla del predictor (laprimera iteracion) se pierden 8ciclos, por lo tanto:

Tejecucion = 20 ∗ 5 + 3 ∗ 8 = 100 + 24 = 124 ciclos

Ejercicio 2.26.Se tiene el siguiente codigo en ensamblador del MIPS, obtenido tras la compilacion de~B := ~A+ y · ~B:

; F2 contiene yloop: L.D F4, A(R1)

L.D F6, B(R1)MULT.D F6,F6,F2ADD.D F4,F4,F6S.D B(R1),F4DSUB R1,R1,#8BNEZ R1, loop

Se pretende ejecutar este programa sobre dos procesadores MIPS/T y MIPS/S. Los dos incorporan instruc-ciones de coma flotante y funcionan a 600 MHz. Tambien resuelven los riesgos de control mediante un predictorperfecto de cero ciclos de penalizacion.

Las instrucciones pasan por las siguientes fases para ejecutarse:

IF : Busqueda de instruccion.

I : Decodificacion de la instruccion.

En: Ejecucion en el operador correspondiente.

WB: Escritura del resultado en el registro destino.

56

Page 57: ejer2s

Todas las fases duran un ciclo de reloj, excepto la fase En que puede durar varios ciclos, en funcion del tipode instruccion.

La unidad de ejecucion dispone de los siguientes operadores independientes:Tipo Unidades Latencia (ciclos) OtrasEntera 1 1 5 estaciones de reservaCarga/almac. 1 2 Segmentada, 4 tampones lectura, 4 tampones escrituraSuma flotante 1 3 Segmentada, 4 estaciones de reservaMult. flotante 1 5 Segmentada, 4 estaciones de reserva

Los dos procesadores difieren en la forma de buscar y lanzar las instrucciones. El MIPS/T permite ejecutarlas instrucciones fuera de orden, aplicando para ello el algoritmo de Tomasulo para todas las instrucciones (enlas fasesI y WB). Por su parte, el MIPS/S, ademas de permitir la ejecucionfuera de orden, es capaz de buscar ylanzar a ejecucion dos instrucciones en cada ciclo de reloj. Los dos tienen bancos de registros enteros y de comaflotante separados, teniendo el MIPS/T dos puertos de lectura y uno de escritura en cada uno, mientras que elMIPS/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 instruccion y ciclo de reloj, que fase de la instruccion seesta ejecutando. Considera unicamente la primera iteracion del bucle. Para representar las fases de ejecucionen el diagrama utilizar:A1, A2 y A3 para las fases de la suma,M1, M2, M3, M4 y M5para las fasesde la multiplicacion,L1 y L2 para la unidad de carga/almacenamiento yEXpara la unidad entera.

2. Calcula el tiempo de ejecucion para vectores de 10000 componentes.

Solucion:

Para el MIPS/T:

1 2 3 4 5 6 7 8 9 10 11loop: L.D F4, A(R1) IF I L1 L2 WB

L.D F6, B(R1) | IF I L1 L2 WBMULT.D F6,F6,F2| IF I m1 m1 M1 M2 M3 M4 M5 WBADD.D F4,F4,F6 | IF I a1 a1 a1 a1 a1 a1 a1 A1 A2 A3 WBS.D F4,B(R1) | IF I s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 L1 L2DSUB R1,R1,#8 | IF I EX WBBNEZ R1, loop | IF I i1 EX WB

loop: L.D F4, A(R1) | IF I L1 L2 L2 WBL.D F6, B(R1) | | IF I L1 L1 L2 WBMULT.D F6,F6,F2| | IF I m2 m2 m2 M1 M2 M3 M4 M5 WBADD.D F4,F4,F6 | | IF I a2 a2 a2 a2 a2 a2 a2 a2 A1 A2 A3 WBS.D F4,B(R1) | | IF I s2 s2 s2 s2 s2 s2 s2 s2 s2 s2 s2 L1 L2DSUB R1,R1,#1 | | IF I EX WBBNEZ R1, loop | | IF I i1 EX WB

| Bucle=7 |

Cada iteracion necesita 7 ciclos de reloj. Por lo tanto, para 10000 componentes, el tiempo deejecucion son 70000 ciclos @ 600 MHz = 1.17×10−4 s.Para el MIPS/S:

1 2 3 4 5 6 7 8 9 10 11loop: L.D F4, A(R1) IF I L1 L2 WB

L.D F6, B(R1) IF I l2 L1 L2 WBMULT.D F6,F6,F2| IF I m1 m1 m1 M1 M2 M3 M4 M5 WBADD.D F4,F4,F6 | IF I a1 a1 a1 a1 a1 a1 a1 a1 a1 A1 A2 A3 WBS.D F4,B(R1) | IF I s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 s1 L1 L2DSUB R1,R1,#1 | IF I EX WBBNEZ R1, loop | IF I i1 EX WB<sigte> | IF cancelada

loop: L.D F4, A(R1) | IF I L1 L2 WBL.D F6, B(R1) | IF I l2 L1 L2 WBMULT.D F6,F6,F2| | IF I m2 m2 m2 M1 M2 M3 M4 M5 WBADD.D F4,F4,F6 | | IF I a2 a2 a2 a2 a2 a2 a2 a2 a2 A1 A2 A3 WBS.D F4,B(R1) | | IF I s2 s2 s2 s2 s2 s2 s2 s2 s2 s2 s2 s2 L1 L2

57

Page 58: ejer2s

DSUB R1,R1,#8 | | IF I EX WBBNEZ R1, loop | | IF I i1 EX WB<sigte> | | IF cancelada

| || Bucle=4 |

Cada iteracion necesita 4 ciclos de reloj. Por lo tanto, para 10000 componentes, el tiempo deejecucion son 40000 ciclos @ 600 MHz = 6.7×10−5 s.

Ejercicio 2.27.Se pretende utilizar el codigo correspondiente al bucle~y = a~x+ b~y+ c para evaluar las prestaciones de cierto

computador. Dicho computador posee un procesador superescalar dedos vıasque aplica planificacion dinamicade instrucciones con especulacion para todas las instrucciones. Las instrucciones siguen las siguientes fases:

IF Busqueda de la instruccion.

I Decodificacion de la instruccion y lanzamiento a ejecuci´on.

Ei Ejecucion en el operador correspondiente.

WB Fase de transferencia de resultados por el bus interno.

C Fase de confirmacion. Escritura de resultados en el registro destino.

Todas las fases duran un ciclo de reloj, excepto la faseEi cuya duracion depende del operador. El procesadordispone de un predictor de saltos del tipobranch target bufferque obtiene la prediccion al final de la faseIF . Eltiempo de transferencia por los buses comunes de datos es de 1ciclo de reloj.

Las caracterısticas de las unidades funcionales del procesador son:

Tipo Unidades Latencia (ciclos) OtrasAritmetica entera 2 1 6 estaciones de reservaMultiplicacion FP 1 4 Segmentada, 4 estaciones de reservaSuma/Resta FP 1 2 Segmentada, 4 estaciones de reservaCarga/Almac. FP 2 2 2 tampones carga, 2 tampones almacenamiento

El codigo que genera el compilador para dicho bucle es el siguiente:

; C odigo escalarloop: l.d f2,x(r1)

l.d f4,y(r2)mult.d f2,f2,f0mult.d f4,f4,f8add.d f6,f10,f2add.d f6,f6,f4s.d f6,y(r2)dsub r1,r1,#8dsub r2,r2,#8bnez r1,loop...

El estado de los registros y la memoria es el siguiente:

R1 R2 F0 F2 F4 F6 F8 F10 x+100 x+92 y+150 y+142

100 150 3 2 0 0 0.5 2 100 102 10 12

58

Page 59: ejer2s

1. Dibuja un diagrama temporal en el que se muestre la ejecucion de las instrucciones que se lanzan en lasdos primeras iteraciones. Supongase que el predictor predicecorrectamenteque la instruccionbnez r1,loop salta. Se debera indicar que fase esta ejecutando cada instruccion en cada ciclo. Para representar lasfases de ejecucion en el diagrama temporal utilizar:M1, M2, M3 y M4para las fases de la multiplicacion,A1, A2 para las fases de la suma/resta,L1, L2 para la unidad de carga/almacenamiento yEX para launidad entera.

2. Muestra el estado delreorder buffer, de las estaciones de reserva y tampones, del banco de registros y dememoria al final del ciclo de reloj en que la instruccions.d f6,y(r2) de la primera iteracion ejecuta lafaseC.

Solucion:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24l.d f2,x(r1) IF I L1 L2 WB Cl.d f4,y(r2) IF I L1 L2 WB Cmult.d f2,f2,f0 IF I - - M1 M2 M3 M4 WB Cmult.d f4,f4,f8 IF I - - - M1 M2 M3 M4 WB Cadd.d f6,f10,f2 IF I - - - - - - A1 A2 WB Cadd.d f6,f6,f4 IF I - - - - - - - - - A1 A2 WB Cs.d f6,y(r2) IF I - - - - - - - - - - - C L1 L2dsub r1,r1,#8 IF I EX WB Cdsub r2,r2,#8 IF I EX WB Cbnez r1,loop IF I - EX WB Cl.d f2,x(r1) IF I L1 L2 WB Cl.d f4,y(r2) IF I - L1 L2 WB Cmult.d f2,f2,f0 IF I - - M1 M2 M3 M4 WB Cmult.d f4,f4,f8 IF I - - - M1 M2 M3 M4 WB Cadd.d f6,f10,f2 IF I - - - - - - A1 A2 WB Cadd.d f6,f6,f4 IF I - - - - - - - - - A1 A2 WB Cs.d f6,y(r2) IF I - - - - - - - - - - - C L1 L2dsub r1,r1,#8 IF I EX WB Cdsub r2,r2,#8 IF I EX WB Cbnez r1,loop IF I - EX WB C

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

Estaciones de reserva:Nombre busy op Qj Vj Qk Vk reorderE1E2E3E4E5E6A1A2A3 sı + 2 306 #15A4 sı + #15 6 #16M1M2M3M4

59

Page 60: ejer2s

Reorder buffer:Entrada busy instr estado dest value pred1 no l.d f2,x(r1) f2 1002 no l.d f4,y(r2) f4 103 no mult.d f2,f2,f0 f2 3004 no mult.d f4,f4,f8 f4 55 no add.d f6,f10,f2 f6 3026 no add.d f6,f6,f4 f6 3077 no s.d f6, y(r2) s1 -8 sı dsub r1,r1,#8 WB r1 929 sı dsub r2,r2,#8 WB r2 14210 sı bnez r1,loop WB loop salta salta11 sı l.d f2,x(r1) WB f2 10212 sı l.d f4,y(r2) WB f4 1213 sı mult.d f2,f2,f0 WB f2 30614 sı mult.d f4,f4,f8 WB f4 615 sı add.d f6,f10,f2 f616 sı add.d f6,f6,f4 f617 sı s.d f6, y(r2) WB s218 sı dsub r1,r1,#8 WB r1 8419 sı dsub r2,r2,#8 WB r2 13420 sı bnez r1,loop WB loop salta salta

Registros:R1 R2 F0 F2 F4 F6 F8 F10

busy sı sı no sı sı sı no noreorder #18 #19 #13 #14 #16valor 100 150 3 300 5 307 0.5 2

Memoria de datos:x+100 x+92 y+150 y+142

valor 100 102 10 12

Tampones de lectura:Nombre busy Direccion reorderl1 nol2 no

Tampones de escritura:Tampon busy Vk Qk Direccion confs1 sı 307 y+150 sıs2 sı #16 y+142 no

Ejercicio 2.28.Se tiene un procesador superescalar compatible binario conel MIPS, capaz de buscar y lanzar a ejecucion

hasta dos instrucciones por ciclo de reloj. La frecuencia dereloj es 900 MHz, y posee instrucciones enteras yde coma flotante, aplicando gestion dinamica de instrucciones con especulacion para todas las instrucciones. Lasfases que atraviesan las instrucciones durante su ejecuci´on son:

IF Fase de busqueda de la instruccion.

I Fase de lanzamiento de la instruccion.

En Fase de ejecucion en los operadores correspondientes.

60

Page 61: ejer2s

WB Fase de transferencia de resultados por el bus interno (el resultado transferido no estara disponible hasta elsiguiente ciclo).

C Fase de confirmacion de la instruccion. Comprobacion de las predicciones. Escritura en registros. Lanzamientode las escrituras a memoria.

Todas las fases duran un ciclo de reloj, excepto la fase En quepuede durar varios ciclos, en funcion del tipode instruccion. La unidad de ejecucion dispone de los siguientes operadores independientes:

Tipo Unidades Latencia (ciclos) OtrasEntera/saltos 2 1 -Carga/almac 2 2 Segmentada lineal, 6 tamponesComa flotante 2 3 Segmentada lineal, 6 tampones

La unidad de carga/almacenamiento calcula la direccion efectiva en el primer ciclo de su ejecucion. El proce-sador resuelve los riesgos de control mediante un predictorperfecto de cero ciclos de reloj de penalizacion. Cadauno de los bancos de registros tiene cuatro puertos de lectura y dos de escritura. Se necesita un ciclo de reloj paratransferir un dato por los buses comunes de datos en la unidadde ejecucion.

Sobre este procesador se pretende ejecutar el codigo obtenido de la compilacion de~B(i) := x+ ~A(i):

loop: DSUB R1,R1,#8L.D F0, A(R1)ADD.D F4, F0, F2S.D B(R1),F4BNEZ R1,loop

Dibuja un diagrama en el que se indique, para cada instrucci´on y ciclo de reloj, que fase de la instruccionse esta ejecutando. Considera unicamente la primera y segunda iteracion del bucle. Para representar las fases deejecucion multicicloEn en el diagrama temporal utilizar:EX para operaciones enteras,Ai para coma flotante yLi para las cargas y los almacenamientos; donde el subındice indica el numero de ciclos en ejecucion (1, 2, ...).

Suponiendo que la segunda iteracion es representativa de lo que ocurre en el resto de iteraciones ¿CuantosMFLOPS alcanza el computador ejecutando ese fragmento de c´odigo?

Solucion:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20loop: DSUB R1,R1,#8 IF I EX WB C

L.D F0, 0(R1) IF I r2 r2 L1 L2 WB CADD.D F4, F0, F2 IF I r3 r3 r3 r3 A1 A2 A3 WB CS.D F4,0(R1) IF I r4 r4 r4 r4 r4 r4 r4 r4 C S1 S2BNEZ R1,loop IF I EX WB - - - - - - C<sigte> IF cancelada+

loop: DSUB R1,R1,#8 IF I EX WB - - - - - CL.D F0, 0(R1) IF I r8 r8 L1 L2 WB - - - CADD.D F4, F0, F2 | IF I r9 r9 r9 r9 A1 A2 A3 WB CS.D F4,0(R1) | IF I r10r10r10r10r10r10r10r10C S1 S2BNEZ R1,loop | IF I EX WB - - - - - - C<sigte> | IF cancelada+

loop: DSUB R1,R1,#8 | IF I EX WB - - - - - CL.D F0, 0(R1) | IF I r14r14L1 L2 WB - - - C

| Bucle=3|

(+) Se cancela en cuanto se decodifica la instruccion de salto.

Cada iteracion necesita 3 ciclos de reloj, y realiza una operacion en coma flotante:

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

61

Page 62: ejer2s

Ejercicio 2.29. Se dispone de un procesador superescalar similar al MIPS, capaz de lanzar 2 instrucciones porciclo. La unidad de ejecucion de instrucciones se encuentra segmentada en cinco etapas: IF, ID, EX, ME y WB.Durante la fase de busqueda de la instruccion (IF), la antememoria de instrucciones suministra siempre un bloquede dos instrucciones, la primera de ellas ubicada en una direccion par y la segunda en direccion impar. En caso deque solo se necesite acceder a una de ellas, la otra se desecha. Solo se puede lanzar a ejecucion una instruccionde salto. La condicion y la direccion de destino de las instrucciones de salto se calcula durante la etapaID .

Dicho procesador dispone de un predictor del tipoBranch Target Buffer que suministra la prediccion y ladireccion de destino al final de la etapaIF .

Se pretende evaluar el comportamiento del predictor ante las instrucciones de salto para los siguientes casos:

1. El predictor predice queno saltao no existe una entrada en la tabla, y finalmente el saltono salta.

2. El predictor predice queno saltao no existe una entrada en la tabla, y finalmente el saltosı salta.

3. El predictor predice quesı saltay finalmente el saltono salta.

4. El predictor predice quesı saltay finalmente el saltosı salta.

Para realizar dicha evaluacion, se utilizaran los siguientes ejemplos de codigo:

a) b)BEQZ R1, salto SUB R3, R2, R1ADD R2, R3, R4 BEQZ R1, saltoSW 0(R4), R2 ADD R2, R3, R4AND R3, R2, #63 SW 0(R4), R2

salto: OR R4, R3, #128 AND R3, R2, #63LW R1, 0(R5) salto: OR R4, R5, #128sgte. 1 sgte. 1sgte. 2 sgte. 2

Dibuja, para cada uno de los codigos y para cada uno de los ejemplos, un diagrama instrucciones–tiempo quemuestre las instrucciones buscadas y las fases ejecutadas por estas. Las instrucciones canceladas se representarancon unaX en el ciclo correspondiente.

Solucion:

Secuencia de codigoA:

1. El predictor predice queno saltao no existe una entrada en la tabla, y finalmente el saltonosalta.

BEQZ R1, salto IF ID EX ME WBADD R2, R3, R4 IF ID EX ME WBSW 0(R4), R2 IF ID EX ME WBAND R3, R2, #63 IF ID EX ME WBOR R4, R3, #128 IF ID EX ME WBLW r1, 0(R5) IF ID EX ME WB

No pierde ninguna instruccion.

62

Page 63: ejer2s

2. El predictor predice queno saltao no existe una entrada en la tabla, y finalmente el saltosı salta.

BEQZ R1, salto IF ID EX ME WBADD R2, R3, R4 IF ID XSW 0(R4), R2 IF XAND R3, R2, #63 IF XOR R4, R3, #128 IF ID EX ME WBLW r1, 0(R5) IF ID EX ME WB

Pierde 3 instrucciones.

3. El predictor predice quesı salta y finalmente el saltono salta.

BEQZ R1, salto IF ID EX ME WBADD R2, R3, R4 IF XOR R4, R3, #128 IF XLW r1, 0(R5) IF XBEQZ R1, salto XADD R2, R3, R4 IF ID EX ME WB

Pierde 4 instrucciones.

4. El predictor predice quesı salta y finalmente el saltosı salta.

BEQZ R1, salto IF ID EX ME WBADD R2, R3, R4 IF XOR R4, R3, #128 IF ID EX ME WBLW r1, 0(R5) IF ID EX ME WBsgte. 1 IF ID EX ME WBsgte. 2 IF ID EX ME WB

Pierde 1 instruccion.

Secuencia de codigoB:

1. El predictor predice queno saltao no existe una entrada en la tabla, y finalmente el saltonosalta.

SUB R3, R2, R1 IF ID EX ME WBBEQZ R1, salto IF ID EX ME WBADD R2, R3, R4 IF ID EX ME WBSW 0(R4), R2 IF ID EX ME WBAND R3, R2, #63 IF ID EX ME WBOR R4, R5, #128 IF ID EX ME WB

No pierde ninguna instruccion.

2. El predictor predice queno saltao no existe una entrada en la tabla, y finalmente el saltosı salta.

SUB R3, R2, R1 IF ID EX ME WBBEQZ R1, salto IF ID EX ME WBADD R2, R3, R4 IF XSW 0(R4), R2 IF XAND R3, R2, #63 XOR R4, R5, #128 IF ID EX ME WB

Pierde 3 instrucciones.

63

Page 64: ejer2s

3. El predictor predice quesı salta y finalmente el saltono salta.

SUB R3, R2, R1 IF ID EX ME WBBEQZ R1, salto IF ID EX ME WBAND R3, R2, #63 XOR R4, R5, #128 IF XADD R2, R3, R4 IF ID EX ME WBSW 0(R4), R2 IF ID EX ME WB

Pierde 2 instrucciones.

4. El predictor predice quesı salta y finalmente el saltosı salta.

SUB R3, R2, R1 IF ID EX ME WBBEQZ R1, salto IF ID EX ME WBAND R3, R2, #63 XOR R4, R5, #128 IF ID EX ME WBsgte. 1 IF ID EX ME WBsgte. 2 IF ID EX ME WB

Pierde 1 instruccion.

64