Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 4 - Reviso
Prof. Frank Sill Torres DELT Escola de Engenharia UFMG
Adaptado a partir dos Slides de Organizao de Computadores 2006/02 do professor Leandro Galvo DCC/UFAM - galvao@dcc.ufam.edu.br pelo Prof. Ricardo de Oliveira Duarte
$4 $5 $6 $7
Procedimento
$2 $3
$v0 $v1
jr
$ra
Pilha
Texto Dados estticos Dados dinmicos
Pilha
5
lb sb lh sh ld sd
8
Pseudo-instrues
So instrues fornecidas por um montador mas no implementadas pelo hardware MIPS O montador as aceita como instrues comuns, mas as traduzem para instrues equivalentes em linguagem de mquina Facilitam o trabalho do programador por oferecer um conjunto mais rico de instrues que aquele implementado em hardware, sem complicar este
9
10
10
Representao de nmeros Notao de ponto fixo (inteiros) Notao de ponto flutuante (real)
11
Representao de nmero de ponto fixo Temos somente os algarismos 0 e 1 para representar todos os nmeros inteiros Inteiros positivos so transformados em binrio:
41 = 0010 1001 1 = 0000 0001 64 = 0100 0000
12
Representao de nmero de ponto fixo Essa representao de nmeros inteiros em binrio direta e no se preocupa com sinal, nem com formatao dos bits
13
Representao de nmero de ponto fixo Como representar inteiros negativos? Opo natural:
Alocar um bit para guardar o sinal do nmero Opo conhecida como magnitude de sinal
14
Exemplos:
+18 = 0001 0010 -18 = 1001 0010
Problemas
Duas representaes de zero (+0 e -0) Deve-se tomar cuidado com o bit de sinal nas operaes aritmticas
15
Mais Exemplos:
+2 +1 +0 -1 -2 = = = = = 0000 0000 0000 1111 1111 0010 0001 0000 1111 1110
16
17
0000 0
19
maxint
minint
20
21
22
bin
23
Sem sinal
Set on less than unsigned (sltu) Set on less than immediate unsigned (sltiu)
slt
Subtrao:
Nega-se o subtraendo e soma-se um (complemento de 2) Soma-se o resultado anterior com o diminuendo
27
28
O endereo da instruo que gerou overflow salvo em um registrador especial: EPC (Exception Program Counter)
29
30
Subtrao:
Quando os sinais dos operando so diferentes, pode ocorrer overflow
31
Operaes com ponto fixo :: Overflow O projetista de computador precisa oferecer uma maneira de:
Reconhecer overflow em alguns casos Ignorar overflow em outros casos (endereamento de memria, por exemplo)
32
sub
addu addiu
(multiplicando) (multiplicador)
(produto)
35
36
Nmeros negativos
converta e multiplique
37
38
Incio
Mdr0 = 1
1. Mdr0 ?
Mdr0 = 0
Mnd Mdr P
repet 32 Fim
< 32
39
40
Largura s 32 bits!
ALU 32 bits
Produto 64 bits
Teste de controle
41
Incio
Mdr0 = 1
1. Mdr0 ?
Mdr0 = 0
Mnd Mdr P
repet 32 Fim
< 32
42
Operaes com ponto fixo :: Multiplicao no MIPS Produto (64 bits) colocado em um par de registradores de 32 bits:
Hi armazena a parte mais significativa Lo armazena a parte menos significativa
44
Operaes com ponto fixo :: Multiplicao no MIPS Duas instrues movem o produto dos registradores HI/LO para registradores de propsito geral:
Move from HI
mfhi $s1 # $s1 HI
Move from LO
mflo $t3 # $t3 LO
45
Operaes com ponto fixo :: Multiplicao no MIPS Para mover dados para os registradores HI/LO utilizam-se as seguintes instrues:
Move to HI
mthi $s1 # HI $s1
Move to LO
mtlo $t3 # LO $t3
46
Exemplos:
mul muli $t0, $s1, $s2 $t0, $s1, 123 # t0 $s1 * $s2 # t0 $s1 * 123
47
48
Dividendo
1011 00001101
Divisor Quociente
Resto
49
Quociente
64-bit ALU Deslocar esquerda 32 bits
Resto
64 bits
Escrever
Teste de controle
50
Inicio Resto = Dividendo, n = 0 1) Resto = Resto Divisor, n++ Resto >= 0 Resto < 0
Teste do Resto
3) Divisor >> 1
No n = 33 Sim Pronto
51
1 2 3 4 5
0000 1101 0000 1101 0000 1101 0000 0101 0000 0001
0010 0000 0001 0000 0000 1000 0000 0100 0000 0010
1110 1101 1111 1101 0000 0101 0000 0001 1111 1111
Divisor
Largura s 32 bits!
32 bits
32-bit ALU
Quociente Shift left 32 bits Resto 64 bits Shift left Write Teste de controle
53
54
55
Operaes com ponto fixo :: Diviso no MIPS Resultado da diviso colocado no par de registradores HI/LO:
Hi armazena o resto Lo armazena o quociente
No gera exceo de overflow Deve-se verificar se o divisor zero, caso contrrio o resultado indefinido
56
Exemplo:
div $t0, $s1, $s2 # t0 $s1 / $s2
57
Exemplo:
rem $t0, $s1, $s2 # t0 $s1 % $s2
58
59
Ponto flutuante (Padro IEEE 754) Um nmero real pode ser representado no seguinte formato:
(-1)s m Be
s m B e sinal significando (mantissa) base expoente
60
Ponto flutuante (Padro IEEE 754) :: Sinal O bit mais esquerda guarda o sinal do nmero:
bit = 0 nmero positivo bit = 1 nmero negativo No h notao de complemento a 2
61
Ponto flutuante (Padro IEEE 754) :: Base A base B implcita (binria) e no precisa ser guardada, pois a mesma para todos os nmeros representados
64
Ponto flutuante (Padro IEEE 754) :: Expoente O expoente representado na notao deslocada, ou excesso de N Maior expoente representvel: 2n-1
Representado por: 11...11
67
68
69
1 bit 0 sinal
70
71
Ponto flutuante
Overflow: ocorre quando o expoente muito grande para ser representado no campo expoente Underflow: ocorre quando o expoente muito pequeno (= pequena frao) para ser representado no campo expoente
72
-231
231 - 1
overflow negativo
nmeros representados
underflow negativo
underflow positivo
nmeros representados
overflow positivo
- (2 - 2-23) 2128
- 2-127
2-127
(2 - 2-23) 2128
73
74
0000000000000000000000 frao
0000000000000000000000 frao
1 sinal
11111111 exponente
0000000000000000000000 frao
-
76
77
79
80
Diviso e multiplicao:
So mais simples de serem calculadas
81
X SX 2
EX
Y SY 2
EY EX
X Y SX 2
2
EX
SY 2
SY 2
EY
EY E X
82
X SX 2 EY Y SY 2
EX
X Y S X 2
EX
S X S Y 2
SY 2
EY
E X EY
83
X SX 2 EY Y SY 2
EX
X SX 2 S X E X EY 2 EY Y SY 2 SY
EX
84
Ponto flutuante
Definio Bsicos das operaes
85
Questes
Convertaoseguintenmerodecimalparaonmero binrioempontoflutuante(formatoIEEE754,preciso simples):2,5*212dec Sinal:1 2,5*212dec=1,25*213 dec Exponente:01111111bin +13dec=10000000bin +12dec =10001100 bin Frao:0,25dec =22dec =,01bin
1 bit 1 sinal 8 bits 1000 1100 exponente 23 bits 0100 0000 0000 0000 0000 000 frao
86
Questes
# Suponha que os valores das variveis u, # v, x, e y estejam armazenados em # $s0, $s1, $s2 e $s3
87
Apndice A
89
10 2
n
ou
2 10
n
9 10 3
Exemplo:
5GB 5 10 B 5 2
9
B 5 2 B
30
92
93
K M G T P E Z Y
Prefixos da IEC
Em 1998, a IEC (International Electrotechnical Commission) aprovou novos prefixos especialmente dedicados a potncias de 2 Dessa forma: 5 gigabytes (GB) deveriam significar exatamente 5 109 bytes 5 gibibytes (GiB) deveriam significar exatamente 5 230 bytes
Prefixos da IEC
Prefixo kibi mebi gibi tebi pebi exbi Smbolo Ki Mi Gi Ti Pi Ei
Prefixo de potncia de 10 + bi (binrio)
96
97
Apndice B
Diviso e multiplicao:
So mais simples de serem calculadas
99
Operaes com ponto flutuante Podem produzir uma das seguintes condies:
Overflow de expoente Underflow de expoente Underflow de significando Overflow de significando
100
2
s sinal 1 00000000 expoente fffffffffffffffffffffff frao
101
2-1
s sinal ????! expoente fffffffffffffffffffffff frao
102
exp + 2
00110011100011110000110
11
103
exp - 1
11001110000000000000000
104
X SX 2
EX
Y SY 2
EY EX
X Y SX 2
2
EX
SY 2
SY 2
EY
EY E X
105
106
107
110
Z=XY
111
112
6. Arredondamento
114
115
X SX 2 EY Y SY 2
EX
X Y S X 2
EX
S X S Y 2
SY 2
EY
E X EY
116
117
Normalizao do resultado.
Realizada da mesma forma que na adio. Pode resultar em underflow ou overflow.
Arredondamento.
118
Z=XY
119
X SX 2 EY Y SY 2
EX
X SX 2 S X E X EY 2 EY Y SY 2 SY
EX
120
Normalizao do resultado.
Realizada da mesma forma que na adio. Pode resultar em underflow ou overflow.
Arredondamento.
122
Z=XY
123
124
126
129
preciso simples
preciso dupla
preciso simples
Preciso dupla:
add.d sub.d mul.d div.d
131
133
.float
12.0, 13.0,
134
Para buscar x[i][j], pule i linhas (i*32) e some j sll $t2, $s0, 5 # $t2 = i * 25 addu $t2, $t2, $s1 # $t2 = i * 25 + j Obter endereo em bytes (double ocupa 8 bytes) e carregar x[i][j] sll $t2, $t2, 3 # multiplica por 8 addu $t2, $a0, $t2 # somar ao end. base l.d $f4, 0($t2) # $f4 = x[i][j]
136