Dzisiaj jest 12 grudnia 2024 r.
Chcę dodać własny artykuł

MMX (zestaw instrukcji)

MMX – Wprowadzenie

MMX (MultiMedia eXtensions) to zestaw 57 instrukcji SIMD (Single Instruction, Multiple Data), wprowadzony przez firmę Intel w 1996 roku dla procesorów Pentium. Rozkazy MMX realizują operacje logiczne i arytmetyczne na liczbach całkowitych, a ich zastosowanie znacząco przyspiesza przetwarzanie danych w specjalnych aplikacjach, takich jak obróbka dźwięku i obrazu.

Rejestry MMX

MMX wykorzystuje osiem 64-bitowych rejestrów, które są zamapowane na bity rejestrów koprocesora arytmetycznego. Odwołania do rejestrów MMX wpływają na zawartość rejestrów koprocesora, co uniemożliwia jednoczesne obliczenia MMX i zmiennoprzecinkowe. Mimo to, programy działające na wcześniejszych architekturach są kompatybilne z MMX.

Typy danych

MMX wprowadza nowe typy danych, znane jako „spakowane” (ang. packed), które można interpretować jako wektory lub macierze. Danych 64-bitowych można używać w następujący sposób:

  • 8 × 8 bitów (packed byte)
  • 4 × 16 bitów (packed word)
  • 2 × 32 bity (packed dword)
  • 1 × 64 bity (quad word)

Operacje na tych typach danych wykonywane są równolegle, co znacznie przyspiesza obliczenia.

Operacje arytmetyczne i logiczne

MMX obsługuje dwa rodzaje arytmetyki:

  • Arytmetyka nasyceniowa: wyniki przekraczające zakres są ograniczane do wartości skrajnych.
  • Arytmetyka modulo: przekroczenia zakresu są ignorowane, a zapisywane są tylko najmłodsze bity.

Porównania w MMX nie ustawiają flag ALU, a wynik porównania jest nowym wektorem z odpowiednimi wartościami.

Przykłady zastosowań

MMX znajduje zastosowanie w:

  • Wyświetlaniu grafiki 3D (przekształcenia, cieniowanie)
  • Dekodowaniu obrazów JPEG i PNG
  • Kodowaniu filmów MPEG
  • Filtrowaniu sygnałów dźwiękowych i obrazowych

Rozkazy MMX

Rozkazy MMX dzielą się na kilka kategorii:

  • Transferowe: (MOVD, MOVQ)
  • Arytmetyczne: dodawanie, odejmowanie, mnożenie oraz ich warianty z nasyceniem.
  • Porównania: różne typy porównań między wektorami.
  • Operacje logiczne: suma, iloczyn, różnica symetryczna.
  • Specjalne: przygotowanie do działań zmiennoprzecinkowych (EMMS).

Asembler

W asemblerze rejestry MMX oznaczone są jako MM0 do MM7, a mnemoniki rozkazów zaczynają się zazwyczaj od litery P (od „packed”). Na przykład, PADDUSB oznacza równoległe dodawanie bajtów bez znaku z nasyceniem.

Najnowsze aktualności: