Вы находитесь на странице: 1из 81

INFRA-ESTRUTURA DE

HARDWARE
Aritmtica de Computadores

Prof. Filipe Cordeiro: filipe.rolim@gmail.com

Aritmtica Computacional

Os Computadores tm, em geral, 2 unidades


responsveis pela execuo das instrues
aritmticas.
ULA ou ALU = Unidade Lgica e Aritmtica;
Coprocessador Aritmtico, na famlia dos PCs
8087.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica Computacional

ALU

operaes aritmticas com nmeros inteiros


(somas, subtraes, multiplicaes, divises,
potncias etc...

Coprocessador aritmtico

operaes com nmeros representados como


ponto flutuante.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica Computacional

Alguns processadores podem ter vrias ULAs,


pentium pro:
ALU
ALU
BI

DI

BO

LOAD

Escrita

STORE
Ponto
Flutuante

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica de Nmeros Inteiros

Nmeros de preciso finita

nmeros formados com uma quantidade


constantes de dgitos, binrios, decimais etc...

Os computadores so mquinas que


representam os nmeros inerentemente de
preciso finita.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica de Nmeros Inteiros

Soma:

200
+100
300

800
+920
1720

Utilizando o Carry o
resultado correto,
porm no local de
armazenamento do
resultado s cabem 3
dgitos.

200
800

100

920

ALU
300
1 720
Carry
6

Aritmtica de Nmeros Inteiros

Subtrao, multiplicao e diviso:


003
-009
-006

200
x009
1800

003
/ 009
0,33

O programador deve se preocupar se o


resultado pode ou no ser representado como
um nmero dentro da preciso da mquina e
informar ao usurio caso haja algum erro.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica de Nmeros Inteiros

Overflow O resultado grande demais para


a preciso adotada.
Underflow O resultado pequeno demais
para a preciso adotada.
Overflow
200
x009
1800

Underflow
003
/ 009
0,33

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Representao de Nmeros Negativos

Como representar nmeros negativos?


Existem vrias representaes possveis para
os nmeros negativos:
Sinal magnitude
Complemento de 1
Complemento de 2, entre outras...

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Representao de Nmeros Negativos

Sinal magnitude: O bit mais significativo


usado para representar o sinal:

0 positivo; 1 negativo.

Reduz a capacidade de representao de


nmeros em um bit.
0 Mdulo do nmero
1 Mdulo do nmero

00010010 = +18
10010010 = -18

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com Sinal Magnitude

Representao dupla para o zero.


00000000 = 010
10000000 = - 010

Isso dificulta o teste para o zero, que uma


das operaes mais utilizadas:

Jz, je, jne, etc...

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com Sinal Magnitude

Execuo de operaes simples:


Soma conveniente, facilita o projeto, se as
operaes de soma possam ser efetuadas por um
circuito somador simples, da mesma forma que
nmeros positivos:
0001 = + 1
+ 0011 = + 3
0100 = + 4

1001 = - 1
+ 1011 = - 3
0100 = + 4

0011 = + 3
+ 1011 = - 3
1110 = - 6

A execuo da soma s funcionou para ambos os


nmeros positivos.
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com Sinal Magnitude

Para utilizar a representao sinal magnitude


preciso um circuito somador que trate os
sinais e os mdulos separadamente.
Isso complica bastante o projeto da ULA.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Complemento de 1

Para representar nmeros binrios em


complemento de um, basta inverter bit a bit o
nmero inteiro.
0101 = + 5
1010 = - 5
0111 = + 7
1000 = - 7

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com Complemento de 1

Dupla representao para o zero:


0000 = + 010
1111 = - 010
Traz as mesmas dificuldades encontradas com
a representao sinal magnitude.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com Complemento de 1

Soma:
0011 = + 3
+ 0100 = + 4
0111 = + 7

1101 = - 2
+ 1011 = - 4
1000 = - 7
+ 1
1001 = - 6

0011 = + 3
+ 1100 = - 3
1111 = 0

0001 = + 1
+ 1001 = - 6
1010 = - 5

0111 = + 7
+ 1100 = - 3
1 0011 = + 3
+ 1
0100 = 4
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com Complemento de 1

Nas duas primeiras operaes anteriores, o


carry era zero.
Com a representao com complemento de
um necessrio um circuito que some o carry
com o resultado
Logo, no um somador comum.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Complemento de 2

Para representar o nmero em complemento


de 2, inverte-se bit a bit o nmero e adicionase 1.
0101 = 5
1010
+0001
= 1011 = - 5

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Complemento de 2

Com a representao em complemento de 2


no h mais uma representao dupla para o
zero.
0000 = 0
1111 + 1
= 0000 = 0
O carry desprezado.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Decimal

Sinal Magnitude

Complemento de 1

Complemento de 2

0111

0111

0111

0110

0110

0110

0101

0101

0101

0100

0100

0100

0011

0011

0011

0010

0010

0010

0001

0001

0001

0000

0000

0000

-0

1000

1111

0000

-1

1001

1110

1111

-2

1010

1101

1110

-3

1011

1100

1101

-4

1100

1011

1100

-5

1101

1010

1011

-6

1110

1001

1010

-7

1111

1000

1001

-8

------

------

1000

Complemento de 2

Na representao com complemento de 2


ocorre a possibilidade de representao de
um nmero negativo a mais.
Isso ocorre porque no h a representao
dupla para o zero.
Em todos os tipos de representao de
nmeros binrios apresentados, temos que o
bit mais significativo usado para indicar o
sinal.
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica com Complemento de 2

Com a representao em complemento de 2


as operaes de soma e subtrao podem ser
feitas com o mesmo circuito, um somador
completo (full adder).

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica com
Complemento de 2

Soma:
0100 = + 4
+ 0010 = + 2
0110 = + 6

1100 = - 4
+ 0100 = + 4
0000 = 0
1

1110 = - 2
+ 1101 = - 3
1011 = - 5
0001 = + 1
+ 1001 = - 6
1010 = - 5

1
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica com Complemento de 2

O carry simplesmente ignorado.


Porm h um problema, nem tudo perfeito ...

0110 = + 6
+ 0010 = + 2
1000 = - 8

Como detectar
Overflow ?

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Overflow

No exemplo anterior - 8 um nmero capaz de


ser representado.
Precisamos estabelecer uma regra para detectar
o overflow.

0110 = + 6
+ 0010 = + 2
1000 = - 8

1001 = - 7
+ 1010 = - 6
0011 = + 3

Um teste adicional necessrio para detectar a


mudana de sinal quando ela no devia acontecer.
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica com Complemento de 2

Subtrao:
s aplicar a idia A - B = A + (-B).

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Aritmtica com Complemento de 2

O complementador transforma um nmero


positivo em um nmero negativo em
complemento de 2;
Essa funo pode ser feita por um circuito
especfico, ou pela ALU em etapas diferentes:
Inverte bit a bit
Soma 1
Soma os dois nmeros.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Exerccio

Faa as operaes aritmticas abaixo


utilizando nmeros binrios de 8 bits e
complemento de 2:
9+4
9 4
-9 + 4
-9 - 4

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Circuito Meio Somador


X
0
0
1
1

Y
0
1
0
1

S
0
1
1
0

C
0
0
0
1

S = XY + XY = XY
C=X.Y
X

X
Y

HA

S
C

S
C

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Somador Completo
X
0
0
0
0
1
1
1
1

Y Cin
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1

S Cout
0
0
0
1
0
1
1
0
0
1
1
0
1
0
1
1

X
Y
Cin

FA

S
Cout

S = XYCin + XYCin + XYCin + XYCin

Cout= XYCin + XYCin + XYCin + XYCin

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Multiplicao em complemento de dois

A multiplicao pode ser feita de vrias formas


diferentes:
Soma de vrias parcelas
Somas de parcelas intercaladas com
deslocamentos de bits esquerda
Ou somando as parcelas do esquema de
multiplicao tradicional:

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Multiplicao em complemento de dois

Somas de vrias parcelas:

Somas de parcelas intercaladas com


deslocamentos de bits esquerda

10 x 5 =
= 10 + 10 + 10 + 10 + 10 = 50

10 x 5 =
= 10 x 4 + 10 = 50

Multiplicar pela base do sistema de numerao


(2).
Desloca o 10 dois bits para a esquerda e depois
soma com o 10.
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Multiplicao em complemento de dois

Soma das parcelas do esquema de


multiplicao tradicional
1011 = 11 (Multiplicando)
x 1101 = 13 (Multiplicador)
1011
0000
produtos
1011
parciais
+ 1011
10001111 = 143
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Multiplicao sem sinal

O processo consiste em deslocamentos e


somas do multiplicando com ele mesmo
deslocado direita.
1011 = 11 (Multiplicando)
x 1101 = 13 (Multiplicador)
Multiplicando
1011
0000
produtos
1011
parciais
+ 1011
10001111 = 143
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Multiplicao sem sinal - Hardware


Multiplicando

Registrador

Adicionador 4-Bit

Add

Controle Lgico do
shift - Adicionador

Shift Right
C

Registrador de desl.

Registrador de desl.

Multiplicador

Resultado cabe num registrador com o dobro do nmero de bits

Multiplicao sem sinal


Multiplicando
1 0 1 1

Adicionador 4-Bit

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 0 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

1011
+0000

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 0 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

1011
+0000

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 0 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 0 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 0
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1
Primeiro ciclo completo

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 0
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 0
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 0
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1
Segundo ciclo completo

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

1011
+0010

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

1011
+0010

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1
Terceiro ciclo completo

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

1 1 1 1
Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

1011
+0110

Controle Lgico do
shift - Adicionador

Shift Right
1

Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
1

Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

Multiplicador

Multiplicao sem sinal


Multiplicando
1 0 1 1
Quarto ciclo completo

Add

Controle Lgico do
shift - Adicionador

Shift Right
0

Resultado

Multiplicador

Problemas com o algoritmo??


1011 = 11
x 1101 = 13
1011
0000
1011
+ 1011
10001111 = 143

Ou

1011 = - 5
x 1101 = - 3
1011
0000
1011
+ 1011
10001111 = - 113

Esse algoritmo no funciona com nmeros em


complemento de 2. (Nem tudo perfeito!)
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com o algoritmo??


1001 = 9
x 0011 = 3
00001001
00010010
00000000
+00000000
00011011 = 27

Ou

1001 = - 7
x 0011 = 3
11111001
11110010
00000000
+00000000
11101011 = - 21

Precisamos completar os bits esquerda.


Um nmero positivo ou negativo de 4 bits tem que
continuar, respectivamente, positivo ou negativo com 8
bits.
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com o algoritmo??


58

1001 = - 7
x 0011 = 3
11111001
11110010
00000000
+00000000
11101011 = - 21

1001 = - 7
x 1101 = - 3
11111001
00000000
11100100
+11001000
1010100101 = - 219

A tcnica no funciona quando o multiplicador


negativo.
Infra Estrutura de Hardware - prof. Filipe Cordeiro

Problemas com o algoritmo??

Com uma pequena modificao no Hardware


para multiplicaes sem sinal possvel se
executar multiplicaes quando os nmeros
esto em complemento de 2.
Essa tcnica conhecida como algoritmo de
Booth.
Nem tudo perfeito mas sempre se d um
jeito.

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Mult. em comp. de 2 Hardware


Multiplicando

Registrador

Adicionador
Subtrador 4-Bit

Add

Controle Lgico do
shift Add, Sub

Sub

Shift Right
Registrador de desl.

Registrador de desl.

Q-1

Q Multiplicador

Resultado Infra
cabe
num de
registrador
com
o Cordeiro
dobro do nmero de bits
Estrutura
Hardware - prof.
Filipe

Algoritmo de Booth

Suponha que queremos multiplicar um


multiplicando M por 00011110;
M x (00011110) = M x (24 + 23 + 22 + 21);
= M x (30);
Utilizando a relao:
2n + 2n-1 + 2n-2 +...+ 2n-k = 2n+1 - 2n-k
M x (24 + 23 + 22 + 21) = M x (25 - 21) = M x (30)

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Algoritmo de Booth

Cada bloco de 1s tratado como uma coisa s;


Cada 1 isolado, considerado como um bloco
de 1s de tamanho 1;
M x (01111010) = M x (26 + 25 + 24 + 23 + 21)
= M x (27 - 23 + 22 - 21).

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Algoritmo de Booth

Para nmeros em Complemento a 2;


X = {1xn-2xn-3...x0};
X = -1.2n-1 + 2n-2.xn-2+...+20.x0;
M x (11111010) = M x (-27 + 26 + 25 + 24 + 23 + 21 );
= M x (-23 + 21 )
M x (11111010) = M x (-23 + 22 - 21 )

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Algoritmo de Booth

Precisamos encontrar os blocos de 1s;


Lembrando que fazemos deslocamentos
direita;
Se os bits menos significativos forem 10,
temos o primeiro 1;
Se os bits menos significativos forem 01,
temos o ltimo 1;

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Algoritmo de Booth
Start
A 0, Q-1o
M Multiplicando
Q Multiplicador
Contadorn
= 10

= 01
Q0,Q-1

AA - M

= 11
= 00

Deslocamento Aritmtico
direita
Contadorcontador -1

AA + M

Contador = 0 ?

End

Mult. em comp. de 2 Hardware


Multiplicando

Registrador

Adicionador
Subtrador 4-Bit

O shift agora, deve manter o


sinal. O bit mais significativo
conservado.
Add

Controle Lgico do
shift Add, Sub

Sub

Shift Right
Registrador de desl.

Registrador de desl.

Q-1

Q
Identificao de
blocos de 1

Multiplicao: Algoritmo de Booth


4

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador
Controle Lgico

Shift Right

0 0 1 1
Multiplicador

Multiplicao: Algoritmo de Booth


4

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador
Controle Lgico

Shift Right

0 0 1 1
Multiplicador

Multiplicao: Algoritmo de Booth


4

Multiplicando
1 0 0 1

Sub 4-Bit

Add
Sub

Controle Lgico

Shift Right

0 0 1 1
Multiplicador

Multiplicao: Algoritmo de Booth


4

Multiplicando
1 0 0 1

Sub 4-Bit

Add
Sub

shift
Adicionador
Controle Lgico

Shift Right

0 0 1 1
Multiplicador

Multiplicao: Algoritmo de Booth


34

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador

Shift Right

1 0 0 1
Multiplicador

Multiplicao: Algoritmo de Booth


3

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador
Controle Lgico

Shift Right

1 0 0 1
Multiplicador

Multiplicao: Algoritmo de Booth


24

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador

Shift Right

1 1 0 0
Multiplicador

Multiplicao: Algoritmo de Booth


2

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador
Controle Lgico

Shift Right

1 1 0 0
Multiplicador

Multiplicao: Algoritmo de Booth


2

Multiplicando
1 0 0 1

Add 4-Bit

Add
Sub

Controle Lgico

Shift Right

1 1 0 0
Multiplicador

Multiplicao: Algoritmo de Booth


2

Multiplicando
1 0 0 1

Add 4-Bit

Add
Sub

shift
Adicionador
Controle Lgico

Shift Right

1 1 0 0
Multiplicador

Multiplicao: Algoritmo de Booth


14

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador

Shift Right

0 1 1 0
Multiplicador

Multiplicao: Algoritmo de Booth


1

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador
Controle Lgico

Shift Right

0 1 1 0
Multiplicador

Multiplicao: Algoritmo de Booth


04

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador

Shift Right

1 0 1 1
Multiplicador

Multiplicao: Algoritmo de Booth


FIM

Multiplicando
1 0 0 1

Add

Add 4-Bit
Sub 4-Bit

Sub

shift
Adicionador
Controle Lgico

Shift Right

1 0 1 1
Multiplicador

Exerccio
81

0111
x 0011

Infra Estrutura de Hardware - prof. Filipe Cordeiro

Вам также может понравиться