Programowanie niskopoziomowe / Moduł 7: Programowanie jednostek wektorowych: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 16: | Linia 16: | ||
|valign="top" width="500px"|[[Grafika:PNP_M7_S03.png]] | |valign="top" width="500px"|[[Grafika:PNP_M7_S03.png]] | ||
|valign="top"| | |valign="top"| | ||
... | 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). | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 70: | Linia 76: | ||
|valign="top" width="500px"|[[Grafika:PNP_M7_S12.png]] | |valign="top" width="500px"|[[Grafika:PNP_M7_S12.png]] | ||
|valign="top"| | |valign="top"| | ||
... | 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. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 106: | Linia 116: | ||
|valign="top" width="500px"|[[Grafika:PNP_M7_S18.png]] | |valign="top" width="500px"|[[Grafika:PNP_M7_S18.png]] | ||
|valign="top"| | |valign="top"| | ||
... | 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. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> |
Aktualna wersja na dzień 22:21, 15 paź 2006
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |