sexta-feira, 19 de junho de 2009

Do 486 ao Athlon

ct

Do 486 ao Athlon


Com o final da reserva de mercado, em 1992, a importação de computadores voltou a ser permitida no Brasil, sem maiores restrições. Rapidamente, os computadores de 8 bits e os XT's de fabricação nacional foram substituídos por micros 386 e 486, e muita gente teve a chance de comprar o primeiro micro. Isto coincidiu justamente com o início da era 486, fazendo com que eles fossem vendidos em enorme quantidade aqui no Brasil. É por isso que ainda é relativamente comum ver micros 486 por aí, muitos ainda funcionando, mas é muito raro encontrar um 386 ou anterior.

Assim como outros processadores da época, o 486 era vendido encapsulado dentro de uma pastilha de cerâmica, que ao mesmo tempo protegia o processador e facilitava a dissipação do calor. Os contatos ficavam nas beiradas internas do processador e eram ligados aos pinos externos através de filamentos de ouro. Atualmente, são utilizados compostos plásticos resistentes em vez de cerâmica, e os contatos do processador são feitos através de minúsculos pontos de solda disponíveis na parte inferior do próprio wafer de silício.

Esta foto de divulgação da Intel mostra um close de um 486 aberto. Veja que, graças ao zoom, é possível distinguir os componentes do processador dentro da pastilha de silício:

O 486 possuía 1.2 milhões de transistores e era fabricado numa técnica de 1 micron. Isto significa que cada transístor media um milionésimo de centímetro. Como tínhamos 1.2 milhões deles, o die do processador tinha cerca de 120 milímetros quadrados. Para efeito de comparação, o 386 tinha apenas 275.000 transistores, quase 5 vezes menos.

Esse brutal aumento de complexidade pode ser justificado por três inovações introduzidas pelo 486. Em primeiro lugar, ele usa um co-processador aritmético integrado, ao invés de um chip separado, como no 386. Em segundo, ele incorpora 8 KB de cache ultra-rápido diretamente no processador, complementando o cache mais lento disponível na placa-mãe. O cache interno passou a ser chamado de cache L1 (level 1, ou nível 1) e o cache da placa-mãe, de cache L2.

O cache L1 integrado se tornou um item de série em todos os processadores a partir do 486, pois melhora de forma considerável o desempenho do processador, oferecendo acesso instantâneo aos dados que estão sendo processados.

Mesmo em casos em que o cache L2 opera à mesma freqüência no processador (como no 486 DX-33, onde a placa-mãe também trabalhava a 33 MHz, ou nos processadores atuais, onde o cache L2 também é integrado ao processador) existe uma grande diferença nos tempos de acesso dos caches L1 e L2. Enquanto (nos processadores atuais) o cache L1 trabalha sempre com tempos de latência de 2 ou 3 ciclos, o L2 trabalha com latência de 7 ciclos ou mais e é acessado através de um barramento mais estreito.

Voltando ao 486, foi introduzido também o processamento de instruções em etapas, recurso que é utilizado até os dias de hoje. A unidade de execução do 486 é composta por um pipeline de 5 estágios, que possuem funções distintas. Cada instrução passa sucessivamente por cada um dos 5 estágios, sendo que cada um deles faz seu trabalho em apenas um ciclo, passa a instrução adiante e recebe outra. Poderíamos fazer uma analogia com uma linha de produção, que passa a ter 5 trabalhadores em vez de um.

O uso do pipeline trouxe duas vantagens. A primeira é que muitas instruções complexas, que consumiam vários ciclos do 386, passaram a ser executadas numa única passagem. A segunda é a redução do trabalho feito em cada estágio, o que permite que o processador seja capaz de atingir freqüências mais altas.

O 486 foi vendido em três versões: o 486DX (a versão completa), o 486SX (uma versão de baixo custo, sem o co-processador aritmético) e o 486SL (uma versão de baixo consumo, destinada a notebooks). O 486SX foi relativamente popular no começo, devido ao custo mais baixo, mas ele acabou sendo logo descontinuado, de forma que o 486DX tornou-se rapidamente a versão mais popular.

Os 486 (a partir do DX-33) foram também os primeiros processadores Intel a utilizarem coolers. Naquela época, eram usados dissipadores com menos de um centímetro de altura e exaustores minúsculos. Conforme os processadores passaram a dissipar cada vez mais calor, os coolers foram crescendo na mesma proporção, até chegar às monstruosidades que vemos atualmente ;). Aqui temos um cooler para 486 em comparação com um cooler low-end atual, dos mais baratos:

Como disse, esse é apenas um cooler low-end, que pode ser usado em processadores AMD de até 1.8 GHz. Coolers para processadores dual core, ou voltados para quem deseja fazer overclock são muito maiores e mais pesados, com exaustores maiores, bases de cobre e hot-pipes, como este Arctic Freezer Pro:


Exemplo de cooler que combina base de cobre, dissipador de alumínio e hot-pipes

O cobre é capaz de absorver quantidades maiores de calor que o alumínio, mas em compensação é mais caro e mais difícil de se trabalhar. O alumínio, por sua vez, permite criar lâminas mais finas, que facilitam a dissipação do calor. Por isso, é comum que os coolers atuais utilizem bases de cobre e dissipadores de alumínio.

Os hot-pipes são barras de cobre, maciças, ou contendo fluído, que permitem "transportar" o calor da base do cooler para o dissipador. Os hot-pipes são muito comuns em notebooks, onde o cooler é montado "na horizontal", com a base de um lado, o exaustor do outro e dois ou mais hot-pipes interligando as duas peças, como neste Toshiba A45:


Hot-pipes utilizados no dissipador de um Toshiba A45

Mais recentemente, os hot-pipes passaram a ser usados também para criar "links" entre os diferentes componentes da placa-mãe, permitindo que eles sejam resfriados de forma conjunta, a partir de um único cooler, ou através de um conjunto de dissipadores passivos.

Na foto a seguir temos um exemplo de uso, em uma placa Asus P5B Deluxe, onde um hot-pipe é utilizado para ligar o dissipador da ponte norte do chipset e o dissipador instalado sobre os reguladores de tensão da placa. Dessa forma, o fluxo de ar gerado pelo cooler do processador acaba resfriando de forma conjunta os dois componentes:


Hot-pipes interligando o dissipador da ponte norte e reguladores de tensão
em uma Asus P5B Deluxe

De uma forma geral, os fabricantes de placas-mãe não gostam de utilizar coolers ativos em suas placas, pois eles aumentam o índice de defeitos. Com o tempo, todo cooler acumula poeira e passa a girar mais lentamente, até parar completamente. Quando isso acontece, a placa passa a superaquecer e travar, o que prejudica a imagem do fabricante. Além disso, coolers adicionais aumentam o nível de ruído do equipamento, aumentam (embora pouco) o consumo elétrico e assim por diante. Soluções de dissipação passiva como essa da Asus P5B são cada vez mais populares, já que aproveitam o grande fluxo de ar gerado pelo cooler do processador.

Finalmente, temos os water coolers, que utilizam água ou outro líquido refrigerante no lugar do ar. O líquido é bombeado dentro do sistema, passando pelo water block (o módulo que fica sobre o processador, substituindo o cooler) e em seguida pelo radiador, onde é resfriado.

Os water coolers são em geral mais eficientes que os coolers tradicionais, mas são sistemas muito caros, destinados a entusiastas. Um "meio termo" entre os coolers tradicionais e os water coolers são os water coolers self-contained, onde todos os componentes, incluindo a bomba, radiador, water-block e o reservatório para o fluído são combinados na forma de um design bastante compacto, de tamanho similar ao de um cooler tradicional:


Evercool Silver Night, exemplo de water cooler self-contained

Voltando ao tema inicial, outra inovação introduzida pelo 486 foi a multiplicação de clock, onde o processador trabalha numa freqüência mais alta que a placa-mãe. Isto parece natural hoje em dia, mas na época causou espanto.

Graças a todas as inovações, as versões iniciais do 486 eram capazes de operar a 50 MHz ou mais. Por questões estratégicas, a Intel optou por lançar versões iniciais de 25 e 33 MHz, que funcionavam bem nas placas da época. Quando, pressionada pelos concorrentes, a intel decidiu gastar os cartuchos e lançar um 486 operando a 50 MHz, se viu num beco sem saída, pois na época não existia tecnologia para produzir uma placa-mãe capaz de trabalhar estavelmente a 50 MHz.

A solução foi incluir um circuito simples, que fazia com que o processador trabalhasse ao dobro da freqüência da placa-mãe. Surgiu então o 486 DX-2 50, seguido pelo DX-2 66. Pouco depois, a Intel introduziu uma nova técnica de fabricação, com transistores de 0.6 micron, e foi capaz de lançar o 486 DX-4 100, que trabalha ao triplo da freqüência da placa-mãe:

Processador

placa-mãe

Multiplicador

486 25 MHz

25 MHz

1x

486 33 MHz

33 MHz

1x

486DX-2 50 MHz

25 MHz

2x

486DX-2 66 MHz

33 MHz

2x

486DX-2 80 MHz

40 MHz

2x

486DX-4 75 MHz

25 MHz

3x

486DX-4 100 MHz

33 MHz

3x

486DX-4 120 MHz

40 MHz

3x

O 486DX-4 trouxe um complicador adicional: o uso de 3.3v de tensão, ao invés dos 5v usados pelos processadores anteriores. Os fabricantes passaram a produzir placas compatíveis com toda a família, onde o ajuste da freqüência da placa-mãe, multiplicador e tensão usada pelo processador eram configurados através de jumpers.

Isto continuou durante toda a era Pentium 1, fazendo com que os manuais de placas viessem com longas tabelas com as opções disponíveis, como neste exemplo, de uma placa TX Pro (para Pentium 1):


Exemplo de tabela de configuração de jumpers, item de série nos manuais de placas antigas

Com isso, surgiu também a possibilidade de fazer overclock do processador, usando uma freqüência ou multiplicador maior que o nominal. Era muito comum usar um 486DX-2 66 a 80 MHz ou um 486DX-4 100 a 120 MHz, aumentando a freqüência da placa-mãe de 33 para 40 MHz. Obviamente, fazer overclock aumenta o consumo e o aquecimento do processador (exigindo muitas vezes o uso de um cooler mais parrudo), além da possibilidade de redução da vida útil. Mesmo assim, ele se tornou incrivelmente popular, por permitir aumentar o desempenho do equipamento a custo zero.

A partir das placas para Pentium II, os ajustes passaram a ser feitos através do setup, ao invés de jumpers. A placa detecta automaticamente as configurações usadas pelo processador, mas você pode alterar as configurações manualmente para fazer overclock. Se, por acaso, você exagerar na dose e o micro não der mais boot, use o jumper do CMOS (o único ainda encontrado em todas as placas atuais) para limpar o CMOS, restaurando as configurações originais.

Aqui temos um exemplo de overclock (em uma placa moderna) feito através das configurações do setup. Neste exemplo, a placa foi configurada para operar a 148 MHz (em vez de 133), resultando em um aumento proporcional da freqüência do processador:


Overclock através do Setup

Mesmo depois do lançamento do Pentium 1, a plataforma 486 ainda teve uma sobrevida surpreendente graças aos processadores AMD 5x86, Cyrix Cx5x86 e ao Pentium overdrive da Intel, que serviam como opções de upgrade para quem tinha um 486DX-2 ou um 486DX-4, prometendo um desempenho similar ao dos processadores Pentium low-end.

A grosso modo, um 486 possui um desempenho duas vezes superior ao de um 386 do mesmo clock. Isto significa que mesmo um 486SX de 25 MHz ganha fácil de um 386 de 40 MHz. Por outro lado, um 486 apresenta apenas 50 a 60% do desempenho de um Pentium 1 do mesmo clock. Isto significa que mesmo um Pentium 60 consegue superar um 486 DX4-100.

O AMD 5x68 é um 486 "modernizado", lançado pela AMD no final de 1995. Ele vinha com 16 KB de cache L1, que operava em modo write-back (onde o cache trabalha cacheando tanto as operações de leitura, quanto as de escrita) e era fabricado numa técnica de produção de 0.35 micron, o que permitia que ele trabalhasse a 133 MHz (4x 33 MHz) e também o tornava menor e mais barato de se produzir. Na época, ele era o processador mais barato do mercado e permitia montar micros usando placas para 486, que também eram bem mais baratas. Isso o tornou especialmente popular aqui no Brasil.

Apesar do clock de 133 MHz, o 5x86 concorria com o Pentium 75 em termos de desempenho. Era comum que o 5x68 fosse overclocado para 160 MHz (aumentando a freqüência da placa-mãe de 33 para 40 MHz), resultando em um desempenho próximo ao de um Pentium 90.

Concorrendo com o 5x86, a Cyrix lançou o Cx5x86, um processador que utilizava uma arquitetura bastante similar ao Pentium da Intel, mas usava placas para 486. A versão de 100 MHz rivalizava com o 5x86 de 133 MHz, enquanto a de 120 MHz conseguia superá-lo com uma certa margem. O maior problema é que o Cx5x86 era bem mais caro, por isso acabou não sendo uma opção muito popular.

Completando o time, a Intel lançou o Pentium overdrive, um Pentium adaptado para utilizar as placas para 486, que existia em versões de 63 e 83 MHz. Apesar da diferença de clock, o overdrive de 83 MHz conseguia competir de igual para igual com o 5x86 de 133 MHz, com o vencedor variando de acordo com a aplicação usada. Apesar disso, o AMD 5x86 acabou sendo mais popular devido à questão do custo.

Muitas placas-mãe desta época vinham sem memória cache, trazendo no lugar um encaixe marrom, ao lado do processador, que permitia encaixar um módulo COAST (cache on a stick), com 128, 256 ou 512 KB de cache. Essas placas são bem diferentes da primeira safra de placas para 486, pois já possuem slots PCI e utilizam pentes de memória de 72 vias, assim como as placas para Pentium 1.


Placa mãe para 486, com um 5x86 e o módulo COAST instalado

Com o Pentium, a Intel tentou solucionar os principais gargalos de desempenho da plataforma anterior, mudando vários aspectos não apenas do processador, mas também nas placas-mãe para ele.

A primeira mudança trazida pelo Pentium foi o aumento da quantidade de cache L1, que passou a ser de 16 KB, dividido em dois blocos de 8 KB. Isso melhorou a eficiência do cache (em relação ao cache unificado do 486), permitindo que o processador consiga acessar instruções e os dados necessários (para executá-las) simultaneamente, em vez de precisar fazer duas operações separadas.

Além do aumento no tamanho, o cache passou a ser acessado através de um barramento interno de 512 bits (256 bits para o cache de dados e mais 256 para o de instruções), contra apenas 128 bits no 486. Assim como no 5x86 da AMD, passou também a ser utilizado cache write-back, que também cacheava 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, situação onde o processador tinha que esperar pela memória RAM.

Com a popularização dos games e aplicativos 3D de uma forma geral, o desempenho do processador em ponto flutuante passou a ser cada vez mais importante. Combinado com as melhorias no cache, foi desenvolvido um co-processador aritmético cerca de 5 vezes mais rápido que o usado no 486. O co-processador do Pentium era tão rápido (comparado com outros processadores da época), que mesmo um K6-2 perdia para um Pentium da mesma freqüência em jogos e aplicativos muito dependentes de cálculos de ponto flutuante.

O Pentium também foi o primeiro processador Intel a usar uma arquitetura superescalar. Internamente, o Pentium possui duas unidades de execução, com a inclusão de um circuito de branch prediction, encarregado de dividir as instruções entre as duas unidades e antecipar o processamento de instruções, de forma a manter ambas ocupadas na maior parte do tempo.

Essa tendência de "executar mais por ciclo de clock" continua até os dias de hoje, com os processadores incluindo um número cada vez maior de unidades de execução, mais memória cache, circuitos aprimorados de branch prediction, sem falar nos processadores dual-core e quad-core. Mesmo que existisse um 486 ou Pentium capaz de operar a 2 ou 3 GHz, o desempenho seria ridiculamente inferior ao de um processador atual operando na mesma freqüência.


Pentium 133, com o encapsulamento de cerâmica

Acompanhando as melhorias no processador, foram feitas mudanças nas placas-mãe, de forma a melhorar o desempenho de acesso à memória. Em primeiro lugar, as placas para Pentium operam a freqüências mais altas: 60 ou 66 MHz, de acordo com o processador usado. Embora as memórias FPM e EDO usadas na época não fossem capazes de acompanhar a mudança (elas passaram a trabalhar usando tempos de espera), o aumento da freqüência permitiu usar chips de cache L2 mais rápidos (já que eles operavam na freqüência da placa-mãe). Além disso, o Pentium passou a acessar a memória a 64 bits, ao invés de 32 bits como no 486, o que efetivamente dobrou a velocidade do barramento com a memória.

Como os pentes de 72 vias usados na época eram módulos de 32 bits, era necessário utilizá-los aos pares, sempre 2 ou 4 módulos, sendo que os módulos dentro de cada par deveriam ser idênticos. Os pentes de 72 vias são antecessores diretos dos módulos DIMM usados atualmente.

Na foto a seguir temos uma comparação entre um módulo DIMM, um módulo de 72 vias e um antigo módulo de 30 vias, dos usados nos micros 386 e nos primeiros 486:

Os processadores Pentium existiram em versões de 60 a 200 MHz, sempre com a placa-mãe operando a 60 ou 66 MHz e usando um multiplicador de 1x, 1.5x, 2x, 2.5x ou 3x para atingir a freqüência anunciada. Era comum fazer overclock aumentando a freqüência da placa-mãe para 75 MHz, opção oferecida pela maioria das placas soquete 7 da época.

Assim como na época dos micros 486, as placas-mãe para processadores Pentium (com exceção de placas muito antigas) suportam várias freqüê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.

Em 1996 a Intel lançou o Pentium MMX, que foi o integrante final da família Pentium 1. Ele chegou ao mercado acompanhado de uma forte campanha de marketing, que divulgava as novas instruções MMX como a maior invenção da humanidade depois da batata frita ;). As instruções MMX permitiam que até 4 instruções simples fossem combinadas numa única instrução complexa, de forma a serem processadas em um único ciclo de clock. A Intel esperava que elas fossem capazes de multiplicar o desempenho do processador em aplicativos multimídia, principalmente em compressão e descompressão de áudio, mas no final acabou dando com os burros n'agua.

As instruções MMX continuam disponíveis nos processadores atuais, mas nunca foram muito utilizadas devido a uma combinação de fatores. O primeiro é que elas só ajudam em algumas operações envolvendo números inteiros, enquanto a maioria dos aplicativos de multimídia e jogos utilizam predominantemente instruções de ponto flutuante. O segundo é que para tirar proveito delas, os aplicativos precisam ser manualmente otimizados e não existe nada que os programadores odeiem mais do que ficar otimizando seus programas para cada conjunto de instruções existente. O terceiro é que, mesmo em aplicativos otimizados, elas não conseguem fornecer o ganho de desempenho esperado e, como se não bastasse, logo surgiram conjuntos mais completos e adequados de instruções multimídia, como o 3D-Now (introduzido pela AMD no K6-2) e o SSE (desenvolvido pela Intel e usado a partir do Pentium III).

Para não depender apenas das novas instruções, a Intel aumentou o cache L1 do processador, de 16 para 32 KB. Com isto, o MMX passou a ser um pouco mais rápido do que um Pentium 1 da mesma freqüência, mesmo nos aplicativos sem otimização. Lembre-se de que naquela época o cache L2 do processador ainda fazia parte da placa-mãe e operava a apenas 66 MHz. Um cache L1 competente era essencial.

O MMX foi lançado em versões de 200 e 233 MHz, ambas compatíveis com a grande maioria das placas soquete 7 existentes. Ele também foi o primeiro processador Intel a usar um encapsulamento plástico com um dissipador metálico, ao contrário da cerâmica usada nos anteriores. Essa mudança foi na verdade bastante benéfica, pois o dissipador metálico é muito mais eficiente na dissipação do calor do que a cerâmica, o que melhora a eficiência do cooler.


Pentium MMX, com o encapsulamento PGA

Na foto a seguir temos uma VX Pro, uma placa bem comum no final da era Pentium. Ela suporta todos os processadores da família, até o 233 MMX. Note que ela inclui três slots ISA, pois na época os modems e placas de som ISA ainda eram bastante comuns:

Além dos 4 soquetes para pentes de 72 vias, ela possui também dois soquetes para módulos DIMM, mas eles não servem para muita coisa, pois o chipset so é capaz de endereçar chips de memória de até 2 MB, permitindo que fossem utilizados módulos de no máximo 32 MB. Mesmo que você tentasse instalar um módulo de maior capacidade, a placa só reconhecia 16 ou 32 MB, de acordo com o número de chips no módulo.

Durante a era Pentium, tivemos também os chips K5 e K6 (da AMD), o Cyrix 6x86 e o IDT C6, que eram compatíveis com as mesmas placas, mas que possuíam uma fatia relativamente pequena do mercado. A Cyrix foi comprada pela VIA em 1999, que usou sua tecnologia para desenvolver os processadores VIA C3 e VIA C7, que são vendidos atualmente. A IDT era uma fabricante menor, que desapareceu sem deixar rastros. Das antigas concorrentes, sobrou a AMD, que, com o lançamento do Athlon 64 e derivados, chegou a superar a Intel em volume de processadores vendidos em 2005 e 2006.

Na época, a AMD ainda era uma empresa menor, que enfrentava problemas financeiros depois das fracas vendas dos processadores K5 e K6. Para completar, a Intel passou a utilizar um barramento proprietário no Pentium II, impedindo que a AMD desenvolvesse processadores capazes de utilizar as placas-mãe para ele.

Sem escolha, a AMD apostou tudo no K6-2, um processador relativamente poderoso, que mantinha compatibilidade com as placas soquete 7. Em termos de processamento de inteiros, o K6-2 competia diretamente com um Pentium II do mesmo clock, o maior problema continuava sendo o co-processador aritmético, que era até duas vezes mais lento.


AMD K6-2, com o encapsulamento CPGA

Para reduzir a diferença, a AMD investiu no desenvolvimento de um novo conjunto de instruções, o 3D-Now, formado por 27 novas instruções, com o objetivo de agilizar o processamento 3D, sobretudo em jogos. O 3D-Now só ajudava em aplicativos otimizados, mas ao contrário do MMX ele era realmente eficiente, o que levou muitas empresas a otimizarem seus títulos para ele. O K6-2 também incorporou, sem muito alarde, o suporte às instruções MMX.

Junto com a AMD, fabricantes de chipsets, como a VIA, SiS e Ali foram prejudicados pela decisão da Intel, pois não podiam desenvolver chipsets para o Pentium II sem o pagamento de licenças, o que continua até os dias de hoje. Isto causou uma certa "revolta" entre os fabricantes, que passaram a apoiar a AMD, desenvolvendo placas soquete 7 aprimoradas, que suportavam barramento de 100 MHz, utilizavam pentes de memória DIMM e possuíam slots AGP. Essas placas passaram a ser chamadas de placas super 7 e, junto com os processadores K6-2, se tornaram uma opção de baixo custo para quem não queria gastar com um Pentium II.

Esta é uma Asus P5A-B, uma placa super 7 bastante comum na época. Veja que ela possui slot AGP e três soquetes para pentes de memória DIMM, que permitem o uso de módulos até 256 MB. Ela oferecia suporte a toda a família K6-2, até o K6-2 550, além de manter suporte aos processadores antigos. A qualidade da placa não era das melhores, sobretudo se comparada com placas mais caras para o Pentium II, mas ela era barata o que para muitos era argumento suficiente:


Asus P5A-B, exemplo de placa super 7

Uma das prioridades da AMD foi manter a compatibilidade com as placas soquete 7 antigas. Por isso, optaram por vender o K6-2 com o multiplicador destravado. Isso permitia instalar processadores K6-2 em placas antigas, que trabalhavam a apenas 66 MHz, desde que a placa suportasse a tensão de 2.2v (ou 2.4v nas versões mais recentes) utilizada pelo processador. Um K6-2 de 300 MHz podia ser utilizado tanto numa placa-mãe configurada para operar a 100 MHz com multiplicador de 3x quanto em uma placa configurada para operar a 66 MHz com multiplicador de 4.5x.

Naturalmente, o desempenho era melhor na placa de 100 MHz, pela diferença na freqüência de operação da memória e do cache L2, mas o esforço em manter compatibilidade com as placas antigas foi louvável.

Em 1999 a AMD lançou uma última atualização para a plataforma K6, na forma do K6-3, o primeiro processador AMD a trazer cache L2 integrado ao processador. Além de manter os mesmos 64 KB de cache L1 do K6-2, o K6-3 incorporou 256 KB de cache L2 full-speed (operando na mesma freqüência do processador), assim como os processadores atuais. Ele também aproveitava o cache disponível nas placas soquete 7, que passava a funcionar como um cache L3, resultando em mais um pequeno ganho.

Embora fosse perceptivelmente mais rápido que um K6-2 do mesmo clock, o K6-3 era mais caro e foi lançado no finalzinho da era soquete 7, quando a plataforma já caminhava para a obsolência. Por causa disso, ele acabou não fazendo muito sucesso, sendo substituído rapidamente pelos Athlons e Durons.

Como disse, ao desenvolver o Pentium II, a Intel optou por desenvolver um barramento proprietário (o GTL+), de forma a dificultar a vida dos concorrentes. Inicialmente a AMD continuou usando as placas soquete 7, mas em seguida respondeu com o EV6, um barramento próprio (na verdade desenvolvido pela Alpha Digital e licenciado pela AMD), utilizado pelos processadores Athlon e Duron. A partir daí, nunca mais tivemos um barramento padrão, que permitisse a criação de placas-mãe com suporte a processadores dos dois fabricantes, como na época das placas soquete 7.

As primeiras versões do Pentium II utilizavam o encapsulamento SEPP (Singled Edge Processor Package), um formato dispendioso, em que ao invés de um pequeno encapsulamento de cerâmica, temos uma placa de circuito, que traz o processador e o cache L2 integrado. Protegendo esta placa, temos uma capa plástica, formando um cartucho muito parecido com um cartucho de videogame, onde o cooler era instalado na parte de trás. O encaixe para ele foi batizado de slot 1:


Pentium II, com o encapsulamento SEPP

O Pentium II inclui 512 KB de cache L2, que opera à metade da freqüência do processador (num Pentium II 400, por exemplo, o cache L2 opera a 200 MHz) e por isso é bem mais rápido que o cache usado nas placas soquete 7, que opera a apenas 66 ou 100 MHz. Com o cache movido para dentro do processador, as placas deixaram de trazer cache externo, o que continua até os dias de hoje.

O único processador para micros PC a utilizar cache L3 instalado na placa-mãe foi mesmo o K6-3. Existiram séries de processadores Intel, como o Pentium 4 Extreme Edition (lançado em 2005) e algumas versões do Intel Xeon que também utilizavam cache L3, mas nesses casos o cache era instalado dentro do encapsulamento do processador, e não na placa-mãe. Durante muito tempo, a idéia de utilizar cache L3 acabou sendo abandonada, em favor de caches L2 cada vez maiores, mas tudo indica que ele retornará no AMD Phenom e no Intel Nehalem.

Além do cache L2, o Pentium II manteve os 32 KB de cache L1 (dividido em dois blocos de 16 KB para dados e instruções) do MMX. Abrindo o cartucho, é possível ver os dois grandes chips de cache L2 instalados próximos ao die do processador:


Pentium II com core Klamath, sem a cobertura plástica

O Pentium II foi produzido em duas arquiteturas diferentes. As versões de até 300 MHz utilizaram a arquitetura Klamath, que consistia em uma técnica de fabricação de 0.35 micron, muito parecida com a utilizada nos processadores Pentium MMX. Nas versões a partir de 333 MHz foi utilizada a arquitetura Deschutes de 0.25 micron, que resultou em uma dissipação de calor muito menor, possibilitando o desenvolvimento de processadores mais rápidos. As versões do Pentium II de até 333 MHz usam bus de 66 MHz, enquanto que as versões a partir de 350 MHz usam bus de 100 MHz, quebrando a compatibilidade com as placas da geração anterior.

Com o lançamento do Pentium II, a Intel abandonou a fabricação do Pentium MMX, passando a vender apenas processadores Pentium II que eram muito mais caros. O problema com essa estratégia foi que a Intel passou a perder terreno rapidamente no mercado de PCs de baixo custo, principalmente para o K6-2.

Para preencher a lacuna, a Intel lançou o Celeron, que inicialmente era uma simples versão castrada do Pentium II, sem os chips de cache e o invólucro plástico. O Celeron original era muito lento, pois não possuía cache L2 algum, contando apenas com os 32 KB de cache L1.

O cache L2 é um componente extremamente importante nos processadores atuais, pois apesar de o desempenho dos processadores ter aumentado quase 10.000 vezes nas últimas duas décadas, a memória RAM pouco evoluiu em velocidade. Pouco adianta um processador veloz, se a todo instante ele tem que parar o que está fazendo para esperar dados provenientes da memória RAM. É justamente aí que entra o cache secundário, reunindo os dados mais importantes da memória para que o processador não precise ficar esperando. Retirando o cache L2, a performance do equipamento cai em 40% ou mais. Justamente por isso, além de perder feio para o Pentium II, o Celeron sem cache perdia até mesmo para processadores mais antigos.

Essa primeira safra foi rapidamente substituída pelo Celeron Mendocino, que trazia 128 KB de cache L1 interno (full-speed), que resolveu o problema da performance. O Mendocino foi produzido em versões de 300 a 533 MHz, sempre utilizando barramento de 66 MHz. Além de possírem um desempenho próximo ao de um Pentium II do mesmo clock (o cache do Pentium II é maior, porém mais lento), as versões de 300, 333 e 366 MHz permitiam overclocks de 50%, atingindo respectivamente 450, 500 e 550 MHz com boa estabilidade. Não poderia ser mais simples: bastava investir num cooler de boa qualidade e instalar o Celeron Mendocino em uma placa-mãe configurada para operar a 100 MHz.

O Celeron Mendocino foi também o primeiro processador a utilizar o soquete 370, que mais tarde seria utilizado pelo Pentium III Coppermine e demais processadores da família. Foram produzidos também adaptadores, que permitiam usar processadores soquete 370 em placas slot 1 compatíveis:


Celeron Mendocino instalado em uma placa slot 1 usando o adaptador

Em fevereiro de 1999 foi lançado o Pentium III. A versão inicial (que utilizava o core Katmai) não trazia grandes mudanças: era basicamente um Pentium II, que utilizava o encapsulamento SEPP, mantinha o uso do cache externo e operava a 500 MHz. A novidade foi a inclusão das instruções SSE que, assim como as instruções 3D-Now da AMD, eram voltadas para aplicativos multimídia e 3D.

Pouco depois, em outubro de 1999, foi lançado o Pentium III Coppermine, uma versão aprimorada, produzida numa técnica de 0.18 micron, que trazia 256 KB de cache L2 integrado (operando na mesma freqüência do processador) e abandonou o formato SEPP em favor do FC-PGA, destinado a uso em conjunto com as placas-mãe soquete 370.

A mudança decretou a morte do slot 1, que não voltou a ser utilizado por outros processadores Intel. Apesar disso, as versões do Pentium III PC-PGA que utilizavam bus de 100 MHz ainda podiam ser usadas na maioria das placas slot 1 antigas, com a ajuda do adaptador (muitas placas precisavam de uma atualização de BIOS).


Pentium III, com o encapsulamento FC-PGA

Não demorou para que a Intel lançasse também uma nova versão do Celeron, baseada na mesma arquitetura, dando continuidade à tradição de overclocks gigantescos. O Celeron Coppermine nada mais era do que um Pentium III com metade do cache L2 desativado (128 KB), que utilizava bus de 66 MHz (em vez de 100 ou 133, como as diferentes versões do Pentium III). Embora fosse originalmente mais lento que um Pentium III do mesmo clock, o Celeron Coppermine de 600 MHz podia tranquilamente operar a 900 MHz, utilizando bus de 100 MHz, oferecendo um desempenho similar ao de um Pentium III 800 a uma fração do custo. Eu mesmo tenho um, funcionando até hoje. ;)

O Celeron acabou se revelando um bom negócio para a Intel, pois permitia aproveitar processadores Pentium III com defeitos na memória cache, que de outra forma iriam para o lixo.

Quando ocorre um defeito no cache, em geral apenas alguns poucos bits são afetados, normalmente bits fisicamente próximos. Antes de saírem de fábrica, todos os processadores são rigorosamente testados, e os que apresentam defeitos no cache são separados. O Pentium III foi projetado de tal maneira que o cache L2 era dividido em duas seções de 128 KB, que podiam ser desabilitadas individualmente (um processo irreversível). Como é usada apenas a metade "boa" do cache, o processador funciona perfeitamente e temos mais um consumidor satisfeito.

O Celeron Coppermine foi lançado em versões de até 950 MHz, sendo que a partir do Celeron 800 passou a ser utilizado bus de 100 MHz (que melhorou um pouco o desempenho do processador em relação aos antigos). O Pentium III passou a utilizar barramento de 133 MHz e foi lançado em versões de até 1.0 GHz, até ser substituído pelo Pentium 4.

Entre 2001 e 2002, já depois de descontinuar o Pentium III, a Intel produziu pequenas quantidades do Celeron Tualatin, uma versão aprimorada, produzida numa técnica de 0.13 micron e equipada com 256 KB de cache L2. O Tualatin existiu em versões de 1.0 e 1.4 GHz e era compatível com a maioria das placas soquete 370 para Pentium III (embora muitas precisassem de uma atualização de BIOS). Ele possuía um bom desempenho em relação ao Pentium 4 e era bastante econômico com relação ao consumo elétrico e aquecimento, mas a Intel optou por não levar o projeto adiante, com medo de prejudicar as vendas do Pentium 4.


Exemplar raro do Tualatin de 1.2 GHz

Uma questão interessante é que os processadores Pentium II e Pentium III são derivados do Pentium Pro, um processador destinado a workstations e servidores, lançado pela Intel em 1995, em versões de 150, 166, 180 e 200 MHz. Embora fosse contemporâneo do Pentium I, o Pentium Pro era baseado numa arquitetura completamente diferente (a plataforma P6), inspirada nos processadores RISC.

Em vez de processar diretamente todas as instruções complexas incluídas no conjunto x86, o Pentium Pro incluía unidades de execução capazes de processar apenas instruções simples, porém a uma grande velocidade, quase sempre uma instrução em cada unidade de execução, por ciclo de clock. Antes de chegarem às unidades de execução, as instruções complexas utilizadas pelos programas eram convertidas em instruções simples pelas unidades decodificadoras, incluídas no processador. O Pentium Pro incluía três unidades de execução e uma unidade decodificadora capaz de mantê-las ocupadas na maior parte do tempo.

Para completar, o processador incluía 256 KB de cache L2 full speed no mesmo encapsulamento do processador. Isto soa familiar não é? O Pentium Pro é muito similar a um Pentium III Coppermine, só que lançado 4 anos antes. Na época a Intel não possuía tecnologia para incluir o cache L2 diretamente no die do processador, por isso era utilizado um wafer separado, porém incluído no mesmo encapsulamento do processador. Isso fazia com que o Pentium Pro tivesse um formato retangular:


Interior de um Pentium Pro, com o chip de cache separado

Naturalmente, o Pentium Pro não possuía as instruções SSE, mas os ingredientes básicos já estavam presentes. Podemos dizer que tanto o Pentium II quanto o Pentium III são versões melhoradas do Pentium Pro, adaptadas ao mercado doméstico. Uma observação é que também existiram versões do Pentium Pro com 512 KB e 1 MB de cache, mas elas eram muito mais caras e por isso foram produzidas em pequenas quantidades.

Voltando à AMD, embora o K6-2 tenha dado combate ao Pentium II e às primeiras versões do Pentium III, as limitações da antiga plataforma soquete 7 limitavam o desempenho do processador. Outro problema é que o K6-2 era uma plataforma de baixo custo, que levava ao aparecimento de placas-mãe cada vez mais baratas e de qualidade cada vez pior. Os constantes problemas com as placas acabaram fazendo com que o K6-2 ficasse com má fama no mercado, embora o processador em si apresentasse um bom custo benefício.

Em 1999 a AMD finalmente conseguiu lançar o Athlon (na época também chamado de K7), uma plataforma completamente nova, que conseguiu solucionar os principais problemas associados ao K6-2. Apesar de toda a evolução, todos os processadores AMD lançados daí em diante, incluindo os Athlon 64 dual-core e quad-core continuam sendo baseados nessa mesma arquitetura.

As primeiras versões do Athlon utilizavam um formato de cartucho, muito similar ao usado pelo Pentium II, com chips de memória cache externos, operando à metade da freqüência do processador. As placas-mãe utilizavam o slot A, um conector similar ao usado pelo Pentium II, porém incompatível e com uma pinagem diferente.

O uso de cache externo atrapalhou o desempenho dessa versão inicial, principalmente se levarmos em conta que na época a Intel já vendia o Pentium III Coppermine, com cache full-speed, que era mais rápido e mais barato de se produzir. Para piorar, a AMD não conseguiu obter chips de memória cache capazes de operar a mais de 350 MHz, de forma que o divisor da freqüência do cache foi aumentando conforme lançava processadores mais rápidos.

As versões de até 700 MHz do Athlon slot A trazem cache L2 operando à metade da freqüência do processador. As versões de 750, 800 e 850 MHz trazem cache operando a apenas 2/5 da freqüência, enquanto nas versões de 900, 950 e 1 GHz o cache opera a apenas 1/3 da freqüência.


Athlon slot A, baseado na arquitetura K7

Essa cara e desajeitada versão inicial do Athlon foi rapidamente substituída pelo Athlon Thunderbird, que incorporou 256 KB de cache L2 full-speed e voltou a utilizar o formato soquete, dando início à era soquete A (soquete 462). Esse mesmo formato continuou sendo usado pelos Durons, Athlons XP e Semprons, até a introdução do Athlon 64, que passou a utilizar placas-mãe baseadas no soquete 754 ou 939.

O Duron substituiu o K6-2 como processador de baixo custo da AMD e prestou bons serviços, concorrendo com as diferentes versões do Celeron. Em todas as suas encarnações, o Duron possui apenas 64 KB de cache L2. Entretanto, ele conserva o massivo cache L1 de 128 KB do Athlon, o que cria uma configuração interessante, com mais cache L1 do que cache L2.

Assim como o Athlon, o Duron utiliza um sistema de cache "exclusivo", onde os dados armazenados no cache L1 são sempre diferentes dos armazenados no cache L2. O cache L1 do Celeron, por sua vez, armazena sempre cópias de informações já armazenadas no cache L2 de 128 KB. Graças a essa característica, o Duron acaba levando vantagem com relação ao cache, pois é capaz de armazenar um total de 196 KB de informações nos caches, contra apenas 128 KB no Celeron.

A versão inicial do Duron utilizava o core Spitfire (baseado no Athlon Thunderbird) e existia em versões de 600 a 950 MHz. Em seguida foi lançado o Duron Morgan (baseado no Athlon XP), que existiu em versões de até 1.3 GHz, quando foi substituído pelo Sempron.

As versões iniciais do Athlon Thunderbird utilizavam barramento de 100 ou 133 MHz, assim como o Pentium III. Entretanto, as versões seguintes (com core Thoroughbred e Barton) passaram a utilizar bus de 166 ou 200 MHz, memórias DDR e tensões mais baixas, quebrando a compatibilidade com as placas antigas. Com o uso de memória DDR, o barramento passa a realizar duas transferências por ciclo, por isso é comum que os fabricantes dobrem a freqüência na hora de divulgar as especificações, chegando aos 333 (166 x 2) ou 400 MHz (200 x 2).

Como citei anteriormente, a Intel patenteou o barramento GTL+ usados pelos processadores Pentium II em diante, assim como o slot 1 e o soquete 370, de forma que a AMD não podia utilizá-los em seus processadores. A AMD optou então por licenciar o barramento EV6, desenvolvido pela Alpha Digital. O EV6 possui uma vantagem importante sobre o barramento da Intel, que é o fato de ser um barramento ponto a ponto. Nele, cada processador tem seu barramento exclusivo de comunicação com o chipset, permitindo o desenvolvimento de placas para dois ou quatro processadores Athlon, trabalhando em SMP, cada um com o seu barramento exclusivo com a memória e outros componentes, resultando em um ganho considerável de desempenho em relação ao Pentium III. Embora a AMD não tenha conseguido tirar muito proveito deste recurso nos desktops, ele ajudou o Athlon a ganhar espaço nos servidores, onde máquinas com dois processadores são comuns.

A seguir temos uma foto que mostra como o Athlon é fisicamente. Essa foto foi cedida pela própria AMD e é bem interessante, pois ajuda a entender como os dados trafegam dentro do processador:

Veja que a foto está dividida em pequenos retângulos, cada um mostrando a área ocupada por cada componente do processador. Infelizmente tudo está em inglês, mas aqui vai uma breve legenda dos componentes mais importantes (na ordem em que cada componente aparece na ilustração, começando de cima)

Floating Point Execution Units: São as unidades de execução de ponto flutuante. Nada mais é do que a parte fundamental do coprocessador aritmético, fundamental em vários aplicativos.

Floating Point Control: Este componente controla a ordem em que as instruções serão executadas pelo co-processador aritmético, permitindo que as unidades de ponto flutuante fiquem ocupadas na maior parte do tempo.

Floating Point Scheduler: Armazena as próximas instruções que serão processadas pelo co-processador. Este componente é essencial para o trabalho do Floating Point Control.

64 Kbyte Data Cache: Os 128 KB de cache L1 do Athlon são divididos em dois blocos, 64 KB para dados e 64 KB para instruções. Esta divisão meio a meio é utilizada na maioria dos processadores atuais e melhora a velocidade de acesso, pois permite que os dois blocos sejam acessados simultaneamente. O Data Cache é a metade que armazena dados.

Integer Execution Unit: Composto pelas unidades de execução de inteiros, ele é o componente básico de qualquer processador. É aqui que são processadas as operações envolvendo números inteiros.

Instruction Control Unit: Circuito que controla o envio de instruções para as unidades de execução de inteiros. Também ordena as instruções, de forma que possam ser processadas mais rápido.

Bus Interface Units: É por aqui que os dados entram e saem do processador. Controla a comunicação do processador com o chipset e com os demais componentes do micro.

64 Kbyte Instruction Cache: É o segundo bloco do cache L1, o bloco que armazena instruções.

Branch Prediction: O circuito de Branch Prediction é um dos componentes mais importantes dos processadores atuais, responsável por organizar as instruções de forma a manter as unidades de execução do processador ocupadas. Além de procurar adiante no código por instruções que podem ser "adiantadas", ele "adivinha" o resultado de operações de tomada de decisão (levando em conta fatores como o resultado de operações similares executadas anteriormente), permitindo que o processador vá "adiantando o serviço" enquanto o resultado da primeira operação ainda não é conhecido. Como todo bom adivinho, ele às vezes erra, fazendo com que o processador tenha que descartar todo o trabalho feito. Apesar disso, o ganho é muito grande, pois nos processadores atuais o circuito de branch prediction acerta em mais de 90% dos casos.

Predecode Array: Esta é a porta de entrada do processador. O predecore array é composto pelos circuitos que convertem as instruções x86 enviadas pelos programas nas instruções simples que o processador executa internamente.

Até certo ponto, tanto o Pentium III quanto o Athlon e outros processadores x86 atuais trabalham da mesma maneira. Internamente, o processador é capaz de executar apenas instruções simples, para ser mais exato apenas quatro instruções: adição, atribuição, leitura e gravação.

Se você já estudou alguma linguagem de programação, aprendeu a importância das variáveis, que são pequenos espaços de memória reservados para guardar algum tipo de informação. Existem vários tipos de variáveis, de 8, 16, 32 bits, etc. que mudam de nome dependendo da linguagem de programação usada. A instrução de atribuição do processador é usada sempre que é necessário criar ou alterar o valor de uma variável.

Por exemplo, imagine que um programa qualquer criou uma variável de 8 bits com o número 5. A próxima instrução manda que o programa compare o valor da variável com o número 6 e, caso o número seja menor, altere o valor para 9. Como 5 é menor que 6, o programa decide fazer a alteração, utilizando a operação de atribuição do processador, que lê o valor 9 e grava-o no espaço de memória da variável, que passa a ter o valor 9 em vez de 5.

A instrução de soma é a operação básica que permite fazer todo tipo de processamento, enquanto as instruções de leitura e gravação permitem mover os dados. Basicamente é só isso que um processador atual sabe fazer. Operações mais complexas são executadas através da combinação de várias instruções simples.

Para calcular uma multiplicação, por exemplo, o processador utilizará seqüencialmente várias operações de soma. Na verdade, dentro do processador todas as operações, mesmo as mais complexas, são calculadas com base em várias operações de soma, feitas entre os valores binários processados pelo processador. Uma operação de subtração é obtida através de uma operação de atribuição, que transforma um dos valores em negativo, seguida por uma operação de soma.

Uma operação de divisão é obtida executando-se uma seqüência de operações de subtração e todos os demais cálculos, mesmo os cálculos mais complexos, executados pelo co-processador aritmético, são resolvidos usando apenas as quatro operações, obtidas a partir das simples instruções de soma e atribuição.

Pois bem, o conjunto de instruções x86, utilizadas pelos programas e com as quais qualquer processador destinado a micros PC deve ser compatível, é composto tanto por instruções simples (soma, subtração, leitura, gravação, comparação, etc.) quanto por instruções muito complexas, que devem ser quebradas em várias instruções simples para que possam ser executadas pelo processador.

Excluindo-se componentes de apoio, como o cache L1, deixando apenas a parte "funcional" do processador, podemos dividir o processador em três partes.

A primeira parte é o decodificador de instruções. Esse componente tem a função de converter as instruções x86 usadas pelos programas nas instruções simples que podem ser executadas pelo processador. As instruções simples vão então para uma unidade de controle (o circuito de branch prediction), que organiza as instruções da forma que possam ser executadas mais rapidamente. As instruções formam então uma fila (organizada pelo scheduler) a fim de permitir que a unidade de controle tenha tempo de fazer seu trabalho. Lembre-se de que os processadores atuais são superescalares, executam várias instruções por ciclo, simultaneamente, o que torna essencial a existência de algum circuito que as coloque numa ordem em que a execução de uma não dependa do resultado da execução de outra.

Finalmente, temos as unidades de execução, onde as instruções preparadas e organizadas são finalmente processadas. Veja que todos os circuitos trabalham simultaneamente, com o objetivo de manter as unidades de execução ocupadas:

A lógica é que quanto mais unidades de execução tivermos trabalhando ao mesmo tempo, mais instruções todas juntas serão capazes de processar e quanto mais circuitos de decodificação e controle tivermos, mais eficiente será a decodificação das instruções, resultando em um processador mais rápido.

O maior limitante é que a maioria dos programas são desenvolvidos esperando que o processador processe uma instrução de cada vez. Temos também um grande número de operações de tomada de decisão, onde o processador precisa resolver uma determinada operação para então poder decidir o que vai fazer depois. Graças aos circuitos de branch prediction, os processadores são capazes de ir "adiantando o serviço", processando outras instruções mais adiante, enquanto a operação de tomada de decisão é solucionada. De qualquer forma, existe um limite para quanto trabalho o processador é capaz de executar por ciclo.

Com mais do que três ou quatro unidades de execução, o processador acaba ficando ocioso grande parte do tempo, de forma que processadores muito mais complexos do que isso acabariam sendo um desperdício de recursos.

Em vez de adicionar mais e mais unidades de execução aos processadores, os fabricantes passaram, a partir de um certo ponto, a desenvolver processadores dual-core e quad-core, onde temos dois ou quatro processadores no mesmo encapsulamento, trabalhando como se fossem um único processador. Isto resulta num melhor desempenho ao rodar vários aplicativos simultaneamente (você pode jogar e ripar um DVD ao mesmo tempo, por exemplo) e é muito mais simples e barato para os fabricantes do que desenvolver um único e processo super-processador. Como atualmente é comum manter um grande número de aplicativos abertos simultaneamente, somados com o antivírus, antispyware, firewall e outros integrantes do "kit Windows", um processador dual-core acaba oferecendo um bom ganho na prática.

Aqui temos um diagrama da Intel, que mostra como isso funciona no Core 2 Duo. Veja que temos um grande bloco de cache L2, que é compartilhado por dois núcleos (cores). Tudo isso dentro do mesmo die, ou seja, dentro da mesma pastilha de silício:


Visão ampliada do Core 2 Duo

Outros processadores seguem um projeto mais convencional, onde temos dois núcleos completamente separados, cada um com seu próprio cache L2, ou mesmo processadores dual-core formados pela combinação de dois processadores separados, instalados dentro do mesmo encapsulamento, como no caso do Pentium D.

A partir do Phenom, a AMD passou a utilizar uma arquitetura com dois ou quatro núcleos por processador, cada um com seu próprio cache L1 e L2, que compartilham um grande bloco de cache L3. Tudo indica que a Intel utilizará uma arquitetura semelhante no Nehalem, cujo lançamento está agendado para o final de 2008.

Nenhum comentário:

Postar um comentário

FAÇA UMA DOAÇÃO PARA O NOSSO BLOG

MAKE A DONATION TO OUR BLOG/ HACER UNA DONACIÓN A NUESTRO BLOG/ FAI UNA DONAZIONE PER IL NOSTRO BLOG/ FAITES UN DON DE NOTRE BLOG/ Spenden AUF UNSERE BLOG/ บริจาคให้กับบล็อกของเรา/ 私達のブログに寄付する/

WATCHMEN – Trailer Oficial

TOP 100 GATAS


TABLE OF HOTNESS

100. Deanna Russo
99. Melissa Rycroft
98. Rebecca Mader
97. Marisa Tomei
96. Olivia Munn
95. Padma Lakshmi
94. Yvonne Strahovski
93. Michelle Obama
92. Joanna Krupa
91. Chelsea Handler
90. Roselyn Sanchez
89. Jamie Chung
88. Diane Kruger
87. Summer Glau
86. Ali Campoverdi
85. Michelle Trachtenberg
84. Minka Kelly
83. Whitney Port
82. Emma Watson
81. Heidi Montag
80. Jamie Gunns
79. Jaime King
78. Danica Patrick
77. Stacy Keibler
76. Cameron Richardson

75. Tricia Helfer
74. Amanda Bynes
73. Ashley Tisdale
72. Camilla Belle
71. Gabrielle Union
70. Maria Menounos
69. Jennifer Morrison
68. Ashley Greene
67. Emmy Rossum
66. Emma Stone
65. Amanda Righetti
64. Diora Baird
63. Milla Jovovich
62. Heidi Klum
61. Dania Ramirez
60. Carrie Underwood
59. Ana Ivanovic
58. Miranda Kerr
57. Audrina Patridge
56. Amber Heard
55. Christina Milian
54. Rachel Bilson
53. Kim Kardashian
52. Beyoncé
51. Sienna Miller

50. Taylor Swift
49. Freida Pinto
48. Arielle Kebbel
47. Katie Cassidy
46. Nicole Scherzinger
45. Fergie
44. Avril Lavigne
43. Elisha Cuthbert
42. Nikki Reed
41. Nadine Velazquez
40. Lily Allen
39. Anna Faris
38. Charlize Theron
37. Cameron Diaz
36. Hayden Panettiere
35. Anna Kournikova
34. Scarlett Johansson
33. Blake Lively
32. Ciara
31. Hilary Duff
30. Penélope Cruz
29. Zoe Saldana
28. Danneel Harris
27. Vanessa Hudgens
26. Angelina Jolie

25. Julianne Hough
24. Eva Mendes
23. Lindsay Lohan
22. Kate Beckinsale
21. AnnaLynne McCord
20. Moon Bloodgood
19. Chan Marshall
18. Marisa Miller
17. Britney Spears
16. Gina Carano
15. Katy Perry
14. Christina Aguilera
13. Jessica Alba
12. Leighton Meester
11. Jessica Biel

Click here to
see the top 10!


Gatas USA



2008
Jenna - Cuyahoga Falls, OH Shaun - Conroe, TX undefinedundefinedundefinedundefinedundefinedMegan - Parma, OH undefinedundefinedundefinedundefinedundefinedundefinedJacquelyn - Dayton, MD undefinedSarah - Baltimore, MD undefinedLucia - Burbank, CA undefinedEdnyr Marie - Orlando, FL undefinedundefinedChristina - Fresh Meadows, NY undefinedundefined
Debbie - Huntington Beach, CA
2007
2007