A lógica do microprocessador


Foto cedida por Intel Corporation
Processador Intel Pentium 4
Para entender o funcionamento de um microprocessador, vamos entender a lógica utilizada para se criar um. Neste processo, você também vai aprender um pouco de linguagem assembly (a língua nativa de um microprocessador) e muitas outras coisas que os engenheiros fazem para aumentar a velocidade do computador.

Um microprocessador executa uma série de instruções de máquina que dizem a ele o que fazer. As três funções básicas de um processador são:

  • utilizando sua ALU (Unidade Lógico-Aritmética), o microprocessador pode executar operações matemáticas como adição, subtração, multiplicação e divisão. Os microprocessadores modernos contêm processadores de ponto flutuante que podem executar operações extremamente sofisticadas com número grandes em pontos flutuantes;
  • um microprocessador pode mover dados de um endereço de memória para outro;
  • um microprocessador pode tomar decisões e desviar para um outro conjunto de instruções baseado nestas decisões.
O microprocessador pode fazer coisas muito complicadas, mas as três atividades citadas acima são as suas principais ações. O diagrama a seguir mostra um microprocessador extremamente simples que é capaz de fazer estas três coisas:


Este microprocessador simples possui:

  • um barramento de endereços (pode ser de 8, 16 ou 32 bits) que envia um endereço para a memória;
  • um barramento de dados (pode ser de 8, 16 ou 32 bits) que envia e recebe dados da memória;
  • uma linha RD (Read ou Leitura) e WR (Write ou Escrita) que diz à memória se ela deve gravar ou ler o conteúdo da posição de memória endereçada;
  • um sinal de clock que fornece uma seqüência de pulsos de relógio para o processador;
  • um sinal de reset que reinicia o contador do programa para zero (ou outro valor) e recomeça a execução do programa.
Vamos supor que os barramentos de endereços e de dados tenham 8 bits neste exemplo. Os componentes deste microprocessador simples são:
  • os registradores A, B e C são simples latches simples formados de flip-flops (para obter mais informações, consulte a seção sobre "latches disparados por borda", em Como funciona a lógica booleana;
  • o latch de endereços é igual aos registradores A, B e C;
  • o contador do programa é um latch com as habilidades extras de incrementar de 1, quando solicitado e de ser zerado, quando solicitado;
  • a ALU pode ser um simples somador de 8 bits (para obter mais informações, consulte a seção sobre somadores em Como funciona a lógica booleana) ou pode somar, subtrair, multiplicar e dividir valores de 8 bits. Vamos supor que ela faça parte do segundo grupo;
  • oregistrador de teste é um latch especial que armazena valores das comparações realizadas na ALU. A ALU pode comparar dois números e determinar se eles são iguais ou se um é maior do que o outro. O registrador de teste também pode armazenar um bit de carry (carry-out) do último estágio do somador. Ele armazena esses valores em flip-flops e o decodificador de instruções pode usar os valores para tomar decisões;
  • existem seis caixas no diagrama com a indicação "3-state". Estes são os buffers tri-state. Um buffer tri-state pode deixar passar 1, 0 ou pode se desconectar da saída (imagine uma chave que se desconecta totalmente da linha de saída). Um buffer tri-state permite múltiplas saídas conectadas a um fio, mas somente uma delas leva 1 ou 0 para a linha;
  • o registrador de instrução e o decodificador de instrução são responsáveis pelo controle de todos os outros componentes.
Artigos úteis
Se você pouco sabe a respeito da lógica digital, leia os artigos a seguir para entender melhor esta seção:
  • Como funcionam os bits e os bytes
  • Como funciona a lógica booleana
  • Como funcionam os portões eletrônicos
  • Como funcionam os bits e os bytes
  • Como funciona a lógica booleana
  • Como funcionam os portões eletrônicos
  • Você não vê neste diagrama, mas existem linhas de controle do decodificador de instruções que:
    • mandam o registrador A colocar o seu valor atual no barramento de dados;
    • mandam o registrador B colocar o seu valor atual no barramento de dados;
    • mandam o registrador C armazenar o valor atual da sáida da ALU;
    • mandam o registrador de contador de programa colocar o valor atual no barramento de dados;
    • mandam o registrador de endereços travar o seu valor atual no barramento de dados;
    • mandam o registrador de instrução colocar o seu valor atual no barramento de dados;
    • mandam o contador de programa incrementar;
    • mandam o contador de programa resetar (ir para zero);
    • ativam qualquer um dos seis buffers tri-state (seis linhas separadas);
    • informam a ULA sobre qual operação ela deve executar;
    • mandam o registrador de teste armazenar os bits de teste da ULA;
    • ativam a linha RD;
    • ativam a linha WR.
    Dentro do decodificador de instruções entram os bits do registrador de teste e do sinal de clock line, além dos bits do registrador de instruções.