quarta-feira, 23 de abril de 2008

Processadores

Introdução


O processador é o principal componente de um computador, sendo muitas vezes chamado de "cérebro da máquina". Isso porque é o processador que executa, com auxílio de dispositivos como memórias e discos rígidos, todas as operações no computador. Quando você ouve uma música em MP3, acessa a internet, escreve um texto, tudo é feito pelo processador. Este é o primeiro de três artigos, que mostrarão os principais conceitos envolvendo o processador e explicarão um pouco de seu funcionamento.

O processador em si

O processador é um chip responsável por buscar e executar instruções presentes na memória do computador. Ele também é conhecido por CPU (Central Processing Unit - Unidade Central de Processamento). As instruções (processos) que ele executa consistem em operações matemáticas e lógicas, além de operações de busca, leitura e gravação de dados. Um conjunto organizado de instruções, forma um programa. Todas essas operações são executadas na lingaguem de máquina, cuja complexidade não será explicada aqui.

Barramentos

Para que o computador possa oferecer recursos e possibilidades diversas de uso ao usuário, é necessário a utilização de dispositivos adicionais, como placas de vídeo e de som, modem, disco rígido, teclado, etc. Estes componentes são conhecidos como Dispositivos de Entrada (teclado e mouse, por exemplo) e Saída (placa de vídeo e som, por exemplo). Em inglês, utiliza-se a sigla I/O, de Input/Output.

Foto de um processador Intel CeleronPara que o processador possa trabalhar com esses dispositivos, ele usa um barramento para se comunicar. Assim é possível que o processador envie informações (por exemplo, os dados para uma impressora, quando você pede para imprimir um arquivo) e receba (por exemplo, quando você digita algo no teclado). Esse barramento é conhecido como "barramento de dados" (ou data bus).

No entanto, quando o processador trabalha com a memória, ele faz uso de um "barramento de endereços" (também chamado de "clock externo"), pois através de um "endereço" é que o processador localizará os dados que precisa e que estão armazenados na memória do computador. É também por este barramento que o processador consegue determinar para qual dispositivo serão enviados os dados tratados. Seu valor é medido em Hz.

A foto ao lado, mostra a parte de baixo de um processador da linha Celeron, fabricado pelo Intel. Este, assim como a grande maioria dos processadores, possui terminais ou pinos de contato (vulgarmente chamados de "perninhas"). Cada um destes pinos possui uma função e trabalha com 1 bit por vez. Assim, quando se diz que o barramento de dados trabalha a 16 bits, isso quer dizer que, pelo menos teoricamente, o processador destina 16 "perninhas" para esta função. A mesma regra vale para o barramento de endereços, ou seja, este também trabalha com uma certa quantidade de pinos, correspondentes à quantidade de bits.

Sinais de controle

Os processadores atuais possuem vários pinos (no mínimo, 400). Somente analisando friamente a arquitetura de cada tipo de processador existente (tarefa iminente a engenheiros eletrônicos) é possível saber qual a função de cada um. Os processadores, no entanto, possui algumas funções-padrão, ou seja, encontráveis em praticamente todos os processadores, independente do fabricante. Estas são conhecidas como "sinais de controle" (ou "sinais digitais"), também correspondem a pinos no chip do processador e algumas delas são citadas abaixo:

MIO: sinal para indicar se a operação em questão é de acesso a memória ou de E/S;

RW: sinal para indicar se a operação em questão é de leitura ou gravação;

INT: sinal para que dispositivos externos possam interromper o processador para que ele efetue uma operação que não pode esperar. Por exemplo, quando o HD interrompe o processador para avisar o término de uma operação de leitura. Como existe somente um sinal INT, o processador opera em conjunto com um mecanismo denominado "Controlador de Interrupções" (que trabalha com as conhecidas IRQs). Como vários dispositivos podem requisitar o processador num mesmo instante, através deste controlador é possível realizar todas as operações de forma organizada;

NMI: sinal de interrupção especial, usado em emergências, onde a interrupção enviada por este sinal deve ser atendida prontamente. O NMI geralmente é usado informar erros relacionados a dados na memória;

INT A: sinal usado para que o processador informe que aceitou uma interrupção e que está aguardando que o dispositivo que a gerou passe as instruções;

VCC: entrada de corrente elétrica que alimenta os circuitos internos do processador (pode haver vários VCC no processador);

GND: sinal usado para controle de energia (como se fosse um fio-terra). Também pode ser encontrados vários deste sinal no processador;

RESET: sinal ligado ao botão RESET do gabinete do computador. Ao ser ativado, o processador pára o que está fazendo e inicia as operações novamente, como se o usuário tivesse acabado de ligar a máquina;

CLOCK: este recebe um sinal digital usado internamente para sincronizar todo o funcionamento do processador. Você verá mais sobre clock posteriormente, noutro artigo;

Foto de um processador K6 III, da AMDProcessador AMD K6 III



Bits internos e externos, endereçamento e clock

Bits internos

O número de bits é uma das principais características dos processadores e tem grande influência no desempenho. Os processadores mais comuns (Pentium II, III e 4, Athlon XP, Duron, etc) operam a 32 bits, enquanto chips antigos, como o 286, operavam com 16 bits. Repare que estes valores correspondem ao trabalho dos circuitos do processador, por isso são chamados de bits internos. Já existem no mercado processadores que trabalham a 64 bits por vez, como o Athlon 64, da AMD.

Quanto mais bits internos o processador trabalhar, mais rapidamente ele poderá fazer cálculos e processar dados em geral (conseqüentemente, ele será mais caro). Só para dar uma noção, um processador de 32 bits pode manipular números de valor até 4.294.967.296. Processadores de 16 bits não conseguem trabalhar com este valor, de forma que é necessário dividí-lo em valores menores e possíveis de serem manipulados com 16 bits. Assim, a tarefa leva várias etapas. Com 32 bits, a tarefa pode ser realizada numa etapa só.

Bits externos

Acima você viu que bits internos medem a capacidade do processador trabalhar internamente, ou seja, sozinho, "dentro dele mesmo". Mas como já dito na Parte 1 deste artigo, o processador sozinho não é nada e precisa se comunicar com os dispositivos periféricos. Como as instruções que o processador executa ficam armazenadas na memória, é preciso que ela seja acessada de forma rápida e precisa. Essa velocidade depende da quantidade de bits que o barramento de dados consegue manipular simultaneamente. Tais bits são chamados de bits externos. Esse valor aumenta com o avanço da tecnologia. Na época do auge do processador Pentium, por exemplo, esse barramento poderia ser encontrado em 32 e 64 bits.

Endereçamento

O endereçamento consiste na capacidade que o processador tem de acessar um número máximo de células da memória. Para acessar uma célula, o processador precisa saber o endereço dela. Cada célula armazena um byte. Assim, um processador com o barramento de dados com 16 bits, pode acessar duas células por vez. Isso porque um byte equivale a 8 bits e 16 dividido por 8 é igual a 2, portanto, duas células. Um processador com 32 bits pode acessar até 4 células. Para descobrir o valor máximo de memória que o processador consegue acessar, basta fazer um cálculo: elevar a 2 o número de bits do barramento de endereços. Por exemplo, 2 elevado a 32:

2 ³² = 4.294.967.296 bytes => 4 GB

A maioria dos processadores usam esse valor atualmente.

Clock interno e externo

Foto de processadores Intel Pentium 4Daqui que vem termos como processadores K6 II de 500 MHz, Pentium III de 800 MHz, Athlon XP de 2 GHz, etc. O clock é uma forma de indicar o número de instruções que podem ser executadas a cada segundo (ciclo). Sua medição é feita em Hz (sendo que KHz corresponde a mil ciclos, MHz corresponde a 1000 KHz e GHz corresponde a 1000 MHz). Assim, um processador Pentium II 800 MHz, indica que o mesmo pode realizar 800 milhões de ciclos por segundo. Algumas instruções podem precisar de vários ciclos para serem executadas, enquanto outras, uma ciclo só. A seguir, as diferenças entre clock interno e clock externo:

Clock interno: o clock interno indica a freqüência na qual o processador trabalha. Portanto, num Pentium 4 de 2,8 GHz, o "2,8 GHz" indica o clock interno. Este geralmente é obtido através de um multiplicador do clock externo. Por exemplo, se o clock externo for de 66 MHz, o multiplicador terá de ser de 3x para fazer com o que processador funcione a 200 MHz (66 x 3).

Clock externo: também conhecido como FSB (Front Side Bus), o clock externo, por sua vez, é o que indica a freqüência de trabalho do barramento (conhecido como barramento externo) de comunicação com a placa-mãe (na verdade, chipset, memória, etc). Por exemplo, o processador AMD Sempron 2200+ trabalha com clock externo de 333 MHz.

Nos processadores da linha Athlon 64, a AMD (fabricante) passou a adotar a tecnologia HyperTransport que, basicamente, usa dois barramentos para comunicação externa: um para acesso à memória e outro para acesso ao chipset. Na verdade, é este último que recebe o nome de HyperTransport. Até então, os processadores usavam apenas o barramento externo para os dois tipos de acesso. Com o HyperTransport, a AMD passou a indicar a velocidade de trabalho deste ao invés do clock externo.

Um detalhe de extrema importância, é que esses ciclos de clock diferem de fabricante para fabricante. Por isso, um Pentium 4 de 2.4 GHz (2400 MHz), não é igual ao Athlon XP de 2.4 GHz. Este último, na verdade, trabalha a 2.0 GHz, mas sua velocidade é semelhante ao de um Pentium 4 de 2.4 GHz. Por isso, a AMD informa a velocidade que é semelhante ao do processador do fabricante concorrente. Para obter mais detalhes sobre isso, clique aqui.


Foto de um processador AMD Athlon XP



Memória cache e Co-processador aritmético

Memória cache

Os processadores, evidentemente, sofreram grandes aperfeiçoamentos ao longo dos anos. No entanto, chegou-se a um ponto em que estes evoluíram de forma tão rápida que o acesso à memória do computador ficou comprometida, pois apesar de também ter sofrido boas mudanças, a memória é mais lenta para ser acessada, fazendo com que o processador não conseguisse trabalhar com toda sua velocidade, devido a sua dependência da velocidade de acesso aos dados da memória. Esse problema ficou notável a partir do ano de 1990, quando os processadores passaram a trabalhar acima de 25 MHz.

Uma solução para este problema seria usar memórias rápidas, como a SRAM, mas estas eram muito caras e inviabilizariam a compra de computadores. Além disso, tais memórias eram complexas e grandes, o que exigiria mais espaço interno no gabinete da máquina. Mesmo assim, a idéia não foi totalmente descartada, pois serviu de base para uma solução eficiente: a memória cache.

A memória cache consiste numa pequena quantidade de memória SRAM, incluída no chip do processador. Quando este precisa ler dados na memória RAM, um circuito especial, chamado de controlador de Cache, transfere os dados mais requisitados da RAM para a memória cache. Assim, no próximo acesso do processador, este consultará a memória cache, que é bem mais rápida, permitindo o processamento de dados de maneira mais eficiente. Enquanto o processador lê os dados na cache, o controlador acessa mais informações na RAM, transferindo-as para a memória cache. De grosso modo, pode-se dizer que a cache fica entre o processador e a memória RAM. Veja a ilustração abaixo:

Esquema: chace entre memória e processador

Com o uso da memória cache, na maior parte do tempo, o processador encontra nela os dados que precisa. Prova disso, é que se a cache de um processador atual for desabilitada, o computador pode ter queda de desempenho de mais de 30%.

Tipos de memória cache

Atualmente, existem 3 tipos de memória cache, que serão mostrados a seguir:

Cache L1 (Leve 1 - Nível 1 ou cache interno): trata-se de um tipo de cache em uso desde o processador 486. É chamado de cache interno porque se localiza dentro do procesador. O cache L1 é tão importante para o processador, que este, mesmo tendo clock inferior, pode ser mais rápido que um processador de clock superior, mas sem cache. O tamanho deste cache pode ir de 16 KB (como o Pentium) a 512 KB (como o Pentium 4). Os processadores 486 tinham cache de 8 KB.

Cache L2 (Level 2 - Nível 2 ou cache externo): o cache L1 não era totalmente perfeito, pois tinha tamanho pequeno e apresentava alguns erros, que obrigavam o processador a buscar os dados na memória RAM. Um solução foi a implantação de uma memória cache fora do processador. Eis a cache L2, que para ser usada, necessita de um controlador, que geralmente é imbutido no chipset da placa-mãe. É este chip que também determina o tamanho máximo do cache L2. O tamanhos mais comuns são os de 256 KB e 512 KB, mas é perfeitamente possível a existência de caches maiores. Um fato importante a ser citado, é que diversos processadores trazem o cache L2 embutido dentro de si, fazendo com que as terminologias Interno e Externo perderem o sentido.

Cache L3 (Level 3 - Nível 3): trata-se de um tipo incomum, usado pelo processador AMD K6-III. Este possui o cache L2 embutido em si, de forma que o cache L2 existente na placa-mãe pudesse ser usado como uma terceira cache. Daí o nome L3. Tal fato fez do K6-III um processador muito rápido em sua época.

Co-processador aritmético

Dois dos primeiros processadores existentes, o 8086 e 8088, poderiam trabalhar em conjunto com um processador especial, chamado 8087. A função deste processador era a de realizar cálculos matemáticos complexos. O processador, quando muito, passaria então a executar cálculos mais simples e a se preocupar com outras instruções. O 8087 é o que conhecemos hoje como "Co-processador aritmético" ou "Co-processador matemático". Seu nome em inglês é FPU (Floating Point Unit - Unidade de de Ponto Flutuante).

Esse recurso, hoje em dia, é embutido no processador, e seu uso é considerado indispensável, pois ele é projetado para realizar os mais diversos tipos de cálculo. Só para dar uma noção da importância do co-processador, uma operação matemática, que no processador necessita de várias instruções para ser concluída, pode ser realizada em uma única instrução pelo co-processador.

Processador Pentium IIFoto do processador Intel Pentium II