Jak działa MMX ?

0

Mam pytanie, mianowicie czy dobrze rozumiem działanie MMX. Mam to wykonać w swoim mikroprocesorze a nie spotkałem się jeszcze z czymś takim.
Generalnie w moim procesorze mam 8 bitowe rejestry uniwersalne (jest ich 4).
Gdybym dostał np 32 bitowe dane mógłbym potraktować je jako 4 * 8 bitów ale wykonać operacje jako 32 bitowe ? Tak jak na rysunku:

f9a4my8l57m5.png

Jeśli by sie zgadzało to:

  1. Podstawowa długość słowa mikroprocesora to 8 bitów i długość słowa na magistrali danych 8 bitów więc jak mam upchać tam 32 bity ?
  2. Jeśli dajmy na to wynik operacji d+h przekroczy 8 bitów to jedynka przejdzie mi na następne 8 bitów zmieniając całkowicie wynik dodawania c+g

dodanie obrazka do załączników i treści posta - @furious programming

0

Do działania z obrazka potrzebujesz specjalnych 32-bitowych rejestrów, w każdym umieszczasz cztery 8-bitowe liczby i jedna instrukcja dodawania wykonuje cztery niezależne dodawania na odpowiednich bajtach.

Nie może być to zwykłe 32-bitowe dodawanie, bo wynik będzie zły.

0

Jeśli d+h przekroczy 255 to wynik zostanie albo zmniejszony o 256 albo wysycony do wartości maksymalnej czyli 255.

http://tommesani.com/index.php/component/content/article/2-simd/37-mmx-arithmetic.html

Wraparound to tzw przekręcanie się licznika, a saturation to wysycanie (czyli zamiana wartości mniejszych niż minimalna na minimalną i większych niż maksymalna na maksymalną).

1 użytkowników online, w tym zalogowanych: 0, gości: 1