220 likes | 338 Vues
Organização e Arquitetura de Computadores I Aritmética para Computadores Parte I. Ivan Saraiva Silva. A representação em complemento de dois é mais adequada Única representação para o zero Realização de subtrações de forma mais simples. Representação Binária. Representação Binária.
E N D
Organização e Arquitetura de Computadores IAritmética para ComputadoresParte I Ivan Saraiva Silva
A representação em complemento de dois é mais adequada Única representação para o zero Realização de subtrações de forma mais simples Representação Binária
Carry = “vai-um” nas operações de soma 1 1 0 1 + 1 0 0 0 1 0 1 0 1 • Overflow = estouro no limite de representação p.ex + 50 não pode ser representado em 6 bits • Carry ≠ Overflow pode ser igual eventualmente em determinadas operações Carry e Overflow
Carry e Overflow Soma de dois números positivos + 5 + 24 0 0 0 1 0 1 0 1 1 0 0 0 + 10 + 10 0 0 1 0 1 0 0 0 1 0 1 0 + 15 0 0 1 1 1 1 + 34 1 0 0 0 1 0 - 30 nenhum Carry sem Overflow 1 Carry Overflow
Carry e Overflow Soma de números com sinais opostos – 5 – 10 1 1 1 0 1 1 1 1 0 1 1 0 + 10 + 5 0 0 1 0 1 0 0 0 0 1 0 1 + 5 0 0 0 1 0 1 – 5 1 1 1 0 1 1 2 Carry sem Overflow nenhum Carry sem Overflow
Carry e Overflow Soma de dois números negativos – 5 – 10 1 1 1 0 1 1 1 1 0 1 1 0 – 5 – 24 1 1 1 0 1 1 1 0 1 0 0 0 – 10 1 1 0 1 1 0 – 34 0 1 1 1 1 0 + 30 2 Carry sem Overflow 1 Carry Overflow
determinação do Overflow a partir dos sinais se forem somados 2 números com mesmo sinal, e o resultado tiver o mesmo sinal, não há Overflow se forem somados 2 números com mesmo sinal, e o resultado tiver sinal contrário, há Overflow se forem somados 2 números com sinais opostos, nunca há Overflow determinação do Overflow a partir do Carry se houver número par de Carry: não há Overflow se houver número ímpar de Carry: há Overflow Carry e Overflow
1. Meio Somador X 0 0 1 1 S 0 1 1 0 C 0 0 0 1 Y 0 1 0 1 S = XY + XY = XY C = X . Y X Y S X S HA Y C C
2. Somador Completo Cin 0 1 0 1 0 1 0 1 Cout 0 0 0 1 0 1 1 1 Y 0 0 1 1 0 0 1 1 S 0 1 1 0 1 0 0 1 X 0 0 0 0 1 1 1 1 X S Y FA Cout Cin S = XYCin + XYCin + XYCin + XYCin Cout= XYCin + XYCin + XYCin + XYCin
S YCin 00 01 11 10 X 1 0 1 1 1 1 • não há aparentemente nenhuma minimização a fazer S = X Y Cin • no entanto • XOR é comutativo e associativo Cout: Solução 1 YCin 00 01 11 10 X Cout = XY + XCin + YCin = XY + Cin (X+Y) 0 1 1 1 1 1
Cout : Solução 2 YCin Cout = XY + Cin (X Y) 00 01 11 10 X 0 1 1 solução é preferível porque usa XOR também existente na expressão de S 1 1 1 • Para comprovar que as 2 soluções são equivalentes Cout = XY + Cin (X Y) • não é =1 se X=1 e Y=1, mas este caso já é coberto pelo 1º termo • pode-se portanto reduzirX+Ypara XY Cout = XY + Cin (X+Y) igual a 1 se X=1, ou Y=1, ou X=1 e Y=1
Circuito obtido a partir das expressões para S e Cout HA HA X Y S Cout Cin
Se reconhece dois HA’s Cin S2 S HA2 S1 C2 X Y HA1 Cout C1 S = S2 = S1 Cin C2 = S1 . Cin Cout = C1 + C2 S1 = X Y C1 = X . Y
3. Somador de N Bits X2 Y2 X1 Y1 X0 Y0 C1 C2 C3 FA 0 FA1 FA2 Cin =0 S0 S2 S1 4. Subtratores Meio Subtrator ( X – Y ) D = Diferença B = Borrow Y 0 1 0 1 X 0 0 1 1 D 0 1 1 0 B 0 1 0 0 D = X Y B = X . Y
Subtrator Completo Bin 0 1 0 1 0 1 0 1 Bout 0 1 1 1 0 0 0 1 X00001111 Y00110011 D01101001 D = X Y Bin Bout = XYBin + XYBin + XYBin + XYBin YBin 00 01 11 10 X Bout = XY + XBin + YBin = XY + Bin (X + Y) 1 1 1 0 1 1
5. Somador com Carry Look-Ahead (vai-um antecipado) Problema com Somador Anterior p.ex. 1 1 1 1 0 0 0 1 1 0 0 0 0 + • Existe um carry em cada estágio • Bits de carry e soma do último estágio só estão disponíveis após os tempos de propagação dos estágios anteriores • Este somador usa o que se chama “Ripple Carry”
Alternativa 1 • Calcular cada Si diretamente em função de Xi, Yi, Xi -1,Yi -1, ... • construir tabela-verdade • implementar circuito com lógica de 2 níveis p.ex. soma com 2 estágios X1 0 0 0 0 1 : Y1 0 1 0 1 0 : X0 0 0 0 0 0 : Y0 0 0 0 0 1 : S1 0 1 1 0 1 : Vantagem: Tempo de propagação só de 2 portas Desvantagem: Equações muito grandes quando N é grande Exige muitas portas, com muitas entradas
Alternativa 2 Um estágio causa carry se a) GERAR um carry, pois Xi = 1 e Yi = 1 ou b) PROPAGAR um carry vindo do estágio anterior Ci = 1 e (Xi = 1 ou Yi = 1) Gi = Xi . Yi Pi = Xi Yi mas não ambos, pois então recai-se no caso a Unidade Somadora Ci Si Ai Pi Bi Gi
Expandindo as Equações C1 = G0 + P0 C0 C2 = G1 + P1 C1 = G1 + P1 (G0 + P0C0) C3 = G2 + P2 C2 = G2 + P2 (G1 + P1 (G0 + P0C0)) = G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 C0 ou seja • C3 = 1 se • for gerado carry no estágio 2 (G2) , ou • for propagado carry do estágio 2, gerado no estágio 1 (P2 G1 ), ou • for propagado carry dos estágios 2 e 1, gerado no estágio 0 (P2 P1G0 ), ou • etc.
C0 P2 = A2 B2 P1 = A1 B1 P0 = A0 B0 P2 = A2 B2 P1 = A1 B1 C3 G0 = A0 . B0 P2 = A2 B2 G1 = A1 . B1 G2 = A2 . B2 • Analisando tempo de propagação: • Ci em cada estágio tem tempo de propagação de 3 portas • Ci em cada estágio não depende de Ci-1 • Ci é calculado em função de Ai, Bi, Ai-1, Bi-1,… • Si em cada estágio tem tempo de propagação de 4 portas
Solução intermediária • por exemplo supondo um somador de 16 bits A 0-3 A 12-15 B 0-3 A 4-7 B 4-7 B 12-15 somador 4 bits com carry antecipado somador 4 bits com carry antecipado somador 4 bits com carry antecipado C0 C3 C11 S 0-3 S 4-7 S 12-15 • dentro de cada somador de 4 bits as equações não crescem demais • gasto moderado de portas e entradas • tempo de propagação = 4 x tempo de um somador com carry antecipado