TEMA 3 PROCESADORES VLIW (Very Long .PROCESADORES VLIW •Los procesadores con arquitecturas VLIW

  • View
    215

  • Download
    0

Embed Size (px)

Text of TEMA 3 PROCESADORES VLIW (Very Long .PROCESADORES VLIW •Los procesadores con...

  • TEMA 3 PROCESADORES VLIW (Very Long

    Instruction Word)

    Esta arquitectura de CPU implementa una forma de paralelismo a nivel de instruccin. Es similar a las arquitecturas superescalares, ambas usan varias unidades funcionales (por ejemplo varias ALUs, varios multiplicadores, etc) para lograr ese paralelismo.

  • PROCESADORES VLIW

    Los procesadores con arquitecturas VLIW se caracterizan, como su nombre indica, por tener juegos de mini-instrucciones muy simples, tipo RISC, pero muy grandes en cuanto al tamao de la instruccin que las contiene.

  • PROCESADORES VLIW

    En cada instruccin se especifica el estado de todas y cada una de las unidades funcionales del sistema, con el objetivo de simplificar el diseo del hardware al dejar todo el trabajo de planificar el cdigo en manos del programador/compilador(tiene informacin comportamiento dinmico del programa: bucles, saltos, condiciones, dependencias de datos)

  • PLANIFICACIN ESTTICA PROCESADOR VLIW

    Para una mquina superescalar "normal: Se iniciara simultneamente la multiplicacin (i2) y la suma (i1) en unidades diferentes y, una vez acabada la suma, ejecutara la multiplicacin (i3). Todo este trabajo de planificacin lo llevara a cabo la circuitera interna del microprocesador.

    En una mquina VLIW, toda la planificacin anterior la hara el compilador (o el propio programador si programa en ensamblador), y el cdigo resultante sera algo as: INCONVENIENTES:

    cdigo objeto mayor proc. superescalar (necesidad de introducir NOP)

    No se aprovechan al mximo las unidades funcionales pudiendo estar ociosas (INTENTAR MANIPULAR BUCLES)

  • Problema 2 1 semana 2012

  • PLANIFICACIN ESTTICA PROCESADOR VLIW

    Los bloques bsicos se componen de un grupo de instrucciones que forman una lnea de ejecucin secuencial (no hay instrucciones de salto salvo en la ltima)

    La interconexin de las entradas y salidas de los diferentes bloques bsicos conforman el diagrama de flujo de control

  • PLANIFICACIN ESTTICA PROCESADOR VLIW

    Las instrucciones de cada bloque se combinan para formar instrucciones VLIW. Para ello se recurre al grafo de flujo de datos que tiene asociado cada bloque

    Carga/almacenamiento 2 ciclos (segmentada) Coma flotante 3 ciclos (segmentada) Enteras y saltos 1 ciclo

    2

  • 3.6 DESENRROLLAMIENTO DE BUCLE (planificacin local reordenar un bloque

    bsico)

    APROVECHA EL PARALELISMO DEL CUERPO DEL BUCLE CON RENOMBRAMIENTOS Y AJUSTANDO EL CDIGO DE TERMINACIN

    El cdigo suma una constante (almacenada en F2) a todos los

    elementos de un vector almacenado en memoria con elementos de doble

    precisin (8 bytes). El ndice para acceder a los elementos es R1 que inicialmente est situado en el ltimo elemento del

    vector. El ltimo elemento a procesar e encuentra en la posicin 8 de la memoria

    Renombrado de registros

    X[i]=X[i]+a

  • 3.6 DESENRROLLAMIENTO DE BUCLE Agrupacin por tipo de operacin(para ilustrar mejor el

    paralelismo)

  • 3.6 DESENRROLLAMIENTO DE BUCLE

    Carga/almacenamiento 2 ciclos (segmentada) Coma flotante 3 ciclos (segmentada) Enteras y saltos 1 ciclo

    -40 -32 -24 -16 -8 0

    R1

  • 3.6 DESENRROLLAMIENTO

    DE BUCLE

    Ante un vector de 1000 elementos, el VLIW sin recurrir a planificacin local tardara 6000 ciclos( 1000 iteraciones * 6 ciclos). Por el desenrrollamiento tardaramos 2250 ciclos (250 iteraciones*9 ciclos)

    Sin desenrrollamiento

    X[i]=X[i]+a

  • 3.7 SEGMENTACIN SOFTWARE (planificacin local reordenar un

    bloque bsico) Es una tcnica que intenta

    aprovechar el paralelismo a nivel de instruccin en el cuerpo de algunos bucles (igual que el desenrrollamiento de bucles)

    Prlogo: instrucciones de

    arranque Cuerpo del bucle Eplogo (terminacin tras

    su finalizacin)

  • 3.7 SEGMENTACIN SOFTWARE (ej2 1semana

    2012) Prlogo: instrucciones de

    arranque

    Cuerpo del bucle

    Eplogo (terminacin tras su finalizacin)

    Carga/almacenamiento 2 ciclos (segmentada) Coma flotante 3 ciclos (segmentada) Enteras y saltos 1 ciclo

  • 3.7 SEGMENTACIN SOFTWARE

    Carga/almacenamiento 2 ciclos (segmentada) Coma flotante 3 ciclos (segmentada) Enteras y saltos 1 ciclo

    -40(R1) -32(R1) -24(R1) -16(R1) -8(R1) 0(R1)

    LOAD SD ADDD

    La ltima posicin donde se escribe es en 8

  • 3.7 SEGMENTACIN SOFTWARE

    { R1:=R1-8; }

  • 3.7 SEGMENTACIN SOFTWARE

    { R1:=R1-8; }

    8 16 24 32 40 48

    R1

    LOAD SD ADDD

  • 3.7 SEGMENTACIN SOFTWARE

    { R1:=R1-8; }

    8 16 24 32 40 48 0

    R1

    LOAD SD ADDD

  • 3.8 PLANIFICACIN DE TRAZAS

    Seleccin de traza (seleccin de la secuencia de ejecucin ms probable)

    Compactacin (minimizar nmero de operaciones vacas en las instrucciones VLIW)

    Tcnica de planificacin global que trata una secuencia de bloques bsicos como si fuesen uno, y a partir de l producir cdigo VLIW ms ptimo

  • 3.8 PLANIFICACIN DE TRAZAS

    Duracin: 12 ciclos (1,2,3,4,5,6,7,8,9,10,16,17)*p + 12 ciclos (1,2,3,4,10,11,12,13,14,15,16,17)*(1-p) donde p es la probabilidad de que se cumpla el if

  • 3.8 PLANIFICACIN DE TRAZAS Desplazamiento de operaciones entre

    bloques

    3

  • 3.8 PLANIFICACIN

    DE TRAZAS

  • Duracin: 10 ciclos (1,2,3,4,5,6,7,8,15,16 )*p+ 15 ciclos (1,2,3,4,5,6,8,9,10,11,12,13,14,15,16) *(1-p) donde p es la probabilidad del if

  • 3.8 PLANIFICACIN DE TRAZAS

    Duracin: 9 ciclos(1,2,3,4,5,6,7,10,11) *p +10 ciclos (1,2,3,4,5,7,8,9,10,11) *(1-p) donde p es la probabilidad de que se cumpla el if

    Renombrado de registros (Y[i])

  • 3.9 OPERACIONES CON PREDICADO

    Con el objeto de poder tratar operaciones condicionales como cualquier otra instruccin (evitamos las ramas con pequeo bloques bsicos a un bloque extendido)

  • Cdigo intermedio usando predicados

    3.9 OPERACIONES CON PREDICADO

    Cdigo intermedio

  • 3.9 OPERACIONES CON PREDICADO Cdigo VLIW generado del cdigo intermedio

    u.f. operaciones enteras 1 ciclo u.f. operaciones coma flotante 3 ciclos u.f. cargas/almacenamientos 2 ciclos u.f. para saltos 1 hueco de retardo

  • 3.9 OPERACIONES CON PREDICADO Cdigo VLIW con operaciones

    condicionadas

    u.f. operaciones enteras 1 ciclo u.f. operaciones coma flotante 3 ciclos u.f. cargas/almacenamientos 2 ciclos u.f. para saltos 1 hueco de retardo

  • 3.9 OPERACIONES CON PREDICADO

  • Ej 3 septiembre

    reserva 2013

    ADDI R4,Ra,800 ; longitud vector A LD F6,0(Rb); constante b LD F7,0(Rd) ;constante d Inicio: LD F5, 0(Ra) PRED_GT P1,P2,F5,11 LD F8,0(Rx) ADDD F8,F8,F6 (P1) ;se suma b ADDD F8, F8,F7 (P2);se suma d SD 0(Rx),F8 ADDI Ra,Ra,#8 ADDI Rx,Rx,#8 SGE R9,Ra,R4 BNEZ R9,Inicio

  • Ej 3 septiembre reserva 2013 Apartado b

    ADDI R4,Ra,800 ; longitud vector A LD F6,0(Rb); constante b LD F7,0(Rd) ;constante d Inicio: LD F5, 0(Ra) PRED_GT P1,P2,F5,11 LD F8,0(Rx) ADDD F8,F8,F6 (P1) ;se suma b ADDD F8, F8,F7 (P2);se suma d SD 0(Rx),F8 ADDI Ra,Ra,#8 ADDI Rx,Rx,#8 SGE R9,Ra,R4 BNEZ R9,Inicio

    Carga/almacenamiento

    Coma flotante Entera

    LD F6,0(Rb) ADDI R4,Ra,800

    LD F7,0(Rd)

    LD F5, 0(Ra)

    LD F8,0(Rx) PRED_GT P1,P2,F5,11

    ADDD F8,F8,F6 (P1)

    ADDD F8, F8,F7(P2) ADDI Ra,Ra,#8

    ADDI Rx,Rx,#8

    SGE R9,Ra,R4

    SD 0(Rx),F8 BNEZ R9,Inicio

  • Ej 3 septiembre reserva 2013

    Apartado b optimizado

    ADDI R4,Ra,800 ; longitud vector A LD F6,0(Rb); constante b LD F7,0(Rd) ;constante d Inicio: LD F5, 0(Ra) PRED_GT P1,P2,F5,11 LD F8,0(Rx) ADDD F8,F8,F6 (P1) ;se suma b ADDD F8, F8,F7 (P2);se suma d SD 0(Rx),F8 ADDI Ra,Ra,#8 ADDI Rx,Rx,#8 SGE R9,Ra,R4 BNEZ R9,Inicio

    Carga/almacenamiento

    Coma flotante Entera

    LD F6,0(Rb) ADDI R4,Ra,800

    LD F7,0(Rd)

    LD F5, 0(Ra)

    LD F8,0(Rx)

    PRED_GT P1,P2,F5,11

    ADDD F8,F8,F6 (P1)

    ADDD F8, F8,F7(P2) ADDI Ra,Ra,#8

    ADDI Rx,Rx,#8

    SGE R9,Ra,R4

    SD 0(Rx),F8 BNEZ R9,Inicio