Instrucciones SPARC V8
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