Filosofia de Design de CPU: Guerra dos Gigahertz
Índice
- Introdução
- Evolução dos designs de CPU
- Arquitetura do Pentium 3
- Tecnologias modernas no Pentium 3
- Arquitetura do Pentium 4
- Desafios da arquitetura NetBurst
- Retrocesso ao arquitetura P6
- A era da guerra de frequências
- A importância da latência de instrução
- O fim da guerra de gigahertz
A Evolução dos Designs de CPU: Do Pentium 3 ao Pentium 4
O mundo dos processadores de computador tem sido palco de uma eterna batalha entre desempenho e eficiência. Com a introdução do Rison e do Coffee Lake, uma nova guerra no terceiro fio do design de CPU emergiu entre as escolas. Antes de nos aprofundarmos no novo processador, é importante fazer uma rápida lição de história sobre a evolução do design de CPU, o que impulsionou essa evolução e por que ela inclui uma visão dos primeiros dois grandes saltos.
Arquitetura do Pentium 3
O Pentium 3 é um CPU de arquitetura moderna e especial. Apresenta praticamente todas as tecnologias e ideias de design modernas que tornam um CPU excelente. Honestamente, a arquitetura P6 estava à frente do seu tempo. Vamos ver o que a tornou especial.
O Pentium 3 tinha tecnologias modernas, como microcódigo atualizável e renomeação de registradores. A renomeação de registradores permitia que registradores fossem atribuídos a múltiplos valores de programas diferentes, virtualizando cada registrador. Isso permitia que vários programas fossem executados simultaneamente em um único processador, sem que um deles precisasse esperar que seus registradores fossem liberados. Isso, por sua vez, permitia a execução fora de ordem, onde o código é executado antes mesmo de estar pronto para execução. Se uma instrução que deveria ser executada agora ainda não estiver pronta para execução, como se tivermos duas instruções "x" e "y" declaradas na ordem "x" seguido por "y", ambas as instruções podem ser executadas e qualquer alteração em um registrador compartilhado que aconteça fora da ordem do programa será retida até que ambas as instruções sejam executadas. Em seguida, elas são colocadas em um buffer para serem rearranjadas de volta na ordem do programa antes de serem finalizadas. Isso significa que tanto "x" quanto "y" serão resolvidos corretamente, mesmo se "y" for executado primeiro.
Outra característica moderna é a pipeline de Alta resolução, ou seja, uma pipeline mais longa com 10 ou 11 estágios. Algumas fontes dizem que são 10 e outras dizem que são 11. Vou usar 11 aqui. Essa pipeline mais longa permite operar em frequências de operação alta, tornando cada estágio menor, mas aumentando a latência de todas as formas. As velocidades de clock mais baixas não funcionam muito bem com pipelines de CPU, mas isso é assunto para outro vídeo.
Além da execução fora de ordem e renomeação de registradores, o Pentium 3 não foi desenvolvido com nenhum foco de design importante em mente. Basicamente, ele não estava tentando vencer uma guerra, já que nenhuma havia começado ainda.
Arquitetura do Pentium 4: A História da Catástrofe
Já o Pentium 4 apresentou uma arquitetura totalmente nova e radicalmente diferente. Essa arquitetura foi projetada para velocidade, e apenas velocidade. A Intel fez a primeira tentativa de um processador que priorizava a velocidade do clock em vez do IPC (instruções por ciclo). Em retrospecto, a Intel deveria ter pensado melhor nisso, pois foi uma catástrofe.
Para entender o porquê, vamos olhar como eles alcançaram essas altas velocidades e o que tiveram que sacrificar. Mas primeiro, vamos voltar ao Pentium 3. Você sabe como eu disse que ele é um CPU moderno? Bem, ele apresenta praticamente todas as tecnologias modernas e ideias de design em um CPU moderno. Isso o torna ótimo.
Ao contrário do Pentium 3, o Pentium 4 foi projetado com uma arquitetura extremamente longa, mas muito estreita. O nome do jogo era frequências mais altas, mas naquela época os entusiastas conheciam menos coisas como IPC. De qualquer forma, tudo isso tinha um custo: baixo IPC e alta latência de instruções. O Pentium 4 era muito longo, mas muito estreito. A tecnologia para alimentá-lo simplesmente não estava realmente disponível na época.
Isso trouxe algumas consequências negativas. A longa pipeline causava grandes atrasos se ocorria um mau direcionamento de ramificação. Isso significava que todos os dados que voltavam ao cache L1, e talvez até mesmo todo o cache L2, estavam errados. Considerando o quão pequenos eram os caches naquela época e que não havia cache L3, a única saída era ir para a Memória principal, o que só acrescentava mais uma dimensão de dor.
Além disso, a arquitetura NetBurst era muito estreita. Tinha apenas quatro partes, enquanto o P6 tinha seis partes. Aqui, partes significam basicamente vias ou barramentos que coletam dados para as unidades de execução, geralmente com várias unidades de execução por parte. No caso do NetBurst, eram sete unidades de execução, enquanto o P6 tinha 13. A Intel tentou contornar isso usando um truque inteligente e bombeando em dobro as Unidades Lógicas (ULs), fazendo-as funcionar a duas vezes a frequência do CPU. Isso não funcionou muito bem, especialmente em CPUs tão simples quanto os desta arquitetura. A primeira UL é um pouco complexa, pois precisa lidar com previsões de ramificação e armazenamento de dados, então ela pode levar vários ciclos de clock para completar essas tarefas. Assim, a duplicação pode ajudar. Além disso, as ULs são compartilhadas com a FPU, que também leva múltiplos ciclos de clock. Mas não quero entrar em muitos detalhes sobre a largura de banda do barramento aqui, pois isso é assunto para outro vídeo. Isso faz sentido em cargas de trabalho menores, menos em cargas de trabalho de inteiros. Tenho certeza de que os inteiros vão voar, mas o rendimento geral da CPU é reduzido.
Outra Questão foi que, para simplificar o uso das ULs, a Intel abandonou o suporte à rotação da base de um registrador com um shift rotacional. Essa era uma instrução relativamente comum na época. Coisas assim significavam que o código tinha que ser recompilado com essas novas regras em mente ou simplesmente executado lentamente. Adivinha qual foi a escolha feita?
Percebendo seu erro, a Intel voltou para sua arquitetura anterior, que nesta altura já estava comemorando seu 11º aniversário, a boa e velha arquitetura P6 de 1995. Honestamente, a AMD deveria ter voltado aos antigos Athlon II e tentado trazê-los de volta aos dias modernos como um paliativo.
Enfim, de volta para a Intel. Eles não tinham muito tempo e, por isso, tiveram que abandonar a maior parte da tecnologia do NetBurst e basicamente modernizar a arquitetura P6 para se tornar a arquitetura Core. Agora eles tinham sete partes, então a largura aumentou, e também tinham um número grande de ULs. As coisas começaram a se encher muito na unidade sem muitos tempos ociosos por unidade. Além disso, houve melhorias na frequência de barramento frontal, com a introdução do DDR e DDR2 que tinham tempos de acesso mais rápidos.
Para complicar ainda mais, as frequências de clock caíram drasticamente. Em vez de ter um CPU rodando a 3,0 GHz ou acima, agora você poderia esperar que seu CPU rodasse a 2,5 GHz, mesmo que o CPU de 2,5 GHz fosse mais rápido.
Isso marcou oficialmente o fim da guerra dos gigahertz e o início da guerra do IPC, que continuaria por muito mais tempo.