Instrucciones SPARC V8

download Instrucciones SPARC V8

of 17

Transcript of Instrucciones SPARC V8

  • %g0 %o0 %l0 %i0

    %g1 %o1 %l1 %i1

    %g2 %o2 %l2 %i2

    %g3 %o3 %l3 %i3

    %g4 %o4 %l4 %i4

    %g5 %o5 %l5 %i5

    %g6 %o6 %l6 %i6

    %g7 %o7 %l7 %i7

    r[0] r[8] r[16] r[24]

    r[1] r[9] r[17] r[25]

    r[2] r[10] r[18] r[26]

    r[3] r[11] r[19] r[27]

    r[4] r[12] r[20] r[28]

    r[5] r[13] r[21] r[29]

    r[6] r[14] r[22] r[30]

    r[7] r[15] r[23] r[31]

    El banco de registros del SPARCv8, en principio, puede tener ms de 100 registros pero slo deja ver una ventana de 32 registros divididos en 4 grupos %g(general), %o(output), %l(local) y %i(input).

    En el SPARCv8/4 se van a implementar los 32 registros mediante un banco de registros con tres puertos de lectura.

    1

  • ALSU

    fun

    a y

    amt

    desp32

    0

    1

    4

    b(4..0)

    fun(3..0)

    ALSU32

    b alsu

    a

    fun(5)

    2

    1

    fun

    a

    b

    alsu

    6

    4 1

    ALSU32

    4

    1

    fun

    fun(1..0)

    fun FUN Descripcin 0 ADD alu

  • +,-

    sel(+,-)

    a

    b

    s

    a

    b

    s

    sN

    bN

    aN

    sel

    v_x

    c_x

    Primer bloque a construir

    sel

    sel

    icc_x(1)= v_x

    icc_x(0)= c_x

    icc_x(2)=z_x

    icc_x(3)= n_x

    32

    1

    32

    32

    1 a(31)

    1 b(31)

    1 s(31)

    Las lneas curvas indican que se toman algunos bits,las lneas rectas indican que se toman todos los bis.

    n z v c

    Reg4

    rst en

    4

    1

    1

    icc

    condic

    Segundo bloque a construir

    4

    1

    vc

    1

    5

    6

    7

    8

    z

    c n v 1

    12 (cOz) 13 c 14 n 15 v

    0 0

    (nXv) 10 (zO(nXv)) 9 z

    2

    3

    4

    zO(nXv) nXv cOz

    O=OR X=XOR =NOT

    n z v c

    icc status 16

    calc_status

    c

    3

  • IR(24..19) funci

    IR(13) i

    IR(18..14) rs1

    IR(12..0) rs2cte13

    IR(30) ds

    IR

    nP

    C

    32

    32

    SPARCv8/4_risc1et

    + Q D PC

    4

    IR(31) DPe

    IR(29..25) rd

    r-ad

    dr2

    r-ad

    dr1

    w-a

    dd

    r

    w_data r_data1

    r_data2

    r_data3

    r-ad

    dr3

    Register file of 31 registers of 32 bits like listing 4.6

    reg_file3 a

    b

    alsu ALSU32

    0

    1

    32

    32

    PC

    we_icc D

    status

    fun

    (4)

    parte del circuito SPARCv8/4 y memoria N

    Tringulo aumenta a N bits,

    repite el bit ms signif.

    Lnea Curva quita bits, por defecto

    los ms significativos

    32

    32

    8

    IR(12..0) rs2cte13

    Bus_PC

    Bus_IR

    Bus_PC(9..2)

    32

    32

    5

    c

    status

    ROM_Prog addr8 dout

    ROM 256 x 32 like listing 11.5

    calc_status

    4

  • Operaciones en la ALSU del SPARCv8/4

    FUN rd,rs1,rs2cte13 (#En el SPARC rd va a la derecha)

    r[rd]

  • Primera instruccin ADD %g1,%g0,6

    Cargar en %g1 el valor 6 (ADD %g1,%g0,6 ) Cargar la constante 6 en rs2cte13, Se suma con cero en la ALU. El resultado se almacena en el banco de registros, en el registro 1. Para ejecutarlo es necesario enviar un flaco positivo del reloj

    cuando las otras seales estn en: DPe

  • Direccionamiento del SPARCv8/4

    El SPARCv8/4 direcciona la memoria por bytes (conjunto de 8 bits).

    Sin embargo, las instrucciones son de 32 bits (es decir 4 bytes).

    Por lo tanto cada posicin de memoria de programa tiene 4 bytes.

    Por este motivo el contador de programa debe contar de 4 en 4.

    El contador de programa inicia en 0x4000 debido a que las primeras posiciones se dejan para perifricos.

    7

  • Primer programa Dir. Assembler Comentario

    0x4000 MOV %g1,6 ! Carga 6 en %g1

    0x4004 MOV %g2,9 ! Carga 9 en %g2

    0x4008 ADD %g3, %g2, %g1 ! Suma en %g3

    0x400C SRA %g4, %g3, 1 ! Desplaza en %g4

    Qu operacin aritmtica hacen las dos ltimas instrucciones?

    8

  • INSTRUCCIONES 1/2 SPARC v8/4

    SP

    AR

    C V

    8

    Co

    men

    tari

    os

    PC

    31

    30

    29

    28

    27

    26

    25

    24

    23

    22

    21

    20

    19

    18

    17

    16

    15

    14

    13

    12

    11

    10

    9 8 7 6 5 4 3 2 1 0

    108 Suma PC

  • INSTRUCCIONES 2/2 SPARC v8/4

    SP

    AR

    C V

    8

    Co

    me

    nta

    rio

    s

    PC

    31

    30

    29

    28

    27

    26

    25

    24

    23

    22

    21

    20

    19

    18

    17

    16

    15

    14

    13

    12

    11

    10

    9 8 7 6 5 4 3 2 1 0

    90 PC

  • SIMULACIN SPARC v8/4 P

    C

    n,z

    ,v,c

    %l1

    %l2

    %l3

    %l4

    ir

    rs1,r

    -addr1

    r-data

    1,a

    rs2cte

    13,r

    -addr2

    r-data

    2

    Bus_D

    in

    cte

    22

    0

    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

    26

    27

    28

    29

    Cic

    los

    DP

    e

    ds

    i b funci

    fun

    als

    u,

    Bus_A

    rd,r

    -addr3

    r-data

    3,

    Bus_D

    out

    w-a

    ddr

    w-d

    ata

    we

    condi

    sta

    tus

    nP

    C

    11

  • IR(24..19) funci

    IR(13) i

    IR(18..14) rs1

    IR(12..0) rs2cte13

    IR(30) ds

    Bus_Din

    Bus_Dout

    IR

    nP

    C

    32

    32

    SPARCv8/4_risc1et

    + Q D PC

    0

    1

    4

    IR(21..0) cte22

    IR(28..25) condi

    IR(31) DPe

    IR(29..25) rd

    r-ad

    dr2

    r-ad

    dr1

    w-a

    dd

    r

    w_data r_data1

    r_data2

    r_data3

    r-ad

    dr3

    Register file of 31 registers of 32 bits like listing 4.6

    reg_file3 a

    b

    alsu ALSU32

    1

    0

    0

    1

    32

    status

    32

    PC

    we_icc

    D status

    fun

    (4)

    5

    RAM_Dat

    dout addr8

    din

    we

    ROM_Prog addr8 dout

    RAM 256x 32 like listing 11.1

    ROM 256 x 32 like listing 11.5

    1

    32

    Bus_A

    circuito SPARCv8/4 y memorias N

    Tringulo aumenta a N bits,

    repite el bit ms signif.

    Lnea Curva quita bits, por defecto

    los ms significativos

    6 6

    4

    32 Bus_we

    ce

    '1'

    9

    32

    32

    32

    8

    IR(12..0) rs2cte13

    Bus_PC if

    IR

    = ST

    th

    en w

    e