domingo, 7 de março de 2010

Front End e Back End

Qualquer processador actual pode ser dividido em dois blocos básicos, o Front End e o Back End.

O Front End corresponde aos circuitos que descodificam as instruções, no caso o Hardware decoder, Microcode decoder e buffer de pré extracção que acabei de explicar, junto com mais alguns componentes, como os circuitos de Branch Prediction (que ordenam as instruções de forma que o processador possa processar o maior número possível de instruções por ciclo e o cache L1. Estes componentes são a “porta de entrada” do processador, tendo a função de preparar as instruções para serem processadas.
 
O Back End é a parte do processador que finalmente processa as instruções, sendo composto basicamente pelas unidades de execução.

Como vimos, o fato como ambos os processadores descodificam as instruções, contando com o Hardware decoder é bastante semelhante, mas o Athlon possui alguns componentes a mais para garantir compatibilidade com as instruções x86. Isto não atrapalha o desempenho do processador, mas o torna um projecto mais complexo.
 
Em termos de unidades de execução, ou seja, o Back End, é que os processadores mostram mais algumas diferenças na forma como processam as instruções já descodificadas.

O Athlon possui um total de 9 unidades de execução, enquanto o G4 possui apenas 6. A diferença parece grande, mas na prática o desempenho é quase o mesmo, veja por que:

O Athlon possui 3 unidades de execução para leitura/gravação de dados na memória, enquanto o G4 possui apenas uma. O ponto é que todas as instruções, tanto de inteiros, quanto de ponto flutuante no Athlon, vem com um espaço reservado para uma instrução de leitura/gravação, espaço que nem sempre é preenchido, fazendo com que as 3 unidades fiquem ociosas na maior parte do tempo, apesar de agilizarem algo de vez em quando.
 
No G4, só existe uma unidade de leitura/gravação, mas que em compensação fica ocupada na maior parte do tempo. Na prática, esta única unidade acaba fazendo o mesmo volume de trabalho das três do Athlon, que ficam boa parte do tempo ociosas. Sem dúvida, o G4 perde alguma coisa em termos de desempenho, mas muito pouco.

Em termos de unidades de execução de inteiros e de ponto flutuante, que são as mais importantes, temos especificações parecidas em ambos:

O Athlon possui três unidades de ponto flutuante (que formam o coprocessador aritmético), o mesmo número encontrado no G4. Apenas para efeito de comparação, o Pentium 3 possui apenas duas. Com o mesmo número de unidades, o desempenho dos dois processadores no quesito ponto flutuante é quase igual.

Já em termos de unidades de processamento de inteiros, o cenário muda um pouco de figura, pois o Athlon possui três unidades de execução contra apenas duas do G4.
 
Isto garante que o Athlon tenha um desempenho um pouco melhor que o G4 em aplicativos de escritórios, mas a diferença é pequena, pois o desempenho real também depende do cache, velocidade de acesso à memória, etc.

Em termos de instruções 3D, o Athlon conta com o 3D-Now, o famoso conjunto de instruções, embutido nos processadores AMD que permite melhorar o desempenho do processador em jogos e aplicativos 3D. O Athlon traz também o velho MMX, que garante algum ganho em aplicativos multimédia.

O G4 por sua vez traz um conjunto unificado, o Altivec, que inclui tanto instruções 3D (como no 3D-Now!), quanto instruções multimédia (como no MMX), isto garante que tanto o Athlon quanto o G4 possuam armas semelhantes neste quesito, o resto fica por conta dos programadores.

Sem comentários: