15/11/2012 15h10 - Atualizado em 15/11/2012 15h10

Coluna do B. Piropo: CIs e Microprocessadores

B. Piropo
por
Para o TechTudo

O que deu impulso à indústria da eletrônica de estado sólido foi a combinação de duas tecnologias. A primeira delas foi a fabricação de transistores em uma placa plana de silício usada pelo transistor planar. A segunda foi a estrutura em “wafer” usada pelos circuitos integrados e descrita na coluna anterior, que possibilitou a interconexão de diferentes transistores fabricados na mesma placa usando um sistema no qual os condutores que efetuam estas conexões são fundidos acima desta placa em camadas sucessivas. Mas foram os microprocessadores que a fizeram alastrar-se e criaram todo um novo ramo de conhecimento, a TI, ou Tecnologia da Informação.

Os microprocessadores são conhecidos como “CIs inteligentes”. Uma denominação no mínimo pouco apropriada, pois de inteligentes eles nada têm. São tão estúpidos quanto qualquer outra peça de silício, por maior que seja a quantidade de impurezas que se lhes agregue. O que os fazem parecer inteligentes e os diferencia dos Circuitos Integrados, que são capazes de executar exclusivamente uma função, é sua capacidade de interpretar e executar sequencialmente diferentes funções de acordo com instruções que lhes são fornecidas. Ou seja: executar um programa. É neste conjunto de instruções, concebido por um programador humano, que reside a suposta inteligência do processador.

Vamos elaborar isto um pouco mais para esclarecer o assunto.

Um circuito integrado é um conjunto de transistores interligados capaz de executar apenas uma função determinada, aquela para a qual foi concebido. Por exemplo: um circuito somador efetua a soma de duas parcelas e fornece o resultado, nada mais que isto. Um circuito multiplicador multiplica, um circuito contador efetua uma contagem e assim por diante.

Os exemplos acima consideraram apenas as funções ou operações aritméticas. Mas há circuitos integrados capazes de executar funções ou operações lógicas. Há CIs capazes de executar as operações lógicas elementares que, como vimos, constituem a base da lógica digital e da Álgebra Booleana que possibilitaram a concepção dos modernos computadores. E CIs capazes de executar operações mais complexas, como a multiplexação, seja lá o que venha a ser isto (os detalhes não nos interessam no momento, mas quem estiver interessado pode consultar o verbete correspondente da Wikipédia que encontrará uma explicação aceitável).

Figura 1: Decodificador de quatro saídas (diagrama)Figura 1: Decodificador de quatro saídas (diagrama)

A nós, interessa particularmente – por vir a ser mencionado adiante – o circuito decodificador. Este tipo de circuito consiste essencialmente em a) uma entrada que pode receber um número (em binário) e b) em tantas saídas quanto a quantidade de números que pode receber na entrada. Por exemplo: um circuito decodificador que receba na entrada números de dois bits, ou seja, de zero a três, terá quatro saídas. Já um decodificador cuja entrada pode receber números de oito bits, ou seja, de zero a 255, terá 256 saídas.

Sua função não poderia ser mais simples: forneça-lhe um número binário na entrada e ele energizará (ou seja, aplicará uma tensão elétrica, ou “ligará”) apenas o terminal de saída correspondente a este número, “desligando” os demais (novamente: esta é uma explicação bastante simplificada, mas essencialmente correta).

Ora, como vimos na coluna “Por dentro do computador”, o processamento de dados pouco mais é que uma sucessão de tomadas de decisão baseadas em comparações de resultados de operações adrede realizadas. E os circuitos eletrônicos capazes de tomar decisões são as portas lógicas. Logo, um processador é constituído principalmente de portas lógicas que, por sua vez, não passam de combinações de transistores convenientemente interligados,

Ainda de forma simplificada o conjunto de portas lógicas que constitui um processador pode ser decomposto em circuitos eletrônicos mais simples, interconectados, cada um capaz de cumprir uma determinada função. É como se ele fosse formado por um enorme e extremamente complexo conjunto de CIs, cada um deles responsável pela execução de uma das funções ou operações que o processador pode executar. Quando o programa que está “rodando” no computador solicita que uma destas funções seja executada, o circuito correspondente é energizado (ou seja, recebe uma tensão de alimentação no terminal correspondente) e entra em ação para cumprir sua função (como eu disse acima, esta é uma descrição extremamente simplificada do papel de um microprocessador, mas razoavelmente precisa). O problema, portanto, consiste em saber que circuito energizar a cada momento.

Este problema é resolvido de forma relativamente simples: decodificando sequencialmente as instruções que formam o programa e as executando na ordem desejada pelo programador.

Mas o que é uma “instrução” e como decodifica-la?

Bem, como vimos, uma instrução é algo que informa ao processador que função ou operação deve ser executada. E cada modelo de processador é capaz de executar um conjunto limitado de funções ou operações (como cada orquestra sabe executar um número limitado de composições, seu repertório). Cada função ou operação que integra este conjunto recebe um número para distingui-la das demais. Quando os terminais de entrada do processador recebem este número, “sabem” então que devem executar a função ou operação correspondente. Um programa, portanto, nada mais é que uma sequência destes números. Que são as instruções.

Uma instrução, portanto, não passa de um número que, quando fornecido ao processador, o instrui a executar uma das funções ou operações que fazem parte de seu repertório, ou “Conjunto de Instruções” (Instruction Set).

Mas como decodificá-la?

Simples: inserindo, logo na entrada do processador, um circuito decodificador. Com isto, no momento em que esta entrada receber uma instrução (ou seja, um número que identifica uma função ou operação), ela será encaminhada diretamente ao decodificador que energizará apenas a saída correspondente a este número, que por sua vez “ligará” o circuito responsável pela execução daquela função ou operação. E assim sucessivamente, instrução a instrução, até o final do programa.

Eu sei que esta descrição parece demasiadamente simplificada, mas na realidade é exatamente assim que funciona um microprocessador: recebe instruções sucessivas sob a forma de números binários, as aplica à entrada de seu circuito decodificador e as executa acionando sucessivamente cada circuito interno selecionado pelo terminal de saída energizado do decodificador. É simples assim. A complexidade deriva não do funcionamento básico, mas do imenso número de circuitos necessários para executar funções e operações cada vez mais complexas, o que faz com que o número de transistores contidos nos modernos processadores atinja a casa dos bilhões.

Mas como fazer caber bilhões de transistores – e, o que é ainda mais complexo, como interligá-los – em uma superfície de silício do tamanho da unha de um dedo polegar?

Bem, este é o assunto da próxima coluna. Até lá.

B.Piropo

Seja o primeiro a comentar

Os comentários são de responsabilidade exclusiva de seus autores e não representam a opinião deste site. Se achar algo que viole os termos de uso, denuncie. Leia as perguntas mais frequentes para saber o que é impróprio ou ilegal.

recentes

populares

  • Xterminador Maximus
    2012-11-17T07:36:58

    *obvious

  • Almir Ribeiro
    2012-11-19T07:33:23

    Simplicidade brilhante! Aplausos!

  • Xterminador Maximus
    2012-11-17T07:36:03

    master of obsvious