Princípios Básicos de Funcionamento Todo computador é formado por: ◦ Unidade de Central de Processamento (CPU) ◦ Periféricos de Entrada e Saída ◦ Memórias A CPU contém: ◦ Elementos de Armazenamento (Registradores) ◦ Unidade Lógica e Aritmética (ULA) ◦ Circuitos de Controle e Temporização. Nosso objeto de estudo será a UNIDADE LÓGICA E ARITMÉTICA Podemos considerá-la como 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. É a parte do computador onde são feitas as operações aritméticas e lógicas com os dados ◦ O tipo de operação a ser executado é determinado por sinais vindos da unidade de controle. ◦ Os dados a serem operados são lidos dos dispositivos de entrada para a memória e após obtidos os resultados enviados novamente para a memória e daí para os dispositivos de saída de dados. 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 ULA passaram a ser implementados com a tecnologia de semi-condutores. A ULA pode realizar diversas operações, entre elas: ◦ ◦ ◦ ◦ ◦ Adição Subtração Operações lógicas (E, OU, XOR, Inversão) Deslocamento (à esquerda e à direita) Comparação 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 as quantidades são iguais. A ULA pode executar funções lógicas com letras e com números. As ULA’s mais modernas realizam também as operações de multiplicação e divisão. As operações são realizadas pela leitura de dois registradores fontes do banco de registradores, e com a escrita do resultado no registrador de destino. Podemos concluir então, que a ULA: ◦ Executa operações aritméticas comuns ◦ Toma decisões lógicas, resolvendo sintaxes lógicas em uma programação. Uma ULA pode ser construída como uma cascata de vários estágios idênticos. Não existem regras de como projetar cada estágio da ULA. Em geral, a aplicação determina o circuito de cada estágio da ULA. Na próxima figura é mostrado o diagrama em blocos da ULA, onde: ◦ /RACARGA – Habilita a transferência do conteúdo do barramento de dados para o Acumulador, quando houver uma transição positiva do /CLOCK. ◦ /RBCARGA - Habilita a transferência do conteúdo do barramento de dados para o Registrador Temporário, quando houver uma transiçãopositiva do /CLOCK. ◦ MODOULA – Define o modo (aritmético = 1 ou lógico = 0) de operação de UL. ◦ S0, S1, S2, S3 – define a operação as ser realizada. ◦ /FLAG – Armazena o estado dos Flags no Registrador de Flags. ◦ /UM – Define o estado fo carry de entrada. ◦ /ULALER – Habilita a transferência do resultado para barramento de dados. Existem diversos circuitos integrados disponíveis comercialmente que são classificados e vendidos como ULA, apesar de não apresentarem a capacidade lógica e aritmética de uma ULA. Esses circuitos são capazes de realizar várias operações lógicas e aritméticas diferentes com dados binários de entrada. A operação específica é determinada pelo código binário específico que é aplicado nas entradas dos bits seletores de função. Cada circuito possui um conjunto específico de funções que pode executar, diferente das demais ULA’s.