Historia wymaga pasterzy, nie rzeźników.


Podobnie jak w procesorze Itanium-2, wykonywanie operacji procesora TriMedia
podlega specjalnemu uwarunkowaniu, zwanemu predykcją. W każdej operacji (z dwoma małymi wyjątkami) określony jest mianowicie rejestr, zwany rejestrem predykcyjnym, którego zawartość decyduje o tym, czy operacja ta zostanie wykonana, czy też nie: operacja wykonywana jest tylko wtedy, gdy najmniej znaczący bit tego rejestru ma wartość 1. Na przykład, operacja określona jako:
IF R2 IADD R4, R5 -> R8
powodująca zapisanie w rejestrze R8 sumy zawartości rejestrów R4 i R5 zostanie wykonana tylko wtedy, gdy najmłodszy bit rejestru R2 będzie miał wartość 1. Każda z operacji kodowanych w rozkazie podlega niezależnej predykcji. Ze względu na specy-
ficzną zawartość rejestrów R0 i R1, wyspecyfikowanie rejestru R1 w roli rejestru predykcyjnego oznacza bezwarunkowe wykonanie operacji, natomiast wyspecyfikowanie w tym charakterze rejestru R0 — jej bezwarunkowe pominięcie.
3 W literaturze anglojęzycznej wtłaczanie to nazywane jest „obcinaniem” ( clipping), co jest trochę mylące, bowiem w odniesieniu do pozycyjnego (bitowego) zapisu liczby może kojarzyć się z obcinaniem wartości do ustalonej liczby najmniej znaczących bitów (i ignorowaniem bi-tów najbardziej znaczących). W odniesieniu jednak do analogowego rozumienia wartości (na przykład jako długości odcinka) korygowanie wartości do dopuszczalnych granic jest niczym innym jak właśnie ich obcinaniem; mimo to w dalszym ciągu rozdziału, dla uniknięcia opisanego nieporozumienia, będziemy konsekwentnie używać terminu „nasycanie” zamiast „obcinanie”
— przyp. tłum.
8.1. ZRÓWNOLEGLENIE NA POZIOMIE UKŁADU SCALONEGO
595
Operacje multimedialne procesora TriMedia podzielić można na 15 grup, wy-
mienionych w tabeli 8.2. Wiele z wymienionych operacji wiąże się z nasycaniem wyniku, czyli korygowaniem go do jawnie lub niejawnie określonych granic. Owe „granice” to nic innego jak graniczne wartości słów 8-, 16- i 32-bitowych w konwencji
„ze znakiem” ( signed) albo „bez znaku” ( unsigned). Jeżeli na przykład wynik odnoszony jest do bezznakowego bajtu, granicami tymi są wartości 0 i 255; wyniki 140 i 340 będą więc mieć po skorygowaniu wartości (odpowiednio) 140 i 255; gdyby wyniki te odnieść do bajtu ze znakiem, po skorygowaniu miałyby jednak (obydwa) wartość 127.
TABELA 8.2.
Podstawowe grupy operacji multimedialnych procesora TriMedia
Grupa
Operacje
Nasycanie
Nasycanie czterech wartości bajtowych lub dwóch
wartości dwubajtowych.
Wartość bezwzględna DSP
Nasycona wartość bezwzględna, ze znakiem.
Dodawanie DSP
Nasycone dodawanie ze znakiem.
Odejmowanie DSP
Nasycone odejmowanie ze znakiem.
Mnożenie DSP
Nasycone mnożenie ze znakiem.
Minimum i maksimum
Wartości minimalne i maksymalne z każdej z czterech par
wartości bajtowych.
Porównanie
Porównywanie odpowiadających sobie bajtów z dwóch
rejestrów.
Przesunięcie
Przesuwanie pary operandów 16-bitowych.
Suma produktów
Suma, ze znakiem, produktów 8- lub 16-bitowych.
Łączenie, pakowanie, wymiana
Manipulowanie bajtami i półsłowami dwubajtowymi.
Uśrednianie czwórek bajtowych
Obliczanie średniej z czwórki bajtowej.
Uśrednianie bajtowe
Bajtowe uśrednianie czterech elementów.
Mnożenie bajtów
Bezznakowe mnożenie dwóch bajtów.
Szacowanie ruchu
Bezznakowa suma wartości bezwzględnych różnic
elementów bajtowych.
Różne
Pozostałe operacje arytmetyczne.
Pierwsza z wymienionych grup obejmuje korygowanie (nasycanie) wartości, cztery
następne grupy obejmują operacje arytmetyczne połączone z nasycaniem. Operacje
z grupy „Minimum i maksimum” traktują swe 32-bitowe operandy jako czterobajtowe
ciągi i dla każdej pary odpowiadających sobie bajtów wyliczają wartość większą i mniejszą z tej pary. Podobnie operacje z grupy „Porównanie” porównują ze sobą odpowiadające sobie bajty w poszczególnych rejestrach.
Operacje multimedialne rzadko wykonywane są na operandach 32-bitowych, po-
nieważ większość obrazów składa się z pikseli określonych za pomocą 24-bitowych
wartości RGB reprezentujących bądź to 8-bitowe składowe kolorów czerwonego ( red), zielonego ( green) i niebieskiego ( blue), bądź też odpowiadające im składowe YUV
(zajmiemy się nimi w dalszej części rozdziału). W konsekwencji znakomita większość obliczeń multimedialnych wykonywana jest na prostokątnych macierzach 8-bitowych
wartości bez znaku.
Procesor TriMedia wyposażony jest w obfity repertuar efektywnych operacji na
takich właśnie operandach. W charakterze prostego przykładu rozpatrzmy lewy górny narożnik takiej macierzy, której bajtowe elementy zgrupowane są w czterobajtowe
słowa zgodnie z konwencją big-endian, jak pokazano to na rysunku 8.4 (a). Bajtowe
596
ROZDZIAŁ 8. z ARCHITEKTURY KOMPUTERÓW RÓWNOLEGŁYCH
RYSUNEK 8.4. Przetwarzanie bloku elementów 8-bitowych: (a) oryginalna macierz elementów; (b) macierz elementów po transpozycji; (c) zawartość oryginalnej macierzy po załadowaniu do czterech rejestrów; (d) zawartość rejestrów odpowiadająca macierzy transponowanej elementy kwadratowego bloku o rozmiarze 4 × 4 oznaczone zostały literami od A do P.