quarta-feira, 26 de dezembro de 2012

Processadores 01: clock, bits, memória cache e múltiplos núcleos


Introdução

Os processadores (ou CPU, de Central Processing Unit  - Unidade Central de Processamento) 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. Por este motivo, são também referenciados como "cérebros" destas máquinas.
Apesar de não haver um número muito grande de fabricantes - a maior parte do mercado está concentrada nas mãos da Intel e da AMD, com companhias comoSamsung e Qualcomm  se destacando no segmento móvel -, existe uma grande variedade de processadores, para os mais variados fins.
Apesar disso e das diferenças existentes entre cada modelo, a maioria dos chips compartilha determinadas características. Com base nisso, o InfoWester apresenta este texto de introdução aos processadores, onde você conhecerá o significado de conceitos como clock, bits internos, memória cache, uso de dois ou mais núcleos, entre outros.
Links diretos:

O que é processador?

O processador (CPU) é um chip normalmente feito de silício que responde pela execução das tarefas cabíveis a um computador. Para compreender 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 telas, teclados, mouses, impressoras, scanners, discos rígidos, etc. Neste esquema, o processador exerce a função principal, já que cabe a ele o acesso e a utilização da memória e dos dispositivos de entrada e saída para a execução das atividades.
Para entender melhor, suponha que você queira que o seu computador execute um programa (software) qualquer. Em poucas palavras, um programa consiste em uma série de instruções que o processador deve executar para que a tarefa solicitada seja realizada. Para isso, a CPU transfere todos os dados necessários à execução de um dispositivo de entrada e/ou saída - como um disco rígido - para amemória. A partir daí, todo o trabalho é realizado e o que será feito do resultado depende da finalidade programa - o processador pode ser orientado a enviar as informações obtidas para o HD novamente ou para uma impressora, por exemplo.

Barramentos

A imagem a seguir ilustra um esquema hipotético (e bastante abstrato) de comunicação entre o processador, a memória e o conjunto de dispositivos de entrada e saída, representando o funcionamento básico do computador. Note que a conexão entre estes itens é indicada por setas. Isso é feito para que você possa entender a função dos barramentos (bus).
Barramentos em um processador
Barramentos em um processador
De maneira geral, os barramentos são 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 o conjunto de dispositivos de entrada e saída, há três 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).
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 este meio é 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 as informações 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, a CPU obtém a localização deste 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. O dado é então localizado e inserido no barramento de dados, por onde o processador, finalmente, o lê.

Clock interno

Em um computador, todas as atividades necessitam de sincronização. O clock interno (ou apenas clock) serve justamente a este fim, ou seja, basicamente, atua como um sinal para sincronismo. 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 frequê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 ele é 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 referenciar 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 conta com, por exemplo, uma frequência de 800 MHz, significa que pode trabalhar com 800 milhões de ciclos por segundo.
Neste ponto, você provavelmente deve ter entendido que é daqui que vem expressões como "processador Intel Core i5 de 2,8 GHz", por exemplo.

FSB (Front Side Bus)

Você já sabe: as frequências com as quais os processadores trabalham são conhecidas como clock interno. 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 o chipset e com a memória RAM - mais precisamente, com o controlador da memória, que pode estar na ponte norte (northbridge) do chipset - utilizando a mesma velocidade do clock interno. Assim, quando esta comunicação é feita, o clock externo, de frequência mais baixa, é que entra em ação.
Note que, para obter o clock interno, o processador faz uso de um procedimento de 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 este 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.
Front Side Bus
Front Side Bus
É 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 - 3,2 GHz, para exemplificar -, não significa que ambos trabalham com a mesma velocidade. Cada processador tem um projeto distinto e conta com características que determinam o quão rápido podem ser. Assim, um determinado processador pode levar, por exemplo, 2 ciclos de clock para executar uma instrução. Em outro processador, esta mesma instrução pode requerer 3 ciclos.
Vale ressaltar também que muitos processadores - especialmente os mais recentes - transferem 2 ou mais dados por ciclo de clock, dando a entender que um chip que realiza, por exemplo, transferência de 2 dados por ciclo e que trabalha com clock externo de 133 MHz, o faz à 266 MHz. Por este e outros motivos, é um erro considerar apenas o clock interno como parâmetro de comparação entre processadores diferentes.

QuickPath Interconnect (QPI) e HyperTransport

Dependendo do processador, outra tecnologia pode ser utilizada no lugar do FSB. Um exemplo é o QuickPath Interconnect (QPI), utilizado nos chips mais recentes da Intel, e o HyperTransport, aplicado nas CPUs da AMD.
Estas mudanças de tecnologias são necessárias porque, com o passar do tempo, a busca por melhor desempenho faz com que os processadores sofram alterações consideráveis em sua arquitetura.
Uma dessas mudanças diz respeito ao já mencionado controlador de memória, circuito responsável por "intermediar" o uso da memória RAM pelo processador. Nas CPUs mais atuais da Intel e da AMD, o controlador está integrado ao próprio chip e não mais ao chipset localizado na placa-mãe.
Com esta integração, os processadores passam a ter um barramento direto à memória. O QPI e o HyperTransport acabam então ficando livres para fazer a comunicação com os recursos que ainda são intermediados pelo chipset, como dispositivos de entrada e saída.
O interessante é que tanto o QuickPath quanto o HyperTransport trabalham com duas vias de comunicação, de forma que o processador possa transmitir e receber dados ao mesmo tempo, já que cada atividade é direcionada a uma via, beneficiando o aspecto do desempenho. No FSB isso não acontece, porque há apenas uma única via para a comunicação.
QPI / HyperTransport
QPI / HyperTransport
Estas tecnologias sofrem atualizações quando novas famílias de processadores são lançadas, fazendo que com a sua frequência (clock) e a largura de banda (quantidade de bits que podem ser transmitidas por vez), por exemplo, tenham limites maiores em cada nova versão.

Bits dos processadores

O número de bits é outra importante característica dos processadores e, naturalmente, tem grande influência no desempenho deste dispositivo. Processadores mais antigos, como o 286, trabalhavam com 16 bits. Durante muito tempo, 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 i7, da Intel, ou Phenom, da AMD.
Em resumo, quanto mais bits internos o processador possuir, mais rapidamente ele poderá fazer cálculos e processar dados em geral, dependendo 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 este processador tiver que realizar uma operação com um número de valor 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 este valor é superior a 100.000, a operação pode ser realizada em uma única vez.
Você pode saber mais sobre processadores de 64 bits neste texto.

Memória cache

Os processadores passam por aperfeiçoamentos constantes, o que os tornam cada vez mais rápidos e eficientes, como você já sabe. 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 este problema seria equipar os computadores com um tipo de memória mais sofisticado, como a SRAM (Static RAM). Esta se diferencia 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 ideia 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 na memória cache, o processador a utiliza, do contrário, irá buscá-lo na memória RAM. Perceba que, com isso, 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 é, geralmente mais simples, costuma ser ligeiramente maior em termos de capacidade, mas também um pouco mais lento. O cache L2 passou a ser utilizado quando o cache L1 se mostrou insuficiente.
Antigamente, um tipo se distinguia do outro pelo fato de a 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 encontrar modelos que contam com um terceiro nível de cache (L3). O processador Intel Core i7 3770, por exemplo, possui caches L1 e L2 relativamente pequenos para cada núcleo (o aspecto dos múltiplos núcleos é explicado no próximo tópico): 64 KB e 256 KB, respectivamente. No entanto, o cache L3 é expressivamente maior - 8 MB - e, ao mesmo tempo, compartilhado por todos os seus quatros núcleos.
Processador Core i7 3770 - Imagem por Intel
Processador Core i7 3770 - Imagem por Intel
Mas o cache L3 não é, necessariamente, novidade: a AMD chegou a ter um processador em 1999 chamado K6-III que contava com cache L1 e L2 internamente, característica incomum à época, já que naquele tempo o cache L2 se localizava na placa-mãe, como já explicado. Com isso, esta última acabou assumindo o papel de cache L3.

Processadores com dois ou mais núcleos

Talvez você não saiba, mas é possível encontrar no mercado placas-mãe que contam com dois ou mais slots (encaixes) para processadores. A maioria esmagadora destas placas são usadas em computadores especiais, como servidores e workstations, equipamentos direcionados a aplicações que exigem muito processamento. Para atividades domésticas e de escritório, no entanto, computadores com dois ou mais processadores são inviáveis devido aos elevados custos que arquiteturas do tipo possuem, razão pela qual é conveniente a estes segmentos o uso de 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 principais motivos para isso. Uma delas é a questão da temperatura: teoricamente, quanto mais megahertz um processador tiver, mais calor o dispositivo gerará.
Uma das formas encontradas pelos fabricantes para lidar com esta limitação consiste em fabricar e disponibilizar processadores com dois núcleos (dual core), quatro núcleos (quad core) ou mais (multi core). Mas, o que isso significa?
CPUs deste tipo contam com dois ou mais núcleos distintos no mesmo circuito integrado, como se houvesse dois (ou mais) processadores dentro de um chip. Assim, o dispositivo pode lidar com dois processos por vez (ou mais), um para cada núcleo, melhorando o desempenho do computador como um todo.
Note que, em um chip de único núcleo (single core), 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 acontece de maneira tão rápida, que se tem a impressão de processamento simultâneo.
Processadores multi core oferecem várias vantagens: podem realizar duas ou mais tarefas ao mesmo; um núcleo pode trabalhar com uma velocidade menor que o outro, reduzindo a emissão de calor; ambos podem compartilhar memória cache; entre outros.
A ideia deu tão certo que, hoje, é possível encontrar processadores com dois ou mais núcleos inclusive em dispositivos móveis, como tablets e smartphones. Na verdade, a situação se inverteu em relação aos anos anteriores: hoje, é mais comum encontrar no mercado chips multi core do que processadores single core.
É interessante reparar que os núcleos de um processador não precisam ser utilizados todos ao mesmo tempo. Além disso, apesar de serem tecnicamente iguais, é possível fazer com que determinados núcleos funcionem de maneira alterada em relação aos outros.
Um exemplo disso é a tecnologia Turbo Boost, da Intel: se um processador quad core, por exemplo, tiver dois núcleos ociosos, os demais podem entrar automaticamente em um modo "turbo" para que suas frequências sejam aumentadas, acelerando a execução do processo em que trabalham.
A imagem abaixo exibe uma montagem que ilustra o interior de um processador Intel Core 2 Extreme Quad Core (núcleos destacado na cor amarela):
Processador Core 2 Extreme Quad Core - Imagem original por Intel
Processador Core 2 Extreme Quad Core - Imagem original por Intel

TDP (Termal Design Power)

Se você já olhou um desktop ou um notebook aberto, por exemplo, pode ter reparado que, sobre o processador, há um dispositivo de metal chamado "dissipador" que muitas vezes é acompanhado de uma espécie ventilador (cooler).
Estes dispositivos são utilizados para amenizar o intenso calor gerado pela potência, isto é, pelo trabalho do processador - se este aspecto não for controlado, o computador pode apresentar instabilidade e até mesmo sofrer danos.
Acontece que cada modelo de processador possui níveis diferentes de potência, principalmente porque esta característica está diretamente ligada ao consumo de energia: pelo menos teoricamente, quanto mais eletricidade for utilizada, maior será o calor resultante.
É aí que o TDP (Thermal Design Power - algo como Energia Térmica de Projeto) entra em cena: trata-se de uma medida em Watts (W) criada para indicar estimativas de níveis máximos de energia que um processador pode requerer e, portanto, dissipar em forma de calor. Assim, o usuário consegue saber quanto determinada CPU exige em relação à potência e fabricantes podem produzir coolers, dissipadores e outros equipamentos de refrigeração adequados a este chip.
Obviamente, quanto menor o TDP de um processador, melhor.

ACP (Average CPU Power)

Criada pela AMD, o ACP (Average CPU Power - algo como Potência Média da CPU) é uma medida bastante semelhante ao TDP, mas é calculada de maneira ligeiramente diferente, de forma a indicar níveis de potência mais próximos do consumo real, em vez de estimativas máximas.
Os valores de ACP também são indicados em Watts. Assim como no TDP, quanto menor o ACP, melhor.

APU (Accelerated Processing Units)

Entre as inovações mais recentes no segmento de processadores está a APU (Accelerated Processing Unit - Unidade de Processamento Acelerado), nome criado para identificar chips que unem as funções de CPU e GPU. Sim, é como se houvesse dois produtos em um só: processador e chip gráfico da placa de vídeo.
Há várias vantagens no uso de uma APU: menor consumo de energia, maior facilidade para incluir CPU e GPU em dispositivos portáteis, possibilidade de uso da APU em conjunto com uma placa de vídeo para aumentar o poder gráfico do computador, entre outros.
Como a APU não tem memória dedicada, tal como as placas de vídeo, é necessário fazer uso da memória RAM do computador. A princípio, esta característica compromete o desempenho, mas o fato de o controlador de memória também estar integrado à CPU, tal como já mencionado, tende a compensar esta peculiaridade. Assim, é possível inclusive o uso de uma GPU mais avançada na APU, apesar de os primeiro modelos serem bastante "básicos" em relação a este aspecto.
É válido frisar que o nome APU é amplamente utilizado pela AMD, mas a Intel, apesar de evitar esta denominação, também possui chips do tipo, como mostra a seguinte imagem:
Visão interna (die) de um processador da família Ivy Bridge - Imagem por Intel
Visão interna (die) de um processador da família Ivy Bridge. Observe a posição da GPU e dos demais elementos do chip - Imagem por Intel

Nenhum comentário:

Postar um comentário