Piledriver: As unidades de processamento

Assim como no Bulldozer, cada módulo Piledriver é composto por dois núcleos de processamento de inteiros, que compartilham um único núcleo de processamento de ponto flutuante, bem como um único decodificador de instruções e um único bloco de cache L2. Cada módulo Piledriver é capaz de processar dois threads simultaneamente e se apresenta para o sistema operacional como dois processadores distintos, fazendo com que uma APU com dois módulos Piledriver seja reconhecida como um processador quad-core.

Cada módulo é capaz de processar 4 instruções por ciclo (contra 3 em cada núcleo Athlon II) e oferece ganhos em várias outras áreas (a começar pela possibilidade de processar dois threads independentes) mas em troca ele ocupa muito mais espaço no die, o que levou a AMD a oferecer opções de APUs Trinity com 1 ou 2 módulos, contra os dois 2 ou 4 núcleos Athlon II do Llano. Em resumo, temos processadores mais eficientes que na geração anterior, porém em menor número.

Uma das maiores melhorias do Piledriver em relação ao Bulldozer é o uso de hard edge flops, em oposição aos soft edge flops do Bulldozer. Os flops são pequenos espaços de armazenamento usados ao longo do processador, que fazem em geral a junção entre dois componentes, como por exemplo cada um dos diferentes estágios do pipeline. Sempre que um estágio termina seu processamento, o resultado é salvo no flop posicionado após ele, de forma que no ciclo seguinte ele esteja disponível para o próximo estágio.

Existem dois tipos de flops. Os soft edge flops usados no Bulldozer são mais fáceis de implementar e facilitam a obtenção de frequências mais altas de operação, pois eles toleram melhor variações na temporização dos ciclos (jitter) que se tornam especialmente pronunciáveis a partir dos 2.0 GHz. O grande problema com os soft edge flops é que eles consomem muita energia e, por serem muito numerosos, eles acabavam sendo responsáveis por uma grande parcela do consumo total no Bulldozer.

No Piledriver, a AMD refinou o projeto, conseguindo reduzir o jitter e assim migrar para o uso de hard edge flops. Eles possuem uma tolerância muito mais estreita, e por isso são muito mais difíceis de implementar, mas em compensação eles possuem um consumo elétrico muito mais baixo, o que permitiu reduzir o consumo do Piledriver de mais de 10% em relação ao Bulldozer.

Esta redução no consumo é essencial para a estratégia da AMD, já que pode ser investida em aumentos na frequência de clock da CPU e GPU, sendo assim convertidos em ganhos diretos de desempenho. Diferente do que tínhamos em outras épocas, o clock dos processadores é hoje em dia limitado principalmente pelo TDP dentro do qual eles precisam operar. Reduzindo o consumo, pode-se aumentar o clock, resultando em ganhos diretos de desempenho.

Ganhos adicionais foram obtidos com a otimização dos agendadores de instruções, que ficaram mais ágeis no trabalho de remover instruções já utilizadas da fila, o que também trouxe uma redução considerável no consumo. Assim como no caso dos hard edge flops, isso exige uma temporização muito mais precisa ao longo do chip, que os engenheiros da AMD só conseguiram na segunda geração da arquitetura.

Outros componentes que receberam otimizações foram os circuitos de branch prediction e prefetch (responsáveis por prever e carregar os dados necessários para o processamento das instruções seguintes). Os circuitos continuam basicamente do mesmo tamanho e consumindo o mesmo volume de energia, mas passaram a funcionar de forma mais eficiente, melhorando o desempenho.

O Trinity abandona o uso do HyperTransport, em favor de uma combinação do uso de linhas PCI Express para a comunicação com todos os periféricos fora da APU e de um barramento FCL (Fusion Control Link) de 128 bits (full-duplex) que interliga a GPU, o controlador de memória e também os periféricos externos, permitindo que todos tenham acesso direto à memória RAM, como ilustra este slide da AMD:

Além do FCL, temos também o Radeon Memory Bus, um barramento de 256 bits (também full-duplex) que interliga a GPU, o processador e a memória RAM, cuidando tanto do acesso à memória RAM por parte da GPU, quanto da intercomunicação entre a CPU e a GPU, deixando o FLC livre para o uso dos periféricos externos. Além destes dois barramentos, temos também a conexão regular entre o processador e o controlador de memória.

Apesar dos 256 bits do Radeon Memory Bus, o Trinity continua implementando um controlador de memória dual-channel, com suporte a módulos DDR3 de até 1.866 GHz, adicionando suporte a memórias de baixo consumo, com tensão de 1,25V. Dois módulos de memória oferecem uma banda total de 128 bits, que é equivalente à de uma GPU dedicada low-end, porém compartilhada entre a CPU e a GPU. 

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X