quarta-feira, 22 de setembro de 2010

Arquitectura Superescalar

Mais um aperfeiçoamento do Pentium e um dos principais motivos de seu maior desempenho, é a adopção de uma arquitectura superescalar.

Internamente, o Pentium trabalha como dois processadores de 32 bits distintos (chamados de canal U e canal V), sendo capaz de processar duas instruções por ciclo de relógio (uma em cada processador). Cada processador possui acesso total ao cache, à memória RAM, e aos demais componentes do computador. Foi incluída também, uma unidade de controle, com a função de comandar o funcionamento dos dois processadores e dividir as tarefas entre eles.
 
Teoricamente, o uso de dois processadores distintos duplicaria o desempenho do Pentium, já que ao invés de uma, poderiam ser executadas duas instruções por ciclo de relógio. Mas, na prática existem algumas limitações.

Se por exemplo, um programa ordena que o processador some 4 números, X + Y + W + K, o processador poderia no primeiro ciclo de relógio usar o canal U para somar X e Y e o canal V para somar W, mas no segundo ciclo, haveria apenas mais um cálculo para ser executado, o resultado das duas somas. Neste caso, apenas um dos canais poderia ser usado; o segundo ficaria ocioso. No final das contas, houve um ganho de 33%, já que ao invés do processador demorar 3 ciclos para executar o cálculo, demorou apenas 2.
 
Caso a continuação do cálculo dependesse da conclusão do cálculo anterior, como em “(X + Y) x 3”, o segundo canal novamente não poderia ser usado, pois o processador teria primeiro que somar X e Y para depois multiplicar o resultado por 3. Neste caso, não haveria ganho algum, pois o processador demoraria os mesmos dois ciclos que seriam necessários com apenas uma canalização.

Em média, a segunda canalização permite um desempenho 30 ou 40% superior ao desempenho obtido com apenas uma canalização. Caso o software seja alterado e optimizado para rodar num processador com duas canalizações, ordenando as instruções de modo a deixar o segundo canal ocupado durante a maior parte do tempo, podemos conseguir mais 10 ou 15% de desempenho, chegando a algo entre 40 e 50%, mas, jamais será possível conseguir o dobro de desempenho.
 
Isto pode ser notado por exemplo ao recompilar o kernel do Linux. É possível orientar o utilitário a optimizar o código para qualquer processador, de um 486 a um Pentium III. Esta optimização permite que o Linux utilize todos os recursos do processador, obtendo um desempenho bastante superior.

Optimizar um programa para rodar num processador Pentium, não o torna incompatível com processadores com apenas uma canalização (como o 486), nem torna seu desempenho menor nestes processadores, já que as mesmas instruções serão executadas, apenas em ordem diferente.

in Manual de Hardware Completo
de Carlos E Marimoto

Sem comentários: