Unidade Lógica e Aritmética (ULA)
A ULA, Arithmetic Logic Unit (ALU) em inglês, é um circuito digital que realiza operações matemáticas e de lógica, sendo, por isso, parte fundamental dos processadores (Sua relevância na CPU é demonstrada pela imagem abaixo). Ela é responsável por executar cálculos e operações lógicas necessários para o funcionamento de programas. A ULA é essencial para a execução de instruções aritméticas, como adição, subtração, multiplicação e divisão, bem como operações lógicas, como AND, OR, XOR e NOT.
Como funciona?
A ULA opera recebendo dados da memória ou de registradores internos do processador, realizando a operação solicitada e enviando o resultado para um destino especificado. O controle do tipo de operação é realizado por sinais enviados pela Unidade de Controle (UC) do processador.
Na figura abaixo, é possível ver um esquema simplificado da ULA.
- A e B representam os barramentos de entrada, ou seja, as informações (operandos) que serão manipuladas pela ULA.
- S é o barramento de controle, usado para selecionar qual operação lógica ou aritmética será realizada.
- R representa o barramento de saída, onde o resultado das operações é enviado.
- STATUS representa as flags de controle (overflow, carry, zero ou negative)
- Operações adicionais, como comparações (maior, menor ou igual) e deslocamentos de bits (shift), também podem ser implementadas.
Componentes principais da ULA
-
Unidade Aritmética:
- Realiza operações matemáticas como adição, subtração, multiplicação e divisão.
- Utiliza circuitos como somadores e subtratores.
-
Unidade Lógica:
- Realiza operações lógicas como AND, OR, XOR, NOT, além de deslocamentos de bits.
- É composta por portas lógicas que manipulam os bits dos operandos.
-
Multiplexadores:
- Controlam qual operação será executada com base no sinal do barramento S.
- Direcionam a saída apropriada (resultado lógico ou aritmético) para o barramento R.
-
Sinalizador de Status (Flags):
- Indica condições especiais resultantes das operações, como overflow (excesso de bits), carry (vai-um), zero (resultado igual a zero) ou negative (resultado negativo). Essas informações são importantes para o controle de fluxo no processador.
Importância da ULA
Como já mencionado, a ULA é uma das partes mais importantes da Unidade Central de Processamento (CPU). Todas as operações lógicas e aritméticas de um programa dependem dela. Por exemplo:
- Um somador binário na ULA é essencial para cálculos matemáticos.
- Operações lógicas são utilizadas para decisões condicionais em algoritmos.
Exercícios
Teoria
-
Quais são os componentes da ULA?
-
Quais operações da ULA precisam de apenas 1 operando?
Usaremos números de 8 bits.
Operações aritméticas:
- Qual seria a saída no barramento R com essas entradas na ULA? Qual o status das flags de overflow, carry, zero e negative? (Considere 1 = ativo e 0 = desativado)
a)
Operação (S): SOMA
A = 00000001
B = 00000011
b) (Considere A-B)
Operação (S): SUBTRAÇÃO
A = 00000001
B = 00000011
Faça a conta com complemento de dois
c)
Operação (S): SUBTRAÇÃO
A = 00000011
B = 00000011
Operações lógicas:
- Qual seria a saída no barramento R com essas entradas na ULA?
Operação (S): XOR
A = 00110001
B = 01011011 - Qual seria a saída no barramento R com essa entrada na ULA?
Operação (S): NOT
A = 01011011
Gabarito
Questão 1:
- Unidade Aritmética
- Unidade Lógica
- Multiplexadores
- Sinalizador de Status (Flags)
Questão 2:
- NOT
- Bit shift
Questão 3: a) R: 00000100 Overflow: 0 Carry: 0 Zero: 0 Negative: 0
b) R: 11111110 (em complemento de dois) Overflow: 0 Carry: 1 Zero: 0 Negative: 1
c) Overflow: 0 Carry: 0 Zero: 1 Negative: 0
Questão 4: R: 01101010
Questão 5: R: 10100100
- Laura Fernandes Camargos - 13692334
- Sandy da Costa Dutra - 12544570
- Vitor Nishimura Vian - 5255289