« wszystkie artykuły i działy

« dział "Atari 16-32bit"

Atari 16-32bit » Moc i potega DSP

Atari Falcon 030 posiada bardzo ciekawe rozwiązanie, mianowicie oprócz głównego procesora, którym jest Motorola 68030 16MHz posiada także procesor DSP 56001, taktowany zegarem 32MHz. Charakteryzuje się on mocą obliczeniową ponad 4 razy większą niż główny procesor, przynajmniej w teorii. Tak, w teorii, bowiem w praktyce DSP potrafi być jeszcze szybszy.
Dobrym przykładem są tu obliczenia arytmetyczne: procesor 68030 16MHz potrzebuje 28 cykli zegara, aby dokonać mnożenia dwóch liczb 16-bitowych z wynikiem 32-bitowym. Dla porównania DSP 56001 wykonuje w 2 cyklach zegara mnożenie dwóch liczb 24-bitowych z wynikiem 48bit mogąc w tym samym czasie dokonać operacji odejmowania lub dodawania owego iloczynu z precyzją... 56bit!

Oprócz wielokrotnie szybszych obliczeń przy dużo większej precyzji DSP 56001 pozwala na wykonanie do 3 rozkazów procesora w tym samym momencie. Obrazuje to poniższy przykład:


mpy     +x0,y1,a     x:(r1),x0     a,y:(r6)+


* mpy +x0,y1,a - dokonuje mnożenia pomiędzy dwoma 24-bitowymi rejestrami (y1 i x0), a następnie wynik jest dodawany do 56-bitowego rejestru a.
* x:(r1),x0 - w obrębie pamięci X (wyodrębniony obszar pamięci) wartość (24-bit) komórki pamięci o adresie zawartym w rejestrze r1 jest odczytywana do rejestru x0.
* a,y:(r6)+ - natomiast zawartość rejestru a jest kopiowana do obszaru pamięci Y pod adres wskazany rejestrem r6, a następnie zawartość rejestru r6 jest incrementowana.

Dodatkowym atutem jest fakt, że ta operacja zajmuje procesorowi DSP 56001 zaledwie 2 cykle zegara!
Operacje typu: move jest wykonywana w 1 cyklu zegara, i w tym czasie pozwala na równoległe wykonanie dwóch operacji, co obrazuje poniższy przykład:


move     x:(r1),x0     a,y:(r6)+


Niestety, nie ma róży bez kolców - DSP 56001 w Falconie ma bardzo ograniczone pole do działania. Dysponuje obszarem pamięci zaledwie 96kB RAM. Rekompensuje to nieco fakt, że jest to pamięć, która pracuje z tą samą prędkością co DSP, natomiast komunikacja z głównym procesorem jest dostępna za pomocą kanałów DMA jak i poprzez "handshakeing".

W wypadku komunikacji poprzez kanały DMA, DSP ma możliwość komunikacji np. z przetwornikami A/C i C/A (które Atari Falcon posiada standardowo), umożliwiając np. obróbkę w czasie rzeczywistym dźwięku, wszelkiego rodzaju efekty dźwiękowe z precyzją 50kHz, z rozdzielczością 16bit (oczywiście dwukanałowo, stereofonicznie).
Oczywiście dzisiaj tego typu możliwości nie są coś szczególnym, jednak jeżeli weźmiemy pod uwagę, że każdy seryjny Falcon potrafił to już w roku 1993 (!!!), kosztując tym samym tyle co zwykły markowy PC, to komputer ten na prawdę budzi wielki szacunek.
Powyższe rozwiązanie stosuje np. program o nazwie WinRec. Podłączamy mikrofon, i za pomocą wirtualnych potencjometrów możemy filtrować w czasie rzeczywistym dźwięk, regulując płynnie poziom dźwięków o danej częstotliwości od najniższych basów, po najwyższe soprany.
Ale najbardziej szokujący jest dla mnie efekt polegający na symulacji "taśmy magnetofonowej" - przesuwając wirtualny suwak w dół uzyskujemy efekt taki, jaki byśmy uzyskali odtwarzając dźwięk z taśmy z niższą prędkością, analogicznie przesuwając suwak w górę uzyskujemy przyspieszenie. Niby nic szczególnego, ale... to się odbywa w czasie rzeczywistym! Normalnie przyspieszanie i spowalnianie odtwarzania taśmy wydłużyłoby lub skróciło w czasie odtwarzanie. A tutaj to jest realizowane w tym samym czasie!
Oczywiście efekty typu echo, czy efekt "mówienia przez rurę" są dostępne.


Dzięki DSP 56001 standardowy Falcon 030 16MHz, potrafi odtwarzać pliki muzyczne MP2 z obciążeniem procesora poniżej... 1% czasu procesora.
Dzięki DSP 56001 standardowy Falcon 030 16MHz (odpowiednik 386 16MHz) potrafi odtwarzać pliki MP3 z częstotliwością np. 44kHz !!! Wprawdzie angażowana jest do tego niemalże pełna moc procesora, jednak komputer tej samej klasy co 386 16MHz daje radę.

Obecnie w dobie kart turbo, np. z procesorami 68060, które są szybsze od DSP, znaczenie tego ostatniego zostało ograniczone głównie do obróbki dźwięku, ale jest to znaczące - dla porównania Falcon z procesorem 68060 66MHz (odpowiednik Pentium 66MHz) bez wsparcia DSP angażuje 65% mocy procesora do odtwarzania plików MP3, natomiast ze wsparciem DSP potrafi tego dokonać, bedąc obciążonym zaledwie w ok. 8-9% czasu procesora.


Ale DSP to nie tylko obróbka dźwięku - od dawna był wykorzystywany przez procedury dekodujące animacje w formacie MPG czy też do dekodowania plików JPG.

Również produkcje demoscenowe wykorzystywały DSP np. do obliczeń związanych z efektami wektorowymi 3D, widać to na przykładzie takich produkcji jak: "Entract" grupy EXA, "Delta" grupy FUN czy też "Sonolumineszenz" grupy Avena.

Komentarze

  • ~Mieszko Kaczmarczyk 2010-04-17 23:43:42
    @madey: Dla mnie tez jest dziwny - ani to do 6502, ani do PowerPC, ani 680x0 podobne. Do x86 też nie.
  • ~atarowiec 2009-02-05 22:45:22
    No tak na DSP można przy gołym Falconie pokusić można się o takie rzeczy jak DOOM z płynną animacją bez Fast Ramu i kart turbo. Dopalenie DSP do 50 Mhz też nie jest dużym problemem.
  • ~madey 2009-01-07 21:07:27
    dziwny ten asemblera O_o
  • ~amigowiec 2009-01-06 19:20:10
    Szkoda, że do Amigi 1200 nie montowano DSP. Ale były karty muzyczne z DSP.
  • ~zx_9312 2009-01-03 23:05:53
    To trochę przypomina sytuację z kartami graficznymi, które szybkość obliczeń mają większą od głównego procesora.