Programowanie niskopoziomowe / Moduł 7: Programowanie jednostek wektorowych

From Studia Informatyczne


Grafika:PNP_M7_S01.png

...


Grafika:PNP_M7_S02.png

...


Grafika:PNP_M7_S03.png

Jednostki wektorowe operują na długich słowach, interpretowanych jako wektory danych o formatach krótszych od długości słowa.

Ze względu na długość przetwarzanych słów jednostki wektorowe mają własne rejestry danych, niedostępne dla jednostek stałopozycyjnych.

Ponieważ typowo wszystkie elementy wektora podlegają takiemu samemu przetwarzaniu, nie ma możliwości realizacji rozejść warunkowych dla poszczególnych elementów. Jednostki wektorowe realizują specyficzny model operacji warunkowych bez rozejść programu, opisany w dalszej części wykładu.

Ponieważ jednostki wektorowe służą najczęściej realizacji konkretnych algorytmów (np. przetwarzania dźwięków i obrazów, ich zestaw instrukcji zawiera często instrukcje z pozoru dziwne, związane z wybranymi algorytmami (np. uśrednianie elementów dwóch wektorów lub arytmetyka z nasyceniem).


Grafika:PNP_M7_S04.png

...


Grafika:PNP_M7_S05.png

...


Grafika:PNP_M7_S06.png

...


Grafika:PNP_M7_S07.png

...


Grafika:PNP_M7_S08.png

...


Grafika:PNP_M7_S09.png

...


Grafika:PNP_M7_S10.png

...


Grafika:PNP_M7_S11.png

...


Grafika:PNP_M7_S12.png

Kolorem zielonym zaznaczono bajty, dla których wynik dodawania nie podlega nasyceniu do granic zakresu reprezentowalnego.

W bajtach oznaczonych kolorem czerwonym wynik jest większy od największej reprezentowalnej wartości (127). Jest im nadawana wartość równa największej wartości reprezentowalnej.

Analogicznie w bajtach oznaczone kolorem niebieskim mamy do czynienia z niedomiarem, czyli wynikiem poniżej -128. Wartość końcowa po nasyceniu staje się równa -128.


Grafika:PNP_M7_S13.png

...


Grafika:PNP_M7_S14.png

...


Grafika:PNP_M7_S15.png

...


Grafika:PNP_M7_S16.png

...


Grafika:PNP_M7_S17.png

...


Grafika:PNP_M7_S18.png

Do realizacji operacji warunkowych potrzebne są dwa potencjalne wyniki obliczeń – dla ścieżek „then” i „else” oraz wartość wyrażenia logicznego określającego warunek, przedstawiona w postaci masek bitowych. Instrukcje porównań wektorowych generują wyniki w takiej właśnie postaci.

Wśród instrukcji jednostki wektorowej znajdziemy instrukcję „AND NOT”, która realizuje iloczyn logiczna z negacją jednego z argumentów. Stosując tę instrukcję oraz instrukcję zwykłego iloczynu logicznego otrzymujemy wektory zawierające wyniki i zera. Te dwa wektory są poddawane operacji sumy logicznej.


Grafika:PNP_M7_S19.png

...


Grafika:PNP_M7_S20.png

...


Grafika:PNP_M7_S21.png

...


Grafika:PNP_M7_S22.png

...


Grafika:PNP_M7_S23.png

...


Grafika:PNP_M7_S24.png

...


Grafika:PNP_M7_S25.png

...


Grafika:PNP_M7_S26.png

...


Grafika:PNP_M7_S27.png

...