03-3-guia_ejercicios_ilp_v4

Upload: aaaaaaaa

Post on 24-Feb-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    1/8

    ARQUITECTURA DE COMPUTADORES

    Gua de Resolucin de Ejercicios de ILPGrado en Ingeniera InformticaTercer Curso

    Tipo 1: Procesador No Segmentado

    La ejecucin de las instrucciones no se divide en fases y el procesador no se divide enunidades funcionales, por tanto, slo puede haber una instruccin ejecutando en el

    pipeline en un momento dado.

    Qu es importante?:1)

    Ciclo de Emisin al pipeline2) Ciclo de Salida del pipelineCiclo base + Latencia_Instruccion

    El nmero de ciclos totales para la ejecucin de un programa es el nmero de cicloscomprendido entre la emisin de la primera instruccin y la salida del pipeline de laltima instruccin.

    Tipo 2: Procesador Segmentado

    La ejecucin de las instrucciones se divide en n fases y el procesador se divide en nunidades funcionales. Una instruccin se emite al pipeline en el siguiente ciclo de relojsalvo que se detecte algn tipo de riesgo (estructural, control o datos). Por tanto, en unciclo de reloj, un procesador segmentado puede estar ejecutando n fases distintas de ninstrucciones diferentes, cada una de ellas usa una unidad funcional distinta.

    El bandwith o ancho de banda se multiplica por n

    Qu es importante?:

    1) Ciclo de Emisin al pipeline2) Ciclo de ejecucin de cada etapa

    3)

    Ciclo de Salida del pipeline

    Para saber cundo emitir la instruccin al pipeline se deben calcular previamente losriesgos de datos:

    RAW: Read After Write

    o IMPORTANTES. SON LOS QUE TENDREMOS EN CUENTA EN LARESOLUCIN DE LOS CRONOGRAMAS

    NOTA IMPORTANTE:

    El objetivo de esta gua es ayudar al alumno a resolver los ejercicios de ILP.Los ejercicios se han clasificado en tipos con el nico objetivo de facilitar laexplicacin, pero esta clasificacin no existe en los libros de Arquitectura deComputadores.

    ADD R1, R2,R5

    SUB R3, R1, R4

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    2/8

    Riesgo RAW: Registro R1: ADDSUB

    o Nota: En la arquitectura MIPS, este riesgo deriva de que la decodificacindel registro R1 (de la inst. SUB) se realiza en algn ciclo anterior que laescritura del registro R1 (de la inst. ADD)

    WAR: Write After Read

    o No se presentarn ya que los ejercicios que realizamos tienen ciclos fijospero se puede requerir calcularlos.

    o

    Nota: En la arquitectura MIPS, este riesgo no podr darse dado que laescritura del registro R2 (instruccin SUB) se realizar siempre en algnciclo posterior a la decodificacin del mismo registro de la instruccin ADD.

    WAW: Write After Write

    o

    No se presentarn ya que los ejercicios que realizamos tienen ciclos fijos pero sepuede requerir calcularlos.

    o Nota: En la arquitectura MIPS, este riesgo no podr darse dado que la escrituradel registro R2 (instruccin SUB) se realizar siempre en algn ciclo posteriorque la escritura del mismo registro de la instruccin ADD.

    Tipos de procesadores segmentados segn hardware:

    1.- Sin forwarding:la decodificacin de los operandos se solapa con la fase de escritura

    de los registros, es decir, hay que esperar a que la fase de WriteBack escriba en losregistros:

    ADD R1, R2,R5 F D X M WSUB R3, R1, R4 F - - D X M W

    ADD R1, R2, R5

    SUB R2, R3, R4

    ADD R2, R1, R5

    SUB R2, R3, R4

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    3/8

    Hay que tener en cuenta tambin instrucciones posteriores a la siguiente. La fase de D dela instruccin i+n tiene que esperar y ejecutarse a la vez que la fase de W de lainstruccin i si entre la instruccin i y la i+n existe dependencia RAW. Se debe a que enla primera parte del ciclo de la fase W de la instruccin que escribe se graba en el registroy en la 2 parte del ciclo de la fase D de la instruccin que realiza la lectura (i+n) se

    puede utilizar ese valor pero no antes.

    1 2 3 4 5 6ADD r1,R2,R3 F D E M WAdd r3,r4,r5 F D E M WAdd r4,r1,r6 F - D E

    Tambin es aplicable a los bucles:1 2 3 4 5 6

    ADD r1,R2,R3 F D E M WBnez r1, bucle F - - D E

    Nota: La escritura de registros por el segmento W se produce al comienzo del ciclo y lalectura por parte de D se hace al final del MISMO CICLO.

    2.- Con forwarding:la decodificacin de los operandos se realiza en el primer ciclo posible(aunque no se decodifique el resultado correcto) y la ejecucin de la instruccin se realiza en elciclo siguiente al ciclo donde se ha calculado el resultado del registro de la cual depende. Peroen qu fase se cuenta con el resultado de la operacin?

    o Instrucciones de Salto como primera instruccin: En el siguiente ciclo de ladecodificacin.

    o

    Instrucciones de ALU:En el siguiente ciclo de la fase de ejecucin.

    ADD R1, R2,R5 F D X M WSUB R3, R1, R4 F D X M W

    Nota: No se puede hacer en el mismo ciclo ya que en este caso se usan los registrosintermedios del Pipeline

    o Instrucciones de Memoria: En el siguiente ciclo de la fase de memoria.

    LD R1, Dir F D X M WSUB R3, R1, R4 F D - X M X

    Nota: No se puede hacer en el mismo ciclo ya que en este caso se usan los registrosintermedios del Pipeline

    o Instrucciones de salto como segunda instruccin: No se decodifica

    ADD R1, R2,R5 F D X M WBNZ R1, SALTO F - D X M W

    Nota: No se puede hacer en el mismo ciclo ya que en este caso se usan los registrosintermedios del PipelineNota: NO se realiza la decodificacin ya que el resultado del salto se calcula en la fase deejecucin y estar disponible al final de esta fase.

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    4/8

    Tipos de prediccin de saltos estticos para resolucin de ejercicios.

    Tanto si se usa forwarding como si no se pueden usar las tcnicas de prediccin de salto vistas enclase (Vaciado del pipeline, salto tomado, salto no tomado). Se supone un escenario en el que seespecifica que se realizar el bucle m veces y se pide el cronograma de una iteracin. Vaciado del pipeline:

    SALTO: (1) XXXX N N+1 N+2 N+3

    (n-1) BNZ R1, SALTO F D X M W(n) YYYYY F(n) F(1) D X M

    Despus de la instruccin de salto se inicia la captacin (F) de la siguiente instruccin.

    Despus de la etapa de decodificacin, al identificarse que se trata de una instruccin

    de salto, se vaca el pipeline. Si bien la direccin de salto se conoce al final de la etapa

    de decodificacin (D), el sentido del salto se conoce al final de la etapa de ejecucin (E).

    Por tanto, la captacin de la instruccin se repite en el ciclo siguiente (ciclo N+3).

    Congelacin del Pipeline (equivalente a vaciado en rendimiento):

    SALTO: (1) XXXX

    (n-1) BNZ R1, SALTO F D X M W(n) YYYYY F(1) D X M

    Cuando hay saltos y se utiliza la tcnica de vaciado del pipe (o congelacin del pipe quese considera equivalente) la direccin de salto efectiva se calcula en la fase de ejecucin

    (al final), por tanto no puedes realizar el fetch de la siguiente instruccin hasta que notermine la fase de ejecucin. Ten en cuenta que el registro contador de programa no esten el banco de registro y por tanto no se actualiza en la etapa de W. Con o sin forwardingse actualiza en la etapa E, una vez que se ha usado la ALU para determinar la direccinefectivaSalto Tomado: (en este caso acierta)

    SALTO: (1) XXXX

    (n-1) BNZ R1, SALTO F D X M W(n) YYYYY F(1) D X M W

    Nota: Cuando hay prediccin de salto lo que se hace es colocar en la etapa dedecodificacin un circuito comparador para saber si va a ser efectivo el salto y por tantocuando termina la fase de decodificacin se sabe qu instruccin hay que ejecutar acontinuacin.Salto NO Tomado: (en este caso se equivoca)

    SALTO: (1) XXXX

    (n-1) BNZ R1, SALTO F D X M W(n) YYYYY F(n) F(1) D X M W

    Nota: Cuando hay prediccin de salto lo que se hace es colocar en la etapa dedecodificacin un circuito comparador para saber si va a ser efectivo el salto y por tantocuando termina la fase de decodificacin se sabe qu instruccin hay que ejecutar a

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    5/8

    continuacin.Ms de un ciclo en fase de memoria:

    Cuando la fase de Memoria utilice ms de un ciclo slo se considerar la extensin deesos ciclos para las instrucciones de acceso a memoria (LD ,ST). Ejemplo con 2 ciclos

    para acceso a memoria.1 2 3 4 5 6 7

    Ld R1, 0(R2) F D E M M WADDR3,R4,1

    F D E - M W

    ADDR5,R6,2

    F D - E M W

    ST R7,R8,1 F - D E M M W

    Clculo de ciclos por iteracin con dependencias entre iteraciones:

    Si en la 2 y sucesivas iteraciones de un bucle hay dependencias con la 1 iteracin (oanteriores), el esquema de clculo del nmero de ciclos no puede realizarse basndoseslo en 1 iteracin, habra que realizar, al menos 2.

    Ejemplo sin Fordwarding, con prediccin salto tomada y suponiendo que repites el buclevarias veces:

    1 2 3 4 5 6 7 8 9 10I1 Bucle:ADD R1, R1,R2 F D E M WI2 BNEZ R3,bucle F D E M W

    Bucle:ADD R1, R1,R2 F(I1) - D E M WBNEZ R3,bucle F D E M WBucle:ADD R1, R1,R2 F(i1) - D E M WBNEZ R3,bucle F D W

    Hay dependencia RAW entre la primera ejecucin de la instruccin 1 y la 2 ejecucin dela instruccin 1. Luego la fase D de la 2 ejecucin de la instruccin 1 tiene que esperar ala fase W de la primera ejecucin de la inst. 1.

    Por tanto en este caso no podemos suponerque, si hay 100 iteraciones el nmero deciclos ser de (2*100+4) (el 2 porque el 2 fetch de la instruccin 1 se produce en el ciclo3 y el 4 porque desde el ciclo 3 hasta el final de BNEZ quedan 4 ciclos).

    En este caso diremos que si se ejecuta el bucle 100 veces, la primera iteracin consume 2ciclos, la iteracin 100 consume 7 ciclos y las iteraciones de la 2 a la 98 consumen 3

    ciclos.

    Diferenciar entre dos fases y fase con dos ciclos:

    Hay que tener en cuenta que no es lo mismo que una fase ocupe dos ciclos (no puedehaber dos instrucciones en la misma fase), que una fase est dividida en dos segmentosdiferentes (F1 y F2 por ejemplo).

    Ejemplo con dos ciclospara la fase de fetch:

    ADD R2, R2,R5 F F D X M WSUB R3, R1, R4 F F D X M W

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    6/8

    Ejemplo con el fetch dividido en dos fases diferentes:

    ADD R2, R2,R5 F1 F2 D X M WSUB R3, R1, R4 F1 F2 D X M W

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    7/8

    Tipo 3: Arquitectura superescalar

    Las arquitecturas superescalares pretenden ejecutar ms de una instruccin por ciclo, o loque es lo mismo, obtener un CPI < 1.0. Para ello utilizan ppipelines donde la emisin delas instrucciones se puede realizar simultneamente en cualquiera de ellos siempre ycuando no existan dependencias de datos.

    - 3.1 con emisin en orden una instrucciones posterior en el flujo deinstrucciones no puede adelantar a una instruccin anterior.

    - 3.2 emisin fuera de orden una instruccin posterior en el flujo deinstrucciones puede adelantar a una instruccin anterior, siempre y cuando noexistan riesgos de datos entre ellas. Se aprovechan los stall para reordenar lasinstrucciones que no tienen dependencias de datos con las instrucciones que estnya en el pipeline. El reordenamiento de instrucciones lo realiza el compilador.

    Tipo 4: Desenrollar bucles:Tcnica de explotacin de ILP que obtiene su ventaja de los bucles que se ejecutan

    dentro de nuestros programas.

    Se replica el cuerpo del bucle n veces. Al replicar el cuerpo del bucle, reducimos elnmero de instrucciones necesarias para actualizar los ndices y acceder a distintas

    posiciones de memoria.

    Se debe tener especial cuidado en renombrar los registros utilizados en las replicacionesy en corregir las condiciones de salida del bucle as como los ndices de memoria queusa.

    El nuevo nmero de iteraciones se calcula como: i=nmero de iteraciones/n.Si i no es un nmero exacto (nmero de iteraciones mod n) se podran realizar fueradel bucle. Para incrementar el ILP adems se puede usar:4.1 emisin en orden

    4.2 emisin fuera de orden

    Ejemplo transpa 5 (semana 3).

    Procesador Segmentado en 5 etapas: F,D,X,M,WB

    Ejercicio 1.a) Dependencia de datos

    -Read After Write

    1) R1: LD R1 0(R2)/DADDI R1,R1,#12) R1: LD R1 0(R2)/ SD R1 0(R2)dependencia3) R1: DADDI R1,R1,#1/SD R1 0(R2)4) R2: DADDI R2,R2,#4/DSUB R4,R3,R25) R4: DSUB R4,R3,R2/ BNEZ R4 Loop

    -Write After Write

    1) R1: LD R1 0(R2)/DADDI R1,R1,#1

    -Write After Read1) R2: LD R1 0(R2)/DADDI R2,R2,#42) R2: SD R1 0(R2)/DADDI R2, R2, #4

  • 7/25/2019 03-3-Guia_ejercicios_ILP_V4

    8/8

    Ejercicio 1.b) segmentacin 5 etapas/NO forwarding/congelacin del pipeline, M=1 ciclo

    Instruccin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18LD R1 0(R2) F D X M WDADDI R1 R1 #1 F - - D X M WSD R1 0(R2) F - - D X M WDADDI R2 R2 #4 F D X M WDSUB R4 R3 R2 F - - D X M WBNEZ R4 Loop F - - D X M WI_next - - F D

    Nmero de ciclos bucle= Numero de iteraciones * ciclos por iteracin + ciclos extra

    Suponiendo nmero de iteraciones=396/4=99Nmero de ciclos por iteracin = ciclo 1-ciclo16=16Ciclos extra = ciclos para que la ltima instruccin salga del pipeline (en amarillo)=2

    Nmero de ciclos del bucle = 99*16+2=1586

    Ejercicio 1.a) segmentacin 5 etapas/forwarding/No tomado, M=1 cicloInstruccin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15LD R1 0(R2) F D X M WDADDI R1 R1 #1 F D - X M WSD R1 0(R2) F - D X M WDADDI R2 R2 #4 F D X M WDSUB R4 R3 R2 F D X M WBNEZ R4 Loop F - D X M WI_next F F D X M W

    Nmero de iteraciones=396/4=99Nmero de ciclos por iteracin = ciclo 1-ciclo9=9Ciclos extra = ciclos para que la ltima instruccin salga del pipeline (en amarillo)=3Nmero de ciclos del bucle = 99*9+3=894

    Ejercicio 1.b) segmentacin 5 etapas/forwarding/tomado, M=1 cicloInstruccin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15LD R1 0(R2) F D X M WDADDI R1 R1 #1 F D - X M WSD R1 0(R2) F - D X M W

    DADDI R2 R2 #4 F D X M WDSUB R4 R3 R2 F D X M WBNEZ R4 Loop F - D X M WI_next F D X M W

    Nmero de iteraciones=396/4=99Nmero de ciclos por iteracin = ciclo 1-ciclo8=8Ciclos extra = ciclos para que la ltima instruccin salga del pipeline (en amarillo)=4Nmero de ciclos del bucle = 99*8+4=796