Período paleolítico

Em 1993 a Intel lançou a primeira versão do Pentium, que ainda operava a 60 MHz e era produzida usando uma antiquada técnica de fabricação de 0.80 micron. Assim como outras novas plataformas, o Pentium foi recebido com uma
certa desconfiança, já que as placas eram mais caras e, a 60 MHz, os benefícios da nova arquitetura não eram tão evidentes. Entretanto, o lançamento de modelos mais rápidos e os cortes de preços logo popularizaram a plataforma.

O Pentium trouxe várias mudanças em relação ao 486. A mais significativa delas foi a adoção de uma arquitetura superescalar, com o uso de duas unidades de execução em vez de uma. Junto com a multiplicação de clock e o uso do
cache, essa foi outra das grandes melhorias arquiteturais que permitiram que o desempenho dos processadores aumentasse de maneira tão surpreendente do 386 para cá.

Em vez de dependerem apenas do aumento no clock, os processadores passaram a executar mais instruções por ciclo, incorporando um número cada vez maior unidades de execução e mais memória cache (sem falar nos processadores
dual-core e quad-core). Isso fez com que o desempenho crescesse de forma exponencial, combinando os aumentos na frequência de operação com mais instruções processadas por ciclo. Mesmo que existisse um 486 capaz de operar a 2 ou 3 GHz, o desempenho seria
dezenas de vezes inferior ao de um processador atual.

De volta ao Pentium, a primeira unidade de execução (pipe U) é uma unidade completa, capaz de processar qualquer instrução, enquanto a segunda (pipe V) é uma unidade simplificada, capaz de processar apenas instruções simples
(basicamente as mesmas que no 486 podem ser executadas em um único ciclo de clock). Como as instruções complexas são mais raras e quase sempre usadas em combinação com várias instruções simples, esse design permitiu que o Pentium atingisse o objetivo de
processar duas instruções por ciclo sem que fosse necessário aumentar tanto a complexidade do núcleo.

Diferente dos processadores atuais, que usam sistemas bem mais complexos de decodificação e reorganização de instruções, com o objetivo de manter as unidades de execução ocupadas na maior parte do tempo, o Pentium continuou
processando as instruções diretamente (como no 486) e na ordem original, mantendo a simplicidade.

Esta abordagem é chamada de processamento ordenado (in-order) e é atualmente usada em processadores de baixo consumo, como a Atom e os processadores ARM11. Ela permitiu que o Pentium fosse construído com apenas 3.1 milhões
de transistores (um processador atual utiliza 200 ou 300 milhões, sem contar os caches) e fosse relativamente econômico do ponto de vista do consumo elétrico.

Continuando, o uso da arquitetura superescalar trouxe um novo problema, que é a divisão do trabalho entre as unidades de execução, já que os aplicativos continuam sendo compostos por comandos sequenciais (com o uso de muitas
operações de tomada de decisão, onde o processador precisa primeiro concluir a execução de uma instrução para saber qual caminho seguir e poder assim executar as seguintes).

Para solucionar o problema foi adotado o uso 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.

Em uma operação de tomada de decisão (se, então, senão), por exemplo, uma das unidades de execução processaria a primeira instrução (o “se”), enquanto a outra adiantaria o processamento das instruções de um dos caminhos
possíveis, escolhido pelo circuito de branch prediction com base na sua tabela interna de possibilidades.

Sempre que o caminho correto é escolhido, o processador ganha tempo (já que aproveita o trabalho executado). Por outro lado, quando o circuito de branch prediction erra a previsão, o processador precisa descartar o trabalho
realizado, limpar o pipeline e começar novamente a partir do caminho correto.

O circuito de branch prediction do Pentium era relativamente simples, projetado para examinar o código em busca de algumas funções específicas e tomar decisões pré-programadas, o que resultava em um índice de acerto de 60 a
80%. Nos processadores atuais (que usam três ou mais unidades de execução e pipelines muito mais longos) o circuito de branch prediction é muito mais complexo e trabalha com índices de acerto muito mais altos, acima de 95%. Isso é necessário pois com
pipelines mais longos, a penalidade pelos erros nos processadores atuais é muito maior do que na época do Pentium, que usava um pipeline de apenas 5 estágios.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X