Innne architektury komputerów - DSP.pdf

(706 KB) Pobierz
416327151 UNPDF
Jacek Izydorczyk 1
O różnych procesorach sygnałowych
czyli trochę historii, szczypta teraźniejszości i niedaleka przyszłość
1. Procesory sygnałowe w telekomunikacji
Wartość obrotów na światowym rynku procesorów sygnałowych osiągnęła w roku 1997 ponad 3
miliardy USD. Co roku notuje się wzrost obrotów o 35%-40% co oznacza prawie potrojenie
wielkości rynku co trzy lata. Przewiduje się, że w roku 2002 wartość obrotów sięgnie 14
miliardów USD [25]. Najciekawsze jest to, że wzrost ten wynika w dużej mierze z
zapotrzebowania na procesory sygnałowe przez telekomunikację. W szczególności chodzi tutaj o
cyfrową telefonię komórkową oraz transmisję danych cyfrowych poprzez publiczną sieć
telefoniczną (modemy dla komputerów PC).
Telefonia komórkowa stanowi największy segment rynku procesorów sygnałowych. Żaden
cyfrowy aparat telefoniczny nie może się obejść bez procesora sygnałowego — patrz rysunek 1.
Dużą ich liczbę zawiera także każda stacja bazowa. Należy także uwzględnić zastosowania w
klasycznych telefonach bezprzewodowych, aparatach telefonicznych z automatyczną sekretarką
wyposażonych w pamięć półprzewodnikową oraz faksach. W krajach wysoko rozwiniętych
dochodzi do tego wielce obiecujący rynek związany z wprowadzaniem przez licznych
operatorów telekomunikacyjnych systemów radiodostępu abonenckiego (ang. wireless local
loop). Cyfrowa telefonia komórkowa oprócz zwykłych usług polegających na przesyłaniu głosu
pozwala na transmisję danych cyfrowych w tym na dostęp do Internetu.
Internet to technologia, która w dużym stopniu pobudza popyt na rynku modemów dla
Układ
analogowy
Układ
cyfrowy
ASIC
RAM & ROM
DMA
Ksią-
żka
telefo-
niczna
Obsłu-
ga
klawia-
tury
Filtr
pasmowy
S/P
Obsłu-
ga
inter-
fejsu
Proto-
kół
połącze-
niowy
Demo-
dulacja
i synchro-
ni zacja
SH
A/O
Decy-
mac ja
Koder
Viterbiego
R F
I F
Podwyż-
szenie
jakości
mowy
Rozpoz-
nawanie
mowy
70 M H z
10,7 M H z
40 Ms/sec - 540 ks/sec
900 M H z
270 ks/sec
Deko-
Kom-
presja
mowy
der
Rysunek 1. Schemat blokowy telefonu komórkowego
1 Zakład Telekomunikacji Instytutu Elektroniki Politechniki Śląskiej.
416327151.022.png 416327151.023.png 416327151.024.png 416327151.025.png 416327151.001.png 416327151.002.png 416327151.003.png 416327151.004.png 416327151.005.png 416327151.006.png 416327151.007.png 416327151.008.png 416327151.009.png 416327151.010.png 416327151.011.png 416327151.012.png 416327151.013.png 416327151.014.png 416327151.015.png 416327151.016.png 416327151.017.png 416327151.018.png 416327151.019.png
komputerów PC. Ludzie używają i chcą używać Internetu w pracy, w domu dla rozrywki, w
interesach. Mogą nawet za jego pośrednictwem wygodnie załatwić zakupy. Modem służy w tym
przypadku dla przesłania danych cyfrowych od abonenta do dostawcy usług internetowych (oraz
w kierunku przeciwnym) poprzez publiczną sieć telefoniczną. Połączenie abonenta z publiczną
siecią telekomunikacyjną ma jednak zwykle charakter analogowy i dane cyfrowe muszą być
przed wysłaniem zabezpieczone, przetworzone i „wtłoczone” w kanał o paśmie przepuszczania
około 3 kHz i przepustowości nie przekraczającej 64 kb/s. Podobnie dzieje się w przypadku
cyfrowej telefonii komórkowej — dane cyfrowe (zakodowany sygnał mowy) muszą zostać
przesłane drogą radiową czyli kanałem analogowym w którym warunki propagacji mogą
zmieniać się z sekundy na sekundę. W obu przypadkach procesor sygnałowy realizuje bardzo
podobne zadania:
¦ Dokonuje korekcji zniekształceń wprowadzanych do odbieranego sygnału przez kanał
transmisyjny (ang. equalization).
¦ Dokonuje elektronicznej eliminacji echa (modem analogowy, modem ISDN).
¦ Odtwarza częstotliwość nośną nadajnika (modem analogowy).
¦ Odtwarza częstotliwość sygnalizacji nadajnika.
¦ Dokonuje modulacji i demodulacji sygnału.
¦ Realizuje kodowanie i dekodowanie kanałowe.
¦ Dokonuje kompresji (dekompresji) cyfrowego sygnału mowy.
¦ Dokonuje bezstratnej kompresji (dekompresji) danych cyfrowych (modem analogowy).
¦ Eliminuje echo akustyczne (aparaty głośnomówiące).
Chociaż zadania te podsumowano w kilku punktach to nie są to zadania trywialne. Samo
omówienie ich podstaw teoretycznych zajmuje zwykle prawie tysiącstronicowy podręcznik
akademicki [27], [28], [29]. Wynikające stąd algorytmy cyfrowego przetwarzania sygnałów
mają jednak pewną liczbę cech wspólnych, które przesądzają o takiej a nie innej budowie
(architekturze) procesorów sygnałowych.
Sygnały cyfrowe reprezentowane są zwykle i przetwarzane ze stosunkowo niewielką
dokładnością. Typowy kodek telefoniczny dokonuje próbkowania sygnału analogowego z
częstotliwością 8 kHz, a następnie wartości próbek koduje w formacie A-law 2 . Jest to nic innego
jak bardzo krótki, jednobajtowy zmiennoprzecinkowy format zapisu liczb [30] zapewniający
zachowanie odstępu sygnał-szum kwantowania na poziomie 38-44 dB. Odpowiada to
zachowaniu dokładności mniej więcej dwóch znaczących cyfr dziesiętnych. W przypadku
przetwarzania sygnału akustycznego na poziomie jakości hi-fi próbki sygnału pobierane są z
częstotliwością 44 kHz i kodowane w 16-bitowym formacie stałoprzecinkowym co odpowiada
mniej więcej zachowaniu dokładności pięciu cyfr dziesiętnych. Dalsze przetwarzanie liczb
odbywa się zwykle z dokładnością nie przekraczającą 32 bitów. Stosowane są w zasadzie dwa
formaty. Format stałoprzecinkowy 1.31 (lub krótszy 1.15):
31 30.................................................................................0
s f
Najstarszy bit słowa ma wagę -1, następny 2 -1 , następny 2 -2 aż do najmłodszego bitu o wadze
2 - 31 . Reprezentowana w ten sposób liczba wyraża się wzorem
x
=
( ) ( )
s
0
f
2 W USA jest to format µ-law.
2
i leży w
lewostronnie domkniętym przedziale [-1,1). Dokładność przeprowadzanych w tym formacie
1
416327151.020.png
x . W ten sposób mogą być reprezentowane liczby z
zakresu od 10 -38 (mniej niż masa elektronu wyrażona w kilogramach) do 10 38 (więcej niż
odległość od najdalszych obserwowanych galaktyk wyrażona w metrach) z zachowaniem
dokładności 7 dziesiętnych cyfr znaczących. Jest to dla cyfrowego przetwarzania sygnałów
wystarczający zakres liczb oraz dokładność obliczeń. W związku z tym mamy istotną różnicę
między zmiennoprzecinkowym procesorem sygnałowym a mikroprocesorem ogólnego
przeznaczenia np. Pentium. Mianowicie ten ostatni liczy „za dokładnie”. Wykonywanie obliczeń
w 80-bitowym formacie zmiennoprzecinkowym wydaje się być w przypadku cyfrowego
przetwarzania sygnałów zbyteczne.
Druga cecha algorytmów cyfrowego przetwarzania sygnałów to konieczność wykonywania
ich w czasie rzeczywistym. Algorytmy te składają się z ogromnej liczby operacji mnożenia liczb
i ich dodawania. Np. ocenia się, że algorytm modulatora zgodny z normą V.34 wykonywany w
czasie rzeczywistym wymaga mocy obliczeniowej rzędu 20-25 MIPS (ang. milion instruction per
second) [25]. Do tego wszystkie te operacje powinny być wykonane przy jak najmniejszym
poborze mocy przez procesor. W przypadku telefonu komórkowego czy pagera wymaganie to
jest absolutnie nadrzędne. W przypadku stacji bazowej czy modemu komputerowego obniżenie
pobieranej mocy to niższe koszty eksploatacji a przede wszystkim większa niezawodność
urządzenia. Wydaje się, że o ile zmniejszanie poboru energii na każdą wykonaną instrukcję to
wyłączna domena technologii elektronowej o tyle zwiększanie wydajności procesorów
sygnałowych to problem ich architektury (budowy wewnętrznej).
( ) ( )
s
1
m
2
c
127
2. W pogoni za wydajnością
Architektura procesorów sygnałowych w dużej mierze podporządkowania jest wymogowi bardzo
szybkiego przetwarzania liczb. Podstawowym problemem jest konstrukcja i scalenie szybkiego
układu mnożącego, który dostarcza wyniku mnożenia w czasie jednego, dwu lub najwyżej trzech
taktów zegarowych [3]. Dopiero kiedy na początku lat osiemdziesiątych sztuka ta się udała
można mówić, że pojawiły się procesory sygnałowe. Następnym problemem było takie
zorganizowanie przetwarzania aby jak najlepiej wykorzystać zasoby sprzętowe procesora, aby
żadna jego część nie pozostawała bezczynna podczas realizacji programu.
2.1 Architektura von Neumana
Na początku swej historii komputery pomyślne były jako systemy sterowane przepływem
operacji [4]. Stanowisko realizacji (procesor):
3
obliczeń sięga dziewięciu znaczących cyfr dziesiętnych ale niewielki zakres reprezentowanych
liczb jest pewnym utrudnieniem dla programisty. Procesory sygnałowe przetwarzające liczby w
formacie stałoprzecinkowym nazywane są w żargonie stałoprzecinkowymi. Tak się składa, że
właściwie wszystkie procesory prezentowane w tym artykule to procesory stałoprzecinkowe.
Wynika to prawdopodobnie z faktu, że arytmetyka stałoprzecinkowa jest łatwiejsza do
zaimplementowania w układzie scalonym (mniej bramek) i nowe idee dotyczące procesorów
sygnałowych zawsze testowane były najpierw na procesorach stałoprzecinkowych. Drugi ze
stosowanych formatów zapisu liczb to format zmiennoprzecinkowy. Jest to krótka, 32-bitowa
forma zapisu zmiennoprzecinkowego przewidywanego przez normę IEEE-754 [26]:
31 30.....23 22.........................................................0
s c m
Liczbę zmiennoprzecinkową tworzą dwie liczby stałoprzecinkowe: mantysa i cecha. Wartość
liczby dana jest wzorem
=
1
.
416327151.021.png
¦ pobiera rozkaz z pamięci operacyjnej;
¦ dekoduje jego znaczenie;
¦ pobiera potrzebne dla realizacji instrukcji (rozkazu) dane (argumenty);
¦ wykonuje operację wskazaną przez rozkaz;
¦ zapamiętuje wyniki.
W tym momencie procesor zwalnia się dla realizacji następnej instrukcji itd. Pierwsze
mikroprocesory działały ściśle według tego schematu, ale szybko okazało się, że dla zwiększenia
prędkości przetwarzania trzeba sięgnąć po udoskonalenia tej koncepcji, które wcześniej
przetestowane zostały na dużych maszynach cyfrowych 3 .
2.1.1 Przetwarzanie potokowe
Jednym z wcześniejszych pomysłów przyspieszenia realizacji rozkazów było zorganizowanie
przetwarzania w postaci potoku instrukcji [2], [1]. Realizacja rozkazu podzielona była zawsze na
pewną liczbę kolejnych etapów. Powyżej w punktach przedstawiono zaledwie jedną propozycję
podziału procesu wykonywania rozkazu na etapy. W tym przypadku podziału dokonano na pięć
etapów, ale ani sposób podziału ani liczba etapów nie jest z góry ustalona. Istnieją procesory
które realizują instrukcje w czterech etapach tak jak np. stałoprzecinkowy procesor sygnałowy
firmy Analog Devices ADSP-2181 [31], i są takie które potrzebują dla realizacji pewnych
rozkazów nawet szesnastu etapów przetwarzania np. zmiennoprzecinkowy procesor sygnałowy
TMS320C6701 firmy Texas Instruments [9]. Etapy realizowane są przez kolejne jednostki
procesora połączone w kaskadę (potok), a wyniki przetwarzania w danym etapie są danymi
wejściowymi dla przetwarzania w etapie następnym. W takim przypadku bezczynnie czekanie
układów procesora które zakończyły już swoją pracę na całkowite zakończenie wykonywania
rozkazu jest jawnym trwonieniem czasu i zasobów. Każdy z elementów procesora po
zakończeniu pracy nad jednym rozkazem przechodzi natychmiast do przetwarzania następnego
rozkazu. Powstaje w ten sposób coś na kształt linii montażu samochodów [2]. W każdej chwili
procesor zajęty jest przetwarzaniem kilku rozkazów jednocześnie przy czym każdy rozkaz jest na
innym etapie wykonania. Efektywny czas wykonania rozkazu 4 , niezależnie od liczby etapów
potrzebnych na jego realizację, jest równy czasowi przetwarzania na jednym etapie realizacji.
Idea ta sięga lat sześćdziesiątych. Pierwsze maszyny, w których ją zaimplementowano to IBM
360/195, CDC STAR, MU5 (Uniwersytet w Manchester) [1].
2.1.2 Architektura typu Harvard
Zwiększona szybkość przetwarzania danych powoduje na ogół liczne konflikty podczas dostępu
do pamięci operacyjnej. Jeżeli maszyna korzysta ze wspólnej pamięci programu i danych to w
przypadku przetwarzania potokowego często dochodzi do próby jednoczesnego pobrania nowego
rozkazu oraz pobrania argumentu dla rozkazu, który został już częściowo przetworzony. Takie
konflikty są oczywiście w pewien sposób rozwiązywane przez układy procesora, ale za każdym
razem prowadzi to do chwilowego zatrzymania potoku rozkazów. Najlepiej gdyby konfliktów
takich nie było. Można ich w dużym stopniu uniknąć stosując dwa oddzielne układy pamięci i
dwie oddzielne magistrale łączące te pamięci z procesorem. Jeden układ pamięci przechowuje
rozkazy (pamięć programu) a drugi przechowuje dane (pamięć danych). W ten sposób powstaje
3 Według wiedzy autora ostatnim mikroprocesorem ogólnego przeznaczenia, który
działał ściśle według przedstawionego schematu był Z80 firmy Zilog.
4 Oczywiście po wypełnieniu się potoku instrukcji.
4
architektura typu Harvard. Jest to też stary pomysł bowiem od najdawniejszych czasów czas
dostępu do pamięci operacyjnej był zbyt długi w stosunku do szybkości procesora centralnego.
Architektura typu Harvard była tu jednym z pomysłów 5 powalającym na utrzymanie wysokiego
tempa przetwarzania w obecności stosunkowo wolnej pamięci.
2.1.3 Procesory macierzowe (SIMD)
Wiele algorytmów np. te dotyczące cyfrowego przetwarzania sygnałów, rozwiązywania równań
różniczkowych cząstkowych wykonuje wielokrotnie te same operacje na różnych zestawach
danych. Powstaje zatem pomysł aby wyposażyć maszynę cyfrową w wiele identycznych
jednostek, z których każda wykonuje za każdym razem ten sam rozkaz ale na innych danych.
Procesory o takiej architekturze nazywane są procesorami macierzowymi lub procesorami
wektorowymi. W terminologii angielskiej są to procesory SIMD — single instruction multiple
data. Ponieważ już w czasie II Wojny Światowej używano maszyn cyfrowych dla rozwiązywania
równań różniczkowych cząstkowych procesory macierzowe pojawiły się bardzo wcześnie.
Jednym z pierwszych przykładów była maszyna Illiac IV skonstruowana na Uniwersytecie
Illinois a zbudowana w zakładach Burroughs Corporation.
2.2 Przetwarzanie równoległe
Dalsze zwiększenie prędkości przetwarzania danych przez procesor związanie jest z możliwością
równoległego przetwarzania danych. Dokładne rozważenie problemu prowadzi do koncepcji
systemów sterowanych przepływem argumentów [4], [5]. Idea polega na tym, że rozkazy
tworzące algorytm wykonywane są natychmiast wtedy gdy dostępne są argumenty potrzebne dla
ich realizacji. Przez argumenty rozumiemy tutaj niezbędne dane oraz układy procesora które są w
stanie zrealizować wskazaną przez rozkaz operację. Prowadzi to do sytuacji w której procesor
centralny wyposażony jest w wiele jednostek zdolnych do wykonywania rozkazów równolegle.
Rozkazy są pobierane „szerokim strumieniem” i kierowane do realizacji przez poszczególne
jednostki. Koncepcja takiego procesora równoległego może być zrealizowana przynajmniej na
dwa sposoby.
2.2.1 Procesory o bardzo długim rozkazie (VLIW)
Rozkazy procesora o architekturze VLIW w sposób jawny zawierają informację, które z nich
będą przetwarzane jednocześnie. Argumentem (jawnym lub domyślnym) każdego takiego
rozkazu jest jednostka wykonawcza procesora która będzie rozkaz realizować. W jednym cyklu
pobiera się wiele rozkazów jednocześnie stąd angielska nazwa architektury VLIW - very long
instruction word. Algorytm z postaci szeregowej 6 do postaci równoległej musi być zatem
przetworzony na etapie kompilacji programu. W praktyce wymusza to korzystanie przy pisaniu
programów z kompilatora języka C/C++ lub innego języka wysokiego poziomu. Przykładem
procesorów o takiej architekturze są procesory sygnałowe z rodziny TMS320C6xx. Architekturę
typu VLIW lub jej elementy będzie posiadała także nowa rodzina procesorów ogólnego
5 Obok np. pracy pamięci z przeplotem [2].
6 Którą programiście łatwiej stworzyć i przeanalizować.
5
Zgłoś jeśli naruszono regulamin