08 - aritmética computacional

Upload: macielaraujo

Post on 11-Oct-2015

27 views

Category:

Documents


1 download

TRANSCRIPT

  • Arquitetura e Organizao de Computadores

    Aritmtica Computacional

    Prof. Slvio Fernandes

    UNIVERSIDADE FEDERAL RURAL DO SEMI-RIDO DEPARTAMENTO DE CINCIAS EXATAS E NATURAIS

    CURSO DE CINCIA DA COMPUTAO

  • Unidade Lgica e Aritmtica (ULA)

    Do ingls ALU Faz os clculos. Tudo o mais no computador existe para atender

    a essa unidade. Trata de inteiros. Pode tratar de nmeros de ponto flutuante

    (reais). Pode ser FPU separada (coprocessador

    matemtico). Pode estar em chip de FPU separado (486DX +).

    2

  • Unidade Lgica e Aritmtica (ALU)

    3

  • Representao de Nmeros Inteiros

    No sistema de numerao binria, possvel representar nmeros inteiros negativos usando:

    Dgitos 0 e 1

    Sinal de subtrao

    Vrgula

    Exemplo:

    -1101,01012 = -13,312510

    4

  • Representao de Nmeros Inteiros

    Para armazenar e processar nmeros inteiros

    negativos no computador, so usados apenas

    os dgitos 0 e 1

    Se uma sequencia de n bits de dgitos binrios

    na-1 na-2 ... a1 a0 for um inteiro sem sinal A, seu

    valor

    5

    1

    0

    2n

    i

    i

    iaA

  • Representao de Nmeros Inteiros

    Como representar nmeros negativos?

    Representao Sinal-Magnitude

    Representao em Complemento de Dois

    6

  • Representao Sinal-Magnitude

    Em uma palavra de n bits

    O bit mais esquerda representa o sinal do nmero inteiro

    Os n-1 bits mais direita representam a magnitude do nmero inteiro

    Exemplo:

    +18 = 00010010

    -18 = 10010010 7

  • Representao Sinal-Magnitude

    H duas representaes para o zero

    +0 = 00000000

    -0 = 10000000

    mais difcil testar se um valor igual a zero do que no caso em que h apenas uma representao para o zero

    Por isso, essa representao raramente usada na implementao da parte inteira de uma ULA

    8

  • 9

    Representao em Complemento de Dois

  • Para nmeros inteiros positivos, an-1 = 0

    O nmero 0 tratado como um nmero inteiro positivo

    Usada para representar nmeros na faixa -2n 2n-1

    Usada quase universalmente para representar nmeros inteiros dentro do P

    10

    Representao em Complemento de Dois

    2

    0

    1

    1 22n

    i

    i

    i

    n

    n aaA

  • Decimal S-M C-2

    +8 - -

    +7 0111 0111

    +6 0110 0110

    +5 0101 0101

    +4 0100 0100

    +3 0011 0011

    +2 0010 0010

    +1 0001 0001

    +0 0000 0000

    Decimal S-M C-2

    -0 1000 -

    -1 1001 1111

    -2 1010 1110

    -3 1011 1101

    -4 1100 1100

    -5 1101 1011

    -6 1110 1010

    -7 1111 1001

    -8 - 1000

    Representao em Complemento de Dois

  • Converso complemento de 2 decimal

    Converso decimal complemento de 2

    -128 +2 +1 = -125

    -120 =

    12

    Representao em Complemento de Dois

    -128 64 32 16 8 4 2 1

    1 0 0 0 0 0 1 1

    -128 64 32 16 8 4 2 1

    1 0 0 0 1 0 0 0

    -128 +8

  • s vezes desejvel converter a representao de um nmero inteiro com n bits para sua representao com m bits, onde m > n

    Na representao sinal-magnitude, isso pode ser feito facilmente

    Basta mover o bit de sinal para a posio mais esquerda e preencher as demais posies novas com 0

    13

    Representao em Complemento de Dois

  • Representao em Sinal-Magnitude

    Exemplos:

    +18 = 00010010 (s-m, 8 bits)

    +18 = 0000000000010010 (s-m, 16 bits)

    -18 = 10010010 (s-m, 8 bits)

    -18 = 1000000000010010 (s-m, 16 bits)

    Esse procedimento no funciona para nmeros inteiros negativos representados em complemento de dois

    14

  • Exemplos:

    +18 = 00010010 (c-2, 8 bits)

    +18 = 0000000000010010 (c-2, 16 bits)

    -18 = 11101110 (c-2, 8 bits)

    -32.658 = 1000000001101110 (c-2, 16 bits)

    A regra mover o bit de sinal para a posio mais esquerda e preencher as demais com valor igual ao bit de sinal

    15

    Representao em Complemento de Dois

  • Exemplos:

    +18 = 00010010 (c-2, 8 bits)

    +18 = 0000000000010010 (c-2, 16 bits)

    -18 = 11101110 (c-2, 8 bits)

    -18 = 1111111111101110 (c-2, 16 bits)

    16

    Representao em Complemento de Dois

  • Negao

    Para representao s-m, basta inverter o valor do bit de sinal

    Para a representao em complemento de dois:

    Toma-se o complemento booleano de cada bit do nmero

    Adiciona-se 1 ao resultado

    17

    Representao em Complemento de Dois

  • Exemplos:

    +18 = 00010010 (c-2)

    Complemento booleano = 11101101

    +1

    11101110 = -18

    -18 = 11101110 (c-2)

    Complemento booleano = 00010001

    +1

    00010010 = +18

    18

    Representao em Complemento de Dois

  • Casos especiais de negao

    0 = 00000000 (c-2)

    Complemento booleano = 11111111

    +1

    100000000 = 0

    Bit vai um (carry in) - ignorado

    19

    Representao em Complemento de Dois

  • Casos especiais de negao (cont.)

    -128 = 10000000 (c-2)

    Complemento booleano = 01111111

    +1

    10000000 = -128

    Anomalia se deve ao fato que uma palavra de n bits pode conter 2n representaes distintas

    2n um nmero par

    Sendo representados nmeros positivos, negativos e o 0, a qtde de nmeros positivos e negativos so diferentes

    20

    Representao em Complemento de Dois

  • Adio

    1001 +0101 1110

    (a) (-7) + (+5) = -2

    1100 +0100 10000

    (b) (-4) + (+4) = 0

    0011 +0100 0111

    (c) (+3) + (+4) = +7

    1100 +1111 11011

    (d) (-4) + (-1) = -5

    0101 +0100 1001

    (e) (+5) + (+4) = +9 (overflow)

    1001 +1010 10011

    (f) (-7) + (-6) = -13 (overflow) 21

    Representao em Complemento de Dois

  • Subtrao

    0010 +1001 1011

    (a) M = 2 = 0010 S = 7 = 0111

    -S = -7 = 1001 (+2) + (-7) = -5

    1011 +1110 11001

    (c) M = -5 = 1011 S = 2 = 0010

    -S = -2 = 1110 (-5) + (-2) = -7

    0111 +0111 1110

    (e) M = 7 S = -7 = 1001 -S = 7 = 0111

    (+7) + (+7) = 14 (overflow)

    0101 +1110 10011

    (b) M = 5 = 0101 S = 2 = 0010

    -S = -2 = 1110 (+5) + (-2) = +3

    0101 +0010 0111

    (d) M = 5 = 0101 S = -2 = 1110 -S = 2 = 0010 (+5) + (+2) = +7

    1010 +1100 10110

    (f) M = -6 = 1010 S = 4 = 0100

    -S = -4 = 1100 (-6) + (-4) = -10 (overflow)

    22

    Representao em Complemento de Dois

  • 23

    Representao em Complemento de Dois

  • Representao em Complemento de Dois

    Hardware para adio e subtrao

    24

  • Representao em Complemento de Dois

    Multiplicao

    Complexa.

    Calcule produto parcial para cada dgito.

    Cuidado com o valor da casa (coluna).

    Some produtos parciais.

    25

  • Representao em Complemento de Dois

    Exemplo de Multiplicao

    Nota: precisa de resultado com tamanho duplo.

    26

  • Representao em Complemento de Dois

    Hardware para Multiplicao

    27

  • Representao em Complemento de Dois

    Multiplicao de 1101 e 1011

    28

  • Representao em Complemento de Dois

    Fluxograma para Multiplicao

    29

  • Representao em Complemento de Dois

    Multiplicando nmero negativos

    Isso no funciona!

    Soluo 1:

    Converta para positivo, se for preciso.

    Multiplique como antes.

    Se sinais diferentes, negue a resposta.

    Soluo 2:

    Algoritmo de Booth.

    30

  • Representao em Complemento de Dois

    Fluxograma do algoritmo de Booth

    31

  • Representao em Complemento de Dois

    Exemplo do algoritmo de Booth (7 x 3)

    32 Nota: usado deslocamento aritmtico para preservar o sinal

  • Representao em Complemento de Dois

    Exemplo do algoritmo de Booth para negativos

    33

  • Representao em Complemento de Dois

    Diviso

    Mais complexa que a multiplicao.

    Nmeros negativos so realmente maus!

    Baseada na diviso longa.

    34

  • Representao em Complemento de Dois

    Diviso de inteiros sem sinal

    35

    001111

    1011

    00001101

    10010011

    1011

    001110

    1011

    1011

    100

    Quociente

    Dividendo

    Resto

    Restos

    Parciais

    Divisor

  • Representao em Complemento de Dois

    Diviso de inteiros sem sinal

    36

  • Representao de Ponto Flutuante

    Usada para representar nmeros muito grandes ou muito pequenos

    Para nmeros decimais, usa-se a notao cientfica

    976.000.000.000.000 = 9,76 x 1014

    0,0000000000000976 = 9,76 x 10-14

    Para nmeros binrios, temos:

    EBM

    Sinal Mantissa

    Expoente

    37

  • Representao de Ponto Flutuante

    Um mesmo nmero pode ser vrias representaes em ponto flutuante

    24 = 0,110 x 25 = 110 x 22 = 0,0110 x 26

    Para simplificar as operaes, requerido que os nmeros sejam normalizados

    Enbbbb

    2...1,1 210

    implcito

    Dgitos binrios

    38

  • Representao de Ponto Flutuante

    Expoente polarizado

    Significando

    23 bits 8 bits

    32 bits Sinal da

    mantissa o sinal armazenado no primeiro bit da palavra o primeiro bit da significando verdadeira sempre 1

    - por isso no precisa ser armazenado o valor 127 adicionado ao expoente verdadeiro, sendo o resultado denominado Expoente Polarizado

    Exemplos: 856.064 = 0,11010001 x 2

    10100 = 0 10010011 10100010000000000000000 -856.064 = -0,11010001 x 210100 = 1 10010011 10100010000000000000000 209 x 2-28 = 0,11010001 x 2-10100 = 0 01101011 10100010000000000000000 -209 x 2-28 = -0,11010001 x 2-10100 = 1 01101011 10100010000000000000000

    39

  • Representao de Ponto Flutuante

    Intervalos de representao para 32 bits:

    Nmeros negativos:

    [-(1-2-24) x 2128 , -0,5 x 2-127] -(1-2-24) x 2128 = 1 11111111 11111111111111111111111

    -0,5 x 2-127 = 1 00000000 00000000000000000000000

    Nmeros positivos:

    [0,5 x 2-127 , (1-2-24) x 2128] 0,5 x 2-127 = 0 00000000 00000000000000000000000

    (1-2-24) x 2128 = 0 11111111 11111111111111111111111

    40

  • Representao de Ponto Flutuante

    Nmeros positivos representveis

    Nmeros negativos representveis

    -(1-2-24) x 2128 -0,5 x 2-127 -0,5 x 2-127 -(1-2-24) x 2128 0

    Overflow em Nmeros Negativos

    Overflow em Nmeros Positivos

    Underflow em Nmeros Negativos

    Underflow em Nmeros Positivos

    Nmeros inteiros representveis

    0 -231 231-1

    Overflow em Nmeros Negativos

    Overflow em Nmeros Positivos

    41

  • Representao de Ponto Flutuante

    O underflow menos crtico que o overflow, pois o valor pode ser aproximado para 0

    No h, princpio, representao para 0

    Na verdade, h um padro de bits especial para representao do 0

    O nmero mximo de valores distintos representveis continua sendo 232

    A representao em ponto flutuante apenas divide esses valores em duas faixas

    42

  • Representao de Ponto Flutuante

    H uma relao estreita entre os tamanhos dos campos reservados ao significando e ao expoente

    Para um tamanho fixo de palavra:

    Se o nmero de bits reservados ao significando aumentar, aumenta-se a preciso, mas diminui-se a faixa de valores representveis

    Se o nmero de bits reservados ao expoente aumentar, aumenta-se a faixa de valores representveis, mas diminui-se a preciso

    43

  • Representao de Ponto Flutuante

    Padro IEEE 754

    44

    Expoente polarizado

    Significando

    52 bits 11 bits

    64 bits Sinal do

    significando

    Expoente polarizado

    Significando

    23 bits 8 bits

    32 bits Sinal do

    significando

    Formato Simples

    Formato Duplo

  • Representao de Ponto Flutuante

    Sinal

    Expoente Polarizado

    Mantissa Valor Formato

    Simples

    Formato

    Duplo

    0 0 0 0 0

    1 0 0 0 -0

    0 255 2047 0

    1 255 2047 0 -

    0 ou 1 255 2047 0 NaN

    45

    Valores especiais definidos no IEEE 754

  • Representao de Ponto Flutuante

    Parmetros do formato IEEE 754

    46

    Parmetro Formato Simples Formato Duplo

    Tamanho da palavra 32 64

    Tamanho do expoente 8 11

    Polarizao do expoente 127 1023

    Expoente mximo 127 1023

    Expoente mnimo -126 -1022

    Tamanho da mantissa 23 52

    Nmero de expoentes 254 2046

    Nmero de mantissas 223 252

    Nmero de valores 1,98 x 231 1,99 x 263

  • Referncias

    STALLINGS, W. Arquitetura e organizao de computadores: projeto para o desempenho. 8. ed. Prentice Hall, 2009.

    DELGADO, J.; RIBEIRO, C. Arquitetura de Computadores. 2 ed. LTC, 2009.

    PATTERSON, D. A. ; HENNESSY, J.L. Organizao e projeto de computadores a interface hardware software. 3. ed. Editora Campus, 2005.

    47