Materiały do wykładu 10.Architekturyspecjalizowane Marcin Peczarski Instytut Informatyki Uniwersytet Warszawski 5 stycznia 2009
Architektury do specyficznych zastosowań 10.1 DSP Digital Signal Processing cyfrowe przetwarzanie sygnałów Digital Signal Processor procesor sygnałowy GPU Graphics Processing Unit procesor graficzny
Dziedziny telekomunikacja radiolokacja sprzęt audio-wideo medycyna Przykładowe aplikacje kompresja i dekompresja sygnału mowy wykrywanie rodzaju obiektu latającego magnetyczny rezonans jądrowy tomografia komputerowa Zastosowania DSP 10.2
Twierdzenie o próbkowaniu Dlaczego to działa? 10.3 Jeżeli sygnał ciągły w czasie zawiera tylko składowe o częstotliwościach poniżej 2f, to jest jednoznacznie reprezentowany przez swoje wartości w dyskretnych chwilach czasu i/f, gdzie i to liczba całkowita, a f to częstotliwość próbkowania. przed próbkowaniem po próbkowaniu
Zamiana wartości próbki na liczbę Rozdzielczość, liczba bitów reprezentacji n Kwantowanie 10.4 Proces nieodwracalny wartości zaokrąglane do najbliższej reprezentowalnej wartości Szum kwantowania SNR[dB]=20nlog2+10log 3 4 6n 1,25 Równomierne, liniowe Nierównomierne, nieliniowe: A-law, µ-law
Arytmetyka procesorów sygnałowych 10.5 Arytmetyka stałopozycyjna U2 b 0,b 1...b n 2 b n 1 b 0 + n 1 i=1 b i 2 i Reprezentuje wartości z przedziału[ 1, 1). Mnożenie liczb z przedziału( 1, 1) nie powoduje przepełnienia. Mnożenie 1 razy 1 powoduje przepełnienie. Dodawanie z nasyceniem
Typowe operacje DSP(1) 10.6 Filtr SOI(skończona odpowiedź impulsowa), ang. FIR(finite impulse response) n y t = b i x t i i=0 Filtr NOI(nieskończona odpowiedź impulsowa), ang. IIR(infinite impulse response) y t = m a i y t i + n b i x t i i=1 i=0
Typowe operacje DSP(2) 10.7 Splot z n = n x i y n i i=0 Dyskretne przekształcenie Fouriera(DFT) A m = N 1 n=0 a n w mn
Opearacja MAC 10.8 Typowe operacje DSP pelegają na mnożeniu z akumulacją wyniku. a:=a+x i y j MAC multiply and accumulate a:=a+x[i] y[j] i:=(i+1)modn j:=(j 1)modn Wyniki pośrednie w rejestrach tymczasowych o zwiększonej precyzji
MAC(1) 10.9 Liczymya t = 3 i=0 x iy t i dlakolejnychindeksówt. Inicjujemya t :=0iindeksyi:=0,j:=tmod4. x 3 y t 2 x 2 x 1 y t 3 y t j i x 0 y t 1 PoczterechoperacjachMACdostajemya t = 3 i=0 x iy t i. Indeksy wskazują na pierwotne pozycje.
MAC(2) 10.10 Inicjujemya t+1 :=0iprzesuwamyindeksj:=(j+1)mod4. Zamieniamyniepotrzebnąjużpróbkęy t 3 nanowąy t+1. x 3 y t 2 x 2 y t+1 j i x 1 x 0 y t y t 1 PokolejnychczterechoperacjachMACa t+1 = 3 i=0 x iy t+1 i. Powtarzamypowyższykrokdlat+2,t+3,...
Szybkie przekształcenie Fouriera FFT 10.11 Sprzętowe wsparcie dla operacji występujących w algorytmie FFT Operacja motylkowa x:=x+ωy y:=x ωy Operacja odwracania bitów 01011100 00111010
Systemy czasu rzeczywistego Cechy procesorów sygnałowych 10.12 ściśle oganiczony czas przetwarzania jednej próbki sygnału szybka obsługa przerwań Równoległy dostęp do kodu instrukcji i argumentów architektura harwardzka Brak sprzętowego wsparcia dla wielozadaniowości Wykonywanie pętli bez przerywania potoku Wbudowane interfejsy szeregowe dla wprowadzania i wyprowadzania przetwarzanego ciągu danych
Wyświetlanie obrazów 10.13 CRT(cathode ray tube) kineskop, lampa katodowa LCD(liquid crystal display) wyświetlacz ciekłokrystaliczny DLP(digital light processing), DMD(digital micromirror device) Ekran plazmowy LED(light-emitting diode display) wyświetlacz z diodami elektroluminescencyjnymi OLED(organic light-emitting diode displays) wyświetlacz z organicznymi diodami elektroluminescencyjnymi e-papier,nanorurki,...
Dlaczego to działa? 10.14 Wrażenie widzenia przez ludzkie oko prawie dowolnej barwy można wywołać przez sumowanie z wagami trzech kolorów podstawowych: czerwony 700,1 nm, zielony 546,1 nm, niebieski 435,8 nm. Metoda sumowania przestrzennego: oko ludzkie nie rozróżnia blisko leżących punktów. Metoda sumowania czasowego: oko ludzkie nie rozróżnia zmian o częstotliwości powyżej kilkunastu Hz.
Parametry monitorów 10.15 Rozdzielczość Częstotliwość odchylania pionowego liczba obrazów(półobrazów) na sekundę Sposób wyświetlania przeplot(ang. interlace) skanowanie progresywne(ang. progressive, noninterlaced scanning)
Głębia kolorów 10.16 Obraz czarno-biały 1bitnapiksel Paleta kolorów 16kolorów,4bity 256kolorów,8bitów Kolor bezpośrednio 8bitów czerwonyizielony3bity,niebieski2bity 15bitów 5bitównakolor 16bitów czerwonyiniebieski5bitów,zielony6bitów 24bity 8bitównakolor
Rozwój procesorów graficznych 10.17 Specjalizowane układy scalone generujące sygnały dla monitora na podstawie zawartości pamięci obrazu Sprzętowe wspomaganie animacji w grach komputerowych duszki Wsparcie dla operacji graficznych tłumaczenie wysokopoziomowego opisu na postać pikseli nadawanie faktury figurom geometrycznym transformacje układu współrzędnych operacje wektorowe i macierzowe Użycie procesorów graficznych do obliczeń niezwiązanych z grafiką Karty graficzne bez złącza do monitora!
Nieoficjalne seminarium 10.18 Karty graficzne jako komputery ogólnego przeznaczenia http://www.mimuw.edu.pl/~ps209291/kgkp/ Materiały na temat dwóch konkurencyjnych rozwiązań NVIDIA AMD Przykłady zaimplementowanych algorytmów sumy prefiksowe sortowanie diagramy Voronoi szyfrowanie metody siatek
Ogólna architektura 10.19 GPU pamięć CPU CPU GPU pamięć pamięć PCI Express DMA
Arytmetyka procesorów graficznych 10.20 Głównie operacje zmiennoprzecinkowe pojedynczej precyzji Brak wsparcia dla liczb zdenormalizowanych Dzielenie implementowane jako mnożenie przez odwrotność Tylko tryby zaokrąglania do najbliższej parzystej i obcięcie Ograniczone wsparcie dla NaN Pamięć tekstury indeksowana zmiennymi zmiennoprzecinkowymi, różne tryby interpolacji
multiprocesor 2 multiprocesor 1 szybka pamięć dzielona NVIDIA Model sprzętu 10.21 rejestry rejestry rejestry procesor1 procesor2 procesorm jednostka sterująca pamięć podręczna stałych pamięć podręczna tekstury pamięć karty graficznej
NVIDIA Model programowania 10.22 Każde zadanie(kernel) wykonuje się jako siatka bloków. Siatka bloków może być jedno-, dwu- lub trzywymiarowa. W obrębie każdego bloku wykonywane są wątki. Wątki są ułożone w jedno-, dwu- lub trzywymiarową tablicę. Wątki w jednym bloku komunikują się przez pamięć dzieloną. Wszystkie wątki wykonują ten sam kod zadania. Wątek ma dostęp do identyfikatora bloku, w którym się wykonuje (D x,d y,d z )idoswojegoidentyfikatorawobrębiebloku(x,y,z).
NVIDIA Model wykonania 10.23 Multiprocesor wykonuje wątki w paczkach(warp 32 wątki). Wątki wykonywane są symultanicznie w celu ukrycia opóźnień dostępów do pamięci graficznej. Wątki dzielą się zasobami rejestry i pamięć dzielona. Wątki w obrębie jednej paczki wykonują równocześnie tę samą instrukcję. Jeśli instrukcję warunkową wykonują tylko niektóre wątki w paczce, to pozostałe wątki muszą czekać. Odczyty z pamięci dzielonej mogą odbywać się równocześnie, jeśli dotyczą różnych banków albo wszystkie odwołują się do tego samego adresu.
NVIDIA Ograniczenia(1) 10.24 Rozmiar siatki bloków w każdym wymiarze: 65535 Rozmiarblokuwątków:512 512 64 Liczbawątkówwbloku:512 Liczbawątkówwpaczce:32 Liczba aktywnych bloków w multiprocesorze: 8 Liczba aktywnych paczek wątków w multiprocesorze: 24 Liczba aktywnych wątków w multiprocesorze: 768
NVIDIA Ograniczenia(2) 10.25 Liczba procesorów w multiprocesorze: 8 Liczba rejestrów w multiprocesorze: 8192 Pamięć dzielona: 16 kib Pamięćstałych:64kiB Pamięć podręczna stałych: 8 kib Pamięć podręczna tekstury: 8 kib
NVIDIA PTX Parallel Thread Execution 10.26 Wirtualny Asembler procesorów graficznych NVIDIA Definiuje wirtualną maszynę i wirtualny zbiór rozkazów(isa). Jest tłumaczony na kod maszynowy GPU. Ma zapewnić zgodność z przyszłymi produktami..reg.b32 r1, r2;.global.f32 array[n]; start: mov.b32 r1,%tid.0; shl.b32 r1,r1,2; ld.b32 r2, array[r1]; add.f32 r2, r2, 0.5;
NVIDIA CUDA 10.27 Compute Unified Device Architecture Rozszerzenie języka C Sterownik CUDA Biblioteka czasu uruchomienia, CUDA Runtime Biblioteki CUFFT, CUBLAS
AMD 10.28 CTM CloseToMetal Brook rozszerzenie C na architektury strumieniowe opracowane na Uniwersytecie Stanforda Brook+ implementacja Brooka wykonana przez AMD Biblioteki używające CTM AMDCoreMathLibrary:BLAS,LAPACK,FFT AMD Performance Library: dekodowanie sygnałów wideo, JPEG COBRA: akceleracja przetwarzania sygnałów wideo