Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
21/11/2005

< Computadores XV: O que é uma UCP >


Essa nossa jornada tem nos conduzido por inesperados caminhos que transitaram por sons e imagens, passaram por válvulas e transistores e nos levaram a inspecionar diagramas lógicos de circuitos que jamais esperamos um dia destrinchar (mas quando os destrinchamos, percebemos que eram muito mais simples do que seus nomes assustadores permitiam prever). Caminhos tortuosos que passaram por tantos desvãos que neste ponto é conveniente fazer uma pausa para não perdermos o rumo.
Você ainda recorda qual é o rumo? Pois só para lembrar: nossa meta é entendermos o funcionamento interno de um computador. E, embora ainda estejamos no começo da empreitada, já percorremos um bocado de estrada. Tanta que convém olharmos para trás em busca de um referencial. E nos lembrarmos que em nosso primeiro passo, na primeira coluna desta série (“Dados e Informações”) concluímos que um computador é composto por quatro elementos básicos: memória principal, barramento, dispositivos de entrada e saída e unidade central de processamento. E que este último componente é o mais importante de todo o conjunto.
Na coluna anterior desta série, “Circuitos Impressos e Integrados”, vimos o que é e com que se parece um circuito integrado. E fechamos a coluna mencionando que a Unidade Central de Processamento, ou UCP, é um microprocessador, um tipo especial de circuito integrado.
Dissemos que “ele é um circuito integrado razoavelmente complexo, capaz de efetuar todas as operações necessárias ao processamento de dados; como seu nome indica, é ali que os dados serão processados”. E acrescentamos: “mais adiante discutiremos seus detalhes de funcionamento e veremos que embora o circuito integrado seja efetivamente muito complexo, seu princípio de funcionamento é bastante simples”.
Pois chegou a hora. Microprocessadores será o tema de nossa coluna de hoje.
Como vimos na coluna anterior, os circuitos integrados se ligam ao mundo exterior através de terminais metálicos que se conectam a condutores elétricos que compõem circuitos mais complexos (em geral implementados em placas de circuito impresso). Os dados de entrada são introduzidos em um circuito integrado através de tensões elétricas  aplicadas aos terminais de entrada e os dados de saída são fornecidos através de tensões elétricas gerados nos terminais de saída. Tanto os dados de entrada como os de saída são codificados sob a forma de valores numéricos expressos no sistema binário (grandezas digitalizadas) de tal maneira que a presença de uma tensão positiva em um terminal é interpretada como “1” e a ausência (tensão nula) como “0”.
Todos os circuitos lógicos que vimos nas colunas “Aprendendo a somar” e “Multiplexadores, decodificadores e flip-flops” podem ser implementados fisicamente combinando transistores de forma adequada e encapsulando-os em uma única unidade de modo a formar um circuito integrado. Em outras palavras: pode-se fabricar (e fabrica-se) circuitos integrados somadores, multiplexadores, decodificadores e flip-flops, além de diversos outros tipos. Cada um desses circuitos tem por finalidade e execução de uma determinada tarefa. Vimos, por exemplo, que dependendo do número que fornecermos aos terminais de entrada de um circuito decodificador (número este fornecido sob a forma de tensões aplicadas aos terminais de entrada) energizaremos um, e apenas um, de seus terminais de saída. E vimos também que as tensões presentes nos terminais de saída de um circuito somador correspondem a um número (expresso em binário) que é a soma dos números (igualmente expressos em binário) formados pelas tensões aplicadas em seus terminais de entrada.
Pois bem: a principal distinção entre um microprocessador e os demais circuitos integrados é que enquanto cada um destes últimos serve para cumprir apenas a única função para a qual foram concebidos, um microprocessador é um circuito integrado capaz de desempenhar múltiplas funções.
Uma pequena viagem ao passado talvez ajude a entender porque os microprocessadores foram desenvolvidos e como foram criados.
A era da “eletrônica do estado sólido”, ou seja, a que passou a utilizar transistores no lugar de válvulas, iniciou-se nos anos cinqüenta do século passado (o transistor foi inventado em 1948). As vantagens eram tão grandes que seu desenvolvimento inicial foi extremamente rápido. Nos anos sessenta ela já havia dominado o mercado tanto com componentes avulsos quando com os primeiros circuitos integrados.
Uma das aplicações mais importantes destes dispositivos naquela época era a fabricação de calculadoras eletrônicas, que vinham substituir as pesadíssimas máquinas de calcular eletromecânicas. Tanto assim que em 1969 a Intel recebeu da NCM Co (Nippon Calculating Machine Corporation), uma fabricante japonesa de calculadoras eletrônicas, a encomenda de desenvolver e fabricar os CIs que iriam equipar a “Busicom”, uma calculadora eletrônica para cálculos comerciais.
A missão coube aos engenheiros da Intel Ted Hof, Stan Mazor e Frederico Faggin. De acordo com as especificações originais da NCM o dispositivo exigiria um total de dezesseis CIs, cada um com uma finalidade específica.
Porém, durante o desenvolvimento do projeto, seus responsáveis perceberam que havia grandes semelhanças entre os diferentes circuitos. Por que não aproveitar estas semelhanças e desenvolver um único CI capaz de cumprir todas as funções dos dezesseis originalmente especificados? Isso apressaria o projeto, resultaria em um dispositivo muito mais compacto e, sobretudo, mais barato.
Havia, no entanto, um problema: se o CI poderia executar diferentes operações com os mesmos dados de entrada, como fazer com que ele “saiba” qual delas deve ser executada em um determinado momento?
A solução encontrada pelos três engenheiros foi ao mesmo tempo simples e absolutamente revolucionária. O novo CI foi concebido de tal forma que em seu interior havia circuitos eletrônicos que, ao serem acionados (ou seja, ao receberem uma tensão em um determinado terminal de entrada), eram capazes de executar cada uma das funções projetadas. Para selecionar a função a ser executada em um dado momento, os engenheiros fizeram com que esse conjunto de circuitos fosse precedido por um circuito decodificador. Que, como vimos na coluna que descreveu esse tipo de circuito, é essencialmente muito simples: tem uma entrada (à qual se pode fornecer um número binário através de tensões aplicadas a cada terminal) e diversas saídas. Basta entrar com um número na entrada para energizar a saída correspondente e apenas ela. Por exemplo: imagine um com decodificador com dezesseis saídas, numeradas de zero a quinze. Aplicando-se à entrada um número entre esses limites, todas as saídas permanecem desenergizadas exceto àquela correspondente ao número aplicado à entrada.
Solução que resolve o problema proposto lá em cima: um CI que tenha um módulo decodificador com 16 saídas, cada uma ligada a um circuito capaz de cumprir uma determinada função, poderá selecionar qualquer uma dentre dezesseis funções diferentes. Basta aplicar à entrada o número correspondente à função desejada para que, dentro do CI, o circuito correspondente seja alimentado com energia pela respectiva saída do módulo decodificador e execute a função designada. Tem-se assim um único CI capaz de executar múltiplas funções, cada uma delas selecionadas por um número fornecido ao módulo decodificador do CI. Parece complicado, mas se você examinar bem a questão verá que é de uma simplicidade franciscana.
Esta é a idéia básica de um microprocessador.
A calculadora Busicom acabou sendo projetada com um circuito impresso que utilizava quatro CIs. O primeiro, que recebeu a designação de “ 4001”, era um CI do tipo “memória ROM”, ou memória apenas de leitura, na qual estava gravado o software necessário para operar a máquina (conceito que destrincharemos mais adiante). O segundo, o “ 4002”, era um CI do tipo “memória RAM”, capaz de armazenar e alterar dados e que servia para guardar os operandos e os resultados intermediários das operações matemáticas executadas pela Busicom. O terceiro, o “ 4003”, continha os circuitos necessários para as operações de E/S (entrada e saída), que permitia que os números digitados pelo usuário fossem convertidos para o sistema binário e introduzidos na máquina os resultados fossem impressos na fita (o teclado era o único dispositivo de entrada e a impressora de fita o único dispositivo de saída da Busicom). E finalmente o quarto, o “ 4004”, era o próprio “coração” da Busicom, o CI responsável pela execução das operações matemáticas, ou seja, pelo processamento dos dados de entrada e sua transformação nos resultados finais. O processador.

Figura 1: Intel 4004


O 4004 foi, portanto, o primeiro microprocessador da história da informática. Seu aspecto é o mostrado na Figura 1, enquanto o da Busicom, a máquina de calcular para a qual ele foi desenvolvido, é exibido na Figura 2, ambas obtidas sítio < http://www.cpu-museum.com/ > CPU Museum.

Figura 2: Busicom da NCM Co

A fabricação do microprocessador Intel 4004, ou i4004, teve início em 1971. Curiosamente, quando o projeto ficou pronto e o chip entrou em linha de produção, a Busicom já tinha se convertido em mais uma vítima da guerra dos preços das calculadoras eletrônicas do início dos anos setenta. A Intel acabou devolvendo os 60 mil dólares que havia recebido da NCM Co e manteve os direitos sobre o novo chip, o primeiro processador de uso geral.
O lançamento do i4004 em novembro de 1971 marcou um momento histórico: vinha à luz o primeiro microprocessador da história da informática. A publicidade da Intel na revista Electronics News anunciava “uma nova era da eletrônica integrada” e mencionava a expressão “computer on a chip” (“computador em um único circuito integrado”), que ficou famosa desde então. O novo componente passou a ser vendido por cerca de mil dólares a unidade. Uma quantia provavelmente muito maior que o chip que equipa a máquina com a qual você está lendo esta coluna na Internet. E olhe que o i4004 era um processador de 4 bits operando na vertiginosa freqüência de 108 KHz (isso mesmo, quatro bits e cento e oito quilohertz, para os que acharam que por esse preço deveria ser um erro de digitação)
Resumindo: um microprocessador é um circuito integrado “inteligente”, ou “versátil”, capaz de executar diferentes operações (os CIs convencionais executam apenas uma função, a única para a qual foi concebido). E “sabe” qual das diferentes operações executar interpretando (decodificando) um número a ele fornecido nos terminais de entrada.
Esse número é uma “instrução”.
Um conjunto encadeado de instruções com um propósito determinado é um “programa”.
Como se vê, pouco a pouco estamos avançando...

B. Piropo