Definição de NetBurst

Por Carlos E. Morimoto. Há .

A arquitetura NetBurst foi utilizada pela Intel de 2000 a 2006, englobando desde os primeiros modelos do Pentium 4 até o Pentium D, passando por diversas variações, como os Pentium Extreme Edition e os Celerons.

O nome "NetBurst" não tem nada a ver com o desempenho em redes ou na internet; é apenas um nome mercadológico usado para tentar ilustrar a arquitetura do processador e suas otimizações com relação ao processamento de grandes volumes de dados. Sempre que ouvir falar em um processador "baseado na arquitetura NetBurst", tenha em mente que se trata de alguma derivação do Pentium 4, como um Pentium D ou Celeron.

A arquitetura NetBurst é composta por 4 pontos principais: Hyper Pipelined Technology, Rapid Execution Engine, Execution Trace Cache e o uso do bus quad-pumped. Vamos aos detalhes de cada uma das 4 tecnologias:

- Hyper Pipelined Technology:

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, em que cada um monta uma peça, até termos no final o produto completo.

O circuito de branch prediction, permite que o processador use o tempo ocioso para ir "adiantando o trabalho", processando um dos caminhos possíveis em uma operação de tomada de decisão enquanto não sabe o resultado da operação que diz qual dos caminhos é o carreto,

O nível de exatidão do circuito de branch prediction varia muito de acordo com o processador. No Pentium ele era bastante simples, escolhendo qual caminho seguir praticamente de forma aleatória, enquanto nos processadores atuais ele decide consultando uma tabela com resultados anteriores de operações similares.

Quando o processador escolhe o caminho certo, ele ganha tempo, já que pode aproveitar o trabalho já feito. Mas, quando erra, ele precisa descartar todo o trabalho e recomeçar a partir do outro caminho.

O Pentium III possui um total de 10 estágios, além de um conjunto de outros circuitos (fora do pipeline) que são encarregados de converter e ordenar as instruções. Ao contrário do Pentium, que é um processador CISC, que processa todas as instruções x86 diretamente, o Pentium III e todos os demais processadores atuais, são processadores híbridos CISC/RISC, que quebram as instruções x86 em instruções simples, que são então processadas.

Graças à inclusão de todos os demais circuitos, uso do cache integrado e melhorias nas placas-mãe, o aumento no número de estágios de pipeline do Pentium III não teve um impacto muito negativo sobre o desempenho. Pelo contrário, um Pentium III é pelo menos duas vezes mais rápido que um Pentium I do mesmo clock. O Pentium II, por sua vez, é muito similar ao Pentium III em arquitetura, carecendo apenas do cache L2 on-die e das instruções SSE.

Com mais estágios, cada um responde por uma fração menor do processamento, o que permite que o processador seja capaz de operar a freqüências mais elevadas. Voltando ao exemplo da linha de produção, seria como se dobrássemos o número de operários e cada um passasse a encaixar apenas uma peça em cada produto que passa através da esteira, em vez de duas. Reduzindo o trabalho de cada operário pela metade, seria possível mover a esteira ao dobro da velocidade, dobrando a produção.

O grande problema é que os processadores atuais executam várias instruções simultaneamente, enquanto os programas são uma seqüência de instruções, de forma que sempre existe uma penalidade em adicionar mais estágios. Quanto mais estágios, mais tempo o processador demora para executar as instruções iniciais de tomada de decisão e mais tempo perde ao escolher o caminho errado.

Ainda no exemplo da linha de produção seria como se o produto a ser montado mudasse constantemente, de acordo com os pedidos recebidos dos clientes. Cada vez que o produto muda, é preciso parar a esteira, desmontar as unidades do produto anterior que já estavam parcialmente montadas e limpar a esteira, para só então poder recomeçar a produção.

No Pentium 4, a cada tomada de decisão errada são perdidos pelo menos 20 ciclos de processamento, uma eternidade considerando que em média, 14% das instruções processadas são de tomada de decisão.

Com exceção do Pentium 4, quase todos os processadores atuais utilizam de 8 a 14 estágios de pipeline, que parece ser a faixa com a melhor relação entre clock, complexidade e desempenho. Acima disto, mais pipelines equivalem a um desempenho por ciclo de clock cada vez maior.

A partir de um certo ponto, aumentar o número de estágios torna-se contra produtivo, já que o processador precisa operar a freqüências de clock cada vez mais altas para compensar a perda de desempenho causada pelo maior número de estágios. Um bom exemplo disto é o Pentium 4 com core Prescott (que veremos a seguir), que precisou incorporar um conjunto de várias melhorias apenas para compensar a perda de desempenho causada pelo novo aumento no número de estágios.

Além de ser mais lento que um Athlon Thunderbird da mesma freqüência, o Willamette é também substancialmente mais lento que um Pentium III do mesmo clock em praticamente todos os aplicativos. 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 diretamente os modelos de 1.4 e 1.5 GHz do Pentium 4, 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, o que não seria uma boa propaganda.

Além da perda de desempenho, outro efeito colateral de se usar mais estágios de pipeline é o fato de tornar o processador maior e mais complexo e fatalmente bem mais caro de se produzir. O Pentium 4 de 0.18 micron mede 217 milímetros quadrados, quase o dobro do Athlon Thunderbird, que mede 120 mm². Isso significa que o Pentium 4 é proporcionalmente mais caro de se produzir.

- Execution trace cache:

O Pentium III possui 32 KB de cache L1, dividido em dois blocos, onde 16 KB são para o armazenamento de dados e os demais 16 KB para o armazenamento de instruções. O Athlon utiliza um cache L1 de 128, novamente dividido em dois blocos separados, que armazenam dados e instruções.

No Pentium 4, o bloco do cache L1 destinado a instruções foi substituído pelo Execution trace cache, um tipo de cache ultra-rápido que, em vez de instruções, armazena diretamente uOPs, que são as instruções já decodificadas, prontas para serem processadas. Isto garante que o cache tenha apenas um ciclo de latência (a instrução é solicitada em um ciclo e recebida no seguinte), o que faz com que o processador não perca praticamente 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 decodificar 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 micros PC continuarem usando 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 decodificador, 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.

O trace cache ocupa uma área muito grande do die do processador, equivalente ao que seria ocupado por aproximadamente 96 KB de cache L1 convencional. Apesar disso, ele armazena o equivalente a apenas 8 KB de instruções decodificadas, já que elas ocupam brutalmente mais espaço. Ou seja, por um lado o trace cache melhora o desempenho do processador, já que é muito rápido, mas por outro diminui (em relação ao que seria obtido ao utilizar um cache convencional de maior capacidade), pois o pequeno volume de dados armazenados faz com que ele precise recorrer mais freqüentemente aos dados armazenados no cache L2 e na memória principal.

O trace cache é complementado por um cache de dados de baixa latência, consideravelmente mais rápido que o cache L1 encontrado no Pentium III e no Athlon. O problema é que, para atingir o desempenho desejado, as células do cache se tornaram extremamente volumosas, de forma que a Intel optou por incluir apenas 8 KB.

Ou seja, na prática, o Pentium 4 possui apenas 16 KB de cache L1: 8 KB para dados e mais o equivalente a 8 KB para instruções, armazenadas de forma decodificada no trace cache. Por algum motivo, os projetistas da Intel decidiram que essa configuração seria a melhor em termos de desempenho.

- Bus de 400 MHz:

O execution trace cache oferece tempos de latência muito baixos, mas em troca armazena um volume muito pequeno de dados e instruções. Devido a isso, o processador é muito mais dependente do desempenho do cache L2 e do acesso à memória.

O plano inicial era utilizar módulos de memória Rambus em dual-channel. Cada módulo RIMM oferecia (no caso dos módulos PC-800) um barramento de dados de 1.6 GB/s, de forma que combinando a banda oferecida por dois módulos, seria possível obter 3.2 GB/s, o que é 3 vezes o oferecido pelos módulos de memória PC-133 utilizados pelo Pentium III.

Para absorver esse grande volume de dados, o Pentium 4 utiliza um barramento quad-pumped, ou seja, capaz de realizar 4 transferências por ciclo. Operando a 100 MHz, temos uma taxa efetiva de 400 MHz, que é a freqüência utilizada nas primeiras placas soquete 423.

Com a evolução da plataforma, a Intel foi capaz de desenvolver chipsets capazes a operar a 133, 200 e 266 MHz, que, com as 4 transferências por ciclo, equivalem a, respectivamente, 533, 800 e 1066 MHz. Embora o Willamette tenha ficado restrito aos 400 MHz originais, as freqüências mais altas foram utilizadas pelos processadores lançados posteriormente.

Embora o Pentium 4 fosse consideravelmente mais lento quando usado em conjunto com memórias SDRAM, as memórias DDR reduziram a perda de forma expressiva. A partir de um certo ponto cada vez mais placas passaram a suportar o uso de memórias DDR em dual-channel, configuração que supera as memórias Rambus em desempenho, já que, além da maior taxa de transferência, oferece tempos de latência mais baixos.

Embora na prática não exista muita diferença, um barramento de 1066 MHz "reais" é diferente, do ponto de vista técnico, de um que opera a 266 MHz realizando 4 transferências por ciclo. No caso do barramento do Pentium 4 existe ainda um agravante, que é o fato dos endereços e instruções serem enviados apenas duas vezes por ciclo, metade da freqüência da transferência de dados.

Apesar disso, como as transferências de dados são muito mais numerosas que a transmissão de endereços, a "inexatidão técnica" do barramento de 1066 MHz da Intel acaba passando desapercebida. ;)

- Rapid Execution Engine:

Todo processador atual é dividido em dois componentes básicos, as unidades de execução de inteiros e as unidades de ponto flutuante (FPU). A parte que processa as instruções envolvendo números inteiros é responsável pela maior parte das instruções e pelo desempenho do processador nos aplicativos 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 aplicativos gráficos.

O "Rapid Execution Engine" do Pentium 4 consiste num reforço nas unidades de inteiros do processador. O Pentium 4 possui um total de 3 unidades de processamento de inteiros, duas ALUs, que processam as instruções mais simples e uma terceira ALU, encarregada de decodificar e processar as instruções complexas que, embora em menor quantidade, são as que tomam mais tempo do processador.

Esse conjunto de 3 unidades de execução de inteiros é semelhante ao do Pentium III, porém, como diferencial, no Pentium 4 tanto as duas ALUs encarregadas das instruções simples quanto as duas GLUs encarregadas das leituras e gravações executam duas instruções por ciclo, de forma que, em um Willamette de 2.0 GHz, elas atingem uma freqüência efetiva de nada menos que 4.0 GHz.

Este é um recurso 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, a terceira ALU tornou-se mais lenta que a do 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 III, 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 aplicativos de escritório, era literalmente massacrado nos jogos e aplicativos gráficos, tivemos com o Pentium 4 x Athlon um cenário semelhante, porém com os lados invertidos: a Intel atacava com um processador 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 foi 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 otimizados? A Intel optou por seguir exatamente o mesmo caminho, incorporando 144 novas instruções ao Pentium 4, chamadas de SSE2 que visam melhorar seu desempenho em jogos e aplicativos gráficos.

Veja também
TikTok Notes, rival do Instagram, começa a ser liberado para testes
TikTok Notes, rival do Instagram, começa a ser liberado para testes
Mobile
CPU Pentium e GPU NVIDIA: relembre o hardware do primeiro Xbox, lançado em 2001
CPU Pentium e GPU NVIDIA: relembre o hardware do primeiro Xbox, lançado em 2001
Artigos
Samsung lança no Brasil os notebooks Galaxy Book 4 com IA e processadores Core Ultra
Samsung lança no Brasil os notebooks Galaxy Book 4 com IA e processadores Core Ultra
Notícias
Bethesda trabalhou em uma versão de Starfield para o PS5, mas ela foi cancelada pelos chefes do Xbox
Bethesda trabalhou em uma versão de Starfield para o PS5, mas ela foi cancelada pelos chefes do Xbox
Games
ChatGPT será utilizado pelo governo do Estado de SP para a geração do material didático das aulas digitais
ChatGPT será utilizado pelo governo do Estado de SP para a geração do material didático das aulas digitais
Notícias
Chromebox Micro, o mini-PC da Lenovo que é do tamanho de um smartphone
Chromebox Micro, o mini-PC da Lenovo que é do tamanho de um smartphone
Hardware
true