por
Marshall Brain - traduzido por HowStuffWorks Brasil
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.
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.