ARQII 02 Segmentacion 2014

55
Segmentación del ciclo de instrucción v.2014 William Stallings, Organización y Arquitectura de Computadores, Capítulo 11: Estructura y función de la CPU. John Hennessy – David Patterson, Arquitectura de Computadores – Un enfoque cuantitativo 1a Edición Capítulos 5 y 6 (4a Edición, Apéndice A)

description

pipeline

Transcript of ARQII 02 Segmentacion 2014

  • Segmentacin del ciclo de instruccin

    v.2014

    William Stallings, Organizacin y Arquitectura de Computadores, Captulo 11: Estructura y funcin de la CPU.

    John Hennessy David Patterson, Arquitectura de Computadores Un enfoque cuantitativo 1a Edicin

    Captulos 5 y 6 (4a Edicin, Apndice A)

  • Definicin: ETAPA (stage) y CAUCE (pipeline)Productividad: frecuencia de salida del cauceLatencia: Dnde apoyo la ropa?

    Segmentacin

    Productividad vs. latencia

  • Deben realizarse mltiples tareas iguales (n). Las tareas deben poder ser descompuestas en k

    etapas de menor duracin. Las entradas de cada etapa ki deben estar

    determinadas nicamente por las salidas de la etapa anterior ki-1.

    Las duraciones de las diferentes etapas ti deben ser comparables. El ciclo de conmutacin estar determinado por la etapa ms lenta (t=max{ti}).

    Segmentacin

    Condiciones necesarias

    Latencia de todas las instrucciones = k.tProductividad mxima = 1/t

    Latencia de todas las instrucciones = k.tProductividad mxima = 1/t

  • Luego de k-1 ciclos las k etapas del cauce estarn trabajando. Tericamente en ese momento el cauce tiene la mxima

    productividad (k tareas simultneas) hasta que se completen las n disponibles.

    Si el cauce tiene k etapas de duracin t (duracin de la etapa ms larga), al ejecutarse un conjunto de n tareas, la mejora obtenida con esta tcnica puede expresarse como:

    S=T secuencialT segmentado

    = nktt (k1 )+nt

    = nkk+n1

    k

    Segmentacin

    Clculo de la mejora

    Si se aumenta el nmero de etapas, aumenta la productividad (OJO)

    Cuidado con el numerador, no es cierto que secuencial tardara tanto

  • Problema:

    6 servicios de lavandera: lavado 30', secado 40', doblado 20', guardado 10'. Si se implementa un cauce de 4 etapas, se obtiene una mejora aproximada de 4?

    Tsecuencial=6*(30'+40'+20'+10')=600'

    Tsegmentado=40'*(4-1)+6*40'=360'

    S=1.66, muy lejos de 4

  • Las duraciones de las diferentes etapas no son iguales. La segmentacin va al ritmo que impone la etapa ms larga (en este caso el secado). Las dos ltimas etapas podran unificarse? S=1.875, ms cerca de 3...

    El nmero de tareas (servicios) no es lo suficientemente grande como para que sea despreciable el tiempo de llenado del cauce. Si n=12, S=2.15, ms cerca de 3... De todos modos no se puede pasar de 2.5 debido al desbalance anterior.

    Para n=1, S=0.83, menor que 1.

    Falta considerar la desmejora que agrega comunicacin entre etapas, la cual puede no ser despreciable.

    %Matlabn=1:100;t=(n.*(30+40+30))./(40*(31)+n.*40);plot(n,t)

  • modulepromedio(outputregistersigned[0:15]prom,inputsigned[0:15]a,b,c,d,inputclk);

    wiresigned[0:15]sum_div_4;

    assignsum_div_4=(a+b+c+d)/4;

    always@(posedgeclk) //Registrodesalidaprom 1/t [Hz] Productividad: fclk [operaciones por segundo]

  • modulepromedio_pipeline(outputregsigned[0:15]prom,inputsigned[0:15]a,b,c,d,inputclk);

    wiresigned[0:16]ab;wiresigned[0:16]cd;wiresigned[0:17]sum;wiresigned[0:15]sum_div_4;regsigned[0:16]saved_abregsigned[0:16]saved_cdRegsigned[0:17]saved_sum;

    assignab=a+b; //Combinacional1assigncd=c+d;

    always@(posedgeclk)begin //Registros1saved_ab

  • Fundamento: Slo una parte del hardware de la mquina de estados es utilizado en cada etapa del ciclo de instruccin.

    Segmentacin del ciclo de instruccin: Tcnica de implementacin (rem ORG + TEC) (invisible al programador) que superpone, en el tiempo, las diferentes etapas del ciclo de instruccin. Explotacin del paralelismo entre partes de las instrucciones.

    Aumenta productividad, desmejora la latencia (sincronizacin entre etapas costosa). Es imposible realizar una instruccin en un ciclo de reloj. El ptimo esperable sera

    realizar cada etapa del pipeline en un ciclo de reloj, alcanzando una productividad de una instruccin por ciclo.

    Segmentacin

    El ciclo de instruccin

  • Segmentacin

    El ciclo de instruccin

    FETCHFETCH DECODEDECODE EXECUTEEXECUTE

    MEM

    ALU y Registros(Datapath)

    UC

    EJECUCION DELA INSTRUCCION

    EJECUCION DELA INSTRUCCION

    DECODIFICACIONDECODIFICACION

    CAPTACION DELA INSTRUCCION

    CAPTACION DELA INSTRUCCION

    FETCHFETCH DECODEDECODE EXECUTEEXECUTE

    FETCHFETCH DECODEDECODE EXECUTEEXECUTE

    Instrucciones

    i

    i+1

    i+2

    Ciclos ->n n+1 n+2 n+3 n+4

    Modelo ms simple: 3 etapas (3-stage pipeline). Requisitos:- registros intermedios- banco multiport (2+1)

    Si la etapa de ejecucin es la nica que tiene acceso al DATAPATH, es la etapa ms complicada (debe acceder a los registros operando, realizar la operacin, y almacenar el resultado.

  • Segmentacin

    El ciclo de instruccin

    Decodificador(circuito

    combinacional)Memoriade

    Programa(cache)

    PC

    clock

    +4

    Lineas de control

    InstruccinDATAPATH

    EJECUTAREXECUTE

    DECODIFICARDECODE

    CAPTARFETCH

    ALU

    shifter

    Registros

    F/D D/E

  • Segmentacin

    El ciclo de instruccinLa etapa de ejecucin es ms larga que las dems (lee registros, calcula y escribe registros). Se pude trasladar el acceso a los registros operando a la etapa de decodificacin y agregar una cuarta etapa de escritura del resultado en registro destino (WB: write back).

    F-D-E-W

    La etapa de ejecucin E slo realiza la operacin de la ALU. Las etapas 2 y 4 acceden al banco de registros (banco de registros multiport).

  • Con los almacenamientos no hay problema, pero ante una carga: Detener siempre (ineficiente), comprobar dependencia (toma tiempo) o no detener nunca (carga retardada).Ventajas del reordenamiento del cdigo en cada caso.

    Falta contemplar el acceso a memoria.Para la segmentacin de 3 etapas, agregar una cuarta etapa.

  • Resulta la segmentacin clsica en 5 etapasTodas las instrucciones pasan por M (incluso las de ALU).La estapas F y M acceden a memoria (Harvard).

    Falta contemplar el acceso a memoria.Otra opcin:

  • Segmentacin

    Operando en memoriaCAPTACION DE

    LA INSTRUCCION

    CAPTACION DELA INSTRUCCION

    DECODIFICACIONDECODIFICACION

    CAPTACION DELOPERANDO

    CAPTACION DELOPERANDO

    EJECUCION DELA INSTRUCCION

    EJECUCION DELA INSTRUCCION

    CALCULO DIRDEL OPERANDO

    CALCULO DIRDEL OPERANDO

    ESCRITURA DELOPERANDO

    ESCRITURA DELOPERANDO

    MEMORIA(datos)

    REGISTROS

    MEMORIA(programa)

    ALU

    AGU

    UC y REGISTROS

    FI

    DI

    CO

    FO

    EI

    WO

    STALLINGS-Intel(1,2): ADD R1,R2

    CISC: operando en memoriaCISC: operando en memoria

  • Segmentacin

    Operando en memoria

  • Las instrucciones deben poder ser descompuestas en k etapas de menor duracin.

    Las entradas de cada etapa ki deben estar determinadas nicamente por las salidas de la etapa anterior ki-1.

    Las duraciones de las diferentes etapas ti deben ser comparables. El clock del pipeline estar determinado por la etapa ms lenta (t=max{ti}).

    Segmentacin

    Condiciones necesarias

    Latencia de todas las instrucciones = k.tProductividad mxima = 1/t

    Latencia de todas las instrucciones = k.tProductividad mxima = 1/t

  • Luego de k-1 ciclos las k etapas del pipeline estarn trabajando. Tericamente en ese momento el pipeline tiene la mxima

    productividad (k instrucciones simultneas) hasta que se altere la secuencia (salto o interrupcin).

    Si aumento el nmero de etapas, aumenta la productividad, hasta cierto punto (ver luego).

    Si el pipeline tiene k etapas de duracin t (duracin de la etapa ms larga), al ejecutarse un conjunto de n instrucciones, la mejora obtenida con esta tcnica puede expresarse como:

    S= TT P

    =nkt

    t (k1 )+nt=

    nkk+n1

    k

    Segmentacin

    Mejora Productividad vs. latencia

    OBJETIVOS DEL DISEADOR: Equilibrar las etapas (igual duracin), hacerlas independientes (que no compartan recursos) y mantenerlas ocupadas (atenuar los efectos de los saltos y la dependencia de datos)

  • Retardo adicional al tener que presentar la informacin entre etapas en registros intermedios (control de la segmentacin).

    La nica opcin es implementar las etapas de igual duracin y todas las instrucciones deben respetarlas.

    Aumenta la complejidad de la CPU. Difcil mantener el cauce completo debido a los

    riesgos de la segmentacin (a continuacin).

    Segmentacin

    Lmites en la implementacin

    TIPICO 3-5 ETAPASMAXIMO 6-9 ETAPAS

  • 80486 y Pentium: cinco etapas para instrucciones con enteros (FI, D1, D2, EX, WB) y ocho para instrucciones de punto flotante.

    PowerPC: cuatro etapas para instrucciones con enteros y seis para instrucciones de punto flotante.

    H-P (DLX): cinco etapas (IF, ID, EX, MEM, WB).

    PowerPC: Es una arquitectura de computadoras de tipo RISC introducida en 1990 por la Alianza AIM, un consorcio de empresas compuesto por Apple, IBM y Motorola, de cuyas primeras letras, surgi la sigla. Los procesadores de esta familia son producidos por IBM y Freescale Semiconductor que es la division de semiconductores y microprocesadores de Motorola, siendo utilizados principalmente en ordenadores o computadores Macintosh de Apple Computer. Mas informacin en el sitio de IBM, Arquitecturas Power. Prctica de repaso: comparacin con Pentium en Stallings, captulos 1, 4 y 11.

    Segmentacin

    Ejemplos

  • Segmentacin

    RISC en cinco etapasRISC: carga/almacenamientoRISC: carga/almacenamiento

    1. FI: Captar la instruccin e incrementar PC 2. ID: Decodificar instruccin y captar registros 3. EX: Tres opciones: calcular direccin efectiva, ALU o salto 4. MEM: Acceso a memoria (solo carga o almacenamiento) (Terminan store y saltos: 4c) 5. WB: Escribir registro de salida (Termina el resto: 5c)

    1. FI: Captar la instruccin e incrementar PC 2. ID: Decodificar instruccin y captar registros 3. EX: Tres opciones: calcular direccin efectiva, ALU o salto 4. MEM: Acceso a memoria (solo carga o almacenamiento) (Terminan store y saltos: 4c) 5. WB: Escribir registro de salida (Termina el resto: 5c)

    4c < CPI < 5c

    DATAPATH

  • MAR PC;IR M[MAR];PC PC+4

    1. Captacin (fetch) IFLa instruccin es transferida al registro de instruccin. En dos pasos porque el PC no tiene conexin directa a memoria.

    2. Decodificacin (decode) IDDecodificacin y lectura de los registros involucrados. Puede hacerse simultneamente por ser campo fijo.

    3. Ejecucin (execute) EXOperacin de la ALU. Depende del tipo de instruccin. Referencia a memoria, salto/bifurcacin o instruccin ALU. No al mismo tiempo.

    A REG[IR[25:21]];B REG[IR[20:16]]

    ALUout AopB(ALU)MAR A+IR[15:0];MDR Rd(Memory) IfA=BthenPC:=ALUout(Branch)

    4. Acceso a memoria (memory access) MEMSe accede a memoria si es necesario (carga o almacenamiento) con la direccin calculada en el paso anterior. O realizar el salto.

    5. Post-escritura (write-back) WBEscribir resultado en el registro, tanto si viene de la ALU como si viene de memoria.

    MDR M[MAR];M[MAR] MDR

    Rd ALUoutAoMDR

  • Segmentacin

    RISC en cinco etapas

  • Segmentacin

    RISC en cinco etapas

  • Segmentacin

    RISC en cinco etapas

    Requisitos:- registros intermedios- banco multiport (2 lecturas + 1 escritura)- memoria de datos e instrucciones separadas- incrementar PC- deteccin temprana de saltos (riesgos de control) + forwarding (dependencias)

  • Segmentacin

    ARM7 (3) y ARM9 (5)

  • Segmentacin

    Cortex-M3 en tres etapas

  • HAZARDS: Situaciones que impiden la ejecucin de la prxima instruccin de la secuencia durante su correspondiente ciclo (el procesador queda detenido, suspendido, stalled, durante uno o ms ciclos). Todas las instrucciones posteriores son tambin suspendidas y no se realiza una nueva captacin mientras dure la suspensin.

    Clasificacin:

    Riesgos estructuralesRiesgos por dependencia de datosRiesgos de control

    Segmentacin

    Riesgos de la implementacin

  • Sucede cuando un recurso (memoria, alu) debe ser utilizado por varias instrucciones simultneamente.

    Ejemplo: una instruccin de carga desde memoria impide el acceso durante un ciclo. El fetch de la instruccin i+3 debe ser suspendido.

    Penalidad: 1 ciclo

    Segmentacin > Riesgos

    1. Riesgos estructurales

  • Segmentacin > Riesgos > 1. Estructurales

    Ejemplo

  • Segmentacin > Riesgos > 1. Estructurales

    Ejemplo (cont)

  • Duplicacin de recursos, por ejemplo en el caso de la ALU.

    Cache de datos e instrucciones independientes, para evitar los conflictos de memoria.

    Un solo acceso a memoria de datos por instruccin (RISC).

    Lectura (x2) y escritura (x1) simultnea del banco de registros (RISC).

    Las unidades funcionales de PF pueden ser a la vez segmentadas para soportar varias instrucciones simultneas (ver luego).

    Segmentacin > Riesgos > 1. Estructurales

    Reduccin de los efectos

  • Sucede principalmente cuando una instruccin requiere un dato generado por la ejecucin de una instruccin anterior que an no ha finalizado. Esta situacin puede complicarse cuando desordenemos la ejecucin de las instrucciones, pero por ahora es simple.

    Hasta que no se escribe un registro, no puede leerse. Tanto despus de una carga como despus de una operacin de la ALU.

    La penalidad depende del tipo de operacin.

    Segmentacin > Riesgos

    2. Riesgos por dep. de datos

    Los efectos pueden reducirse utilizando tcnicas de ADELANTAMIENTO (forwarding, bypassing). Camino adicional de HW. Por ejemplo, el resultado de la ALU es realimentado a su entrada, evitando el ciclo de escritura W.

  • Segmentacin > Riesgos > 2. Dependencia de datos

    Forwarding

  • Segmentacin > Riesgos > 2. Dependencia de datos

    Forwarding (cont)

  • Segmentacin > Riesgos > 2. Dependencia de datos

    Forwarding (cont)

  • Producidos por las instrucciones de salto. Las consecuencias dependen del tipo de salto, la implementacin y el resultado del salto, en el caso de los condicionales.

    Salto incondicional: no se conoce la direccin de la prxima instruccin hasta despus de finalizada la decodificacin. Se realiza el fetch de la instruccin siguiente y luego se descarta.

    Salto condicional que NO SALTA: en el pipeline presentado no se verifica en E. Haba captado bien la siguiente instruccin, por lo tanto puede continuar.

    Salto condicional que SALTA: en E se verifica la condicin y en W se modifica el PC. Hay que captar de nuevo.

    Segmentacin > Riesgos

    3. Riesgos de controlEfecto de las

    INTERRUPCIONES

  • Segmentacin > Riesgos > 3. De control

    Ejemplos

  • Las operaciones de control (condicionales o incondicionales) son muy frecuentes en los programas reales, por lo que pueden reducir drsticamente la performance del pipeline.

    Estadsticas: 20-35% de las operaciones son saltos. ~65% de dichas operaciones toman el salto. Hay casi el doble de saltos condicionales que de saltos

    incondicionales.

    Segmentacin > Riesgos > 3. De control

    Estadsticas

  • Instruction fetch units y colas de instrucciones (hardware adicional)

    Buffer de bucles (pequea cache de instrucciones consecutivas) [CRAY-1]

    tiles solo en el caso de saltos incondicionales.

    Segmentacin > Riesgos > 3. De control

    Reduccin de los efectos

  • Flujos mltiples:Se siguen los dos caminos posibles, duplicando las partes iniciales del hardware.Puede entrar en el cauce una nueva bifurcacin.[IBM 370/168]

    Salto retardado: Modificacin del ciclo de instruccin, que requiere reordenamiento del cdigo por parte del compilador.Luego de cada instruccin de salto hay un branch delay slot: la instruccin siguiente se ejecuta SIEMPRE. 60-80% efectivo, si no NOP.[RISC]

    Segmentacin > Riesgos > 3. De control

    Reduccin de los efectos (cont)

  • Prediccin de saltos: Esttica

    Siempre salta o nunca salta [Motorola 68020] Depende de la direccion [PowerPC 601]

    Dinmica Uno o dos bits (HW) asociados a cada instruccin de salto

    [IBM 3090/400] Tabla de historia de saltos (memoria cache: tabla con

    direccin de la instruccin de bifurcacin + bits de historia + destino) [AMD 29000]

    NOTA: Ejecucin especulativa (no solo fetch, comienzo a ejecutar)

    Segmentacin > Riesgos > 3. De control

    Reduccin de los efectos (cont)

  • Esquema tpico de prediccin dinmica con dos bits: cambiar la prediccin solo si suceden dos predicciones incorrectas consecutivas (ver variantes).

    Segmentacin > Riesgos > 3. De control

    Reduccin de los efectos (cont)

  • Segmentacin > Riesgos

    Resumen

    RIESGOS ESTRUCTURALES(conflicto de recursos)

    RIESGOS ESTRUCTURALES(conflicto de recursos)

    RIESGOS POR DEPENDENCIA DE DATOS(adelantamiento)

    RIESGOS POR DEPENDENCIA DE DATOS(adelantamiento)

    RIESGOS DE CONTROL(saltos e interrupciones)

    RIESGOS DE CONTROL(saltos e interrupciones)

  • Las instrucciones son ejecutadas por la CPU como una secuencia de pasos. La ejecucin de instrucciones puede acelerarse sustancialmente utilizando segmentacin (pipelining)

    Un pipeline se organiza como una secuencia de k etapas. En un cierto instante puede haber k instrucciones activas en el pipeline. Ejemplo lnea de montaje.

    Aumentar el nmero de etapas aumenta la productividad, hasta cierto punto.

    Los riesgos (hazards) impiden mantener la mxima tasa. Los riesgos estructurales se deben a conflictos en la utilizacin de recursos. Tambin existen riesgos por dependencia de datos (inevitables) y riesgos de control debidos a las instrucciones de salto.

    Las instrucciones de salto pueden deteriorar significativamente la performance del pipeline, por lo que deben aplicarse tcnicas que reduzcan sus efectos.

    Segmentacin

    Sumario

  • Antes de emitir una nueva instruccin de punto flotante- Comprobar riesgos estructurales

    - Comprobar dependencia de datos RAW- Comprobar adelantamiento

    Extensin de la segmentacin para manipular operaciones multicicloEMISION DE INSTRUCCIONES

  • Extensin de la segmentacin para manipular operaciones multicicloSEGMENTACION DE LAS UNIDADES FUNCIONALES

  • F D E1 E2 E3 E4

    F D E1

    E2

    E3stal

    l E4stal

    l

    stall

    stall

    stall

    stall

    WB

    WB

    F D E WB

    F D E WB

    SEGMENTACION DE INSTRUCCIONES MULTICICLO

    SUMA PFE1: Restar exponentesE2: Rotar mantisaE3: Sumar mantisasE4: Normalizar

    E: ALUa) Agregar etapas: Sufren latencia las inst ALU. No sirve para muchas etapas. Se usa para multiplicacin de enteros (se puede hacer en 2 etapas).

    b) Agregar funcionaldad a la ALU y repetir E: Equivale a insertar detenciones. ALU compleja. No afecta a las instrucciones simples. La instruccin multiciclo no tiene segmentacin. Se usa para instrucciones muy largas y poco frecuentes (divisin).

    F D E WB

  • F D E1

    F D E2

    F D E3

    F D E4

    WB

    WB

    WB

    WB

    F D E WB

    c) Aproximacin RISC: La funcionalidad est en diferentes instrucciones. No existe la instruccin de suma en PF. Hay que implementarla por software. Similar a b).

    F D E1

    F D E23F D E4

    WB

    WB

    WB

    ARM7: No tiene instrucciones de PF, pero incluye shifter en el datapath.

  • F DE1 E2 E3 E4

    WB

    E

    d) Cauces paralelos: Pueden terminar dos al mismo tiempo (banco de registros PF separado), o incluso desordenadas. Se detiene. Pero no hace falta si hay una secuencia de instrucciones de PF. No desmejora las instrucciones simples.

    RAW: Siempre existe. Se usa adelantamiento o detencin.WAR: No existe pues la emisin de instrucciones es ordenada.WAW: Aparece debido a la finalizacin desordenada.

  • INTRODUCCIN A LAS ARQUITECTURAS SUPERESCALARESMientras ejecuto una secuencia de sumas en PF, el resto de las unidades

    funcionales (UF) estn libres. Si se pudieran captar y decodificar dos instrucciones simultneamente, y las dos no requirieran la misma UF...

    Diapositiva 1Diapositiva 2Diapositiva 3Diapositiva 4Diapositiva 5Diapositiva 6Diapositiva 7Diapositiva 8Diapositiva 9Diapositiva 10Diapositiva 11Diapositiva 12Diapositiva 13Diapositiva 14Diapositiva 15Diapositiva 17Diapositiva 18Diapositiva 19Diapositiva 20Diapositiva 21Diapositiva 22Diapositiva 23Diapositiva 24Diapositiva 25Diapositiva 26Diapositiva 27Diapositiva 28Diapositiva 29Diapositiva 30Diapositiva 31Diapositiva 32Diapositiva 33Diapositiva 34Diapositiva 35Diapositiva 36Diapositiva 37Diapositiva 38Diapositiva 39Diapositiva 40Diapositiva 41Diapositiva 42Diapositiva 43Diapositiva 44Diapositiva 45Diapositiva 46Diapositiva 47Diapositiva 48Diapositiva 49Diapositiva 50Diapositiva 51Diapositiva 52Diapositiva 53Diapositiva 54Diapositiva 55