Entenda o funcionamento dos Processadores
Este texto foi extraído da revista PC Magazine Brasil
Sandro Dourado - sandrodourado@hotmail.com

end_bar.gif (812 bytes)



Neil Randall
Nesta análise, observamos em detalhes como exatamente é um microprocessador, e como ele funciona. Você também irá conhecer um pouco da história dos pracessadores e as várias gerações com as quais já trabalhamos.

A CPU (unidade de processamento central) é o "coração" de seu computador. Este componente vital, ao qual as pessoas sempre se referem simplesmente como microprocessador (ou mesmo processador), é, de alguma forma, responsável por tudo que seu computador faz. Ele determina, pelo menos em parte, quais sistemas operacionais você pode usar, que pacotes de software estão disponíveis, quanta energia seu PC consome, e o quanto seu sistema é estável, entre outras coisas. O processador também define quanto vai custar seu sistema: quanto mais novo e mais poderoso o processador, mais cara será a máquina.

Nas próximas colunas de PC Tech Tutor, analisaremos detalhadamente os microprocessadores. Começaremos com uma breve observação de como é feito o processador, e depois, vamos passar para as diferentes partes do processador para ver como elas funcionam. Em seguida, examinaremos a família de processadores Intel, do modelo 4004 até o Pentium II; e antes de terminarmos, estudaremos algumas outras famílias de microprocessador, incluindo clones Intel.

COMO UM PROCESSADOR É FEITO
Você pode pensar que um processador é uma peça quadrada ou retangular com muitos pinos, que se ajusta ao slot do processador em sua placa-mãe, mas na verdade, este é apenas o invólucro que o contém. O processador em si é um pequeno e fino chip de cristal de silício, geralmente, menor do que a metade de uma polegada quadrada. Esse invólucro protege o processador de possíveis contaminações (como do ar) e permite a ele, através dos pinos, fazer com que os circuitos da placa-mãe funcionem e, conseqüentemente, o sistema como um todo. Os milhões de comutadores eletrônicos (transistores) dentro do processador precisam de um ambiente cuidadosamente controlado, no qual possam funcionar. 

Embora a maioria dos processadores sejam feitos de silício, qualquer material semicondutor pode ser utilizado, desde que possa ser transformado em peças de alta qualidade e do tamanho necessário. O silício é barato e está amplamente disponível, devido a suas aplicações extremamente variadas, o que o torna o material mais popular. O silício é ideal, porque pode formar grandes cristais que são, igualmente, de alta qualidade; cada cristal tem cerca de 8 polegadas de largura, o que é importante, porque os fabricantes preferem cortar cada cristal no maior número de chips possível.

Instrumentos de precisão cortam fatias de cristal com espessura menor do que um milímetro. Estas fatias, chamadas de wafers (por causa de seu formato), são tratadas quimicamente antes de serem cortadas em chips individuais. O processo de se aplicar fisicamente o desenho lógico do processador ao chip é denominado fotolitografia; nesta etapa, transistores e finos fios são colocados no chip em séries de 10 ou mais camadas (chamadas de máscaras). Uma vez que esse processo de camadas está completo, o chip é testado várias vezes para garantir que os transistores e fios estão em seu devido lugar e funcionando adequadamente. Depois disso, o chip é colocado dentro do invólucro.

O invólucro protege o chip e também dissipa o calor, permitindo que o processador seja conectado à placa-mãe. Com o passar dos anos, esse invólucro tem se modificado consideravelmente, mediante novos métodos adotados por vários designs de processadores. Os primeiros chips da Intel usavam DIPs (invólucros de fila dupla), invólucros nos quais duas filas paralelas de 40 ou mais pinos propiciam a conexão com a placa-mãe (veja a Figura 1). Devido ao desenho em paralelo, upgrades deste invólucro podem não oferecer uma expansão significativa dos conectores: o invólucro simplesmente ficará muito extenso em relação à placa-mãe quando os pinos foram colocados, e os sinais enviados pelos pinos da extremidade vão precisar de mais tempo para chegar ao chip do processador do que os sinais dos pinos mais próximos. 

Por estas razões, o processador 80286 nos trouxe o invólucro PGA (pin-grid array). Este invólucro normalmente é quadrado, apresentando duas, três ou quatro filas de pinos igualmente distribuídos em torno de uma área central. Os pinos se ajustam em seus orifícios correspondentes no módulo do soquete, na placa-mãe; e geralmente, o invólucro é fixado no local por uma espécie de pinça. 

O formato quadrado do invólucro, com o qual a maioria dos usuários é familiar, começou a ser usado nos processadores 80286 e se mantém até hoje. Devido às necessidades cada vez maiores de processadores com mais capacidade, foram precisos barramentos mais amplos e, conseqüentemente, mais pinos tiveram de ser ajustados a estes barramentos; e também muitas modificações começaram a ser efetuadas no invólucro. Processadores Pentium utilizam um SPGA (staggered pin-grid array ou PGA "planejado"), que efetivamente "planeja" a organização dos pinos para permitir que eles sejam colocados o mais perto possível. O Pentium Pro, pelo fato de ter chips separados para a CPU e para a cache de Nível 2, utiliza um design denominado MCM (multichip module ou módulo de múltiplos chips). Um MCM é um invólucro que contém mais de um chip. Outro invólucro criado recentemente, o LCC, usa finas camadas de contato feitas de ouro, em vez de pinos, para fazer contato com a placa-mãe. 

Outros pacotes são o TCP - que é fino como um filme fotográfico e soldado à placa-mãe - e o cartucho SEC, usado no Pentium II. Na verdade, este é um invólucro PGA montado em uma pequena placa-filha que é anexada à placa-mãe através de um conector de contato lateral simples. O SEC tem um design extremamente interessante, porque ocupa menos espaço na placa-mãe e apresenta melhores características elétricas. 

DENTRO DO PROCESSADOR
Fundamentalmente, todos os processadores fazem as mesmas coisas. Eles captam os sinais sob a forma de 0s (zeros) e 1s (uns) - portanto, sinais binários -, manipulam estes sinais conforme um conjunto de instruções e produzem o resultado novamente no formato binário. A voltagem na linha no momento em que o sinal é enviado determina se o sinal é 0 ou 1. Em um sistema de 3,3 volts, uma aplicação de 3,3 volts significa que o sinal é 1, enquanto uma aplicação de 0 volts quer dizer que o sinal é 0. 

Os processadores trabalham por meio de uma reação específica à entrada de um valor 0 ou 1, que gera um resultado (saída) baseado na decisão que foi tomada. A decisão ocorre em um circuito denominado porta lógica, e cada uma dessas portas precisa pelo menos de um transistor, com as entradas e saídas organizadas de modo diferente para diferentes operações. O fato de que os processadores atuais contêm milhões de transistores dá uma idéia do quanto um sistema lógico é complexo. As portas lógicas do processador trabalham em conjunto para tomar as decisões usando lógica Booleana, que é baseada no sistema algébrico estabelecido pelo matemático George Boole. 

Os principais operadores Booleanos são AND (E), OR (OU), NOT (NÃO), e NAND (combinação de NOT e AND); e são possíveis muitas combinações destes operadores. Uma porta AND resulta em um valor 1 somente se ambas as entradas forem iguais a 1. Uma porta OR resulta em 1 se pelo menos uma das entradas for igual a 1. E uma porta NOT considera uma única entrada e a reverte, resultando em 1 se a entrada for 0, e vice-versa. As portas NAND são muito populares; uma vez que elas usam somente dois transistores em vez de três em uma porta AND, elas ainda oferecem muito mais funcionalidade. Além disso, o processador usa portas em combinação para desenvolver funções aritméticas; ele também pode utilizá-las para acionar o armazenamento de dados na memória. 

As portas lógicas operam via através de uma hardware conhecido como comutador - particularmente, um comutador digital. Nos bons e velhos tempos em que os computadores eram do tamanho de uma sala (parecendo muito mais impressionantes nos filmes do que as máquinas de hoje), os comutadores eram, na verdade, comutadores físicos, mas hoje em dia, a única coisa que se move é a corrente em si. O tipo de comutador mais comum nos computadores atuais é um transistor conhecido como MOSFET (de metal-oxide semiconductor field-effect transistor). Este tipo de transistor desenvolve uma função simples, mas fundamental: quando uma voltagem é aplicada, ele reage ativando ou desativando o circuito. 

A maioria dos microprocessadores de PCs de hoje opera em 3.3V, mas os processadores mais antigos (incluindo algumas versões do Pentium) operavam a 5V. Com um transistor do tipo MOSFET, uma corrente recebida, cuja voltagem seja do maior valor possível ou de um valor próximo, ativa o circuito; ao passo que uma corrente com voltagem próxima a 0 desativa o circuito.

Milhões de transistores do tipo MOSFET agem em conjunto, de acordo com as instruções de um programa, para controlar o fluxo de eletricidade através das portas lógicas a fim de produzir o resultado necessário. Mais uma vez, cada porta lógica contém um ou mais transistores, e cada transistor deve controlar a corrente de modo que o circuito seja comutado de desativado para ativado, de ativado para desativado, ou permaneça no estado atual. 

Uma rápida observação dos simples circuitos da porta lógica AND e OR mostra como o circuito funciona (veja Figura 2). Cada uma destas portas age sobre os sinais recebidos para produzir um sinal a ser enviado. Usar a porta lógica AND (E) significa que ambas as entradas devem ser iguais a 1 para que o resultado seja 1; na porta lógica OR (OU), basta que uma das entradas seja 1 para obter o resultado 1. Na porta AND, ambos os sinais de entrada devem ser de alta voltagem (ou 1 lógico) para que a porta permita que a corrente passe através de si mesma. Observe, na Figura 2 como uma voltagem alta deve ser aplicada a ambos os transistores nesta porta para que o circuito esteja completo. De outra forma, o circuito permanecerá ativado, fornecendo o valor 1 como resultado. Na porta OR, se a corrente recebida for de alta voltagem, ela poderá passar. Veja na Figura 2 que se uma voltagem é aplicada a um dos transistores, o circuito está completo.

O fluxo da eletricidade através de cada porta é controlado pelo seu respectivo transistor. No entanto, estes transistores não são unidades individuais. Em vez disso, grandes quantidades deles são produzidos a partir de uma única peça de silício (ou de outro material semicondutor) e ligados entre si, sem fios ou outros materiais externos. Estas unidades são chamadas de circuitos integrados (CIs), e seu desenvolvimento, basicamente, torna possível a complexidade do microprocessador. A integração destes circuitos não parou nos primeiros CIs. Assim que os primeiros CIs foram conectados a múltiplos transistores, CIs múltiplos se tornaram, da mesma forma, conectados, em um processo conhecido como LSI (ou integração em grande escala); eventualmente, estes conjuntos de CIs foram conectados, por meio de um processo denominado VLSI (ou integração em muito grande escala) - conforme as técnicas de nomenclatura extremamente criativas típicas da indústria. 

O primeiro passo da Intel em direção à fama se deve à sua integração de alto nível de todas as portas lógicas dos processadores em um único chip complexo. O primeiro processador a fazer isso foi o Intel 4004, o pioneiro de todos os atuais produtos da Intel. Posteriormente, falaremos do 4004 e de seus descendentes.

Dois dos mais importantes componentes do processador são os registradores e o clock do sistema. Um registrador é uma área de armazenamento interno, uma unidade de memória; e uma vez que é parte do processador, ela tem o mais rápido tipo de memória de seu sistema. Sua função é manter os dados utilizados pelas instruções, na forma de padrões de bits (seqüências de valores 0 e 1), em lugares específicos onde o processador possa encontrá-los. A importância dos registradores é demonstrada pelo fato que os processadores são identificados, de um modo significativo, pelo tamanho do registro. O termo 'processador de 16 bits' se refere a um processador com registradores capazes de armazenar 16 bits de dados. Portanto, processadores de 32 bits têm capacidade de armazenar até 32 bits, e os processadores de 64 bits, obviamente, têm o dobro dessa capacidade. Quanto maior o número de bits em um registrador, mis informações podem ser processadas de uma só vez. 

O processador ocupa seu tempo reagindo a sinais, mas ele não pode reagir a todos eles ao mesmo tempo, ou haveria uma verdadeira confusão. Em vez disso, o processador espera até que seja dado o "ok" para receber um sinal; o tempo dessa espera é determinado pelo clock do sistema. A intervalos precisos, o clock do sistema envia impulsos elétricos como se "avisasse" o sistema que há instruções "esperando sua vez". Se houver uma instrução "esperando" e o processador não estiver ocupado, ele começará a processá-la. O número de instruções que podem ser processadas em um único ciclo de clock (um impulso do clock do sistema) depende da capacidade do processador em si.

Os primeiros microprocessadores podiam processar apenas uma instrução por ciclo, mas os processadores atuais aumentaram a velocidade consideravelmente através de dois métodos, denominados, pipelining execução superescalar. O pipelining permite que o processador leia uma nova instrução a partir da memória antes que ele tenha terminado o processamento da instrução atual. Em alguns processadores, várias instruções podem ser trabalhadas simultaneamente. O grau no qual os dados do pipeline podem fluir no processador é chamada de profundidade do pipeline. Até o modelo 80286, os processadores Intel tinham uma profundidade de apenas 1 (na verdade, não havia o pipeline), mas com a família 80486, a profundidade do pipeline saltou para 4; ou seja, até quatro instruções podem estar em diferentes estágio no pipeline. Os processadores Pentium têm uma profundidade de pipeline de 5, e a tecnologia MMX permite até uma maior profundidade.

Um processador superescalar tem mais de um pipeline, o que significa que ele pode executar mais de um conjunto de instruções de uma só vez. Teoricamente, isto pode duplicar o desempenho, mas normalmente, um dos pipelines continua esperando por uma instrução que vai para outro pipeline.