K-1 - Katedra Systemów Multimedialnych
Transkrypt
K-1 - Katedra Systemów Multimedialnych
Adam Korzeniewski [email protected] p. 732 - Katedra Systemów Multimedialnych Operacja na dwóch funkcjach dająca w wyniku modyfikację oryginalnych funkcji (wynikiem jest iloczyn splotowy). Jest działaniem przemiennym (podobnie jak mnożenie) Algorytm FFT jest tak bardzo skuteczny, że w przypadku obliczania splotu kołowego yn xn hn 2 2 ( N mnożeń i N 1 dodawań) opłaca się obliczyć FFT FFT widma sygnałów xn X k , hn H k , pomnożyć widma Y k X k H k i obliczyć odwrotne przekształcenie Y k yn . IFFT Ten sposób obliczania splotu nazywa się szybkim splotem, gdyż obliczenia trwają krócej już od N = 32 w przypadku splatania sygnałów zespolonych i od N = 64 w przypadku splatania sygnałów rzeczywistych. Korzystne jest to, że w tym zastosowaniu FFT nie ma potrzeby przenumerowywania próbek. Dodatkowe korzyści odnosi się w typowej sytuacji, gdy splot jest obliczany dla różnych sygnałów x[n] przy tej samej funkcji h[n]. Wystarczy wtedy obliczyć przekształcenie tylko jeden raz. xn FFT xn hn yn xn hn X k ş H k FFT hn Y k X k H k IFFT yn Jeżeli sygnał wejściowy x[n] jest bardzo długi (czy wręcz nieskończony, tak jak to jest przy przetwarzaniu w czasie rzeczywistym sygnałów dźwiękowych, czy obrazów ruchomych), to jego splatanie z odpowiedzią impulsową filtru h[n] o długości K jest rozbijane na sumę szybkich splotów. Sygnał wejściowy należy rozbić na sumę bloków, każdy o długości M. Splot liniowy dwóch sygnałów o długościach M i K daje sygnał o długości M + K - 1. Splot kołowy powinien mieć taką właśnie długość N = M + K - 1, aby równał się splotowi liniowemu. Dlatego przed wykonaniem splotu kołowego sygnał h[n] jest uzupełniany M-1 zerami do N oraz blok sygnału wejściowego xi[n] jest uzupełniany K-1 zerami do N. Wyniki kolejnych splotów kołowych yi[n] są sumowane na zakładkę o długości K-1, stąd metoda ma angielską nazwę overlap-add. K hn xn N M + K 1 M 1 0 M Uzupełnienie zerami M M L M x1 n M y1 n K 1 0 Uzupełnienie zerami M K 1 0 Uzupełnienie zerami x2 n M K 1 x3 n 0 K 1 + M y 2 n K 1 + M y3 n K 1 Równoważny sposób postępowania polega na zapamiętaniu K-1 końcowych próbek z poprzedniego bloku xi-1[n] i uzupełnieniu tymi próbkami początku następnego bloku xi[n]. Tym razem splot kołowy daje K-1 początkowych próbek fałszywych (różniących się od wyniku splotu liniowego) i są one odrzucane z sygnału wyjściowego. K hn xn N M + K 1 M 1 0 M Uzupełnienie zerami M M L K 1 0 Uzupełnienie zerami M x1 n K 1 M y1 n Zapamiętaj K 1 i przenieś x2 n M K 1 Odrzuć to M y2 n Zapamiętaj K 1 i przenieś x3 n M K 1 Odrzuć to Odrzuć to M y3 n Liczba kolejnych bloków próbek sygnału wejściowego x[n] może być nieskończenie wielka. Ten sposób wprowadzania może być stosowany w procesorach sygnałowych przetwarzających sygnały cyfrowe w czasie rzeczywistym. Kolejne próbki ze źródła sygnału (mikrofon, kamera telewizyjna) są wprowadzane do odbiorczego bufora kołowego, a wyniki są wyprowadzane do nadawczego bufora kołowego. Wykonanie programu komputerowego, to wykonanie sekwencji instrukcji. Instrukcję można przedstawić jako 5 bloków (stopni), każdy wykonywany w 1 cyklu zegara. Bloki oznaczymy literami F, D, E, A, S (pierwsze litery nazw w języku angielskim). E F D ALU dekodowanie pobranie wykonanie instrukcji instrukcji instrukcji (ang. instruction (ang. instruction z pamięci decode) (ang. instruction execute) fetch) A S otwarcie dostępu do pamięci (ang. memory access) zapisanie wyniku wykonania instrukcji (ang. store, write back) W zwykłym (niepotokowym) przetwarzaniu najpierw wykonuje się bloki pierwszej instrukcji, następnie drugiej instrukcji, itd. Wyniki wykonania kolejnych instrukcji są zapisywane co 5 cykli zegara. Przetwarzanie niepotokowe Clock cycle 1 2 3 4 5 Instr. 1 F1 D1 E1 A1 S1 Instr. 2 6 7 8 9 10 F2 D2 E2 A2 S2 Procesor sygnałowy ma logikę przystosowaną do wykonywania wszystkich bloków jednocześnie, dzięki czemu jest możliwe przetwarzanie potokowe. Począwszy od 5-go cyklu zegara wykonywanych jest 5 bloków jednocześnie, każdy dla innej, kolejnej instrukcji. Wyniki S1, S2, ... są dostępne w kolejnych cyklach zegara (5-tym, 6-tym, itd.), a nie po co 5-tym cyklu zegara, jak to było w przetwarzaniu niepotokowym. Potencjalnie jest możliwe 5-cio krotne zwiększenie prędkości obliczeń. Niestety trzeba z góry przewidzieć sytuacje konfliktowe, hazard (w literaturze naukowej wymienia się kilkadziesiąt takich sytuacji). Na przykład w przypadku instrukcji skoku, w najgorszym przypadku trzeba wycofać instrukcje, które następowały po instrukcji skoku i rozpocząć zapełnianie potoku od adresu, do którego nastąpił skok. Przetwarzanie potokowe Clock cycle 1 2 3 4 5 Instr. 1 F1 D1 E1 A1 S1 F2 D2 E2 A2 S2 F3 D3 E3 A3 S3 F4 D4 E4 A4 S4 F5 D5 E5 A5 S5 F6 D6 E6 A6 Instr. 2 Instr. 3 Instr. 4 Instr. 5 Instr. 6 6 7 8 9 10 S6 KONIEC