Aula 1 - Reviso
Prof. Frank Sill Torres
DELT Escola de Engenharia
UFMG
Compilador
C MIPS
Assembly
MIPS
...
add $17, $18, $19
add $16, $16, $17
sub $20, $20, $21
....
Montador
MIPS
Linguagem de
Mquina
MIPS
...
00000010010100111000100000100000
00000010000100011000000000100000
00000010100101011010000000100010
....
Processador
MIPS R3000
Compilador
C SPARC
Assembly
SPARC
...
add %g4, %g1, %g2
add %g3, %g3, %g4
sub %g5, %g5, %g7
....
Montador
SPARC
Linguagem de
Mquina
SPARC
...
10000100000000010000000000000001
10001000000000001100000000000011
10001110001000010100000000000101
....
Processador
SPARC v8
HLL
(Linguagem de
alto nvel)
Compilador
C IA32
Assembly
IA32
...
add eax, ebx, ecx
sub ax, bx, cx
....
Montador
IA32
Linguagem de
Mquina
IA32
...
10000100000000010000000000000001
10001000000000001100000000000011
....
Processador
Pentium
RE
CE
IT
AS
16
32
20
36
24
40
12
28
44
48
64
80
5
2
5
6
60
68
84
72
88
76
92
CONTROLE
S
TEE TO
MPE R
ROS
VIA DE DADOS
0
1
2
3
4
SE
TO
BO L
R
OS
96
10
0
10
4
10
8
PROCESSADOR
ENTRADA
SE
CARTO R
NES
11
2
11
6
12
0
12
4
12
8
13
2
13
6
14
0
SADA
MEMRIA
3
CPU
RAM
Barramento
Portas de
E/S
Temporizador
CPU
Memria
(ROM/RAM/Flash/...)
Mais
componentes
(opcional)
Temporizador
(opcional)
(cristal
exterior)
Conversores
A/D D/A
(opcional)
Oscilador
Portas de E/S
Microcontroladores (MCU)
Tem CPU, RAM, ROM, E/S,
no mesmo chip
CPU menos poderosa
Tratamento de poucos
formatos de dados
(tipicamente 8 ou 16 bits)
Consumo / preo baixo
(normalmente)
Uso especfico
6
Nano-Processador
Decodificador
Microcdigo
Desempenho (D)
CISC:
RISC:
Arquitetura MIPS
Arquitetura MIPS
Arquitetura MIPS
Componentes bsicos:
Unidade
Banco
de controle
de registradores
Unidade
Contador
de programa (PC)
Memria
Registrador
de instrues (IR)
12
Arquitetura MIPS
:: Diagrama simplificado
MUX
MUX
MUX
MUX
13
Arquitetura MIPS
:: Unidade de controle
Arquitetura MIPS
:: Banco de registradores
15
Arquitetura MIPS
:: Banco de registradores
16
17
Nmero Uso
$zero
$v0-$v1
2-3
Retorno de funes
$a0-$a3
4-7
Argumentos de funcoes
$t0-$t7
8-15
$s0-$s7
16-23
$t8-$t9
24-25
Mais temporrios
$gp
28
Apontador global
$sp
29
Apontador de pilha
$fp
30
Apontador de quadro
$ra
31
Endereo de retorno
18
Arquitetura MIPS
:: Unidade lgica e aritmtica (ALU)
19
Arquitetura MIPS
:: Contador de programa (PC)
Arquitetura MIPS
:: Registrador de instruo (IR)
21
Arquitetura MIPS
:: Memria
00000010010100111000100000100000
2.
3.
Arquitetura Harvard
Harvard
Memria de
instrues
8
CPU
16
Memria de
dados
vs.
Programa armazenado
Memria de
dados e
instrues
8
CPU
24
Instrues Bsicas
25
2.
3.
4.
26
de linguagem de montagem:
Equivalente
ao comando em linguagem C:
a = b + c
27
Cdigo C:
Cdigo MIPS:
A = B + C + D;
E = F - A
#t0 = s1 + s2
#t0 = t0 + s3
#s0 = s4 t0
29
Um
Formato
30
Instrues MIPS
:: Armazenamento na memria
Instrues MIPS
:: Armazenamento na memria
32
Instrues MIPS
:: Armazenamento na memria
Localizao da
palavra
33
Instrues MIPS
:: Armazenamento na memria
61
51
CE
94
0F44
00
00
00
00
2) Little Endian:
0F40
94
CE
51
61
0F44
00
00
00
00
34
Instrues MIPS
:: Armazenamento na memria
Big Endian:
IBM
Little Endian:
Intel
Instrues MIPS
:: Armazenamento na memria
Big-Endian
vs.
Little-Endian
Instrues MIPS
Transferncia de Dados
Lgicas
Controle
Suporte a procedimentos
37
Instrues MIPS
:: Instrues de transferncia de dados
dados
endereo
dados
0 90166000
1 ff666e30
2
...
3
00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch
90166000
ff666e30
00000000
00000000
00000000
00000000
00000000
00000000
...
...
n. registrador
31 0000000b
fffffffch 0000000b
Banco de
Registradores
Memria
38
Instrues MIPS
:: Instrues de transferncia de dados
Copiar dados de para
Instruo
Memria Registrador
Registrador Memria
Formato:
lw $t0,8($s3)
instruo
registrador de
destino
registrador base,
que armazena o
endereo base
offset (em Bytes)
39
Instrues MIPS
:: Instrues de transferncia de dados
Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3
30 0000 012f
31 0000 000b
Memria
lw $30,4($2)
endereo
dados
00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch
9016
ff66
0000
0000
0000
0000
0000
0000
...
6000
6e30
0000
0000
012f
0000
0000
0000
...
Instrues MIPS
:: Instrues de transferncia de dados
Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3
30 0000 012f
31 0000 000b
Memria
lw $30,4($2)
endereo
dados
00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch
9016
ff66
0000
0000
0000
0000
0000
0000
...
6000
6e30
0000
0000
012f
0000
0000
0000
...
Instrues MIPS
:: Instrues de transferncia de dados
Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3
30 0000 012f
31 0000 000b
Memria
sw $30,8($2)
endereo
dados
00000000h
00000004h
00000008h
0000000ch
00000010h
00000014h
00000018h
0000001ch
9016
ff66
0000
0000
0000
0000
0000
0000
...
6000
6e30
0000
0000
012f
012f
0000
0000
...
Instrues MIPS
:: Instrues de transferncia de dados
Exemplo 1
Suponha
Qual
?
lw $t0, 32($s3)
add $t0, $s2, $t0
sw $t0, 48($s3)
#
$t0 A[8]
#
$t0 $s2 + A[8]
# A[12] h + A[8]
43
Instrues MIPS
:: Instrues de transferncia de dados
Exemplo 2
Suponha
Qual
$t0,
$t1,
$t0,
$t1,
40($s4)
44($s4)
44($s4)
40($s4)
#
$t0
#
$t1
# B[11]
# B[10]
B[10]
B[11]
B[10] ($t0)
B[11] ($t1)
44
Instrues MIPS
:: Instrues de transferncia de dados
Banco de registradores
n.
dados
registrador
0 9016 6000
1 ff66 6e30
2 0000 000c
...
3
dec
hex
0401 0000
30 0000
31 0000 000b
45
Representando instrues no
computador
Representando instrues no
computador
47
Representando instrues no
computador
48
Representando instrues no
computador
49
Representando instrues no
computador
Exemplos
add $t0, $s1, $s2
op
6 bits
Instruo
(decimal):
Instruo
(binrio):
rs
rt
rd
shamt
funct
6 bits
add
$s1
$s2
$t0
--
add
0
add
17
$s1
18
$s2
8
$t0
0
--
(20)h
add
100000
50
Representando instrues no
computador
Exemplos
lw $t0, 32($s2)
op
6 bits
Instruo
(decimal):
Instruo
(binrio):
rs
rt
5 bits 5 bits
lw
$s2
$t0
(23)h
18
lw
$s2
$t0
immediate
16 bits
offset
32
offset
0000000000100000
51
Representando instrues no
computador
Exemplos
sw $t0, 32($s2)
Instruo
(decimal):
Instruo
(binrio):
op
rs
rt
6 bits
5 bits
sw
$s2
$t0
(2B)h
18
sw
$s2
$t0
5 bits
immediate
16 bits
offset
32
offset
0000000000100000
52
Representando instrues no
computador
Exemplos
lui $t0, 1023
Instruo
(decimal):
Instruo
(binrio):
op
rs
rt
6 bits
5 bits
lui
--
$t0
(F)h
lui
--
$t0
5 bits
immediate
16 bits
immediate
1023
immediate
000001111111111
53
Instruo
(decimal):
Instruo
(binrio):
# $s3 $s2 + 4
$s3, $s2, 4
op
8
rs
18
rt
19
addi
$s2
$s3
$s2
$s3
immediate
4
constante
0000000000000100
constante
55
56
Lei de Amdahl
O maior aumento de desempenho possvel introduzindo
melhorias numa determinada caracterstica limitado pela
percentagem em que essa caracterstica utilizada
Tempo de execuo (Tex) aps melhoria =
+ Tex no-afetado
F Tvelho
F
1
=
Tnovo
+ (1 F ) T=
T
+
F
(
)
velho
velho
S
S
Melhoria=
global
1
Tvelho
=
Tnovo F + 1 F
(
)
S
57
Lei de Amdahl
Tex _ novo1
20
=
+ 80 = 85s
4
ganho
=
100
= 1,18
85
Tex _ novo 2
80
= 20 +
= 60s
2
100
ganho
= = 1,67
60
58
Lei de Amdahl
addi
$s1, $s1, 4
10 + 1 9
10
S
Tlw,add ,velho
>
= 5
Taddi
S >9
Constantes grandes
Instruo
60
Constantes grandes
0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
c
61
Arquitetura MIPS
Via
de dados
Banco
de Registradores
....
Instrues Bsicas
Armazenamento na memria
Representao de instrues
62
Questes
Converta o cdigo em C seguinte para o cdigo assembly usando o
conjunto de instrues MIPS.
// Suponha que os valores das variveis x, y e z estejam armazenados em $s2, $s3
// e $s4 e que o endereo base da matriz B esteja armazenada em $s6
main() {
int x, y, z;
int B[20];
B[0] = x;
sw $s2, 0($s6)
lw $t0, 8($s6)
lw $t1, 12($s6)
add $s3,$t0,$t1
// B[0] = x
// t0 = B[2]
// t1 = B[3]
// y = t0+t1
y = B[2] + B[3];
}
63
Questes
Converta o cdigo assembly para o cdigo de mquina usando estas tabelas
Nome
$zero
$v0$v1
$a0$a3
$t0$t7
$s0$s7
$t8$t9
Nmero
2-3
4-7
8 - 15
16 - 23
24 - 25
Nome
Sintaxe
Funo
Adio
add $s1, $2, $3
Carrega
lw $t,C($s)
word
Armazena
sw $t,C($s)
word
$1 = $2 + $3 (signed)
Formato / Opcode /
funct
R
0
20hex
$t = Memria[$s + C]
23hex
Memria[$s + C] = $t
2Bhex
sw $s2, 0($s6)
lw $t0, 8($s6)
lw $t1, 12($s6)
add $s2,$t0,$t1
64