1. Introdução
A tecnologia MMX é a inclusão de 57 novas instruções ao conjunto de instruções no processador. Grande parte do aumento de desempenho desse processador não está apenas no aumento do número de instruções, está também no aumento da freqüência do clock e no uso de técnicas de micro-arquitetura, como a previsão de desvios e uso de execução superescalar e superpipeline.
Somente se beneficiarão ao máximo dessa tecnologia os programas que utilizam instruções MMX, como é o caso do PhotoShop.
A Intel, criadora dessa obra-prima, aumentou o tamanho da memória cache L1(interna) de 16KB para 32KB no Pentium MMX. Só isto faz com que o MMX seja mais rápido que o Pentium não MMX, mesmo não utilizando programas escritos para o MMX e sob uma mesma freqüência de clock.
As vantagens são muitas. O MMX representa a maior revisão no conjunto de instruções desde a criação do 386. Para manter a compatibilidade com todo o hardware e software existente a Intel não alterou a estrutura do processador. O 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 a qualquer momento em que desejarem.
As instruções MMX são basicamente de soma, subtração, multiplicação e comparação de bits. A grande vantagem é para multimídia, onde os dados manipulados pelo processador não são grandes.
O MMX trabalha com um novo conceito: SIMD (Instruções 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, podendo ser dividido em 8 grupos de 8 bits, ou 4 grupos de 16 bits, ou ainda em 2 grupos de 32 bits.
2. Arquitetura
As extensões de mídia para a arquitetura MMX foram projetadas para aumentar o desempenho das mídias avançadas e das aplicações de comunicação. A tecnologia MMX introduz novas instruções de propósito gerais, onde operam em paralelo sobre elementos de dados múltiplos em pacotes de 64 bits. Elas executam operações lógicas e aritméticas sobre diferentes tipos de dados e aceleram o desempenho da aplicação, possuem algoritmos que são computados intensivamente e realizam operações sobre tipos de dados nativos e pequenos. Isto inclui aplicações voltadas para mídias, aplicações gráficas e de comunicações.
O conjunto de instruções MMX é completamente compatível com todos os microprocessadores da arquitetura Intel. Assim, todo software existente continua executando corretamente em microprocessadores que incorporam a tecnologia MMX.
3. Desempenho
A tecnologia MMX vai diretamente ao encontro das necessidades de modernas aplicações gráficas, de comunicação e mídia que incluem sofisticados algoritmos que executam repetidas operações sobre tipos de dados pequenos.
As instruções MMX podem operar simultaneamente sobre quatro palavras com apenas uma instrução. Por exemplo, informações de vídeos ou gráficas são representadas normalmente por 8 bits, uma instrução MMX pode operar simultaneamente sobre 8 informações dessas.
Para garantir o desempenho do MMX, a Intel implantou novos tipos de dados e 8 registradores MMX. Além disso, aumentou o conjunto de instruções.
4. Dados
O principal tipo de dado da tecnologia MMX é o inteiro de ponto fixo packed. O ponto decimal dos valores é implícito e é deixado ao controle do usuário para uma maior flexibilidade. Os novos tipos de dados de 64 bits são:
1. Packed byte à 8 bytes empacotados em 64 bits.
2. Packed word à 4 words empacotados em 64 bits.
3. Packed doubleword à 2 doublewords empacotados em 64 bits.
4. Quadword à 1 word de 64 bits.
Quanto ao formato, os dados podem ter:
1. Formato de dados de memória
A tecnologia MMX introduz novos tipos de dados packed. Os 64 bits do packed são numerados de 0 a 63, onde o bit 0 é o menos significativo.
Os bits de baixa ordem é a parte inferior do elemento de dados. Bytes em um formato de multi-byte têm endereços de memórias sucessivos. A ordenação é sempre realizada de acordo com a significância.
2. Formato de dados de registradores
Valores dos registradores MMX têm o mesmo formato que um dado de 64 bits na memória. Registradores MMX tem dois modos de acessar os dados: através de acesso de 64 bits ou de 32 bits.
O modo de acesso de 64 bits é usado para acesso a memória em 64 bits, transferência em 64 bits em registradores MMX , todas as instruções packed, instruções lógicas e aritméticas e algumas instruções comuns.
Já o acesso de 32 bits é usado para acessar memória em 32 bits, transferências de 32 bits entre registradores MMX que trabalham com inteiros e algumas instruções comuns.
5. Instruções
O conjunto de instruções MMX fornece um rico conjunto de instruções que operam em paralelo sobre todos os elementos de dados do tipo packed. Essas instruções podem operar sobre os elementos de dados com ou sem sinal.
As instruções MMX implementam dois novos princípios:
1. Operações sobre dados packed: As instruções MMX podem operar em grupos de 8 bytes, 4 palavras e duas doublewords.
2. Aritmética de Saturação: A tecnologia MMX suporta uma nova capacidade aritmética conhecida como aritmética de saturação. Na saturação, resultados que geram overflow ou underflow são cortados (saturados), para um dos limites de faixa do tipo de dado em uso. A saturação fornece uma característica útil: não indicam ocorrência de overflow.
Observe agora os grupos de Instruções MMX:
6. Registradores
A tecnologia MMX fornece 8 registradores de 64 bits de uso geral. Esses registradores são mapeados sobre os registradores de ponto flutuante, sendo manipulados pelo Sistema Operacional.
Os registradores do MMX podem manipular tipos de dados empacotados em 64 bits. As instruções MMX acessam diretamente os registradores MMX usando os nomes MM0 a MM7.
Os registradores MMX podem ser usados para executar cálculo sobre os dados. Eles não podem ser usados para endereçar a memória, o endereçamento é realizado usando os registradores inteiros e os modos de endereçamento padrão da arquitetura Intel.
7. Comparação
Utilizando um Pentium Clássico e um Pentium MMX, em um micro com 32 MB de RAM e placa-mãe com 512 KB de cache externa (L2). Foram tiradas as seguintes conclusões:
Por causa do aumento do cache L1 e uma melhoria no sistema de previsão de desvio do controlador de cache, o Pentium MMX consegue ser mais rápido que o Pentium Clássico mesmo quando não estamos utilizando programas que possuam instruções MMX. Ocorre um ganho de performance do Pentium-200 MMX sobre o Pentium-200 Clássico de, em média 11,3 %.
Para a utilização do conjunto de instruções MMX do processador, os programas deverão ser escritos utilizando instruções MMX. Neste caso, o ganho de performance fica na média 239 %. Mas ainda são poucos programas que utilizam as instruções MMX. O mais conhecido que possui versão MMX é o PhotoShop.
Para compensar a demora no desenvolvimento de novos programas que utilizam à tecnologia MMX, é bem provável que os fabricantes desenvolvam drivers MMX para que o próprio sistema operacional converta instruções não - MMX em instruções MMX sempre que possível.
8. Desvantagens
- Ausência de um multiplicador ou multiplicador-somador para operandos de 32 bits. Isto faz com que essa multiplicação passe a ser realizada com a instrução de multiplicação de inteiros padrão levando a gastar 6 ciclos a mais do que o Pentium Pro;
- Não utiliza o pipeline;
- O multiplicador de inteiros não consegue executar cálculos em paralelo.