As instruções SSE

Enquanto a Intel dava um passo errado lançando as instruções MMX, algo de que o mercado não precisava e que até hoje não obtiveram uma aceitação significativa, a AMD veio com seu K6-2 e suas instruções 3D-Now!, que realmente conseguiam melhorar o
desempenho do processador em até 20% em jogos 3D com suporte a esta tecnologia. Apesar de seu fraco coprocessador aritmético, em alguns jogos o K6-2 chegava bem perto de um Pentium II do mesmo clock, graças às suas instruções 3D, que passaram a ser
suportadas pelos principais jogos, além de beneficiarem outros indiretamente através do DirectX (apartir da versão 6) ou através de drivers de vídeo otimizados.

Como as instruções 3D-Now são patenteadas, apenas a AMD (e eventualmente outra companhia licenciada por ela) pode utiliza-las em seus processadores. A Intel então optou por criar seu próprio conjunto de novas instruções, batizado de SEE, a fim de
também turbinar o desempenho do Pentium III.

Enquanto as instruções MMX melhoram o desempenho do sistema basicamente no cálculo de números inteiros (o que explica sua fraca aceitação), as instruções SSE e as instruções 3D-Now! servem para agilizar o cálculo de números de ponto flutuante, usados
principalmente em jogos 3D e em aplicativos gráficos tridimensionais, justamente onde os processadores atuais são mais exigidos.

Como disse, as instruções 3D-Now! são capazes de aumentar o desempenho do K6-2 em 10, 15 ou até 20%. Mesmo 15% de aumento de performance não é um ganho nada desprezível, pois equivaleria a trocar um processador de 300 MHz por outro de 350 MHz.

O 3D-Now! é composto por um set de 21 novas instruções, o SEE por sua vez é composto por um set de 70 novas instruções, que são capazes de melhorar o desempenho do processador, não só em jogos e aplicativos gráficos, mas também em softwares de
descompressão de vídeo, reconhecimento de fala e aplicativos multimídia em geral.

Como as novas instruções são apenas software, é preciso que os programas sejam otimizados para fazer uso deles. No caso dos jogos 3D, também existe ganho de performance caso o jogo utilize o DirectX 6.1 (ou superior), otimizado para as novas
instruções, ou caso os drivers da placa de vídeo 3D sejam otimizados para as instruções SSE. Neste caso porém, o ganho será muito menor que num aplicativo realmente otimizado, praticamente imperceptível em muitos casos.

Antes do seu lançamento, houve muita especulação sobre qual seria o ganho real de performance trazido pelas novas instruções do Pentium III. Alguns especialistas chegaram a argumentar que o ganho seria praticamente nulo, pois ao contrário do K6-2, o
Pentium III já possui um excelente coprocessador aritmético. Felizmente, estas previsões não se concretizaram. Os criadores do Quake 3 Arena, jogo que está sendo otimizado para as novas instruções, estimam que o ganho de performance fica entre 10 e 15%
com o uso das novas instruções. No Adobe Photoshop 5.02, que também foi otimizado para as novas instruções, o ganho de desempenho também fica na casa dos 15%. E, teoricamente, alguns aplicativos podem rodar até 25% mais rápido. Realmente quanto às
instruções, o Pentium III não está nada mal.

– Mas o que faz as instruções SSE serem tão, ou até mesmo mais eficientes que as badaladas instruções 3D-Now?

Basicamente, as instruções SSE diferem das instruções 3D-Now! devido à forma como são executadas. As instruções 3D-Now! permitem que algumas rotinas dos programas sejam executadas 3, ou até mesmo 4 vezes mais rapido do que seriam usando as instruções
padrão do coprocessador aritmético. Digamos, num exemplo tosco, que 30% das rotinas utilizadas por um determinado jogo sejam executadas usando o 3D-Now!, sendo que em média, estas instruções (apenas as otimizadas) seriam executadas 3 vezes mais rápido.
Seguindo nosso exemplo, teríamos 30% das rotinas do programa executadas em 1/3 do tempo, resultando num ganho de performance em torno de 20%. (note que não estou levando em consideração inúmeros fatores aqui, o meu objetivo com este exemplo é apenas
ilustrar melhor o benefício gerado por estas instruções).

As instruções SSE funcionam de forma semelhante, permitindo que muitas rotinas utilizadas pelos programas possam ser executadas muito mais rapidamente. A vantagem é que o Pentium III é capaz de processar simultaneamente instruções normais e instruções
SSE, o que resulta em um ganho ainda maior de performance.

Enquanto no 3D-Now! o programa tem a todo momento que escolher entre utilizar uma das instruções padrão ou uma das instruções 3D-Now!, no Pentium III é possível usar os dois tipos de instruções simultaneamente, mantendo as três unidades de execução do
coprocessador aritmético cheias durante mais tempo. A única desvantagem deste processo é que, para ter um beneficio total das instruções SSE, é necessário um número muito maior de alterações nos códigos dos programas, o que acaba por desestimular muitos
produtores de softwares a tornar seus produtos compatíveis.

Parece claro que as instruções SSE, devido à maneira como são implementadas, são mais eficientes do que as instruções 3D-Now! da AMD, talvez pelo fato dos projetistas da Intel terem tido bastante tempo para criá-las e implementá-las. Não podemos nos
esquecer porém, que para se beneficiar tanto das instruções 3D-Now quanto das SSE, o software precisa ser re-escrito. Já temos uma grande base instalada de processadores K6-2, K6-3 e Athlon, assim como vários títulos já otimizados para o 3D-Now!. Mesmo
com toda a sua influência, não foi nada fácil para a Intel reverter esta estatística.

A última cartada da Intel para estimular os programadores a incluir suporte às instruções SSE em seus produtos, foi o lançamento de um compilador em C que adiciona o suporte às instruções automaticamente. Usando este compilador, que é distribuído
gratuitamente, o programador pode construir seu programa normalmente, sem se preocupar em incluir qualquer suporte ao SSE e depois de terminado o programa rodar o compilador para adicionar o suporte.

O compilador então verifica todas as linhas do código e adiciona instruções otimizadas sempre que for possível. Note que o programa continua sendo compatível com os processadores sem SSE: caso o programa seja executado em um Pentium III serão
utilizadas as linhas otimizadas para o SSE e caso esteja sendo usado outro processador serão utilizadas as instruções normais.

A otimização feita pelo programa não é tão eficiente pela feita por um programador experimente, mas já é melhor que nada. De qualquer forma, o uso deste compilador acabou fazendo com que a maioria dos títulos 3D e multimídia lançados durante o ano 2001
recebessem alguma otimização para o SSE.

As instruções SSE são encontradas em todas as versões do Pentium III e Pentium III Xeon, além das versões do Celeron com core Coppermine. O Pentium 4 traz um set de instruções aprimorado, o SSE 2.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X