AULA 2

Unidade lógica e aritmética

Origem: Wikipédia, a enciclopédia livre.

  Este artigo é um esboço sobre Informática. Você pode ajudar a Wikipédia expandindo-o.
Um símbolo esquemático típico para uma ULA, onde "A" e "B" são operandos, "R" é a saída, "F" é a entrada da unidade de controle e "D" é a saída de  status
Um símbolo esquemático típico para uma ULA, onde "A" e "B" são operandos, "R" é a saída, "F" é a entrada da unidade de controle e "D" é a saída de status

A Unidade lógica e aritmética (ULA) ou em inglês Arithmetic Logic Unit (ALU) é a unidade central do processador (Central Processing Unit, ou simplesmente CPU), que realmente executa as operações aritméticas e lógicas referenciadas pelos opcodes.

É, na verdade, uma "grande calculadora eletrônica" do tipo desenvolvido durante a II Guerra Mundial, e sua tecnologia já estava disponível quando os primeiros computadores modernos foram construídos.

O matemático John von Neumann propôs o conceito de ULA em 1945, quando escreveu um relatório sobre os fundamentos para um novo computador chamado EDVAC.

A tecnologia utilizada foi inicialmente relés, herança da telefonia, e posteriormente válvulas, herança da radiofonia. Com o aparecimento dos transistores, e depois dos circuitos integrados, os circuitos da unidade aritmética e lógica passaram a ser implementados com a tecnologia de semi-condutores.

A ULA executa as principais operações lógicas e aritméticas do computador. Ela soma, subtrai, divide, determina se um número é positivo ou negativo ou se é zero. Além de executar funções aritméticas, uma ULA deve ser capaz de determinar se uma quantidade é menor ou maior que outra e quando quantidades são iguais. A ULA pode executar funções lógicas com letras e com números. Resumindo:

-A ULA executa operações aritméticas comuns.

-Também toma decisões lógicas, resolvendo sintaxes lógicas em uma programação.

Índice

Primeiro desenvolvimento

Em 1946, von Neumann trabalhou com seus colegas no projeto de um computador para o Instituto de Estudos Avançados de Princeton (Princeton Institute of Advanced Studies -IAS). O computador IAS se tornara o protótipo de muitos computadores. Na proposta, von Neumann descreveu o que ele acreditava que seria preciso na sua máquina, incluindo uma ULA. Von Neumann disse que a ULA era uma necessidade para o computador porque ela garantiria que o computador calcularia operações matemáticas básicas, incluindo adição, subtração, multiplicação, e divisão..[1] Ele então achava que isso era razoável que um computador deveria conter órgão especializados para essas operações.[2]

Sistemas numéricos

Uma ULA deve processar números usando o mesmo formato que o resto do circuito digital. Nos modernos processadores, que quase sempre é o número binário em representação de complemento para dois. Os primeiros computadores usavam uma grande variedade de sistemas numéricos, incluindo os formatos complemento para um, sinal-magnitude e mesmo o sistema decimal. ULAs para cada um desses sistemas numéricos tinham diferentes projetos, e influenciou a atual preferência pelo complemento para dois, e essa é a representação que é a mais fácil para a ULA calcular adições e subtrações.[carece de fontes?]

Visão geral prática

Uma simples ULA de 2-bit que faz AND, OR, XOR, e adição (clique na imagem para explicação)
Uma simples ULA de 2-bit que faz AND, OR, XOR, e adição (clique na imagem para explicação)

Muitas das ações dos computadores são executadas pela ULA. Esta recebe dados dos registradores., que são processados e os resultados da operação são armazenados nos registradores de saída. Outros mecanismos movem os dados entre esses registradores e a memória.[3] Uma unidade de controle controla a ULA, através de circuitos que dizem que operações a ULA deve realizar.

Operações simples

Muitas ULA podem realizar as seguintes operações:

  • Operações aritméticas com inteiros
  • Operações lógicas bit a bit And, Not, Or, XOR
  • Operações de deslocamento de bits (deslocamento, rotação por um número específico de bits para esquerda ou direita, com ou sem sinal).

Deslocamentos podem ser interpretados como multiplicações ou divisões por 2.

Operações complexas

Um engenheiro pode projetar uma ULA para calcular qualquer operação, no entanto isso gera complexidade; o problema é que quanto mais complexa a operação, mais cara é a ULA, mais espaço utiliza do processador e mais dissipa energia. Então, engenheiros sempre calculam um compromisso entre o poder de processamento e a sua complexidade, satisfazendo aos requisitos do processador ou de outro circuito. Imagine um cenário, onde é preciso calcular a raiz quadrada. O engenheiro teria as seguintes opções:

  1. Projetar uma ULA extremamente complexa que calcula a raiz quadrada de qualquer número num único passo. Isso é chamado cálculo em passo-único de relógio
  2. Projetar uma ULA bastante complexa que calcula a raiz quadrada de qualquer número em vários passos. Mas, existe um truque, os resultados intermediários vão através de uma série de circuitos arranjados em linha, como numa linha de produção. Que faz com que a ULA seja capaz de aceitar novos números para cálculo antes mesmo de terminar o cálculo dos anteriores. Isso faz com que a ULA seja capaz de produzir números tão rápido como cálculos em passo-único de relógio, com um atraso inicial até os números começarem a sair. Isso é chamado cálculo em pipeline.
  3. Projetar uma ULA complexa que calcula a raiz quadrada através de vários passos. Isso é chamado de cálculo interativo, e usualmente confia no controle de uma complexa unidade de controle com microcódigo.
  4. Projetar uma ULA simples no processador e vender separadamente um processador especializado e caro que o consumidor possa instalá-lo ao lado desse, realizando uma das opções acima. Isso é chamado de co-processador.
  5. Dizer aos programadores que não há nenhum co-processador e que não há nenhuma emulação, assim eles tem que escrever seus próprios algoritmos para calcular a raiz quadrada por software. Isso é chamado de bibliotecas de software.
  6. Emular a existência de um co-processador, ou seja, sempre que um programa tenta realizar o cálculo da raiz quadrada, faz o processador checar se há co-processador presente e o utiliza se está ali; se não há, interrompe o programa e invoca o sistema operacional para realiza o cálculo da raiz através de algum algoritmo de software. Isso é chamado de emulação de software.

As opções acima vão desde a mais rápida e cara até a mais lenta e mais complicada. Então, enquanto o mais simples computador pode calcular a mais complexa fórmula, os computadores mais simples vão usualmente levar mais tempo fazendo isso porque levam vários passos para calcular a fórmula. Processadores poderosos como Intel Core e AMD64 utilizam a opção #1 para as operações mais simples, #2 para as operações complexas mais comuns e #3 para as operações extremamente complexas. Isso é possível através da construção de ULAs muito complexas nesses processadores.

Entradas e Saídas

As entradas para a ULA são os dados a serem operados (chamados operandos) e o código da unidade de controle indicando as operações para executar. As saídas são os resultados da computação.

Em muitos projetos a ULA também leva ou gera as entradas ou saídas um conjunto de códigos de condições de ou para um registro de status. Esses códigos são usados para indicar casos como vai-um (empresta-um), (en)overflow, divisão-por-zero.[4]

ULA vs. UPF

Uma Unidade de ponto flutuante também realiza operações aritméticas entre dois valores, mas eles realizam isso com número em representação de ponto flutuante, que é muito mais complexa que a complemento para dois. Para fazer esses cálculos, uma UPF tem vários circuitos complexos, incluindo algumas ULAs internas. Usualmente engenheiros chamam uma ULA o circuito que realiza operações aritméticas com números inteiros em complemento para dois ou BCD, enquanto circuitos que calculam em formatos como ponto flutuante usualmente recebem esse ilustre nome.

Notas

  1. Stallings page 19
  2. Stallings page 19
  3. Stallings página 290-291
  4. Stallings page 290-291

Ligações externas

ULA - slide e HDS para Hades


This article is licensed under the GNU Free Documentation License. It uses material from the article "Unidade lógica e aritmética".
ody>