quarta-feira, 10 de novembro de 2010

Pentium MMX

Não existem muitas diferenças entre o Pentium 1 e o MMX. Como o nome já sugere, a principal modificação foram as instruções MMX, que segundo o marketing feito pela Intel na época, seriam suficientes para aumentar de forma considerável o desempenho do processador em aplicativos que envolvem multimédia.

O problema é que as instruções MMX ajudam apenas em aplicativos optimizados. É necessário que o programador altere o código do programa, substituindo as instruções x86 padrão por instruções MMX, recompile e redistribua o programa, um processo que exige muito trabalho e custa dinheiro. Mesmo os programas lançados depois do MMX, nem sempre são optimizados para as novas instruções.
Para não depender apenas das novas instruções, a Intel aumentou o cache L1 do processador, de 16 para 32 KB. Com isto, o MMX passou a ser um pouco mais rápido do que um Pentium 1 da mesma frequência, mesmo nos programas sem optimização. Lembre-se que naquela época o cache L2 do processador ainda fazia parte da placa mãe e operava a apenas 66 MHz. Um cache L1 competente era essencial.

A Intel lançou também, modelos de processadores MMX Overdrive, que podem substituir os antigos processadores Pentium de 75, 100 ou 120 MHz com a simples troca do processador. O problema é que estes processadores eram mais caros e difíceis de encontrar, assim como os overdrives anteriores. Novamente uma péssima opção de upgrade, já que o overdrive chegava a custar mais caro que um MMX “normal” junto com uma nova placa mãe.
Como funcionam as instruções MMX

O Pentium é um processador que trabalha com palavras binárias de 32 bits. O problema é que muitas vezes é preciso realizar cálculos utilizando dados de 8 ou 16 bits, que são utilizados principalmente por programas de edição de imagem ou som. Pela lógica, seria possível processar quatro palavras de 8 bits ou duas de 16 de cada vez, mas na prática, o processador é capaz de processar apenas um valor de cada de cada vez, independentemente do número de bits. A soma de dois números de 8 bits demora tanto quanto a soma de dois números de 32 bits, simplesmente os bits adicionais do processador não são utilizados.


As instruções MMX, permitem juntar várias palavras binárias de 8 ou 16 bits e transformá-las em uma única palavra maior, que pode ser processada (da mesma maneira que seria processada separadamente utilizando as instruções padrão) usando instruções específicas do conjunto MMX.
Para tornar mais fácil a tarefa de adaptar os programas para utilizar as instruções MMX, a Intel optou por adicioná-las ao processador na forma de uma extensão do coprocessador aritmético. Esta arquitectura traz a vantagem de não exigir praticamente nenhuma alteração no projecto do processador, pois o seu funcionamento continua sendo idêntico, apenas sendo “remendado” com as novas instruções.

Um programa antigo, simplesmente ignorará as instruções MMX, e acabará não apresentando nenhum ganho de performance. Para tirar proveito das novas instruções, é preciso que o programador altere o código do programa, alterando suas rotinas para que as instruções MMX sejam utilizadas no lugar das instruções x86 padrão. O ganho de performance real depende da habilidade do programador em detectar onde e como o MMX pode ser usado para tornar a execução do programa mais rápida.
Um golpe de Marketing

Teoricamente, as instruções MMX podem tornar a execução de aplicativos gráficos até 400% mais rápida, já que até 4 palavras de 16 bits poderiam ser processadas de cada vez. Outros programas também poderiam ser muito beneficiados. Na prática porém, os ganhos trazidos pelas instruções MMX são muito menores.


Para começar, apenas algumas das rotinas utilizadas pelos programas podem ser optimizadas, já que a única vantagem trazida pelas instruções MMX é o processamento mais rápido de palavras de 8 ou 16 bits. A maioria das instruções continuam sendo executadas através das instruções x86 padrão. Na prática, apenas 30 ou 40% das instruções executadas pelos processadores de imagens poderiam ser executadas mais rápido, resultando em um ganho de performance em torno de 20 ou 30%.
Trinta por cento de ganho real já não seria uma ganho tão ruim, porém, mais um pequeno problema com as instruções MMX tornam o ganho de desempenho ainda menor.

Como o acesso às instruções MMX é feito através do mesmo barramento utilizado pelo coprocessador aritmético, não é possível aceder ao mesmo tempo a ambos os dispositivos. Ou seja, o programa pode ou executar uma instrução MMX ou uma instrução de ponto flutuante, nunca fazer as duas coisas ao mesmo tempo.
Para piorar um pouco mais a situação, um certo tempo é perdido para alternar entre o acesso às instruções MMX e o uso do coprocessador aritmético. Como os programas gráficos são muito dependentes do coprocessador aritmético, é preciso constantemente alternar entre as instruções MMX e as instruções de FPU (do coprocessador aritmético) fazendo com que o ganho de performance conseguido através do uso das instruções MMX seja em média de apenas 10 ou 12%.
Vendo o pequeno ganho de desempenho que poderia ser conseguido através do MMX, poucas softwarehouses se interessaram em optimizar os seus programas para as novas instruções. A adesão às instruções MMX foi tão pequena que mesmo hoje, vários anos depois do lançamento do MMX, praticamente pode-se contar pelos dedos os programas realmente optimizados para as novas instruções, sendo que os programas optimizados rodam em média apenas 10% mais rápido.

O MMX é muito mais um golpe de Marketing, do que realmente um melhoramento nos processadores. Apesar dos ganhos anémicos de performance, as campanhas publicitárias da Intel foram tão fortes que obrigaram concorrentes como a AMD e a Cyrix a também adoptar o MMX nos seus processadores, pois caso contrário, simplesmente não conseguiriam vendê-los. Infelizmente, apesar do estardalhaço, as instruções MMX tornaram-se apenas um elefante branco da informática.
in Manual de Hardware Completo
de Carlos E Marimoto

Sem comentários: