Como funciona a tecnologia MMX
Você já deve ter ouvido falar na nova tecnologia MMX e um monte de baboseiras a respeito de como os novos processadores estão mais rápidos e incorporam características antes exclusivas da placa de vídeo, de som e modem e como a multimídia será incrivelmente beneficiada.Mas não é bem assim que a banda toca. A tecnologia MMX é a inclusão de 57 novas instruções ao conjunto de instruções do processador, e aumentar o seu conjunto de instruções não faz a mágica instantânea de aumentar sua velocidade de processamento. Somente se beneficiarão das vantagens desta tecnologia (entre estas vantagens, fazer mais em menos tempo) programas que utilizarem instruções MMX. Portanto, um programa não-MMX não se beneficiará de um processador MMX.
Mais ou menos. A Intel aumentou o tamanho da memória cache L1 (cache interno) do Pentium de 16 KB para 32 KB no Pentium MMX. Só isto faz com que o Pentium MMX seja mais rápido que um Pentium não-MMX (Pentium Clássico) sob a mesma freqüência de operação (clock), mesmo não utilizando programas escritos para o MMX, como você pode observar nos resultados de nossos testes (vide resultados no artigo "MMX - Conclusões"). Por causa dessa mudança, um Pentium MMX-166 consegue ser mais rápido que um Pentium-200.
E para programas MMX? Quais são as vantagens? Inúmeras. O MMX representa a maior revisão no conjunto de instruções dos processadores utilizados em PCs desde a criação do 386.
Para manter compatibilidade com todo o hardware e software hoje existentes, a Intel não criou nenhum "modo de operação MMX" como seria de se supor, nem adicionou flags ou fez qualquer mudança no núcleo do processador. Pelo contrário: a estrutura do Pentium MMX continua exatamente igual ao do Pentium convencional (agora chamado de Pentium Clássico). Para que alterações no núcleo do processador não fossem necessárias, o Pentium MMX utiliza os mesmos registradores do co-processador matemático. As chances de incompatibilidade simplesmente não existem e um programa pode utilizar as instruções MMX em qualquer momento em que deseje. Para um programa, acessar o conjunto MMX é tão fácil quanto utilizar o co-processador matemático.
As instruções MMX não são nem um pouco complexas: são basicamente instruções de soma, subtração, multiplicação e comparação de bits. Coisas que o processador já fazia. Então, onde está a vantagem? Onde está a grande evolução?
Para multimídia, os dados manipulados pelo microprocessador não são grandes. Uma placa de som trabalha com dados de 16 bits. Os pontos da tela de um monitor são gravados em variáveis de 8 bits. Modems também são periféricos que trabalham com 8 bits. Ora, um processador capaz de manipular uma maior quantidade de bits não significa necessariamente um aumento de performance para essas aplicações. Pelo contrário: na maioria das vezes o processador é subutilizado.
Vamos pegar o exemplo de uma imagem gráfica. Profissionalmente, você utiliza a sua placa de vídeo configurada a trabalhar em RGB True Color ou CMYK True Color.
+------+------+------+ | R | G | B | |8 bits|8 bits|8 bits| +------+------+------+ RGB True Color: 24 bits/pixel +------+------+------+------+ | C | M | Y | K | |8 bits|8 bits|8 bits|8 bits| +------+------+------+------+ CMYK True Color: 32 bits/pixel
No primeiro caso, cada ponto da tela é armazenado em uma variável de 24 bits, 8 bits para o componente vermelho do ponto (R), 8 bits para o verde (G) e 8 bits para o azul (B). No segundo, cada ponto é armazenado em uma variável de 32 bits, 8 bits para o ciano (C), 8 bits para o magenta (M), 8 bits para o amarelo (Y) e 8 bits para o preto (K). Cada ponto presente na tela é formado por um pouco de cada componente.
Pois bem, vejamos uma aplicação comum de um programa gráfico como o PhotoShop: fazer uma fusão entre duas imagens. Imagine uma foto sua e uma foto de uma paisagem, e você deseja fundir as duas em uma só. Teoricamente, fazer isto é moleza: basta somar as duas imagens.
Para o processador fazer isto, ele terá que somar individualmente cada ponto, um-a-um. Porém, não basta somar os 32 ou 24 bits de cada ponto. Ele terá que somar individualmente o componente C, M, Y e K (ou R, G e B) de cada ponto. Para formar o primeiro ponto da imagem resultante da fusão, o processador terá que somar o componente C do primeiro ponto da primeira imagem com o componente C do primeiro ponto da segunda imagem, o mesmo ocorrendo com os componentes M, Y e K. Este processo pode demorar um bocado.
C primeira imagem + C segunda imagem = C do ponto fundido M primeira imagem + M segunda imagem = M do ponto fundido Y primeira imagem + Y segunda imagem = Y do ponto fundido K primeira imagem + K segunda imagem = K do ponto fundidoVocê pode observar que cada soma individual não é uma soma "cabeluda" de 32 ou 64 bits, são somas de pequenos números de 8 bits.
O MMX trabalha com um novo conceito: SIMD (Single Instruction, Multiple Data - Instrução simples para múltiplos dados). De uma só vez, diversas operações simples e de dados curtos podem ser feitas simultaneamente. Cada registrador utilizado pelo MMX comporta 64 bits. Podemos dividir estes 64 bits em 8 grupos de 8 bits, 4 grupos de 16 bits ou ainda dois grupos de 32 bits.
Para o nosso exemplo, podemos carregar em um registrador de 64 bits do Pentium MMX o valor de dois pontos da nossa primeira tela (dois pontos CMYK de 32 bits) e em um outro registrador, o valor de dois pontos da segunda tela.
O MMX pode manipular cada grupo de bits separadamente e, desta forma, poderemos fazer a soma de cada componente simultaneamente.
+---+---+---+---+---+---+---+---+ dois pontos da Reg. de 64 bits | C | M | Y | K | C | M | Y | K | primeira imagem +---+---+---+---+---+---+---+---+ + + + + + + + + +---+---+---+---+---+---+---+---+ dois pontos da Reg. de 64 bits | C | M | Y | K | C | M | Y | K | segunda imagem +---+---+---+---+---+---+---+---+ = = = = = = = = +---+---+---+---+---+---+---+---+ dois pontos da Reg. de 64 bits | C | M | Y | K | C | M | Y | K | imagem resultante +---+---+---+---+---+---+---+---+Com uma só instrução MMX podemos somar dois pontos de duas imagens diretamente. Quando não utilizamos esta instrução MMX, precisamos de 8 instruções para executar o mesmo processo.
Processos de filtros, efeitos especiais, separação de cores e animações são apenas alguns dos exemplos práticos da rapidez trazida pelas instruções MMX. Para você ter uma idéia, o processo de fusão de duas telas 640 x 480 pontos em RGB True color usando instruções MMX utilizará 1 bilhão de instruções a menos em comparação ao sistema não-MMX atualmente utilizado.
Respostas recomendadas
Não há comentários para mostrar.