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. |