Pentium

Assim como o 486, o Pentium é um processador de 32 bits, capaz de acessar até 4 GB de memória RAM. Mas, novamente o processador trouxe várias melhorias que o tornaram muito mais rápido que a geração anterior. Não é à toa que o primeiro Pentium operava a apenas 60 MHz, e era, na época do lançamento, muito mais caro que um 486DX4-100. O Pentium é de 65 a 100% mais rápido que um 486 do mesmo clock. Como o processador aritmético também foi completamente remodelado, o Pentium acaba sendo ainda mais rápido em aplicativos que demandam um grande número de cálculos.

Os processadores Pentium existiram em versões de 60 a 200 MHz, sempre utilizando multiplicação de clock (com exceção apenas para as versões de 60 e 66 MHz):

Processador

Placa Mãe

Multiplicador

Pentium 60, 90, 120, 150 e 180 MHz

60 MHz

Respectivamente 1x, 1.5x, 2x, 2.5x e 3x

Pentium 66, 100, 133, 166 e 200 MHz

66 MHz

Respectivamente 1x, 1.5x, 2x, 2.5x e 3x

Pentium 75 MHz

50 MHz

1.5 x

Pentium 200 MHz

66 MHz

3 x

Como na época dos micros 486, as placas mãe para processadores Pentium (com excessão de placas muito antigas) suportam várias frequências de barramento e vários multiplicadores distintos. Na maioria dos casos é possível configurar a placa mãe para utilizar qualquer processador da família.

Melhorias no Cache L1: A primeira mudança trazida pelo Pentium foi o aumento da quantidade de cache L1, que passou a ser de 16 KB, o dobro do 486. Além do aumento da capacidade, foram implementados três novos recursos, que tornaram o cache ainda mais eficiente:

A primeira medida foi a divisão do cache em dois blocos de 8 KB, um dedicado a armazenar dados e outro dedicado a armazenar instruções. Esta divisão permite que tanto as instruções a serem executadas pelo processador (comparação, multiplicação, soma, decisão, etc.) quanto os dados a serem processados, possam ser acessados simultaneamente no cache, aumentando sua eficiência.

Se, por exemplo, um programa qualquer ordena que o processador leia um número gravado na memória e verifique se ele é maior ou menor que 10, temos duas instruções (ler o número e compará-lo com o número 10) e duas variáveis (o número 10 e o número a ser lido). Com um cache unificado, como no 486, primeiro seriam lidas as instruções e em seguida as variáveis. No cache dividido do Pentium, ambos podem ser lidos no mesmo ciclo de clock, poupando tempo.

Outra modificação foi a ampliação do barramento de dados entre o processador e o cache. Enquanto no 486 podem ser lidos ou gravados até 128 bits de dados por ciclo de clock, no Pentium podem ser lidos ou gravados até 256 bits no cache de instruções e mais 256 no cache de dados. Como ambos os caches podem ser acessados simultaneamente, temos um barramento total de 512 bits, o quádruplo do que tínhamos no 486! Este barramento mais largo permite que quantidades maiores de dados possam ser lidos a partir do cache no mesmo espaço de tempo, permitindo ao cache acompanhar a maior velocidade de processamento do Pentium.

A última medida foi a adoção de um cache Write Back, que é capaz de cachear tanto as operações de leitura de dados na memória RAM, quanto as operações de escrita. O cache usado no 486, cacheia apenas as operações de leitura, o que permite ao processador ganhar tempo ao ler dados, mas não ajuda na hora de gravar dados, quando são perdidos vários ciclos até que a memória RAM torne-se disponível.

Previsão de desvio dinâmico: Após concluída uma instrução do programa, para que o processador não perca um único ciclo de clock aguardando que o cache ou a memória RAM enviem a próxima instrução a ser processada, foi incluído no Pentium um buffer de pré extração. Este pequeno circuito armazena as próximas instruções a serem processadas, formando uma espécie de fila. Na verdade, o buffer de pré extração funciona como uma espécie de cache L0, ficando entre o processador e o cache L1.

A maior utilidade deste buffer é prever o resultado de operações de tomada de decisão. Se chega ao processador uma instrução como “Se X > Y então Z = K, senão Z = Q” o buffer irá carregar tanto a instrução seguinte para X < Y quanto para X > Y, fazendo com que seja qual for o resultado da operação anterior, a próxima instrução já esteja carregada no buffer.

O buffer de pré extração também ajuda a memória cache a carregar antecipadamente os dados que o processador possa precisar. No caso do exemplo anterior, seriam carregados na memória cache tanto o valor de K quanto de Q.

Coprocessador Aritmético mais rápido: O coprocessador aritmético do Pentium foi completamente remodelado. Foram alteradas algumas das instruções, que passaram a ser executadas muito mais rapidamente e, como o processador principal, o coprocessador do Pentium também passou a utilizar um pipeline para aumentar a velocidade de execução das instruções.

Somadas com as brutais melhorias na arquitetura, o coprocessador do Pentium tornou-se cerca de 5 vezes mais rápido do que o utilizado no 486, tornando o processador muito mais rápido em aplicativos que demandem um grande número de cálculos.

Arquitetura Superescalar: Mais um aperfeiçoamento do Pentium e um dos principais motivos de seu maior desempenho, é a adoção de uma arquitetura superescalar.

Internamente, o Pentium trabalha como dois processadores de 32 bits distintos (chamados de canaleta U e canaleta V), sendo capaz de processar duas instruções por ciclo de clock (uma em cada processador). Cada processador possui acesso total ao cache, à memória RAM, e aos demais componentes do micro. Foi incluída também, uma unidade de controle, com a função de comandar o funcionamento dos dois processadores e dividir as tarefas entre eles.

Teoricamente, o uso de dois processadores distintos dobraria o desempenho do Pentium, já que ao invés de uma, poderiam ser executadas duas instruções por ciclo de clock. Mas, na prática existem algumas limitações.

Se por exemplo, um programa ordena que o processador some 4 números, X + Y + W + K, o processador poderia no primeiro ciclo de clock usar a canaleta U para somar X e Y e a canaleta V para somar W, mas no segundo ciclo, haveria apenas mais um cálculo para ser executado, o resultado das duas somas. Neste caso, apenas uma das canaletas poderia ser usada; a segunda ficaria ociosa. No final das contas, houve um ganho de 33%, já que ao invés do processador demorar 3 ciclos para executar o cálculo, demorou apenas 2.

Caso a continuação do cálculo dependesse da conclusão do cálculo anterior, como em “(X + Y) x 3”, a segunda canaleta novamente não poderia ser usada, pois o processador teria primeiro que somar X e Y para depois multiplicar o resultado por 3. Neste caso, não haveria ganho algum, pois o processador demoraria os mesmos dois ciclos que seriam necessários com apenas uma canalização.

Em média, a segunda canalização permite um desempenho 30 ou 40% superior ao desempenho obtido com apenas uma canalização. Caso o software seja alterado e otimizado para rodar em um processador com duas canalizações, ordenando as instruções de modo a deixar a segunda canaleta ocupada durante a maior parte do tempo, podemos conseguir mais 10 ou 15% de desempenho, chegando a algo entre 40 e 50%, mas, jamais será possível conseguir o dobro de desempenho.

Isto pode ser notado por exemplo ao recompilar o kernel do Linux. É possível orientar o utilitário a otimizar o código para qualquer processador, de um 486 a um Pentium III. Esta otimização permite que o Linux utilize todos os recursos do processador, obtendo um desempenho bastante superior.

Otimizar um programa para rodar em um processador Pentium, não o torna incompatível com processadores com apenas uma canalização (como o 486), nem torna seu desempenho menor nestes processadores, já que as mesmas instruções serão executadas, apenas em ordem diferente.

Execução Especulativa: Se o processador tivesse que processar uma instrução de tomada de decisão, como em “Se X > 0 então Y = 30, senão Y = 20”, enquanto a primeira canaleta do processador verifica se X é maior ou menor que 0, a segunda ao invés de ficar ociosa, pode executar uma das duas opções seguintes (atribuir o valor 30 ou atribuir o valor 20 a Y). No próximo ciclo, quando a primeira canaleta tivesse terminado de processar sua instrução, teríamos 50% de chance da segunda canaleta ter adivinhado qual seria a instrução seguinte e já tê-la executado. O nome “execução especulativa” foi dado por que a segunda canaleta escolhe aleatoriamente a instrução a executar, entre as duas possíveis.

Acesso mais rápido à Memória: O Pentium é capaz de acessar a memória usando palavras binárias de 64 bits, o dobro do 486, que a acessa a 32 bits. Este recurso permite que sejam lidos 8 bytes por ciclo, ao invés de apenas 4, dobrando a velocidade de acesso à memória. Isto diminuiu bastante o antigo problema de lentidão das memórias, mas apenas provisoriamente, pois logo surgiram processadores Pentium utilizando multiplicadores de clock cada vez mais altos.

Como a maioria das placas para processadores Pentium utiliza módulos de memória de 72 vias, que são módulos de 32 bits, é preciso usa-los em pares. O processador acessa cada dupla como se fosse um único módulo, chegando aos 64 bits necessários.

Mesmo com a capacidade de acessar a memória a 64 bits e sendo composto internamente por dois processadores de 32 bits, o Pentium continua sendo um processador de 32 bits. Estes novos recursos servem apenas para melhorar o desempenho do processador.

Multiprocessamento: Visando o mercado de Workstations (máquinas muito rápidas, destinadas a aplicações pesadas como processamento de imagens 3D ou vídeo) e servidores de rede, a Intel incluiu no Pentium o recurso de multiprocessamento simétrico, que permite o uso de dois processadores na mesma placa mãe. Neste caso, é preciso adquirir uma placa mãe especial, com encaixe para dois processadores e um chipset com suporte ao multiprocessamento.

Como a divisão das tarefas entre os dois processadores não é feita automaticamente pelo chipset, é preciso que o sistema operacional seja capaz de reconhecer os dois processadores e acessá-los individualmente, dividindo as tarefas entre eles da melhor maneira possível.

Caso o sistema operacional não ofereça suporte ao multiprocessamento, como é o caso do Windows 95 e do Windows 98, apenas um dos processadores será usado pelo sistema, ficando o outro inativo. Neste caso, será como se tivéssemos apenas um processador instalado. A maioria dos sistemas operacionais, incluindo o Windows NT, 2000 e XP, Linux e a maioria das versões do Unix suportam multiprocessamento, as excessões mais notáveis ficam por conta do Windows 95,98 e ME.

Apesar de, pela lógica, o desempenho dobrar com dois processadores trabalhando em paralelo, na prática o ganho dificilmente passa de 40 ou 60%, pois dificilmente será possível organizar a execução das tarefas de modo a deixar ambos os processadores ocupados todo o tempo, assim como é difícil manter as duas canaletas do Pentium cheias 100% do tempo.

Até pouco tempo atrás, o recurso de multiprocessamento foi exclusividade dos processadores Intel. Tanto o Pentium, quanto o MMX, o Pentium II e o Pentium III suportam o uso de até dois processadores simultaneamente, enquanto o Xeon suporta o uso de até quatro processadores (8 com a adição de um circuito especial na placa mãe). Com exceção do Athlon MP, todos os demais processadores da AMD e Cyrix não suportam multiprocessamento, o que não chega a ser uma grande desvantagem para um usuário doméstico, já que fora do ramo dos servidores de alto desempenho, este recurso raramente é usado.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X