Jan H. Schmidt Wydział Elektroniki i Informatyki Katedra Systemów Elektroniki Morskiej
Procesory sygnałowe (ang. Digital Signal Processors) - klasa specjalizowanych procesorów dedykowanych do cyfrowego przetwarzania sygnałów Niezbędne w systemach czasu rzeczywistego (obliczenia on-line) przetwarzania sygnałów akustycznych, obrazów i różnych sygnałów szybkozmiennych. lata 80-te: rozwój procesorów sygnałowych spowodował rewolucję w cyfrowym przetwarzaniu sygnałów
1978 r. S2811 (prod. AMI) 16 bitowy, cykl rozkazowy 300ns, układ mnożący, 1979 r. - Intel 2920 pojedynczy chip = procesor, pamięć EPROM i RAM, przetworniki analogowo-cyfrowe i cyfrowo-analogowe, układ arytmetyczno-logiczny, cykl rozkazowy 400ns 1982 r. TMS32010 (prod. Texas Instruments) pionier procesorów DSP : cykl rozkazowy 200ns, architektura harwardzka, dane 16 bitowe, arytmetyka 32 bitowa, bogate narzędzia projektowe
1982 r. HD61810 (prod. HITACHI) pierwszy zmiennoprzecinkowy procesor sygnałowy, cykl rozkazowy 250ns, niestandardowy format liczb (12-bitowa mantysa, 4-bitowa cecha) spowodował małą jego popularność. 1985 r. DSP-32 (prod. Bell Labs) pierwszy zmiennoprzecinkowy procesor sygnałowy w którym zastosowano format liczb zgodny ze standardem IEEE 32-bit (23-bitowa mantysa, 8 bitowa cecha).
1985 r. TMS32020 (prod. Texas Instruments) II generacja procesorów zwiększona liczba rejestrów pomocniczych, większa ilość pamięci RAM. 1986 r. TMS320C25 (prod. Texas Instruments) wersja CMOS procesora TMS32020 1988 r. - TMS320C30 (prod. Texas Instruments) procesor zmiennoprzecinkowy. 1988 r. - TMS320C40 (prod. Texas Instruments) procesor zmiennoprzecinkowy z mechanizmami umożliwiającymi budowę układów wieloprocesorowych.
Przetwarzanie strumieniowe Przetwarzanie blokowe
Texas Instruments
Texas Instruments
Texas Instruments
Texas Instruments
Texas Instruments
Texas Instruments
-- filtracja w opraciu o FIR, -- filtracja w opraciu o IIR, -- splot / korelacji wzajemnej, -- transformacji Fouriera (1D, 2D), -- mnożenie wektorowe i macierzowe.
Ponieważ operacja arytmetyczna MAC stanowi elementarną operację arytmetyczną większości algorytmów obliczeniowych została ona zaimplementowana jako instrukcja procesora sygnałowego ( wersje: zmiennoprzecinkowa, stałopozycyjna). Szybkość wykonania operacji MAC jest wymiernym miernikiem szybkości procesora sygnałowego. Procesor sygnałowy charakteryzuje się skróconym czas wykonania operacji arytmetycznej MAC - do kilku/kilkunastu ns
Architektura harwardzka - architektura dostępu do pamięci (rozdzielona pamięć programu i danych - możliwość równoczesnego odczytu instrukcji oraz danych, realizacja potokowości ADRES 2 RAM DANYCH DANE 2 CPU RAM (PROGRAMU I DANYCH) CPU RAM PROGRAMU ADRES DANE ADRES DANE Harvard von Neumann
Pierwszy procesor sygnałowy o architekturze harwardzkiej: TMS32010 (prod. Texas Instruments 1982 r.) Pierwszy komputery o architekturze harwardzkiej: MARK1 (Harvard University 1944r.) ENIAC (University of Pensylvania 1946r.)
Zmodyfikowana architektura harwardzka (znana również jako architektura mieszana) - łączy w sobie cechy architektury harwardzkiej i architektury von Neumanna. Oddzielone zostały pamięci danych i rozkazów, lecz wykorzystują one wspólne magistrale danych i adresową. Architektura ta umożliwia łatwe przesyłanie danych pomiędzy rozdzielonymi pamięciami. Dla osiągnięcia najlepszej wydajności (skrócenie czasu wykonywania instrukcji) stosuje się zwielokrotnianie magistral danych. Umożliwia jednoczesne pobranie operandów do wykonania operacji mnożenia lub dodawania.
Proste i skomplikowane jednostki arytmetyczno-logiczne (ALU) -wprowadzono ze względu na potrzebę realizacji wielu prostych przygotowawczych operacji logicznych ( algebra boolowska)/ arytmetycznych (dodawanie, odejmowanie), -generują standardowe bity statusowe (flagi przepełnienia, flagi zera, bity przeniesienia), -zapewniają elastyczne mechanizmy pobierania danych wejściowych i przesyłania wyników operacji (rejestry, dane z magistrali zewnętrznych i wewnętrznych), -podstawa uzyskania maksymalnej elastyczności kodu.
Architektura VLIW (ang. Very Long Instruction Word) SIMD (ang. Single Instruction, Multiple Data) Wprowadzenie instrukcji skoku wykonywanych z opóźnieniem w celu nieprzerwania pracy potokowej w przypadku skoku wada: zwiększona pojemność kodu. Zwiększenie liczby rejestrów pełniących funkcję równorzędnych akumulatorów. Wprowadzenie dodatkowych portów równoległych lub szeregowych umożliwiających budowę układów wieloprocesorowych.
Wyposażenie procesorów sygnałowych w układy wspomagające emulację ich pracy (JTAG - ang. Joint Test Action Group) standard IEEE 1149.1, określający protokół komunikacji szeregowej wykorzystywanej do łączności z badanym układem. Wprowadzenie pamięci podręcznej cache. Rozbudowane/ wielokanałowe układy bezpośredniego dostępu do pamięci (DMA). Umieszczenie tablic współczynników w pamięci ROM. Rozwój oprogramowania narzędziowego wspomagającego tworzenie oprogramowania dla procesorów w językach wysokiego poziomu (C/C++).
UWAGA: Zaburzona kolejność wykonywania napisanych linii kodu O finalnej kolejności decyduje kompilator ściślej optymalizator
Obsługa przerwań Instrukcja skoku Zaburzenie pracy potoku - wymaga przeczyszczenia potoku / wycofanie rozkazów następujących po instrukcji skoku. - rozpoczęcie zapełnianie potoku od początku od adresu do którego następuje skok. Wprowadza opóźnienia w wykonywaniu programu
Adresowanie bufora cyklicznego - splot, korelacja Adresowanie bitowo-rewersyjne - FFT
-zawierają współczynniki kompresji według zasady A/, - zawierają tablice sinusów i cosinusów dla algorytmu FFT - zawierają tablice sinusów i cosinusów dla modulacji/demodulacji
Texas Instruments C671x / C621x.L1/.L2.M1/.M2.S1/.S2.D1/.D2
.L1/.L2 32/40-bit arithmetic /compare operations 32-bit logical operations Normaization / bit count operations Saturated arithmetic for 32/40-bit operations.m1/.m2 16 bit x 16bit = 32 bit
.S1/.S2 32-bit arithmetic, logic and bit field operations 32/40-bit shifts Branches Register transfers to and from control registers Constant generation.d1/.d2 Load and store with 5-bit constant offset Load and store with 15-bit constant offset 32-bit additions/subtractions Linear and circular address calculation
- Szybka pamięć podręczna (Cache), - Szybka pamięć statyczna, - Rejestry, - Obsługa przerwań, - DMA (ang. Direct Memory Access), - Timery - Elastyczne magistrale danych ( External Memory InterFace - EMIF) obsługa szerokiej gamy układów pamięciowych oraz urządzeń zewnętrznych {SRAM, SDRAM, DRAM, FIFO, FLASH,... } - Synchroniczne interfejsy szeregowe, - Asynchroniczne interfejsy szeregowe (UART), - Ethernet (10/100/1000Mb/s), - Host porty, - I 2 C, - CAN 2.0B - Porty bitowe I/O, - Porty równoległe, - Hyperlink, - PCI, PCI Express, - SRIO,
Arytmetyka stałopozycyjna MIPS - million instructions per second Arytmetyka zmiennoprzecinkowa MFLOPS - million floating point operations per second
Kod uzupełnień do 2 (pol. U2, ang. 2C - Two's Complement) liczby 8-/16-/32-/64- bitowe np. 0000 1100 (bin) = 12 (dec) 0*(-2^7)+0*(2^6)+0*(2^5 )+0*(2^4)+ 1*(2^3)+ 1*(2^2)+ 0*(2^1)+ 0*(2^0) = 12 0 +0 +0 +0 +8 +4 +0 +0 = 12 1111 0100 (bin) = -12 (dec) 1*(-2^7)+1*(2^6)+1*(2^5 )+1*(2^4)+ 0*(2^3)+ 1*(2^2)+ 0*(2^1)+ 0*(2^0) =- 12-128 +64 +32 +16 +0 +4 +0 +0 = -12
Format ułamkowy Q15, Q31 umożliwia zapis liczy w zakresie <-1, 1) położenie punktu dziesiętnego (kropki) jest stałe, niezależne od wielkości liczb 0110 0000 0000 0000 (bin) = +0.75 (dec) (0110... = 0*(-1)+1*(0.5)+1*(0.25)+0*(0.125)+... =0.75) 0000 0000 0000 0001 (bin) = +0.000030517 (dec) 1010 0000 0000 0000 (bin) = -0.75 (dec) Inne: Q3.12
Dostępne są rozkazy realizujące arytmetykę umożliwiająca wykonywanie obliczeń zarówno na liczbach w kodzie U2 jak i kodzie ułamkowym. Arytmetyka z przesunięciem cyklicznym ( z zawijaniem wrap around arithmetic), Arytmetyka z nasycaniem (saturation arithmetic).
Liczba zmiennoprzecinkowa o pojedynczej precyzji [SP single-precision (32-bit) ] Akty standaryzacji: -IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985). Liczba zmiennoprzecinkowa o podwójnej precyzji [DP double-precision (64-bit) ] Akty standaryzacji: -IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 854).
S (ang. sign) - znak liczby, 1 lub -1 M (ang. mantissa) - znormalizowana mantysa, liczba ułamkowa E (ang. exponent) - wykładnik, liczba całkowita
Dynamika: SP: Min. 1.175494351e 38F Maks. 3.402823466e+38F DP: Min: 2.2250738585072014e 308 Maks. 1.7976931348623158e+308
- niezbędna kontrola obcinania i przepełnień (potrzeba samodzielnej operacji normalizacji i skalowania), - zapewnia większą rozdzielczość w stosunku do systemu zmiennoprzecinkowego, - większa szybkość układowa, - niższe koszty systemu,
Zalety: - ułatwia proces projektowania systemu ze względu na brak konieczności analizy algorytmów i danych wejściowych ze względu na obcinanie i przepełnienie, - umożliwia użycie języków programowania wyższego poziomu, -zapewnia większy zakres dynamiczny,
Wady: - większy pobór mocy układy realizujące obliczenia zmiennoprzecinkowe wymagają dodatkowo automatycznej normalizacji oraz skalowania, - mniejsza szybkość obliczeń, - precyzja liczby zmiennoprzecinkowej ta sama liczba bitów użytych do reprezentacji liczby zarówno dużej jak i małej - droższe rozwiązania sprzętowe.
Motorola -> Freescale Lucent -> Agere -> LSI
C2000 - High Performance 16-/32-bit Controllers C5000 - Power-efficient DSPs C6000 - High Performance DSPs DaVinci - Digital Media Processors
- stałopozycyjne 16-/32-bitowe kontrolery, - wydajność do 150 MIPS, - 32 32-bit stałopozycyjne MAC (jednocyklowe), - 16 16-bit stałopozycyjne MAC (jednocyklowe).
Interfejsy: - przetworniki A/D i D/A - PWM (Pulse Width Modulation) - SCI / UART - SPI - CAN 2.0B - I2C
Aplikacje: - cyfrowe sterowanie silników/mocy, - cyfrowe układy zasilania, - zaawansowane czujniki, - motoryzacja, - medycyna, - miernictwo.
- stałopozycyjne (16-bitowe), - wydajność do 600 MIPS, - 1 lub kilka rdzeni w pojedynczym układzie. Najbardziej efektywne procesory pod względem poboru mocy (3 tryby poboru mocy). Idealne do zastosowań w urządzeniach zasilanych bateryjnie: - tryb czuwania: ok. 0.12 mw, - tryb pełnej pracy: 40mW.
TMS320C55xx
TMS320C54xx
Aplikacje: - przenośne, zminiaturyzowane cyfrowe systemy audio (MP3/AAC), - centrale telefoniczne, - bezprzewodowe zestawy samochodowe, - przenośne urządzenia medyczne (np. glukometry, rejestratory pracy serca Holter) - telefony bezprzewodowe VoIP/DECT, - czytniki linii papilarnych, - odbiorniki GPS Przenośne urządzenia komunikacyjne: - telefony komórkowe (GSM / UMTS) - pagery - modemy
C62xx 32-bitowe stałopozycyjne procesory C67xx 32-bitowe zmiennoprzecinkowe procesory C64xx 32-/64-bitowe stałopozycyjne procesory C66xx wielordzeniowe zmiennoprzecinkowe procesory
C62xx 32-bitowe stałopozycyjne procesory - wydajność do 2400 MIPS, 300MHz - 600 MMACS - wykonuje do 8 32-bitowych instrukcji na 1 cykl zegarowy VelociTI Advanced Very-Long-Instruction-Word (VLIW) C62x DSP Core 8 niezależnych jednostek funkcjonalnych (VelociTI ) : - 6 ALU (32-/40-Bit) - Dwa układy mnożące (wykonujące: dwa mnożenia 16 x 16-bit (32-bitowy wynik) w jednym cyklu zegarowym) - 32 32-bitowe rejestry ogólnego przeznaczenia (GP)
C67xx - 32bitowe zmiennoprzecinkowe procesory - wydajność do 2400/1800 MIPS/MFLOPS, 300MHz - 600 MMACS - wykonuje do 8 32-bitowych instrukcji na 1 cykl zegarowy Advanced Very Long Instruction Word (VLIW) TMS320C67x DSP Core 8 niezależnych jednostek funkcjonalnych (VelociTI ) : - 2 ALU (Fixed-Point) -4 ALUs (Floating-/Fixed-Point) -2 Multipliers (Floating-/Fixed-Point) 32 32-bitowe rejestry ogólnego przeznaczenia (GP) Sprzętowa realizacja arytmetyki zmiennoprzecinkowej: Single-Precision (32-bit) / Double-Precision (64-bit).
C64xx 32-/64-bitowe stałopozycyjne procesory Wydajność do 9600 MIPS/MMACS (16-bit), 1.2 GHz Jednostka mnożąca (.M) wykonuje jedną z poniższych operacji w 1 cyklu zegarowym : - Mnożenie 32 x 32 bit, - Dwa mnożenia 16 x 16 bit, - Dwa mnożenia 16 x 32 bit, - Cztery mnożenia 8 x 8 bit, - Cztery mnożenia 8 x 8 bit (+dodawanie) - Cztery mnożenia 16 x 16 bit (+ dodawanie/ odejmowanie) - realizacja mnożeń na liczbach zespolonych
C66xx wielordzeniowe zmiennoprzecinkowe procesory
- Interfejsy I2C (inter-integrated circuit bus module), - Interfejsy McBSPs (multichannel buffered serial), - 64-bitowe timery ogólnego przeznaczenia (konfigurowalne jako dwa 32-bitowe), - 16-bitowe / 32-bitowe interfejsy dla procesora nadrzędnego (HPI16/HPI32), - Interfejs PCI (peripheral component interconnect), - 16-pin general-purpose input/output port (GPIO) with programmable interrupt/event generation modes, - Kontroler Ethernet (10/100/1000 bit) -media access controller (EMAC), moduł MDIO (management data input/output) jako cześć EMAC pozwala obsłużyć do 32 urządzeń fizycznych, - Elastyczny interfejs pamięci zewnętrznej (32-bit EMIF / 64-bit EMIFA), z obsługą urządzeń synchronicznych i asynchronicznych, np. obsługujący pamięci 32-bitowe DDR2 SDRAM -Viterbi Decoder co-processor (VCP) -Turbo Decoder co-processor (TCP)
Aplikacje: Infrastruktura komunikacji bezprzewodowej - anteny, - stacje bazowe, - bramy dostępowe. Infrastruktura komunikacji przewodowej - telefony, bramki VoIP (ang. Voice over Internet Protocol), - centrala abonencka PBX (ang. Private Branch Exchange). Cyfrowe systemy video - konferencyjne, - obserwacji / inwigilacji, - kodery / dekodery, - routery szerokopasmowe. Systemy obróbki obrazu / sygnałów - medyczne, - inspekcyjne, - systemy obronne (wojsko), - radary, - sonary.
Aplikacje: - kodowanie / dekodowanie obrazu i głosu, - nadajniki / odbiorniki wideo, - serwery konferencji wideo, - systemy kodowania i miksowania wideo wysokiej rozdzielczości (High-Definition), - bezprzewodowe stacje bazowe, - HD Radio, - laboratoria obróbki i druku zdjęć,
High-Performance Digital Media Processor (TMS320DM642) Wydajność do 5760 MIPS/MMACS, 720-MHz Wykonuje 8 32-bitowych instrukcji na cykl zegarowy Pełna kompatybilność softwareowa z C64x VelociTI.2 Extensions to VelociTI Advanced Very-Long- Instruction-Word (VLIW) TMS320C64x DSP Core 8 niezależnych jednostek funkcjonalnych (VelociTI.2 ) : - 6 ALU (32-/40-Bit) (każdy realizuje arytmetykę 32-bitową (1x), 16-bitową (2x), 8-bitową w jednym cyklu zegarowym) - Dwa układy mnożące (wykonujące: cztery mnożenia 16 x 16-bit (32-bitowy wynik) lub osiem mnożeń 8 x 8-bit (16-bitowy wynik) w jednym cyklu zegarowym) 64 32-bitowe rejestry ogólnego przeznaczenia (GP) Kompresowalne instrukcje redukujące wielkość kodu
Aplikacje: - wysoko-wydajne aplikacje kodowania i dekodowania wideo, - telefony wideo, - IP set-top box, - systemy bezpieczeństwa - wideo, - samochodowe systemy informacyjne, - aparaty i kamery cyfrowe, - przenośne urządzenia wideo.
Starter Kits
Evaluation Modules (EVM)