sexta-feira, 21 de outubro de 2011

Pentium 4

O lançamento do Pentium 4 foi adiado mais do que uma vez, até que finalmente o processador foi lançado em Novembro de 2000, inicialmente em versões de 1.4 e 1.5 GHz.

Actualmente já existem versões bem mais rápidas e inclusive uma nova arquitectura mais avançada que o core Willamette usado nestas versões iniciais. Mas, mantendo a ideia de explicar a evolução dos processadores, vamos começar por comentar as características do processador e das versões iniciais para depois comentar as versões mais recentes.

Um ponto interessante sobre as primeiras versões do Pentium 4 é que o único chipset disponível durante quase um ano, o i850 da própria Intel suportava apenas memórias Rambus, o que obrigava qualquer um interessado em adquirir um Pentium 4 a adquirir também módulos de memória Rambus. Este tipo de memória era inicialmente absurdamente caro, tanto que a Intel passou a subsidiar parte do custo das memórias, dando um desconto nos processadores vendidos a integradores e dando “de brinde” dois pentes de memórias Rambus de 64 MB cada nos processadores in-a-box destinados ao consumidor final.

Com o tempo, o preço das memórias Rambus foi descendo, mas este tipo de memória ainda é muito mais caro que as memórias SDRAM ou DDR. Por sorte, surgiram motherboards para o Pentium 4 com suporte tanto a memórias DDR, quanto a memórias SDRAM comuns. Actualmente, ó precisa gastar mais com memórias Rambus se quiser.
A Arquitetura
O primeiro alerta sobre o Pentium 4 é que o aumento da frequência de operação não significa um ganho automático de potência. Um Pentium 4 de 1.5 GHz não é 50% mais rápido que um Pentium III de 1 GHz. Uma coisa é o número de ciclos por segundo que o processador pode executar, outra é o que ele consegue processar em cada ciclo. Um 486 de 100 MHz por exemplo é muito mais lento que um Pentium de 75 MHz, apesar de operar a uma frequência mais alta. 

Para entender os pontos fortes e fracos do Pentium 4, onde ele é mais rápido e onde ele é mais lento, porque não começar analisando a arquitectura interna do processador?

A Intel batizou a nova arquitectura do Pentium 4 de “NetBurst”. O nome não tem nada a ver com o desempenho em redes ou na Internet, mas tenta ilustrar os novos recursos do processador, assim como dar um ar de superioridade. A arquitectura NetBurst é composta por 4 componentes: Hyper Pipelined Technology, Rapid Execution Engine, Execution Trace Cache e Bus de 400MHz. Vamos aos detalhes de cada uma das quatro tecnologias:
Hyper Pipelined Technology
Esta é a característica mais marcante do Pentium 4. O Pipeline é um recurso que divide o processador em vários estágios, que trabalham simultaneamente, dividido o trabalho de processar as instruções. É como uma linha de produção com vários operários, onde cada um monta uma peça, até termos no final o produto completo. A partir do 486, todos os processadores utilizam este recurso.

O Pentium III possui 10 estágios, o Athlon possui 11 estágios, enquanto o Pentium 4 possui nada menos que 20 estágios, daí o nome “Hyper Pipelined”.

O uso de Pipeline permite que o processador seja capaz de processar várias instruções ao mesmo tempo, já que cada estágio cuida de uma fracção do processamento. Quanto mais estágios, menor será o processamento executado em cada um. No caso do Pentium 4 cada estágio do Pipeline processa apenas metade do processado por um estágio do Pentium III, fazendo com que teoricamente o resultado final seja o mesmo, já que em compensação existem o dobro de estágios.

O uso de mais estágios permite que o processador opere a frequências bem mais altas, já que cada estágio executa menos processamento. O grande problema neste caso é que os processadores actuais executam várias instruções simultaneamente, enquanto os programas são uma sequência de instruções. O Pentium 4 processa três instruções por ciclo, o Pentium antigo (Pentium 1) processa duas, e assim por diante.

Caso as instruções seguintes não dependam do resultado da primeira, como uma sequência de somas de vários números por exemplo, o processador não terá nenhum problema para resolvê-las rapidamente. Porém, sempre que existir uma opção de tomada de decisão, onde o processador precisa primeiro resolver uma instrução para saber qual caminho deve tomar, como por exemplo “Se A > 3 então B = C+5 senão B = C-5”, entra em cena o recurso de execução especulativa, onde enquanto é resolvida a primeira instrução, o processador escolhe um dos caminhos possíveis para ir “adiantando o serviço” enquanto não sabe qual deverá seguir.

Se ao terminar de resolver a primeira instrução o processador perceber que tomou o caminho certo, simplesmente continuará a partir dali. Caso por outro lado o processador tenha adivinhado errado, então terá que jogar fora todo o trabalho já feito e tomar o outro caminho, perdendo muito tempo.

O Pentium 4 perde bastante nesse requisito, pois ele demora o dobro de ciclos de relógio para processar a primeira instrução, já que ela é processada em 20 estágios, contra 10 do Pentium III.

Isto significa que a cada tomada de decisão errada serão perdidos pelo menos 20 ciclos de processamento, um eternidade considerando que em média, 14% das instruções processadas são de tomada de decisão. Se por acaso o processador errasse 50% das previsões, então os 7% de erros de previsão resultariam numa diminuição de 30% do desempenho do processador em comparação com o antigo Pentium III.

Isto significa que a princípio o Pentium 4 é mais lento que um Pentium III da mesma frequência, podendo em compensação operar a frequências bem mais altas. Todas as demais alterações feitas pela Intel, explicadas a seguir servem como paliativos para tentar diminuir a perda de desempenho trazida pelo maior número de estágios de Pipeline. Foi justamente devido a isto que a Intel optou por lançar directamente os modelos de 1.4 e 1.5 GHz, pulando as versões de 1.1 e 1.2, que seriam o caminho mais óbvio já que o Pentium III ficou estacionado na versão de 1 GHz.

Caso fosse lançado, um Pentium 4 de 1.1 GHz perderia para um Pentium III de 1 GHz em praticamente todas as aplicações.

Além da perda de desempenho, outro efeito colateral de se usar mais estágios de Pipeline é o facto de tornar o processador maior e mais complexo e fatalmente bem mais caro de se produzir. O Pentium 4 de 0.18 mícron mede 217 milímetros quadrados, quase o dobro do Athlon Thunderbird, que mede 120 mm². Isto significa que o Pentium 4 é proporcionalmente mais caro de se produzir.
Execution trace cache
O uso do cache L1 no Pentium 4 é no mínimo inovador. O Pentium 3 por exemplo tem 32 KB de cache L1, dividido em 2 blocos de 16 KB cada, para instruções e dados. O Athlon tem 128 KB de cache L1, também dividido em dois blocos. O Pentium 4 por sua vez tem apenas 8 KB de cache para dados e só. Só? Sim, só isso. Porém, ele traz duas inovações que compensam esta aparente deficiência. A primeira é que graças ao tamanho reduzido, o pequeno cache de dados tem um tempo de latência menor, ou seja é mais rápido que o cache L1 encontrado no Pentium III e no Athlon. Do ponto de vista dos projectistas da Intel, esta foi a melhor relação em termos de desempenho.

Apesar do cache L1 sempre operar na mesma frequência do processador, no Athlon o cache L1 tem um tempo de latência de 3 ciclos, no Pentium III o cache tem um tempo de latência de 2 ciclos, enquanto no Pentium 4 o cache, apesar de muito pequeno tem um tempo de latência de 1 ciclo. É quase tão rápido quanto os registadores do processador.

Note que a velocidade do cache é inversamente proporcional ao tamanho. É por isso que o enorme cache L1 do Athlon não representa um ganho de desempenho muito grande sobre o pequeno cache L1 do Pentium III. O processador precisa aceder menos vezes à memória RAM, já que o cache é capaz de armazenar mais dados, mas por outro lado perde algum tempo em cada acesso ao cache. É a velha lei de custo-benefício em acção.

O cache de instruções por sua vez foi substituído pelo Execution trace Cache, que ao invés de armazenar instruções, armazena diretamente uOPs, que são as instruções já descodificadas, prontas para serem processadas. Isto garante que o cache tenha apenas um ciclo de latência, ou seja o processador não perde tempo algum ao utilizar dados armazenados no trace cache, ao contrário do que acontecia no Pentium III, onde são perdidos pelo menos dois ciclos em cada leitura, o tempo necessário para descodificar a instrução.

Se você está em dúvida sobre o que é um “uOP”, e como eles são produzidos e processados, aqui vai uma explicação resumida: Apesar dos processadores para microcomputadores continuarem a usar o conjunto x86 de instruções, que é composto por 184 instruções, internamente eles são capazes de processar apenas instruções simples de soma e atribuição. Existe então um circuito descodificador, que converte as instruções complexas usadas pelos programas nas instruções simples entendidas pelo processador. Uma instrução complexa pode ser quebrada em várias instruções simples. No Pentium 4, cada instrução simples é chamada de “uOP”. No Athlon cada conjunto de duas instruções recebe o nome de “macro-ops”.
Bus de 400 MHz
Visando concorrer com o bus EV6 do Athlon, que opera de 100 a 133 MHz, com duas transferências por ciclo, o que resulta na prática em frequências de respectivamente 200 e 266 MHz, o Pentium 4 conta com um bus operando a 100 MHz, mas com 4 transferências por ciclo, o que equivale na prática a um barramento de 400 MHz.

O barramento controla a velocidade de comunicação entre o processador e o chipset. Um barramento mais rápido, não significa um ganho de performance, porém, um barramento insuficiente, causará perda de desempenho, fazendo com que o processador não consiga comunicar com os demais componentes à velocidade máxima.

Como o Pentium 4 tem um cache L1 muito pequeno, o processador acaba sendo muito dependente da velocidade de acesso à memória RAM, pois os acessos são muito frequentes. Esta característica serve de justificação para a decisão da Intel de utilizar memórias Rambus nas primeiras versões do Pentium. Este tipo de memória é capaz de operar a frequências muito altas.

Os primeiros modelos do Pentium 4 utilizavam memórias Rambus PC-800, que operam a 200 MHz e realizam 4 transferências por ciclo, sem dúvida mais rápidas que as memórias PC-100 ou PC-133 que equipavam os Athlons e Pentiums III da época.

Depois, as placas para Pentium 4 com suporte a memórias SDRAM comuns apresentavam um desempenho bastante inferior por causa do acesso mais lento à memória. Apenas as placas com suporte a memórias DDR são capazes de fazer frente às placas com memórias Rambus.
Rapid Execution Engine
Todo processador actual é dividido em dois componentes básicos, as unidades de execução de inteiros e as unidades de ponto flutuante. A parte que processa as instruções envolvendo números inteiros é responsável pela maior parte das instruções e pelo desempenho do processador nas aplicações do dia a dia enquanto as unidades de ponto flutuante são as responsáveis pelo processamento das instruções envolvendo valores complexos, usadas por jogos e aplicações gráficas.

A “Rapid Execution Engine” do Pentium 4 consiste num reforço nas unidades de inteiros do processador. O Pentium 4 possui um total de 5 unidades de processamento de inteiros, duas ALUs, que processam as instruções mais simples, duas GLUs, encarregadas de ler e gravar dados e uma terceira ALU, encarregada de descodificar e processar as instruções complexas, que embora em menor quantidade, são as que tomam mais tempo do processador.

Este conjunto de 5 unidades de execução de inteiros é semelhando ao do Pentium III, porém, pelo contrário, no Pentium 4 tanto as duas ALUs encarregadas das instruções simples, quanto as duas GLUs encarregadas das leituras e gravações são duas vezes mais potentes.

Segundo a Intel, as quatro unidades operam a uma frequência duas vezes superior à do processador, o que sugere que num Pentium 4 de 1.5 GHz elas operem a 3 GHz. Porém, na verdade, cada unidade passou a ser composta por duas unidades trabalhando em paralelo. Com isto as unidades tornam-se capazes de processar duas instruções por ciclo, mas a frequência de operação continua a mesma. Na prática, o slogan acaba sendo real, mas em termos técnicos é um dado distorcido.

Este é um recursos que na teoria parece maravilhoso, mas existe um pequeno detalhe que elimina boa parte do ganho que seria de se esperar deste esquema. Apesar das duas ALUs de instruções simples terem ficado mais rápidas, visando justamente compensar a perda de desempenho trazida pelos 20 estágios de Pipeline do Pentium 4, a ALU de instruções complexas não teve a mesma evolução. Isto significa que ao passar a usar 20 estágios de Pipeline, esta terceira ALU tornou-se mais lenta que a mesma no Pentium III.

Temos então um cenário onde as instruções simples são rapidamente processadas, mas as instruções complexas ficam entaladas na vala comum da terceira ALU, causando uma grande perda de desempenho.

No coprocessador aritmético o cenário é ainda mais complicado, pois apesar das unidades de execução terem perdido desempenho devido ao Pipeline de 20 estágios, não houve nenhum avanço para equilibrar a balança, como tivemos nas unidades de inteiros. Pelo contrário, o coprocessador aritmético encolheu, pois foram podadas duas das unidades de execução, uma das que processava instruções MMX e uma das que processava instruções SSE.

Ao invés de evoluir, como seria de se esperar, o coprocessador aritmético do Pentium 4 tornou-se ainda mais frágil do que o do Pentium 3, trazendo um cenário no mínimo curioso. Enquanto na época do Pentium II e do K6, a AMD competia com um processador que apesar de possuir um bom desempenho em aplicações de escritório era literalmente massacrado nos jogos e aplicações gráficas, temos agora com o Pentium 4 x Athlon um cenário semelhante, porém com os lados invertidos: A Intel ataca com um processador que é potente em inteiros, mas fraco em ponto flutuante.

Ironicamente, a solução da Intel para tentar diminuir a deficiência do processador em ponto flutuante é a mesma que a AMD usou na época do K6-2. Lembra-se do 3D-Now, as instruções incorporadas ao K6-2, que melhoravam seu desempenho nos jogos optimizados? A Intel optou por seguir exatamente o mesmo caminho, incorporando 144 novas instruções no Pentium 4, chamadas de SSE2 que visam melhorar seu desempenho os jogos e aplicações gráficas.

in Manual de Hardware Completo
de Carlos E Marimoto

Sem comentários: