Entendendo a arquitetura

Embora a arquitetura K10 do Barcelona (usada no Phenom) tenha trazido vários avanços, a espinha dorsal do processador, que são o front-end (os estágios de fetch e decode, juntamente com o agendador de instruções) e as unidades de execução pouco mudaram desde a época do Athlon original, com o mesmo front-end capaz de obter três instruções por ciclo, com três unidades de execução capazes de processar três instruções simples por ciclo.

No Bulldozer, cada módulo compartilha um decodificador de instruções capaz de obter quatro instruções por ciclo, a partir de dois threads diferentes. Graças a isso, um Zambezi com 4 módulos Bulldozer é visto como um processador de 8 núcleos pelo sistema operacional. O Bulldozer é também capaz de fundir algumas operações x86 (recurso similar ao macro-ops fusion da Intel) que são processadas em um único ciclo, melhorando o desempenho global.

A Intel também usa um decodificador capaz de obter 4 instruções do ciclo a partir de dois threads diferentes desde o Core 2 Duo (o que colocava o Phenom em desvantagem, já que nele o decodificador é capaz de obter apenas três instruções por ciclo, de um único thread), mas existe uma diferença crucial na forma como as instruções são processadas, já que nos processadores Intel os dois threads são processados por um único núcleo, usando o HyperThreading, enquanto no Bulldozer dois núcleos dividem o processamento. Este diagrama de blocos de um núcleo Bulldozer fornecido pela AMD nos ajuda a entender a arquitetura do processador:

A principal questão em relação aos núcleos é que cada núcleo Bulldozer possui apenas duas AGUs e duas ALUs, contra as 3 ALUs e 3 GLUs do Phenom. O Bulldozer possui dois núcleos, o que significa um total de 4 ALUs e 4 GLUs para cada módulo Bulldozer, contra as 3 ALUs e 3 GLUs de cada núcleo do Phenom. Com isso, o desempenho em um único thread é inferior (apenas dois dos 4 pares de unidades de execução podem ser usados) mas em compensação o desempenho ao processar dois threads é superior.

A comparação do Bulldozer com relação a outros processadores com diferentes números de núcleos é complicada, pois cada módulo fica no meio do caminho em relação ao poder de processamento de um ou dois núcleos. Cada módulo é capaz de processar até 4 instruções por ciclo, o que é mais do que o Phenom 3, porém o mesmo que um Core i7, por exemplo. Isso fica mais claro ao olhar a tabela a seguir:

  Phenom II Bulldozer Core i7
Instruções por ciclo 3 por núcleo 4 por módulo (2 núcleos) 4 por núcleo
Threads 1 por núcleo 2 por módulo 2 por núcleo (com o HT)
Instruções processadas com dois núcleos 6 (3 por núcleo) 4 (2 por núcleo, 4 por módulo) 8 (4 por núcleo)
Instruções processadas com quatro núcleos 12 8 16
Instruções processadas com oito núcleos 24 16 32

Veja que se compararmos um Zambezi de 4 módulos (8 núcleos), com um Core i7 quad-core, temos uma competição equilibrada, já que ambos são capaz de processar 8 threads e 16 instruções por ciclo. Entretanto, se comparado com um hipotético Core i7 octo-core, o Zambezi de 8 núcleos teria grandes dificuldades, com 32 instruções por ciclo para o Core i7 e 16 para o Zambezi. Ou seja, embora tecnicamente o Zambezi seja um processador com 8 núcleos, do ponto de vista do poder de processamento faz mais sentido considerá-lo como um processador quad-core.

Outro fator negativo é o fato de a AMD ter optado por estender o número de estágios de pipeline no Bulldozer, com o objetivo de aumentar as frequências de operação suportadas pelo chip, algo que lembra um pouco a aposta que a Intel fez no Pentium 4. Isso faz com que o Bulldozer sofra uma penalidade mais alta cada vez que o circuito de branch-prediction faz uma previsão errada. Com isso, temos uma redução no poder de processamento por ciclo, que precisa ser compensada com um clock mais alto. A perda foi parcialmente reduzida pelo fato dos estágios de fetch e decode terem sido separados do circuito de branch-prediction, permitindo que o processador continue obtendo, decodificando e obtendo dados para o processamento de novas instruções enquanto espera o pipeline ser limpo após uma previsão errada, mas ainda assim o desempenho global é prejudicado pelo uso de mais estágios.

Outro ponto negativo é a configuração do cache L1. Embora cada módulo disponha de um cache de instruções de 64 KB, o cache de dados foi reduzido para apenas 32 KB por módulo, dividido em dois blocos de 16 KB, um para cada núcleo. Como pode imaginar, esta mudança permitiu à AMD enxugar um bom número de transistores em cada módulo, permitindo que o Bulldozer se tornasse possível em primeiro lugar, mas por outro lado a mudança tem um impacto negativo no desempenho, aumentando o número de acesso aos caches L2 e L3 e consequentemente aumentando a latência.

Um ponto positivo por outro lado é que a AMD conseguiu implementar um sistema de turbo similar ao do Sandy Bridge, permitindo que módulos ociosos sejam completamente desligados e a frequência dos módulos operacionais possa ser aumentada dinamicamente, permitindo que o processador opere com apenas dois módulos ativos porém operando a uma frequência 666 MHz superior (por exemplo) quando oportuno, bem como operar com uma frequência ligeiramente superior com todos os núcleos ativos por curtos espaços de tempo, como mostra este slide da AMD:

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X