Você está na página 1de 32

Unidade Lógica Aritmética (ULA)

Operandos e representações numéricas

(adaptado do material do Prof. Marcelo Mikosz Gonçalves e Prof.


Robson Linhares, com a adição de material original)
Agradecimentos adicionais Profs. Gortan e Juliano Mourão
Problema
Algoritmo
Programa (linguagem)
Ambiente de execução (SO, etc.)
ISA (Arquitetura)
Microarquitetura
Lógica
Circuitos
Eletrônica

Organização: como é implementado.


Transparente ao programador
(SO vs. Programa)
 Modelo Von Neumann
(Princenton, Exército)

Barramento unificado de dados e


instruções. Computador de
programa armazenado.

Barramentos unificados
p.ex. ENIAC - 1946
 Modelo Harvard
(Cambridge, Marinha):

barramentos separados
para dados e instruções
 (p.ex. Mark I, late 40s)
 Operações simples entre operandos:
◦ Aritméticas: Adição, Subtração
◦ Lógicas: , Negação, AND, OR, NOT
◦ Deslocamentos de bits

 Operações complexas (área vs. preço, consumo):


◦ Solução dedicada (um ciclo, vários ciclos)
◦ Microcódigo
◦ Co-processador
◦ Bibliotecas SW
 Números reais vs. Números inteiros
◦ Contínuos vs. discretos
 Operações
◦ Logicas
◦ Aritméticas
◦ I/O, tomada de decisão

 Representações Numéricas
◦ Inteiros não sinalizados
◦ Inteiros sinalizados
◦ Não inteiros
 Pontos fixo vs. Ponto flutuante (IEEE754)
 Digitos, números, reais positivos (Z+)

 Bases, mais usadas:


◦ decimal (0..9), (unidades, dezenas, centenas...)
◦ Binária (0,1)
◦ Hexadecimal (0..F) – 1 digito = 1 nibble

 Circuitos digitais operam números em base binária


(bit, nibble, byte, halfword, word...)

 Para a base decimal: N = Ʃ (An x Bn)

 Da base decimal: Restos do quociente


 Não sinalizados: 0 .. 2N – 1: 8 bits (0..255)
◦ 256 símbolos
 Sinalizados:
◦ magnitude com sinal: um bit é considerado
sinal
 Desperdício de dígitos, ambiguidade (+0 e -0 ??)
◦ complemento 1: similar porém demais digitos
invertidos
◦ complemento 2: msb tem sinal trocado
 256 símbolos: -2N-1.. 0 .. 2N-1-1
 Para 8 bits: -128 a 127 , sem duplo zero

◦ Excesso de N: deslocamento da referência


 Ponto fixo (Formato Q)
◦ Mesmo número de símbolos, fator de escala
◦ Números fracionários numa faixa linear
◦ Arredondamentos geram erros cumulativos, ou
saturaçao (porém mais simples de implementar)

 Ponto flutuante - Padrão IEEE 754 (criada em 1985)


◦ Melhor uso da escala, interoperabilidade
 Codificação: precisão simples ou dupla
 Arredondamentos
 Números especiais (infinito, NaN)
 Interoperabilidade
 Precisão simples e dupla (32 e 64 bits)
◦ Quadrupla e octupla (128 e 256 bits)

 3 grupos de bits:
◦ Sinal : positivo ou negativo
◦ Expoente: ordem de grandeza
◦ mantissa: valor numérico

P.ex: -253,703 = -253703.10-3 = -1 x 253703E-3

Mantissa: 253703, sinal negativo, expoente 3

Como codificar?
 Precisão simples (32 bits):
◦ 1 bit para sinal
◦ 8 bits para expoente
 (codificado em excesso de -127:
 de -127 a 128
◦ 23 bits para mantissa
 Subtraído de 1; Valor = (-1) (s) x (1,mantissa) x 2 (expoente -127)

 Precisão dupla (64 bits)


◦ 1 bit para sinal
◦ 11 bits para expoente
◦ 52 bits para mantissa

◦ Conversores online
https://www.h-schmidt.net/FloatConverter/IEEE754.html
 Operações simples entre operandos:
◦ Aritméticas: Adição, Subtração
◦ Lógicas: , Negação, AND, OR, NOT
◦ Deslocamentos de bits
 realizam operações aritméticas com números binários

 podem ser obtidos por meio de simplificação de funções


booleanas
◦ Tabela da verdade da operação aritmética → definição das saídas
(resultado da operação) em função das entradas (operandos)

 compõem uma parte das operações realizadas por uma


Unidade Lógico-Aritmética (ULA)

 Circuitos aritméticos mais simples


◦ Somadores (meio somador e somador completo)
◦ Subtrator
 Soma 2 números binários de 1 bit

 Gera um valor de resultado e também um bit de


“vai-um” (carry out) → utilizado para estender a
soma a vários bits

 Tabela da verdade
A B S Carry out ("vai um")
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
 Função booleana de S na Forma Normal
Disjuntiva (FND):
◦ S = f(A,B) = A´.B + A.B´

 Função booleana de Cout na FND:


◦ Cout = f(A,B) = A.B

 Função de S pode ser reduzida a uma porta


XOR (“eXclusive OR”)
 Circuito resultante
 Soma 2 números binários de 1 bit e considera
o “vem-um” (carry in)

 Gera um valor de resultado e também um bit


de “vai-um” (carry out) → utilizado para
estender a soma a vários bits

 Somadores completos podem ser


combinados para gerar somas de números
de vários bits
 Tabela da verdade
Carry in Carry out
A B ("vem-um") S ("vai um")
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
 Função booleana de S na FND:

◦ S = f(A,B,Cin) = A´.B´.Cin + A´.B.Cin´+


A.B.Cin + A.B´.Cin´

 Função booleana de Cout na FND:


◦ Cout = f(A,B,Cin) = A.B + A.Cin + B.Cin

 Função de S pode ser reduzida a duas


portas XOR (“eXclusive OR”) consecutivas →
função “ímpar”
 Circuito resultante
 Construindo um somador de entradas de N
bits a partir de meio somadores e
somadores completos:

◦ Pode-se utilizar o meio somador no bit menos


significativo (ou um somador completo com Cin
em 0)

◦ Interliga-se o Cout do somador do bit i ao Cin do


somador completo do bit i+1
 Exemplo com 3 bits, somente somadores
completos
 Subtrai 2 números binários de 1 bit

 Gera um valor de resultado e também um bit de


“empresta-um” → utilizado para estender a
subtração a vários bits
◦ Se o resultado é negativo → “empresta-um” mais à esquerda
é1

 Forma alternativa (A - B)
◦ Utilizar um somador que soma o minuendo (A) com o
complemento de dois do subtraendo (B)

 Como obter complemento de dois?


 Inverte-se o número e adiciona-se 1
 Exemplo com 3 bits, somente somadores
completos
 Circuito que combina operações lógicas (AND,
OR, NOT) e operações aritméticas (soma e
subtração)

 Operação geralmente é selecionável por meio


de bits de controle

 ULAs são combináveis para poder operar


sobre palavras (operandos) de N bits
 Exemplo de ULA de 1 bit com sinais de controle
(INVA, INVB, ENA, ENB, F0 e F1)
 Tabela da verdade para ULA de 1 bit:
F0 F1 ENA ENB INVA Cin Função
0 1 1 0 0 0 A
0 1 0 1 0 0 B
0 1 1 0 1 0 A´
1 0 1 1 0 0 B´
1 1 1 1 0 0 A+B
1 1 1 1 0 1 A+B+1
1 1 1 0 0 1 A+1
1 1 0 1 0 1 B+1
1 1 1 1 1 1 B-A
1 1 0 1 1 0 B-1
1 1 1 0 1 1 menos A
0 0 1 1 0 0 A and B
0 1 1 1 0 0 A or B
0 1 0 0 0 0 0
1 1 0 0 0 1 1
1 1 0 0 1 0 -1
 Ripple carry

 atraso do Carry do lsb para o msb


 Opção: “lookahead adder”
}
Problema
Algoritmo
Programa (linguagem) Software
Ambiente de execução (SO, etc.)

}
ISA (Arquitetura)
Microarquitetura
Lógica Hardware
Circuitos
Eletrônica
Fonte: Patterson, 3ª. Ed.
 Patterson 5th ed.
2.4 Signed and Unsigned Numbers
3 Arithmetic for Computers
3.1 Introduction
3.2Addition and Subtraction
3.5 Floating point

 Documentos no moodle:
Numeros Negativos e exercícios
Ponto Flutuante e exercicios
Norma IEEE754 – 2008 (opcional)

Você também pode gostar