Rozszerzenia akceleracji multimediów

Multimedia Acceleration eXtensions lub MAX to rozszerzenia zestawów instrukcji architektury zestawu instrukcji PA-RISC firmy Hewlett-Packard (ISA). MAX został opracowany w celu poprawy wydajności aplikacji multimedialnych, które stawały się coraz bardziej rozpowszechnione w latach 90.

Instrukcje MAX działają na 32- lub 64-bitowych typach danych SIMD składających się z wielu 16-bitowych liczb całkowitych upakowanych w rejestrach ogólnego przeznaczenia . Dostępna funkcjonalność obejmuje dodawanie, odejmowanie i przesunięcia.

Pierwsza wersja, MAX-1 , była przeznaczona dla 32-bitowego PA-RISC 1.1 ISA. Druga wersja, MAX-2 , była przeznaczona dla 64-bitowego PA-RISC 2.0 ISA.

Rozgłos

Podejście to jest godne uwagi, ponieważ zestaw instrukcji jest znacznie mniejszy niż w innych procesorach multimedialnych, a także bardziej ogólnego przeznaczenia. Niewielki zestaw i prostota instrukcji zmniejszają powtarzające się koszty elektroniki, a także koszty i trudność projektu. Uniwersalność instrukcji zwiększa ich ogólną wartość. Instrukcje te wymagają tylko niewielkich zmian w jednostce arytmetyczno-logicznej procesora. Podobne podejście do projektowania zapowiada się jako udany model instrukcji multimedialnych innych projektów procesorów. Zestaw jest również mały, ponieważ procesor zawierał już potężne instrukcje przesunięcia i manipulacji bitami: „Shift pair”, która przesuwa parę rejestrów, „extract” i „deposit” pól bitowych oraz wszystkie typowe bitowe operacje logiczne ( i, lub, wyłączny-lub, itp.).

Ten zestaw instrukcji multimedialnych również dowiódł swojej wydajności. W 1996 roku 64-bitowe instrukcje „MAX-2” umożliwiły wydajność wideo MPEG-1 i MPEG-2 w czasie rzeczywistym, jednocześnie zwiększając obszar procesora RISC tylko o 0,2%.

Implementacje

MAX-1 został po raz pierwszy zaimplementowany z PA-7100LC w 1994 roku. Zwykle jest przypisywany jako pierwsze rozszerzenie SIMD do ISA. Druga wersja, MAX-2 , była przeznaczona dla 64-bitowego PA-RISC 2.0 ISA. Po raz pierwszy został zaimplementowany w PA-8000 wydanym w 1996 roku.

Podstawowym podejściem do arytmetyki w MAX-2 jest „przerywanie przenoszenia” między 16-bitowymi podsłowami i wybieranie między arytmetyką modułową, nasyceniem ze znakiem i bez znaku. Wymaga to jedynie niewielkich zmian w arytmetycznej jednostce logicznej.

MAX-1

Instrukcja Opis
HADD Dodawanie równoległe z arytmetyką modulo
HADD, ss Dodawanie równoległe ze znakiem nasycenia
HADD, my Dodawanie równoległe z nasyceniem bez znaku
HSUB Odejmowanie równoległe z arytmetyką modulo
HSUB, ss Odejmowanie równoległe ze znakiem nasycenia
HSUB, my Odejmowanie równoległe z nasyceniem bez znaku
MIEĆ Średnia równoległa
HSHLADD Równoległe przesunięcie w lewo i dodanie ze znakiem nasycenia
HSHRADD Równoległe przesunięcie w prawo i dodanie ze znakiem nasycenia

MAX-2

Instrukcje MAX-2 to instrukcje rejestru do rejestru, które działają na wielu liczbach całkowitych w ilościach 64-bitowych. Wszystkie mają opóźnienie jednego cyklu w PA-8000 i jego pochodnych. Dostęp do pamięci odbywa się za pośrednictwem standardowych 64-bitowych operacji ładowania i przechowywania.

Instrukcje „MIX” i „PERMH” są godną uwagi innowacją, ponieważ permutują słowa w zestawie rejestrów bez dostępu do pamięci. Może to znacznie przyspieszyć wiele operacji.

Instrukcja Opis
HADD Dodawanie równoległe z arytmetyką modulo
HADD, ss Dodawanie równoległe ze znakiem nasycenia
HADD, my Dodawanie równoległe z nasyceniem bez znaku
HSUB Odejmowanie równoległe z arytmetyką modulo
HSUB, ss Odejmowanie równoległe ze znakiem nasycenia
HSUB, my Odejmowanie równoległe z nasyceniem bez znaku
HSHLADD Równoległe przesunięcie w lewo i dodanie ze znakiem nasycenia
HSHRADD Równoległe przesunięcie w prawo i dodanie ze znakiem nasycenia
HAVG Średnia równoległa
HSHR Równoległe przesunięcie w prawo podpisane
HSHR, u Równoległe przesunięcie w prawo bez znaku
HSHL Przesunięcie równoległe w lewo
MIESZAĆ Mieszaj 16-bitowe słowa podrzędne w słowie 64-bitowym; MIESZANKA Lewa, Ra,Rb,Rc, Rc:=a1,b1,a3,b3; MIESZANIE Prawo, Rc:=a2,b2,a4,b4
MIESZ Mieszaj 32-bitowe słowa podrzędne w słowie 64-bitowym; np. MIXW Lewy, Ra,Rb,Rc, Rc:=a1,a2,b1,b2; MIXW Prawo, Rc:=a3,a4,b3,b4
PERMH Permutować 16-bitowe słowa podrzędne źródła w dowolnej możliwej permutacji w rejestrze docelowym, włączając powtórzenia.