Aula02

Propaganda
Representando Instruções no
Computador

Humanos aprenderam a pensar na base 10
 Números
podem ser representados em
qualquer base

Números mantidos no hardware como série
de sinais eletrônicos altos e baixos
 Base
2 (alto/baixo, ligado/desligado, V/F, 0/1)
 Números binários, compostos por dígitos
binários (binary digit)
Representando Instruções no
Computador

Instruções também mantidas como série de sinais
eletrônicos altos e baixos
 Podem
ser representados como número
 Na
verdade cada parte da instrução pode ser considerada
como um número individual


Colocação lado a lado desses números forma a instrução
Registradores fazem parte de quase todas as instruções
 Convenção
para mapear nome de registradores em
números

MIPS: registradores $s0 a $s7: registradores 16 a 23

Registradores $t0 a $t7 mapeados nos registradores de 8 a 15
Representando Instruções no
Computador

Como é representada add $t0, $s1, $s2?

Representação binária (formato da instrução):
 Cada
um dos segmentos chamado de campo
 Primeiro
(op: opcode) e último (funct: função) campos
indicam operação de soma
 Segundo
 Quarto
 Quinto
(rs) e terceiro (rt) campos indicam operandos
campo (rd) indica registrador destino
campo (shamt: shift amount) não usado nessa
instrução
Representando Instruções no
Computador

Versão numérica das instruções chamada de
linguagem de máquina
 Sequência
de instruções chamada de código de
máquina


Instruções MIPS: 32 bits
E se instrução precisa de campos maiores que os
mostrados?
 Conflito entre manter todas as instruções com
o mesmo tamanho e o desejo de ter um
formato de instrução único.
Representando Instruções no
Computador

Princípio de projeto 4: um bom projeto
exige bons compromissos
 Compromisso
dos projetistas do MIPS: todas
as instruções com o mesmo tamanho
Tipos diferentes de instruções
 Formato anterior: tipo-R (operações envolvendo
apenas registradores)
 Segundo tipo de instruções: tipo-I (imediato)


Utilizada por instruções imediatas e de transferência de
dados
Ponto Flutuante
 Precisamos
de representação para
números reais
 Utilizaremos na representação números
normalizados em notação científica
Notação
científica normalizada: possui único
dígito à esquerda do ponto decimal (ou ponto
binário, caso a base seja 2)
Ex.: 1,0 x 10-9
Ponto Flutuante
 Ponto
flutuante: aritmética computacional
que representa os números em que o ponto
binário não é fixo
na forma 1,aaaaaa x 2bbbb
Precisamos de compromisso entre tamanho da
fração e do expoente
Representados

Aumento da precisão x aumento do intervalo dos
números que podem ser representados
Ponto Flutuante

Números em ponto flutuante múltiplos do tamanho de
uma palavra
 Precisão
simples (floats em C): uma palavra usada na
representação
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
s
expoente
fração
 Precisão
dupla (doubles em C): duas palavras usadas
na representação
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
s
expoente
fração
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
fração (continuação)
Ponto Flutuante

Representações anteriores chamada de sinal e
magnitude
 Sinal

possui um bit separado do restante do número
Representação em precisão simples
tão pequenos quanto 2 x 10-38 e tão grandes
quanto 2 x 1038
 Overflow ainda pode ocorrer
 Números

Expoente positivo torna-se muito grande para caber no campo
de expoente
 Também

podemos ter underflow
Expoente negativo torna-se muito grande para caber no
campo de expoente
Ponto Flutuante
 Representação
em precisão dupla
tão pequenos quanto 2 x 10-308 e tão
grandes quanto 2 x 10308
 Números
 Formato
 IEEE
 Mais
de ponto flutuante do IEEE
754
bits podem ser colocados na fração
 Números
sempre na forma 1,xxx
 Um implícito
 Bits da fração numerados da esquerda para direita
 Termo significando utilizado
Ponto Flutuante
 Codificação
para números PF
Precisão Simples
Expoente
Fração
0
0
0
não zero
1-254
qualquer coisa
255
0
255
não zero
Objeto Representado
Precisão Dupla
Expoente
Fração
0
0
0
0
não zero
± número desnormalizado
1-2046
qualquer coisa ± númeroponto flutuante
2047
± infinito
2047
não zero
NaN (Not a Number)
Ponto Flutuante
 Comparação
de números seria simplificada
se representação do expoente mais
negativo fosse próxima a 0000....000 e
expoente mais positivo como 1111...111
Ex:
1,0 x 2-1
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
0 1 1 1 1
1 1 1 1 0 0 0
1,0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 2+1
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
0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Ponto Flutuante
 Solução:
uso de notação deslocada
Bias
adicionado ao expoente
No padrão IEEE valor 127 utilizado como bias
para precisão simples e 1023 para precisão
dupla

(-1)s x (1 + fração) x 2 (expoente - bias)
No
exemplo anterior:
-1 + 127 = 126 => 0111 1110
 +1 + 127 = 128 => 1000 0000

Ponto Flutuante
 Exemplo:
Representar -0,75 em precisão
simples e dupla
-0,7510 = 0,112
Na notação científica normalizada: -1,1 x 2-1
Expoente: -1+127 = 126 => 01111110
Número negativo: sinal = 1

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
1 0 1 1 1 1 1 1 0 1 0 0
0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Ponto Flutuante
 Exemplo
(cont.)
Na
precisão dupla, expoente igual a -1+1023 =
1022 => 01111111110
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
1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
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
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Ponto Flutuante
 Que
número decimal é representado por
este float de precisão simples?
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
0 1 0 0 0 0 0 0 1 0 1 0
Bit
0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
de sinal: 0 (número positivo)
(-1)0 x (1 + 0,01) x 2(129 – 127) = 1 x 1,25 x 4 =
5,0
Ponto Flutuante
Ponto Flutuante
 Números
em PF normalmente são
aproximações para um número
Arrendondamento
pode ser crítico
 IEEE
754 define dois bits extras para
arredondamento durante operações
Guarda
e arredondamento
Ponto Flutuante
Somar 2,56 x 100 a 2,34 x 102,
supondo 3 dígitos significativos
 Exemplo:
Guarda
e arredondamento garantem 5 bits
durante operação

2,3400 + 0,0256 = 2,3656 = 2,37
Sem

guarda e arredondamento teríamos:
2,34 + 0,02 = 2,36
Download