terça-feira, 2 de junho de 2009

Processadores - Parte 1: clock, bits, memória cache e múltiplos núcleos

Introdução

Os processadores (ou CPUs, de Central Processing Unit) são chips responsáveis pela execução de cálculos, decisões lógicas e instruções que resultam em todas as tarefas que um computador pode fazer e, por esse motivo, são também referenciados como "cérebros" dessas máquinas. Embora haja poucos fabricantes (essencialmente, Intel, AMD e VIA), o mercado conta com uma grande variedade de processadores. Apesar disso e das diferenças existentes entre cada modelo, todos compartilham de alguns conceitos e características. Com base nisso, o InfoWester apresenta este artigo de introdução aos processadores, onde você conhecerá a função e o significado de clock, bits internos, memória cache e chips com dois ou mais núcleos.


O trabalho de um processador

O processador é um chip de silício responsável pela execução das tarefas cabíveis a um computador. Para entender como um processador trabalha, é conveniente dividirmos um computador em três partes: processador, memória e um conjunto de dispositivos de entrada e saída (ou I/O, de Input/Output). Neste último, encontra-se qualquer item responsável pela entrada ou saída de dados no computador, como monitores de vídeo, teclados, mouses, impressoras, scanners, discos rígidos, etc. Nesse esquema, obviamente, o processador exerce a função principal, já que a ele cabe o acesso e a utilização da memória e dos dispositivos de entrada e saída para a execução de suas atividades.

Para entender melhor, suponha que você queira que o seu computador execute um programa qualquer. Um programa consiste em uma série de instruções que o processador deverá executar para que a tarefa solicitada seja realizada. Para isso, o processador transfere todos os dados necessários à execução, de um dispositivo de entrada e/ou saída - como um disco rígido - para a memória. A partir daí, todo o trabalho é realizado e o que vai ser feito do resultado depende do programa. O processador pode ser orientado a enviar as informações processadas para o HD novamente ou para uma impressora, por exemplo, tudo depende das instruções com as quais lidar.


Barramentos

A imagem a seguir ilustra a comunicação entre o processador, a memória e o conjunto de dispositivos de entrada e saída. Note que a conexão entre esses itens é indicada por setas. Isso é feito para que você possa entender a função dos barramentos. De maneira geral, estes são os responsáveis pela interligação e comunicação dos dispositivos em um computador. Note que, para o processador se comunicar com a memória e com o conjunto de dispositivos de entrada e saída, há 3 setas, isto é, barramentos: um se chama barramento de endereços (address bus); outro, barramento de dados (data bus); o terceiro, barramento de controle (control bus).

Barramentos - processadores

O barramento de endereços, basicamente, indica de onde os dados a serem processados devem ser retirados ou para onde devem ser enviados. A comunicação por esse barramento é unidirecional, razão pela qual só há seta em uma das extremidades da linha no gráfico que representa a sua comunicação. Como o nome deixa claro, é pelo barramento de dados que os dados transitam. Por sua vez, o barramento de controle faz a sincronização das referidas atividades, habilitando ou desabilitando o fluxo de dados, por exemplo.

Para você compreender melhor, imagine que o processador necessita de um dado presente na memória. Pelo barramento de endereços, ele obtém a localização desse dado dentro da memória. Como precisa apenas acessar o dado, o processador indica pelo barramento de controle que esta é uma operação de leitura na memória. O dado é então localizado e inserido no barramento de dados, por onde o processador, finalmente, o lê.


Clock interno e clock externo

Em um computador, todas as atividades necessitam de sincronização. O clock serve justamente para isso, ou seja, basicamente, atua como de sinal de sincronização. Quando os dispositivos do computador recebem o sinal de executar suas atividades, dá-se a esse acontecimento o nome de "pulso de clock". Em cada pulso, os dispositivos executam suas tarefas, param e vão para o próximo ciclo de clock.

A medição do clock é feita em hertz (Hz), a unidade padrão de medidas de freqüência, que indica o número de oscilações ou ciclos que ocorre dentro de uma determinada medida de tempo, no caso, segundos. Assim, se um processador trabalha à 800 Hz, por exemplo, significa que é capaz de lidar com 800 operações de ciclos de clock por segundo. Repare que, para fins práticos, a palavra kilohertz (KHz) é utilizada para indicar 1000 Hz, assim como o termo megahertz (MHz) é usado para indicar 1000 KHz (ou 1 milhão de hertz). De igual forma, gigahertz (GHz) é a denominação usada quando se tem 1000 MHz, e assim por diante. Com isso, se um processador tem, por exemplo, uma freqüência de 800 MHz, significa que pode trabalhar com 800 milhões de ciclos por segundo.

As freqüências com as quais os processadores trabalham são chamadas também de clock interno. Neste ponto, você certamente já deve ter entendido que é daí que vem expressões como Pentium 4 de 3,2 GHz, por exemplo. Mas, os processadores também contam com o que chamamos de clock externo ou Front Side Bus (FSB) ou, ainda, barramento frontal.

O FSB existe porque, devido a limitações físicas, os processadores não podem se comunicar com a memória (mais precisamente, como a ponte norte - ou northbridge - do chipset, que contém o controlador da memória) usando a mesma velocidade do clock interno. Assim, quando essa comunicação é feita, o clock externo, de freqüência mais baixa, é que é usado. Note que, para obter o clock interno, o processador usa uma multiplicação do clock externo. Para entender melhor, suponha que um determinado processador tenha clock externo de 100 MHz. Como o seu fabricante indica que esse chip trabalha à 1,6 GHz (ou seja, tem clock interno de 1,6 GHz), seu clock externo é multiplicado por 16: 100 x 16 = 1600 MHz ou 1,6 GHz.

É importante deixar claro, no entanto, que se dois processadores diferentes - um da Intel e outro da AMD, por exemplo - tiverem clock interno de mesmo valor - 2,8 GHz, para exemplificar -, não significa que ambos trabalham à mesma velocidade. Cada processador tem um projeto distinto e conta com características que determinam o quão rápido é. Assim, um determinado processador pode levar, por exemplo, 2 ciclos de clock para executar uma instrução. Em outro processador, essa mesma instrução pode requerer 3 ciclos. Além disso, muitos processadores - especialmente os mais recentes - transferem 2 ou mais dados por ciclo de clock, dando a entender que um processador que faz, por exemplo, transferência de 2 dados por ciclo e que trabalha com clock externo de 133 MHz, o faz à 266 MHz. Por esses e outros motivos, é um erro considerar apenas o clock interno como parâmetro de comparação entre processadores diferentes.


Bits dos processadores

O número de bits é outra importante característica dos processadores e, naturalmente, tem grande influência no desempenho desse dispositivo. Processadores mais antigos, como o 286, trabalhavam com 16 bits. Durante muito, no entanto, processadores que trabalham com 32 bits foram muitos comuns, como as linhas Pentium, Pentium II, Pentium III e Pentium 4 da Intel, ou Athlon XP e Duron da AMD. Alguns modelos de 32 bits ainda são encontrados no mercado, todavia, o padrão atual são os processadores de 64 bits, como os da linha Core 2 Duo, da Intel, ou Athlon 64, da AMD.

Em resumo, quanto mais bits internos o processador trabalhar, mais rapidamente ele poderá fazer cálculos e processar dados em geral, depedendo da execução a ser feita. Isso acontece porque os bits dos processadores representam a quantidade de dados que os circuitos desses dispositivos conseguem trabalhar por vez. Um processador com 16 bits, por exemplo, pode manipular um número de valor até 65.535. Se esse processador tiver que realizar uma operação com um número de 100.000, terá que fazer a operação em duas partes. No entanto, se um chip trabalha a 32 bits, ele pode manipular números de valor até 4.294.967.295 em uma única operação. Como esse valor é superior a 100.000, a operação será possível em uma única vez.

Em relação aos processadores de 64 bits, saiba mais sobre eles neste artigo.


Memória cache

Os processadores passam por aperfeiçoamentos constantes, o que os tornam cada vez mais rápidos e eficientes. No entanto, o mesmo não se pode dizer das tecnologias de memória RAM. Embora estas também passem por constantes melhorias, não conseguem acompanhar os processadores em termos de velocidade. Assim sendo, de nada adianta ter um processador rápido se este tem o seu desempenho comprometido por causa da "lentidão" da memória.

Uma solução para esse problema seria equipar os computadores com um tipo de memória muito mais rápida, a SRAM (Static RAM). Estas se diferenciam das memórias convencionais DRAM (Dynamic RAM) por serem muito rápidas, por outro lado, são muito mais caras e não contam com o mesmo nível de miniaturização, sendo, portanto, inviáveis. Apesar disso, a idéia não foi totalmente descartada, pois foi adaptada para o que conhecemos como memória cache.

A memória cache consiste em uma pequena quantidade de memória SRAM embutida no processador. Quando este precisa ler dados na memória RAM, um circuito especial chamado "controlador de cache" transfere blocos de dados muito utilizados 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. Se o dado estiver no cache, o processador a utiliza, do contrário, irá buscá-lo na memória RAM, etapa essa que é mais lenta. Dessa forma, a memória cache atua como um intermediário, isto é, faz com que o processador nem sempre necessite chegar à memória RAM para acessar os dados dos quais necessita. O trabalho da memória cache é tão importante que, sem ela, o desempenho de um processador pode ser seriamente comprometido.

Os processadores trabalham, basicamente, com dois tipos de cache: cache L1 (Level 1 - Nível 1) e cache L2 (Level 2 - Nível 2). Este último é ligeiramente maior em termos de capacidade e passou a ser utilizado quando o cache L1 se mostrou insuficiente. Antigamente, um tipo distinguia do outro pelo fato da memória cache L1 estar localizada junto ao núcleo do processador, enquanto que a cache L2 ficava localizada na placa-mãe. Atualmente, ambos os tipos ficam localizados dentro do chip do processador, sendo que, em muitos casos, a cache L1 é dividida em duas partes: "L1 para dados" e "L1 para instruções".

Vale ressaltar que, dependendo da arquitetura do processador, é possível o surgimento de modelos que tenham um terceiro nível de cache (L3). Mas, isso não é novidade: a AMD chegou a ter um processador em 1999 chamado K6-III que contava com cache L1 e L2 internamente, algo incomum à época, já que naquele tempo o cache L2 se localizava na placa-mãe. Com isso, esta última acabou assumindo o papel de cache L3.

A foto abaixo mostra um processador AMD Athlon, com 64 KB de cache L1 para instruções, 64 KB de cache L1 para dados e 512 KB de cache L2. Note que a capacidade de cada tipo de cache varia conforme o modelo do processador.

AMD Athlon 64


Processadores com dois ou mais núcleos

Há tempos que é possível encontrar no mercado placas-mãe que contam com dois ou mais slots para processadores. A maioria esmagadora dessas placas são usadas em computadores especiais, como servidores e workstations, que são utilizados em aplicações que exigem grandes recursos de processamento. Para aplicações domésticas e de escritório, no entanto, computadores com dois ou mais processadores são inviáveis devido aos elevados custos que esses equipamentos representam, razão pela qual é conveniente a esses nichos de mercado contar com processadores cada vez mais rápidos.

Até um passado não muito distante, o usuário tinha noção do quão rápido eram os processadores de acordo com a taxa de seu clock interno. O problema é que, quando um determinado valor de clock é alcançado, torna-se mais difícil desenvolver outro chip com clock maior. Limitações físicas e tecnológicas são os motivos para isso. Uma delas é a questão da temperatura: quanto mais megahertz um processador tiver, mais calor ele gerará.

Uma das formas encontradas pelos fabricantes para lidar com essa limitação é fabricar e disponibilizar processadores com dois núcleos (dual-core) ou mais (multi-core). Mas, o que isso significa? Processadores desse tipo contam com dois ou mais núcleos distintos no mesmo circuito integrado, como se houvesse dois processadores dentro de um. Dessa forma, o processador pode lidar com dois processos por vez, um para cada núcleo, melhorando o desempenho do computador como um todo. Note que, em um chip de único núcleo, o usuário pode ter a impressão de que vários processos são executados simultaneamente, já que a máquina está quase sempre executando mais de uma aplicação ao mesmo tempo. Na verdade, o que acontece é que o processador dedica determinados intervalos de tempo a cada processo e isso ocorre de maneira tão rápida, que se tem a impressão de processamento simultâneo.

Pelo menos teoricamente, é possível fabricar processadores com dezenas de núcleos. No momento em que este artigo era escrito no InfoWester, era possível encontrar processadores com 2, 3 e 4 núcleos (dual-core, triple-clore e quad-core, respectivamente). É importante ressaltar que ter processadores com dois ou mais núcleos não implica, necessariamente, em computadores que são proporcionalmente mais rápidos. Uma série de fatores influenciam nesse quesito, como as velocidades limitadas das memórias e dos dispositivos de entrada e saída, e as formas como os programas são desenvolvidos.

Na imagem abaixo, uma montagem que ilustra o interior de um processador Intel Core 2 Extreme Quad-Core (com 4 núcleos):

Intel Core 2 Extreme Quad-Cor

Finalizando

O processador é um componente de extrema complexidade, o que deixa claro que o assunto pode ser estudado com muito mais profundidade. No entanto, este artigo apresentou características básicas que permitem ao leitor ter uma noção inicial de como esses chips trabalham e o que significam parte dos tantos nomes que os envolvem. Se você deseja entender o assunto de modo mais amplo, é recomendável iniciar estudos na área de arquitetura de computadores, que fornece conceitos que ajudam a entender o funcionamento não só do processador, mas do computador como um todo.

Nenhum comentário:

Postar um comentário

Postar um comentário