plik


ÿþJacek Izydorczyk1 O ró|nych procesorach sygnaBowych czyli troch historii, szczypta terazniejszo[ci i niedaleka przyszBo[ 1. Procesory sygnaBowe w telekomunikacji Warto[ obrotów na [wiatowym rynku procesorów sygnaBowych osignBa 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 signie 14 miliardów USD [25]. Najciekawsze jest to, |e wzrost ten wynika w du|ej mierze z zapotrzebowania na procesory sygnaBowe 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 najwikszy segment rynku procesorów sygnaBowych. {aden cyfrowy aparat telefoniczny nie mo|e si obej[ bez procesora sygnaBowego  patrz rysunek 1. Du| ich liczb zawiera tak|e ka|da stacja bazowa. Nale|y tak|e uwzgldni zastosowania w klasycznych telefonach bezprzewodowych, aparatach telefonicznych z automatyczn sekretark wyposa|onych w pami póBprzewodnikow oraz faksach. W krajach wysoko rozwinitych dochodzi do tego wielce obiecujcy rynek zwizany z wprowadzaniem przez licznych operatorów telekomunikacyjnych systemów radiodostpu abonenckiego (ang. wireless local loop). Cyfrowa telefonia komórkowa oprócz zwykBych usBug polegajcych na przesyBaniu gBosu pozwala na transmisj danych cyfrowych w tym na dostp do Internetu. Internet to technologia, która w du|ym stopniu pobudza popyt na rynku modemów dla UkBad UkBad analogowy cyfrowy Ksi- ObsBu- ga |ka telefo- klawia- DMA tury niczna ASIC RAM & ROM ObsBu- Proto- Filtr S/P ga kóB pasmowy inter- poBcze- Demo- Koder dulacja fejsu niowy Decy- SH A/O i synchro- macja Viterbiego nizacja Podwy|- R F Rozpoz- I F szenie nawanie jako[ci mowy mowy 70 M H z 10,7 M H z 900 M H z 40 Ms/sec - 540 ks/sec 270 ks/sec Deko- Kom- presja mowy der Rysunek 1. Schemat blokowy telefonu komórkowego 1 ZakBad Telekomunikacji Instytutu Elektroniki Politechniki Zlskiej. 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 zaBatwi zakupy. Modem sBu|y w tym przypadku dla przesBania danych cyfrowych od abonenta do dostawcy usBug internetowych (oraz w kierunku przeciwnym) poprzez publiczn sie telefoniczn. PoBczenie abonenta z publiczn sieci telekomunikacyjn ma jednak zwykle charakter analogowy i dane cyfrowe musz by przed wysBaniem zabezpieczone, przetworzone i  wtBoczone w kanaB o pa[mie przepuszczania okoBo 3 kHz i przepustowo[ci nie przekraczajcej 64 kb/s. Podobnie dzieje si w przypadku cyfrowej telefonii komórkowej  dane cyfrowe (zakodowany sygnaB mowy) musz zosta przesBane drog radiow czyli kanaBem analogowym w którym warunki propagacji mog zmienia si z sekundy na sekund. W obu przypadkach procesor sygnaBowy realizuje bardzo podobne zadania: Dokonuje korekcji znieksztaBceD wprowadzanych do odbieranego sygnaBu przez kanaB transmisyjny (ang. equalization). Dokonuje elektronicznej eliminacji echa (modem analogowy, modem ISDN). Odtwarza czstotliwo[ no[n nadajnika (modem analogowy). Odtwarza czstotliwo[ sygnalizacji nadajnika. Dokonuje modulacji i demodulacji sygnaBu. Realizuje kodowanie i dekodowanie kanaBowe. Dokonuje kompresji (dekompresji) cyfrowego sygnaBu mowy. Dokonuje bezstratnej kompresji (dekompresji) danych cyfrowych (modem analogowy). Eliminuje echo akustyczne (aparaty gBo[nomówice). Chocia| zadania te podsumowano w kilku punktach to nie s to zadania trywialne. Samo omówienie ich podstaw teoretycznych zajmuje zwykle prawie tysicstronicowy podrcznik akademicki [27], [28], [29]. Wynikajce std algorytmy cyfrowego przetwarzania sygnaBów maj jednak pewn liczb cech wspólnych, które przesdzaj o takiej a nie innej budowie (architekturze) procesorów sygnaBowych. SygnaBy cyfrowe reprezentowane s zwykle i przetwarzane ze stosunkowo niewielk dokBadno[ci. Typowy kodek telefoniczny dokonuje próbkowania sygnaBu analogowego z czstotliwo[ci 8 kHz, a nastpnie warto[ci próbek koduje w formacie A-law2. Jest to nic innego jak bardzo krótki, jednobajtowy zmiennoprzecinkowy format zapisu liczb [30] zapewniajcy zachowanie odstpu sygnaB-szum kwantowania na poziomie 38-44 dB. Odpowiada to zachowaniu dokBadno[ci mniej wicej dwóch znaczcych cyfr dziesitnych. W przypadku przetwarzania sygnaBu akustycznego na poziomie jako[ci hi-fi próbki sygnaBu pobierane s z czstotliwo[ci 44 kHz i kodowane w 16-bitowym formacie staBoprzecinkowym co odpowiada mniej wicej zachowaniu dokBadno[ci piciu cyfr dziesitnych. Dalsze przetwarzanie liczb odbywa si zwykle z dokBadno[ci nie przekraczajc 32 bitów. Stosowane s w zasadzie dwa formaty. Format staBoprzecinkowy 1.31 (lub krótszy 1.15): 31 30.................................................................................0 s f Najstarszy bit sBowa ma wag -1, nastpny 2-1, nastpny 2-2 a| do najmBodszego bitu o wadze s 2-31. Reprezentowana w ten sposób liczba wyra|a si wzorem x = (-1) Å"(0. f ) i le|y w lewostronnie domknitym przedziale [-1,1). DokBadno[ przeprowadzanych w tym formacie 2 W USA jest to format µ-law. 2 obliczeD siga dziewiciu znaczcych cyfr dziesitnych ale niewielki zakres reprezentowanych liczb jest pewnym utrudnieniem dla programisty. Procesory sygnaBowe przetwarzajce liczby w formacie staBoprzecinkowym nazywane s w |argonie staBoprzecinkowymi. Tak si skBada, |e wBa[ciwie wszystkie procesory prezentowane w tym artykule to procesory staBoprzecinkowe. Wynika to prawdopodobnie z faktu, |e arytmetyka staBoprzecinkowa jest Batwiejsza do zaimplementowania w ukBadzie scalonym (mniej bramek) i nowe idee dotyczce procesorów sygnaBowych zawsze testowane byBy najpierw na procesorach staBoprzecinkowych. 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 staBoprzecinkowe: mantysa i cecha. Warto[ s liczby dana jest wzorem x = (-1) Å"(1.m)Å" 2(c-127) . W ten sposób mog by reprezentowane liczby z zakresu od 10-38 (mniej ni| masa elektronu wyra|ona w kilogramach) do 1038 (wicej ni| odlegBo[ od najdalszych obserwowanych galaktyk wyra|ona w metrach) z zachowaniem dokBadno[ci 7 dziesitnych cyfr znaczcych. Jest to dla cyfrowego przetwarzania sygnaBów wystarczajcy zakres liczb oraz dokBadno[ obliczeD. W zwizku z tym mamy istotn ró|nic midzy zmiennoprzecinkowym procesorem sygnaBowym a mikroprocesorem ogólnego przeznaczenia np. Pentium. Mianowicie ten ostatni liczy  za dokBadnie . Wykonywanie obliczeD w 80-bitowym formacie zmiennoprzecinkowym wydaje si by w przypadku cyfrowego przetwarzania sygnaBów zbyteczne. Druga cecha algorytmów cyfrowego przetwarzania sygnaBów to konieczno[ wykonywania ich w czasie rzeczywistym. Algorytmy te skBadaj 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 rzdu 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 nadrzdne. W przypadku stacji bazowej czy modemu komputerowego obni|enie pobieranej mocy to ni|sze koszty eksploatacji a przede wszystkim wiksza niezawodno[ urzdzenia. Wydaje si, |e o ile zmniejszanie poboru energii na ka|d wykonan instrukcj to wyBczna domena technologii elektronowej o tyle zwikszanie wydajno[ci procesorów sygnaBowych to problem ich architektury (budowy wewntrznej). 2. W pogoni za wydajno[ci Architektura procesorów sygnaBowych w du|ej mierze podporzdkowania jest wymogowi bardzo szybkiego przetwarzania liczb. Podstawowym problemem jest konstrukcja i scalenie szybkiego ukBadu mno|cego, który dostarcza wyniku mno|enia w czasie jednego, dwu lub najwy|ej trzech taktów zegarowych [3]. Dopiero kiedy na pocztku lat osiemdziesitych sztuka ta si udaBa mo|na mówi, |e pojawiBy si procesory sygnaBowe. Nastpnym problemem byBo takie zorganizowanie przetwarzania aby jak najlepiej wykorzysta zasoby sprztowe procesora, aby |adna jego cz[ nie pozostawaBa bezczynna podczas realizacji programu. 2.1 Architektura von Neumana Na pocztku swej historii komputery pomy[lne byBy jako systemy sterowane przepBywem operacji [4]. Stanowisko realizacji (procesor): 3 pobiera rozkaz z pamici operacyjnej; dekoduje jego znaczenie; pobiera potrzebne dla realizacji instrukcji (rozkazu) dane (argumenty); wykonuje operacj wskazan przez rozkaz; zapamituje wyniki. W tym momencie procesor zwalnia si dla realizacji nastpnej instrukcji itd. Pierwsze mikroprocesory dziaBaBy [ci[le wedBug tego schematu, ale szybko okazaBo si, |e dla zwikszenia prdko[ci przetwarzania trzeba sign po udoskonalenia tej koncepcji, które wcze[niej przetestowane zostaBy na du|ych maszynach cyfrowych3. 2.1.1 Przetwarzanie potokowe Jednym z wcze[niejszych pomysBów przyspieszenia realizacji rozkazów byBo zorganizowanie przetwarzania w postaci potoku instrukcji [2], [1]. Realizacja rozkazu podzielona byBa zawsze na pewn liczb kolejnych etapów. Powy|ej w punktach przedstawiono zaledwie jedn propozycj podziaBu procesu wykonywania rozkazu na etapy. W tym przypadku podziaBu dokonano na pi etapów, ale ani sposób podziaBu ani liczba etapów nie jest z góry ustalona. Istniej procesory które realizuj instrukcje w czterech etapach tak jak np. staBoprzecinkowy procesor sygnaBowy 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 sygnaBowy TMS320C6701 firmy Texas Instruments [9]. Etapy realizowane s przez kolejne jednostki procesora poBczone w kaskad (potok), a wyniki przetwarzania w danym etapie s danymi wej[ciowymi dla przetwarzania w etapie nastpnym. W takim przypadku bezczynnie czekanie ukBadów procesora które zakoDczyBy ju| swoj prac na caBkowite zakoDczenie wykonywania rozkazu jest jawnym trwonieniem czasu i zasobów. Ka|dy z elementów procesora po zakoDczeniu pracy nad jednym rozkazem przechodzi natychmiast do przetwarzania nastpnego rozkazu. Powstaje w ten sposób co[ na ksztaBt linii monta|u samochodów [2]. W ka|dej chwili procesor zajty jest przetwarzaniem kilku rozkazów jednocze[nie przy czym ka|dy rozkaz jest na innym etapie wykonania. Efektywny czas wykonania rozkazu4, niezale|nie od liczby etapów potrzebnych na jego realizacj, jest równy czasowi przetwarzania na jednym etapie realizacji. Idea ta siga lat sze[dziesitych. Pierwsze maszyny, w których j zaimplementowano to IBM 360/195, CDC STAR, MU5 (Uniwersytet w Manchester) [1]. 2.1.2 Architektura typu Harvard Zwikszona szybko[ przetwarzania danych powoduje na ogóB liczne konflikty podczas dostpu do pamici operacyjnej. Je|eli maszyna korzysta ze wspólnej pamici programu i danych to w przypadku przetwarzania potokowego czsto dochodzi do próby jednoczesnego pobrania nowego rozkazu oraz pobrania argumentu dla rozkazu, który zostaB ju| cz[ciowo przetworzony. Takie konflikty s oczywi[cie w pewien sposób rozwizywane przez ukBady procesora, ale za ka|dym razem prowadzi to do chwilowego zatrzymania potoku rozkazów. Najlepiej gdyby konfliktów takich nie byBo. Mo|na ich w du|ym stopniu unikn stosujc dwa oddzielne ukBady pamici i dwie oddzielne magistrale Bczce te pamici z procesorem. Jeden ukBad pamici przechowuje rozkazy (pami programu) a drugi przechowuje dane (pami danych). W ten sposób powstaje 3 WedBug wiedzy autora ostatnim mikroprocesorem ogólnego przeznaczenia, który dziaBaB [ci[le wedBug przedstawionego schematu byB Z80 firmy Zilog. 4 Oczywi[cie po wypeBnieniu si potoku instrukcji. 4 architektura typu Harvard. Jest to te| stary pomysB bowiem od najdawniejszych czasów czas dostpu do pamici operacyjnej byB zbyt dBugi w stosunku do szybko[ci procesora centralnego. Architektura typu Harvard byBa tu jednym z pomysBów5 powalajcym na utrzymanie wysokiego tempa przetwarzania w obecno[ci stosunkowo wolnej pamici. 2.1.3 Procesory macierzowe (SIMD) Wiele algorytmów np. te dotyczce cyfrowego przetwarzania sygnaBów, rozwizywania równaD ró|niczkowych czstkowych wykonuje wielokrotnie te same operacje na ró|nych zestawach danych. Powstaje zatem pomysB 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 Zwiatowej u|ywano maszyn cyfrowych dla rozwizywania równaD ró|niczkowych czstkowych procesory macierzowe pojawiBy si bardzo wcze[nie. Jednym z pierwszych przykBadów byBa maszyna Illiac IV skonstruowana na Uniwersytecie Illinois a zbudowana w zakBadach Burroughs Corporation. 2.2 Przetwarzanie równolegBe Dalsze zwikszenie prdko[ci przetwarzania danych przez procesor zwizanie jest z mo|liwo[ci równolegBego przetwarzania danych. DokBadne rozwa|enie problemu prowadzi do koncepcji systemów sterowanych przepBywem argumentów [4], [5]. Idea polega na tym, |e rozkazy tworzce algorytm wykonywane s natychmiast wtedy gdy dostpne s argumenty potrzebne dla ich realizacji. Przez argumenty rozumiemy tutaj niezbdne dane oraz ukBady 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ównolegBego mo|e by zrealizowana przynajmniej na dwa sposoby. 2.2.1 Procesory o bardzo dBugim rozkazie (VLIW) Rozkazy procesora o architekturze VLIW w sposób jawny zawieraj informacj, które z nich bd przetwarzane jednocze[nie. Argumentem (jawnym lub domy[lnym) ka|dego takiego rozkazu jest jednostka wykonawcza procesora która bdzie rozkaz realizowa. W jednym cyklu pobiera si wiele rozkazów jednocze[nie std angielska nazwa architektury VLIW - very long instruction word. Algorytm z postaci szeregowej6 do postaci równolegBej musi by zatem przetworzony na etapie kompilacji programu. W praktyce wymusza to korzystanie przy pisaniu programów z kompilatora jzyka C/C++ lub innego jzyka wysokiego poziomu. PrzykBadem procesorów o takiej architekturze s procesory sygnaBowe z rodziny TMS320C6xx. Architektur typu VLIW lub jej elementy bdzie posiadaBa tak|e nowa rodzina procesorów ogólnego 5 Obok np. pracy pamici z przeplotem [2]. 6 Któr programi[cie Batwiej stworzy i przeanalizowa. 5 przeznaczenia firmy Intel7. Jest rzecz ciekaw, |e podobn koncepcj zrealizowano ju| dawno w maszynach typu CDC6600 i Cyber 74. W tym przypadku rozkazy pobierane byBy kolejno, ale efekt równolegBego przetwarzania uzyskiwano dziki temu, |e czas pobrania i dekodowania rozkazu byB pomijalnie maBy w stosunku do czasu realizacji rozkazu przez jedn z wielu jednostek wykonawczych [1]. 2.2.2 Procesory superskalarne W przypadku procesorów superskalarnych programista nie jest do koDca [wiadom istnienia wielu jednostek wykonawczych. Program pisany jest tak jak dla maszyny która przetwarza rozkazy szeregowo, ewentualnie z wykorzystaniem przetwarzania potokowego. Procesor rozdziela w locie strumieD rozkazów do poszczególnych jednostek wykonawczych dbajc o to aby nie dochodziBo do konfliktu argumentów i aby wynik dziaBania caBo[ci ukBadu byB dokBadnie taki sam jak w przypadku przetwarzania rozkazów szeregowo. Architektur superskalarn posiadaj wszystkie wspóBczesne procesory ogólnego przeznaczenia tzn. Pentium, PowerPC, Alpha itd. DBugi czas powstrzymywano si przed stosowaniem architektury superskalarnej w przypadku procesorów sygnaBowych. W roku 1998 pojawiB si jednak pierwszy superskalarny, staBoprzecinkowy procesor sygnaBowy ZSP16401 [32]. W dalszej cz[ci artykuBu przedstawiono architektur wybranych procesorów sygnaBowych. UkBady wybrano tak aby da Czytelnikowi pewne pojcie o historii, terazniejszo[ci a by mo|e nawet przyszBo[ci procesorów sygnaBowych. 3. {ywa skamielina  TMS320C5x Procesory TMS320C5x  patrz tablica 1  reprezentuj w miar wspóBczesn gaBz du|ej rodziny staBoprzecinkowych procesorów sygnaBowych firmy Texas Instruments. Rodzina ta jest z pewno[ci najstarsz lini procesorów sygnaBowych, która nadal jest oferowana na rynku. Najstarszym reprezentantem tej rodziny jest procesor TMS32010 wprowadzony na rynek przez firm Texas Instruments w roku 1982 [6]. Jeszcze w tym samy roku magazyn  Electronic Products przyznaB ukBadowi TMS32010 tytuB  Product of the Year [8]. ByB to pocztek olbrzymiego sukcesu rynkowego firmy Texas Instruments. Sukces ten spotgowaBo wykorzystanie procesora TMS320C178 w jednej z pierwszych9 zabawek rozpoznajcych ludzki gBos. ByBa to sBynna lalka  Julie Doll . Procesor TMS32010 taktowany zegarem 20 MHz pozwalaB na wykonywanie do 5 milionów instrukcji w cigu sekundy (5 MIPS). Wkrótce pojawiBy si nastpne ukBady wykonane w bardziej energooszczdnej technologii CMOS. W latach 1984-1995 firma Texas Instruments wprowadziBa na rynek kolejne wersje staBoprzecinkowych procesorów sygnaBowych o udoskonalonej architekturze. ByBy to TMS320C2x (1984) nastpnie TMS320C5x (1989), TMS320C2xx (1995) i TMS320C54x (1995). Wszystkie procesory (z wyjtkiem 54x) zachowuj kompatybilno[  w gór na poziomie kodu zródBowego. Oznacza to, |e program napisany w asemblerze dla procesora TMS320C10 mo|e by asemblowany bez zmian dla wykonywania go na procesorze 7 Firma Intel nazwaBa architektur nowych procesorów angielskim akronimem EPIC od sBów Explicitly Parallel Instruction Computing [12]. 8 Jedna z mutacji procesora TMS32010. Litera C pojawiajca si w nazwie procesora wskazuje, |e zostaB wykonany w technologii CMOS, znacznie bardzie energooszczdnej ni| technologia bipolarna wykorzystywana dla produkcji oryginalnego ukBadu TMS32010. 9 ...a z pewno[ci najbardziej agresywnie reklamowanej. 6 TMS320C50. Stwierdzenie to pozostaje prawdziwe za ka|dym razem gdy numer procesora dla którego program byB pierwotnie pisany jest mniejszy od numeru procesora, który bdzie program wykonywaB [7]. Oznacza to, |e trzon architektury tych procesorów pozostaB nie zmieniony od pocztku lat osiemdziesitych. Uwzgldniajc czas potrzebny wówczas na opracowanie tak skomplikowanego ukBadu scalonego nale|y przyj, |e architektura rodziny swymi korzeniami siga poBowy lat siedemdziesitych. Mo|na zatem powiedzie, |e procesory te stanowi prawdziw |yw skamielin. PrzetrwaBy do dzisiaj niewiele zmieniajc si od czasów gdy gBównym problemem technologicznym byBo umieszczenie w strukturze ukBadu scalonego tablicowego ukBadu mno|cego 16-bitowe, staBoprzecinkowe liczby w cigu jednego cyklu zegarowego. O tym, |e byB to powa|ny problem przekonujemy si sprawdzajc liczb cykli zegarowych niezbdnych dla przemno|enia dwóch 16-bitowych, staBoprzecinkowych liczb przez procesor Intel 80286. UkBad ten wprowadzono na rynek w tym samym roku co procesor TMS32010. Intel 80286 potrzebowaB na wykonanie instrukcji IMUL10 24 cykle zegarowe co trwaBo 4 µs przy taktowaniu procesora zegarem 6 MHz podczas gdy TMS32010 zadowalaB si czterema cyklami co trwaBo 200 ns dla zegara 20 MHz. Rzeczywi[cie architektura ukBadu TMS32010 zorganizowana jest wokóB ukBadu mno|cego i jednostki arytmetyczno-logicznej z akumulatorem, które zajmuj du| cz[ chipa. 10 Mno|enie dwóch 16-bitowych liczb ze znakiem. 7 Tablica 1. Rodzina procesorów TMS320C5x Wielko[ pamici wbudowanej Port UkBad ID Zasilanie Okres zegara Obudowa TMS320 [V] [ns] DARAMA SARAMB ROM Szeregowy RównolegBy 'C50 PQ 1056 9K 2K 2 64K 5 50/35/25 132 pin BQFP 'LC50 PQ 1056 9K 2K 2 64K 3.3 50/40/25 132 pin BQFP 'C51 PQ 1056 1K 8K 2 64K 5 50/35/25/20 132 pin BQFP 'C51 PZ 1056 1K 8K 2 64K 5 50/35/25/20 100 pin TQFP 'LC51 PQ 1056 1K 8K 2 64K 3.3 50/40/25 132 pin BQFP 'LC51 PZ 1056 1K 8K 2 64K 3.3 50/40/25 100 pin TQFP 'C52 PJ 1056 % 4K 1 64K 5 50/35/25/20 100 pin QFP 'C52 PZ 1056 % 4K 1 64K 5 50/35/25/20 100 pin TQFP 'LC52 PJ 1056 % 4K 1 64K 3.3 50/40/25 100 pin QFP 'LC52 PZ 1056 % 4K 1 64K 3.3 50/40/25 100 pin TQFP 'C53 PQ 1056 3K 16K 2 64K 5 50/35/25 132 pin BQFP 'C53S PZ 1056 3K 16K 2 64K 5 50/35/25 100 pin TQFP 'LC53 PQ 1056 3K 16K 2 64K 3.3 50/40/25 132 pin BQFP 'LC53S PZ 1056 3K 16K 2 64K 3.3 50/40/25 100 pin TQFP 'LC56 PZ 1056 6K 32K 2 64K 3.3 50/35/25 100 pin TQFP 'C57S PGE 1056 6K 2K 2 64KD 5 50/35/25 144 pin TQFP 'LC57 PBK 1056 6K 32K 2 64KD 3.3 50/35/25 128 pin TQFP 'LC57S PGE 1056 6K 2K 2 64KD 3.3 50/35 144 pin TQFP A DARAM  pami o dwóch portach; B SARAM  pami o jednym porcie 8 3.1 UkBad mno|cy i jednostka arytmetyczna z akumulatorem Rysunek 2 pokazuje uproszczony schemat blokowy jednostki obliczeniowej procesora TMS320C50. Centralnym elementem jest tutaj ukBad mno|cy pozwalajcy na wykonanie mno|enia dwóch 16-bitowych liczb. Jeden z argumentów operacji mno|enia znajduje si zawsze w rejestrze TREG0 natomiast drugi argument mo|e zosta pobrany z przestrzeni adresowej danych albo z przestrzeni adresowej programu. Oba argumenty interpretowane s jako liczby caBkowite w zapisie dopeBnienie do 2. Wynik mno|enia umieszczany jest w 32-bitowym rejestrze PREG. Std poprzez ukBad przesuwnika wynik mo|e zosta przekazany do jednostki arytmetyczno-logicznej (ALU). Przesuwnik umieszczony midzy rejestrem PREG i ALU pozwala na przesunicie wyniku mno|enia podczas przesyBania go do ALU. Zachodz przy tym cztery nastpujce mo|liwo[ci [8]: wynik nie jest przesuwany; wynik jest przesuwany o jeden bit w lewo co pozwala mno|y liczby staBoprzecinkowe w formacie uBamkowym 1.15 (jeden bit znaku i 15 bitów, których waga zmniejsza si od 2-1 do 2-15); wynik jest przesuwany o cztery bity w lewo co pozwala na u|ywanie w instrukcji mno|enia krótkiego 13-bitowego argumentu natychmiastowego; wynik jest przesuwany o sze[ bitów w prawo co pozwala na uniknicie nadmiaru podczas akumulacji nawet 128 wyników mno|enia. Sposób dziaBania przesuwnika okre[lony jest przez dwa bity rejestru sterujcego prac procesora ST1. Wynik mno|enia jest najcz[ciej dodawany do zawarto[ci 32-bitowego akumulatora. Operacj t wykonuje jednostka arytmetyczno-logiczna. ALU jest ukBadem 32-bitowym i wykonuje nie tylko dodawanie i odejmowanie ale tak|e peBny zestaw bitowych operacji logicznych (AND, OR i XOR) oraz operacje porównywania liczb oraz testowania wybranych bitów dowolnego sBowa pamici danych (testowanie stanu flagi). Domy[lnym argumentem ka|dej operacji realizowanej przez ALU jest akumulator ACC. Drugi argument11 pobierany jest z rejestru PREG12 albo z pamici danych. Argument pochodzcy z pamici danych mo|e by co najwy|ej liczb 16-bitow. Std przed dostarczeniem do ALU argument ten mo|e by przesunity nawet o 16 bitów tak, aby mógB si znalez w dowolnym miejscu 32-bitowego portu wej[ciowego ALU. Jednostka arytmetyczno-logiczna podczas wykonywania dodawania (odejmowania) zapamituje w rejestrze sterujcym ST1 bit przeniesienia z najstarszej pozycji akumulatora C oraz sygnalizuje pojawienie si nadmiaru OV. Wynik porównywania liczb oraz testowania flagi zapamitywany jest w postaci flagi TC. Stan wymienionych flag oraz liczba zapamitana w akumulatorze s testowane przez liczne warunkowe instrukcje skoku. W razie pojawienia si przepeBnienia podczas dodawania (odejmowania) jednostka arytmetyczno-logiczna mo|e umie[ci w akumulatorze najwiksz (najmniejsz) liczb realizujc w ten sposób arytmetyk z nasyceniem. Akumulator ACC jest rejestrem 32-bitowym podzielonym na dwie 16-bitowe cz[ci: doln ACCL i górn ACCH. UzupeBnieniem akumulatora jest drugi akumulator (akumulator B) o nazwie ACCB. Stanowi on z jednej strony rozszerzenie akumulatora do 64 bitów, a z drugiej strony miejsce gdzie mog by chwilowo przechowywane i przetwarzane wyniki dla których nie ma miejsca w akumulatorze. Podczas przesyBania do pamici zawarto[ci poBówki akumulatora mo|na dokona przesunicia  w locie nawet o siedem bitów w lewo. W przypadku górnej 11 Dla operacji dwuargumentowych. 12 Poprzez przesuwnik. 9 16 16 16 16 16 TREG0 (16) MUX UkBad 32 mno|cy Przesuwnik (0-16) PREG (32) 32 32 Przesuwnik (-6,0,1,4) 32 32 MUX 32 ALU (32) 32 32 ACCB (32) ACCH (16) ACCL (16) 32 Przesuwnik (0-7) 16 Rysunek 2.Schemat blokowy jednostki centralnej procesora TMS320C50 poBówki akumulatora najstarsze bity s tracone natomiast najmBodsze pobierane s z dolnej poBówki akumulatora. W przypadku gdy zapamitywana jest dolna poBówka akumulatora najstarsze bity s tracone a najmBodsze bity uzupeBniane s zerami. Operacje te nie maj najmniejszego wpBywu na zawarto[ akumulatora. 10 3.2 Pami Program oraz dane umieszczone s w osobnych przestrzeniach adresowych. Ka|da z nich obejmuje 64K sBowa. SBowo maszynowe zawiera szesna[cie bitów. Wewntrz ukBadu scalonego funkcjonuj dwie osobne magistrale: magistrala danych oraz magistrala programu. Na zewntrz ukBadu obie magistrale danych (danych i programu) oraz obie magistrale adresowe (adres danych i adres programu) s multipleksowane. Na chipie razem z procesorem umieszczona jest zawsze pewna ilo[ pamici czy to (EP)ROM czy RAM, któr mo|na umie[ci w dowolnie wybranej przestrzeni adresowej  patrz tablica 1. Je|eli system uzupeBnimy o zewntrzn pami RAM mo|emy zachowa zalety architektury typu Harvard mimo ograniczonej liczby wyprowadzeD zewntrznych ukBadu scalonego realizujcego ukBad. Oznacza to, |e mamy mo|liwo[ jednoczesnego sigania do pamici programu jak i do pamici danych. Pierwsze 128 komórek pamici danych zarezerwowane jest dla realizacji rejestrów procesora. W przypadku modeli z rodziny TMS320C5x praktycznie wszystkie rejestry (jest ich razem 28) z wyjtkiem akumulatorów ACC i ACCB s zrealizowane w postaci komórek pamici o adresie mniejszym od 128. Tego typu oszczdno[ciowe pomysBy funkcjonuj w [wiecie komputerów ju| od bardzo dawna. Jednym z wcze[niejszych i bardziej znanych przykBadów byBy najtaDsze konfiguracje maszyn IBM 360. Programista dysponuje kilkoma trybami adresowania pamici. S to: Adresowanie natychmiastowe z krótkim operandem. O[mio bitowy argument instrukcji stanowi cz[ samej instrukcji. PrzykBadem jest instrukcja dodawania ADD #0FFh (dodaj do akumulatora liczb 255) kodowana w postaci jednego sBowa #B8FFh. Argument instrukcji zostaB podkre[lony. Adresowanie natychmiastowe z dBugim operandem. Szesnasto bitowy argument instrukcji stanowi drugie sBowo instrukcji. PrzykBadem jest instrukcja dodawania ADD #01234h (dodaj do akumulatora liczb 4660) kodowana w postaci dwóch sBów #BF90h #1234h. Argument instrukcji zostaB podkre[lony. Adresowanie bezpo[rednie. Adres szesnasto bitowego argumentu instrukcji powstaje w wyniku zBo|enia dwóch cz[ci. Pierwsza  bardziej znaczca  cz[ adresu pobierana jest z rejestru wskaznika strony DP (ang. data pointer). Dziewicio bitowy rejestr DP jest cz[ci rejestru sterujcego prac procesora ST0. Mniej znaczca cz[ adresu argumentu to siedem najmniej znaczcych bitów sBowa instrukcji. W ten sposób bez zmiany zawarto[ci rejestru DP mo|na zaadresowa zaledwie 128 komórek pamici. Sposób tworzenia adresu w trybie adresowania bezpo[redniego ilustruje rysunek 3a. Adresowanie po[rednie przez rejestr. yródBem adresu argumentu jest jeden z o[miu 16-bitowych rejestrów adresowych AR0-AR713. Do adresowania u|ywany jest rejestr wskazywany przez 3-bitowy wskaznik ARP (ang. address register pointer) bdcy cz[ci rejestru sterujcego prac procesora ST0. Ilustruje to rysunek 3b. Ka|da instrukcja wykorzystujca adresowanie po[rednie pozwala na: Ò! dokonanie inkrementacji (dekrementacji) u|ywanego rejestru adresowego; inkrementacja (dekrementacja) odbywa si zawsze po pobraniu argumentu; zawarto[ rejestru adresowego mo|e zosta zwikszona o 1 (inkrementacja) albo o warto[ zapisan w rejestrze indeksowym INDX; Ò! wskazanie innego rejestru adresowego (zmiana warto[ci wskaznika ARP). 13 Procesory z rodziny TMS320C1x zawieraj tylko dwa takie rejestry. 11 A) Mechanizm adresowania bezpo[redniego 9 DP 9 7 7 najmniej znaczcych instrukcji z rejestru instrukcji (IR) 16 Adres argumentu B) Mechanizm adresowania po[redniego przez rejestr 3 AR0 AR0 AR1 AR2 AR3 AR4 AR5 AR6 16 + AR7 1 - INDX MUX Adresowa jednostka arytmetyczna Adres argumentu Rysunek 3.Tryby adresowania dostpne w procesorze TMS320C50 12 Mechanizm adresowania po[redniego pozwala na zorganizowanie w pamici buforów cyklicznych oraz adresowania z odwróceniem kolejno[ci bitów, bardzo pomocnego podczas kodowania algorytmu szybkiej transformacji Fouriera FFT. W procesorze TMS320C5x zaimplementowano ponadto inne mechanizmy adresowania. Nie s one jednak dostpne dla ka|dej instrukcji pobierajcej argument z pamici  korzystaj z nich tylko wybrane instrukcje (ang. dedicated register addressing mode). 3.3 Sterowanie procesorem Instrukcje programu przetwarzane s potokowo w czterech nastpujcych etapach: Pobranie rozkazu z pamici programu. Adres instrukcji do pobrania przechowywany jest przez licznik rozkazów PC. Po pobraniu ka|dej instrukcji zawarto[ licznika rozkazów zwikszana jest o jeden. Dekodowanie instrukcji programu. Na tym etapie dokonuje si inkrementacji (dekrementacji) rejestru adresowego w przypadku adresowania po[redniego przez rejestr. Pobranie argumentu instrukcji z pamici danych. Wykonanie instrukcji. Na tym etapie dokonuje si zapisania wyniku dziaBania instrukcji w pamici. Ka|dy etap przetwarzania trwa w zasadzie przez jeden okres zegara taktujcego procesor. Je|eli pobierane instrukcje s instrukcjami zakodowanymi w postaci pojedynczego sBowa (znakomita wikszo[ instrukcji) oraz je|eli s to instrukcje, dla których etap wykonania (czwarty) trwa jeden okres zegara oraz je[li nie ma konfliktów podczas dostpu do pamici14 to w ka|dej chwili procesor przetwarza jednocze[nie do czterech instrukcji, które s na ró|nym etapie realizacji. Co jeden okres zegara koDczy si realizacja jednej instrukcji. Ten niezwykle wydajny sposób przetwarzania zakBócany bywa przez instrukcj skoku, instrukcj wywoBania podprogramu lub przerwanie programowe. Instrukcja skoku (skoku warunkowego) jest instrukcj zakodowan w postaci dwóch sBów15. Po zdekodowaniu instrukcji skoku zaprzestaje si dekodowania i pobierania kolejnych instrukcji16 a| do momentu gdy instrukcja skoku dochodzi do etapu wykonania17. Wtedy wBa[nie do rejestru PC Badowany jest argument instrukcji skoku i rozpoczyna si ponowne wypeBnianie potoku instrukcji. Std efektywny czas wykonania instrukcji skoku to cztery cykle zegarowe. W przypadku instrukcji skoku wykonywanej warunkowo je|eli na etapie wykonywania oka|e si, |e instrukcja jest pomijana uruchamiany jest dekoder pobranej ju| instrukcji. W tym przypadku efektywny czas wykonania instrukcji skoku jest krótszy i wynosi dwa cykle zegarowe. Aby zminimalizowa wpByw instrukcji skoku na efektywno[ przetwarzania dostpne s instrukcje skoku (skoku 14 Np. w przypadku procesora TMS320C50 9K sBów pamici RAM dostpnych na chipie mo|na skonfigurowa tak, aby byBa dostpna jednocze[nie w przestrzeni adresowej danych i programu. Pami ta posiada jednak tylko jeden port wej[cia-wyj[cia. W przypadku gdy program i przetwarzane dane umieszczone s w tej wBa[nie pamici dochodzi do konfliktu pomidzy jednostk procesora pobierajc kolejn instrukj, a jednostk pobieraj argument innej instrukcji. 15 Drugie sBowo to adres w pamici programu do którego zostanie przeniesione sterowanie. 16 W tym momencie pobrana jest ju| instrukcja nastpujca po instrukcji skoku. 17 Dopiero wtedy ustalone s np. warunki sprawrawdzane przez skoki warunkowe. 13 warunkowego) z opóznieniem. W przypadku takiej instrukcji opisany mechanizm wstrzymywania potoku instrukcji nie jest uruchamiany. W efekcie oprócz instrukcji skoku realizowane s jeszcze dwie instrukcje18 nastpujce po instrukcji skoku z opóznieniem. Podobny do opisanego jest mechanizm wstrzymywania potoku instrukcji podczas wykonywania instrukcji (warunkowego) wywoBania podprogramu19. Jedyna ró|nica polega na tym, |e kiedy dochodzi do przekazania sterowania do podprogramu na stosie sprztowym umieszczany jest automatycznie adres instrukcji nastpujcej po instrukcji skoku. Wspomniany stos sprztowy mo|e przechowywa do o[miu adresów powrotu z podprogramu. Instrukcja powrotu z podprogramu powoduje pobranie adresu ze stosu sprztowego i umieszczenie go w liczniku rozkazów. Procesory TMS320C5x posiadaj wbudowany mechanizm pozwalajcy programowo rozszerzy stos sprztowy w obszarze pamici danych. Dla zminimalizowania wpBywu wykonywania instrukcji wywoBania podprogramu i powrotu z podprogramu na szybko[ przetwarzania danych dostpne s wersje tych instrukcji wykonywane z opóznieniem. W przypadku wielu instrukcji istnieje mo|liwo[ wielokrotnego ich powtarzania. Wystarczy tylko w 16-bitowym rejestrze RPTC zapisa liczb N wiksz od zera20, a nastpna instrukcja zostanie po powtórzona N+1 razy. Dziki tej wBasno[ci oraz przetwarzaniu potokowemu wiele instrukcji, których wykonanie wymaga wicej ni| jednego cyklu zegarowego w wyniku wielokrotnego powtarzania staje si efektywnie instrukcjami wykonywanymi w jednym cyklu (patrz paragraf 3.6). Procesory z grupy TMS320C5x maj tak|e zaimplementowany mechanizm powtarzania bloku instrukcji bez straty dodatkowych cykli zegarowych na organizacj ptli. Procesor mo|e zosta programowo wprowadzony w stan o obni|onym poborze energii. Instrukcja IDLE powoduje zatrzymanie pobierania i wykonywania instrukcji. Porty szeregowe pozostaj aktywne i kontynuuj prac. Instrukcja IDLE2 zatrzymuje tak|e prac portów szeregowych dziki czemu nastpuje dalszy spadek poboru energii. Z tego stanu procesor mo|e zosta wyprowadzony jedynie poprzez przerwanie sprztowe. 3.4 Przerwania Dla zrozumienia mechanizmu obsBugi przerwaD sprztowych przez procesory z grupy TMS320C5x warto najpierw przeanalizowa dziaBanie instrukcji przerwania programowego. DziaBa ona w sposób nieco podobny do wywoBania podprogramu. Zdekodowanie tej instrukcji powoduje wstrzymanie pobierania kolejnych instrukcji i uniewa|nienie instrukcji ju| pobranej. Na stosie sprztowym umieszcza si adres nastpnej instrukcji po instrukcji przerwania programowego. Na etapie wykonania sterowanie przekazywane jest do tej pozycji tablicy wektorów przerwaD, któr wskazuje argument instrukcji przerwania programowego. Pocztek tablicy wektorów przerwaD mo|e zosta umieszczony gdziekolwiek w przestrzeni adresowej programu pod warunkiem, |e zgodzimy si aby jedena[cie najmBodszych bitów jego adresu byBo równych zeru. Tablica zawiera 32 elementy, z których ka|dy to dwa sBowa pamici programu. Owe dwa sBowa maj tworzy procedur obsBugi przerwania. Ze wzgldu na szczupBo[ miejsca mie[ci si tam zwykle zaledwie skok do wBa[ciwej procedury obsBugi przerwania. W czasie wykonania instrukcji przerwania nastpuje zablokowanie dalszych przerwaD maskowanych a tak|e wymiana kontekstu procesora. To ostatnie oznacza, |e zawarto[ akumulatora ACC, 18 Dwie instrukcje o dBugo[ci jednego sBowa lub jedna instrukcja o dBugo[ci dwóch sBów. 19 Nazywanego tak|e skokiem ze [ladem. 20 Do tego celu sBu|y specjalna instrukcja RPT. 14 rejestru zawierajcego wynik mno|enia PREG, rejestru tymczasowego TREG0, rejestrów sterujcych prac procesora ST0 i ST1 oraz innych istotnych dla wykonywanego programu rejestrów umieszczana jest w rejestrach-duplikatach (ang. shadow registers). Instrukcja powrotu z procedury obsBugi przerwania przywraca przerwany kontekst, pobiera ze stosu sprztowego adres instrukcji wystpujcej po instrukcji przerwania programowego i odblokowuje system przerwaD. Przerwania sprztowe sygnalizowane mog by przez urzdzenia zewntrzne za po[rednictwem czterech wej[ przerwaD maskowanych INT1-INT4 oraz wej[cia przerwania niemaskowanego NMI. yródBem przerwania sprztowego mo|e by tak|e urzdzenie wewntrzne np. port szeregowy. Od chwili zgBoszenia przerwania do chwili kiedy procesor podejmuje pierwsze dziaBania upBywaj trzy okresy zegara taktujcego21. Wtedy to procesor zaznacza w rejestrze przerwaD IFR zródBo przerwania, a w nastpnym cyklu zegarowym pobran wBa[nie instrukcj zamienia na instrukcj przerwania programowego. Na stosie sprztowym umieszcza si adres usunitej instrukcji. Argumentem wstawionej instrukcji przerwania programowego jest numer pozycji w tablicy wektorów przerwaD zawierajcej procedur obsBugi zgBaszanego przetrwania sprztowego. Przyporzdkowanie przerwaniom sprztowym procedur obsBugi ustalone zostaBo na zawsze przez producenta procesora [8]. Od tej chwili wszystko dzieje si tak jak to opisano dla instrukcji przerwania programowego. 3.5 Inne urzdzenia wewntrzne Procesory z rodziny TMS320C5x integrowane s zwykle z przynajmniej jednym synchronicznym portem szeregowym. Port taki zaprojektowany jest dla komunikacji procesora z ukBadem kodeka. Niektóre modele procesorów wyposa|one s w synchroniczny port szeregowy z podziaBem kanaBów w dziedzinie czasu (ang. time division multiplex - TDM). Istnieje wtedy mo|liwo[ prowadzenia transmisji w siedmiu kanaBach jednocze[nie. Intencj producenta byBo wykorzystywanie szeregowego portu TDM dla komunikacji midzy procesorami w systemach wieloprocesorowych [8]. Wszystkie modele procesorów w rodzinie TMS320C5x posiadaj zintegrowany timer pozwalajcy na precyzyjne odmierzanie czasu bez anga|owania w ten proces czasu obliczeniowego procesora. 3.6 PrzykBad programowania Tablica 2 zawiera wydruk bardzo krótkiego podprogramu asemblerowego realizujcego filtr FIR. CaBo[ obliczeD realizowana jest praktycznie przez wielokrotne powtórzenie jednej instrukcji MADD. Instrukcja ta wykonuje wiele operacji jednocze[nie: Pobiera z pamici danych jawnie wyszczególniony argument wskazywany przez aktywny rejestr adresowy AR0. Pobiera z pamici programu niejawny argument wskazywany przez rejestr BMAR (ang. block move address register). Mno|y pobrane argumenty, a wynik umieszcza w rejestrze PREG. Przenosi zawarto[ komórki wskazywanej przez rejestr AR0 do komórki o adresie o 1 wikszym. Dekrementuje zawarto[ rejestru AR0 i inkrementuje zawarto[ rejestru BMAR. 21 Pod warunkiem, |e przerwanie nie jest zamaskowane a system przerwaD jest odblokowany. 15 Poprzedni zawarto[ rejestru PREG dodaje do zawarto[ci akumulatora i zapamituje w akumulatorze. Je|eli t instrukcj powtórzy tyle razy ile wynosi rzd filtru plus 1 (instrukcja RPT) to po dodatkowej akumulacji (instrukcja APAC) w akumulatorze znajdziemy próbk odpowiedzi filtru. Przed uruchomieniem tego mechanizmu nale|y: Próbk sygnaBu wej[ciowego umie[ci na pocztku linii opózniajcej filtru FIR. W rejestrze AR0 umie[ci adres ostatniego elementu linii opózniajcej. Do rejestru BMAR zaBadowa adres tablicy w której zapamitano w odwrotnej kolejno[ci próbki odpowiedzi impulsowej filtru. Wyzerowa akumulator oraz rejestr PREG (instrukcja ZAP). Powtarzana instrukcja MADD dziki przetwarzaniu potokowemu staje si efektywnie instrukcj wykonywan w jednym cyklu zegarowym. Budowa jednostki centralnej procesorów z rodziny TMS320C5x, implementacja praktycznie jednego rejestru wewntrznego, lista instrukcji pozwalajca na realizacj filtru FIR praktycznie za pomoc jednej instrukcji uzasadnia stwierdzenie, |e wczesne procesory sygnaBowe byBy w istocie programowalnymi filtrami cyfrowymi. Tablica 2. Procedura realizujca filtr FIR napisana w asemblerze procesorów TMS320C5x. * Parametry: * próbka sygnaBu wejeciowego na pocztku linii * ar0 -> koniec linii opózniajcej * ar1 -> rzd filtru (N) * bmar -> tablica wspóBczynników filtru * Zwraca: * acc(hi) = sygnaB wyj[ciowy * * Uwagi: * Linia opózniajca zawiera N+1 elementów * + za koDcem jedna komórka dodatkowa * * (C) Jacek Izydorczyk, 10.ii.1999 .ps UFir: ZAP ; ACC<-0; PREG <-0 MAR *,AR1 ; ARP -> AR0 RPT *,AR0 ; powtórz a do wyczerpania MADD *- ; tablicy wspó czynników APAC ; ACC <- ACC+PREG SFL ; dla zachowania formatu 1.15 ret ; powrót 4. Rekin w[ród procesorów sygnaBowych  ADSP21162 Dobrym przykBadem wspóBczesnego, zmiennoprzecinkowego procesora sygnaBowego jest procesor ADSP21060 Sharc firmy Analog Devices. Architektura tego procesora jest wBa[ciwie identyczna z architektur procesorów ADSP21020, która byBa ju| szczegóBowo prezentowana na Bamach Przegldu Telekomunikacyjnego [33]. Firma uzupeBniBa ukBad o zintegrowan pami RAM, ukBady portów szeregowych, portów HIP itp. Ostatnio wprowadzono model procesora ADSP21160 wyposa|ony w dodatkowe jednostki wykonawcze i mo|liwo[ przetwarzania macierzowego SIMD (ang. single instruction multiple data) [34]. 16 5. Technologia MMX Nale|y si spodziewa, |e w niedalekiej przyszBo[ci wikszo[ obliczeD wykonywanych przez komputery bdzie zwizanych z cyfrowym przetwarzaniem sygnaBów [16]. Ma na to wpByw gwaBtowne rozpowszechnianie si tzw. aplikacji mulimedialnych oraz rozwój rynku coraz bardziej skomplikowanych gier wykorzystujcych technologi wirtualnej rzeczywisto[ci. Aplikacje tego typu wykonuj zadania obliczeniowe o nastpujcych cechach charakterystycznych: Liczby zapisane s w szesnasto lub o[miobitowym formacie staBoprzecinkowym. Wikszo[ obliczeD to operacje mno|enia i akumulacji wyniku. Obliczenia zorganizowane s w postaci licznych, zagnie|d|onych i ciasnych ptli programowych. Wiele operacji mo|na wykonywa równolegle. W istocie s to cechy charakterystyczne dla algorytmów cyfrowego przetwarzania sygnaBów. W zwizku z tym wiele firm wytwarzajcych mikroprocesory postanowiBa rozszerzy ich architektur tak, aby sprztowo wspomaga wykonywanie algorytmów DSP (ang. digital signal processing). PrzykBadem s instrukcje VIS wprowadzone do architektury SPARC przez firm Sun Microsystems, instrukcje MDMX procesorów MIPS V firmy Silicon Graphics, instrukcje MVI dla procesorów Alpha firmy DEC22 czy instrukcje MAX2 wprowadzone do architektury PA-RISC prze firm Hewlett-Pacard [16]. Ale niewtpliwie najbardziej znanym przykBadem jest rozszerzenie przez firm Intel architektury IA-32 o instrukcje MMX (ang. multimedia extension) [24]. Cech charakterystyczn tej technologii jest wprowadzenie do zbioru instrukcji procesora 57 nowych instrukcji wykonujcych operacje na kilku argumentach jednocze[nie. W ten sposób procesory zgodne z architektur IA-3223 nabraBy z jednej strony cech procesorów sygnaBowych, a z drugiej cech procesorów macierzowych SIMD (ang. single instruction multilple data). Intencj autorów rozszerzenia MMX byBo zachowanie zgodno[ci architektury z caB dotychczasow baz oprogramowania. W szczególno[ci chodziBo o to aby pojawienie si rozszerzenia MMX nie wymagaBo modyfikowania istniejcych ju| systemów operacyjnych tzn. MS-DOS, MS-Windows 3.1/95/98/NT, OS/2 i Unix. Dlatego zdecydowano, |e kontekst jednostki wykonujcej instrukcje MMX bdzie wspólny dla niej oraz dla jednostki wykonujcej operacje zmiennoprzecinkowe (koprocesora). Praktycznie oznacza to, |e rejestry bdce argumentami nowych instrukcji to osiem rejestrów koprocesora zmiennoprzecinkowego, które teraz nazywaj si MM0-MM7. Wykorzystywane s sze[dziesitcztery bity, które w przypadku operacji zmiennoprzecinkowych reprezentuj mantys liczby. System operacyjny przechodzc do realizacji nowego zadania zachowuje stan koprocesora zmiennoprzecinkowego za pomoc instrukcji FSAVE, natomiast odtworzenie stanu koprocesora nastpuje z wykorzystaniem instrukcji FRSTR. W ten sposób system operacyjny  nie[wiadomie zachowuje i odtwarza stan jednostki MMX. 22 Obecnie Intel. 23 Pentium, Pentium Pro, Pentium II, Pentium III, AND K-6, Cyrix M2, Cyrix MII. 17 5.1 Format przetwarzanych danych Jednostka przetwarzajca instrukcje MMX jest w istocie jednostk arytmetyki staBoprzecinkowej24. Przetwarzane liczby caBkowite mog by zapisane w formacie zajmujcym jeden bajt, sBowo (16 bitów), podwójne sBowo (32 bity) lub poczwórne sBowo (64 bity). Liczby grupowane s w 64-bitowe cigi binarne, zapisywane rejestrach MM0-MM7 i przetwarzane. Np. pojedynczy piksel grafiki reprezentowany jest w postaci o[miu bitów (bajt). Osiem takich pikseli mo|e zosta umieszczonych w jednym poczwórnym sBowie pamici. Realizacja instrukcji MMX polega na pobraniu takiego poczwórnego sBowa25, wykonaniu operacji na wszystkich o[miu pikselach jednocze[nie i zapisaniu wyniku w jednym z rejestrów MMX0-MMX7. Arytmetyka staBoprzecinkowa zmusza programist do dokBadnego przemy[lenia realizowanego algorytmu tak, aby na |adnym z etapów przetwarzania nie doszBo do niekontrolowanego przekroczenia zakresu reprezentowanych liczb. 5.2 Przegld instrukcji Instrukcje MMX realizuj nastpujce operacje: Podstawowe dziaBania arytmetyczne tzn. dodawanie, odejmowanie, mno|enie, mno|enie poBczone z akumulacj, przesunicia arytmetyczne w lewo i w prawo. Porównywanie liczb. Konwersj formatów  pakowanie liczb w cigi 64-bitowe, konwersj z formatów krótkich (np. bajt) do formatów dBu|szych (np. sBowo). Podstawowe operacje logiczne AND, NAND, OR, XOR wykonywane na parach odpowiadajcych sobie bitów. Operacje przesunicia logicznego w lewo i w prawo. Aadowanie danych z pamici do rejestrów procesora, skBadowanie danych w pamici operacyjnej i przesBania midzy rejestrami procesora. Ka|da instrukcja mo|e by wykonywana na danych o innym (krótszym lub dBu|szym) formacie. Ka|dej takiej instrukcji odpowiada inny kod binarny co pokazano w tablicy 3. W charakterze przykBadu rozwa|my instrukcj mno|enia poBczonego z akumulacj wyników: PMADDWD MM0, MM1 Zawarto[ rejestrów MM0 oraz MM1 traktowana jest jak czwórka 16-bitowych liczb zapisanych w formacie staBoprzecinkowym: MM0= -100 -62 17 -30 MM1= 64 -66 42 -40 W wyniku mno|enia odpowiadajcych sobie par liczb otrzymujemy cztery 32-bitowe liczby: -6400 4092 714 1200 Pierwsza para iloczynów powstaBa w wyniku przemno|enia odpowiadajcych sobie liczb le|cych w górnej cz[ci rejestrów MM0 i MM1. Druga para iloczynów powstaBa w wyniku 24 Procesor Pentium, Cyrix MII i AMD K-6 posiadaj jedn jednostk przetwarzajc instrukcje MMX. Procesor Pentium II i Pentium Celleron posiadaj dwie takie jednostki dziaBajce wspóBbie|nie. 25 Magistrale wewntrzne procesora s 64-bitowe. 18 przemno|enia odpowiadajcych sobie liczb le|cych w dolnej cz[ci rejestrów MM0 i MM1. Pierwsze dwa iloczyny s dodawane do siebie i umieszczane w rejestrze w górnej cz[ci rejestru MM0. W dolnej cz[ci rejestru MM0 umieszczana jest suma drugiej pary iloczynów: MM0= -2308 1914 Firma Intel twierdzi [23], |e je|eli oba argumenty instrukcji PMADDWD s rejestrami jednostki MMX to procesor Pentium jest w stanie [rednio realizowa jedn tak instrukcj co 1.5 taktu zegarowego. Je[li jeden z argumentów musi zosta pobrany z pamici jedna instrukcja PMADDWD jest realizowana co dwa takty zegarowe. Dla typowej obecnie czstotliwo[ci zegara komputera PC mieszczcej si w granicach od 300 MHz do 500 MHz daje to od 600 milionów do 1.333 miliarda mno|eD poBczonych z akumulacj na sekund! Tablica 3. Zbiór instrukcji MMX rozszerzajcych architektur IA-32 Typ Mnemonika N Opis Arytmetyczne PADD[B,W,D] 3 Dodawanie bez nasycenia [8,16,32 bity] PADDS[B,W] 2 Dodawanie liczb ze znakiem [8,16,32 bity] nasycenie PADDUS[B,W] 2 Dodawanie liczb bez znaku [8,16 bitów], nasycenie PSUB[B,W,D] 3 Odejmowanie bez nasycenia [8,16,32 bity] PSUBS[B,W] 2 Odejmowanie liczb ze znakiem [8,16 bitów] nasycenia PSUBUS[B,W] 2 Odejmowanie liczb bez znaku [8,16 bitów], nasycenie PMULHW 1 Mno|enie górnej cz[ci rejestru PMULLW 1 Mno|enie dolnej cz[ci rejestru PMADDWD 1 Mno|enie poBczone z akumulacj Porównanie PCMPEQ[B,W,D] 3 Porównanie liczb [8,16,32 bity] czy równe? PCMPGT[B,W,D] 3 Porównanie liczb [8,16,32 bity] czy wiksza? Konwersja PACKUSWB 1 Pakuj sBowa w bajty (bez znaku, z nasyceniem) Formatu PACKSS[WB,DW] 2 Pakuj [sBowa w bajty, podwójne sBowa w poczwórne sBowa] (znak i nasycenie) PUNPCKH 3 Rozpakuj starsze [8,16,32bity] z rejestru MMX [BW,WD,DQ] PUNPCKL 3 Rozpakuj mBodsze [8,16,32bity] z rejestru MMX [BW,WD,DQ] Logiczne PAND 1 AND PANDN 1 AND NOT POR 1 OR PXOR 1 XOR Przesunicia PSLL[W,D,Q] 6 Przesunicie logiczne w lewo [8,16,32bity] PSRL[W,D,Q] 6 Przesunicie logiczne w prawo [8,16,32bity] PSRA[W,D] 4 Przesunicie arytmetyczne w prawo [8,16bitów] PrzesBania MOV[D,Q] 4 PrzesBanie [32,64 bitów] z / do rejestru MMX stan FP&MMX EMMS 1 Zeruj stan MMX N liczna ró|nych kodów binarnych 19 5.3 Programowanie Ze wzgldu na zastosowane rozwizania w konstrukcji jednostki MMX firma Intel nie zaleca stosowania na przemian instrukcji MMX oraz instrukcji wykonujcych dziaBania na liczbach w formacie zmiennoprzecinkowym. GBówne przesBanki tego zalecenia s nastpujce: Wykonanie instrukcji MMX powoduje ustawienie wskaznika stosu rejestrów zmiennoprzecinkowych TOS (ang. top of stack) na zero. Instrukcje zmiennoprzecinkowe trac w ten sposób wskaznik stosu rejestrów, a tym samym dalsza realizacja operacji zmiennoprzecinkowych przebiega bBdnie. Instrukcja MMX wpisujc do rejestru MMX dane powoduje, |e w cz[ci tego rejestru u|ywanej przez instrukcje zmiennoprzecinkowe dla przechowywania cechy, wpisywane s same jedynki. Taka zawarto[ rejestru zmiennoprzecinkowego nie reprezentuje |adnej liczby zmiennoprzecinkowej i próba wykonania jakiejkolwiek operacji zmiennoprzecinkowej na tym rejestrze koDczy si zgBoszeniem przerwania do jednostki centralnej. U|ycie dowolnej z instrukcji MMX powoduje, |e tracona jest zawarto[ rejestru TAG (rejestr TAG wypeBniany jest zerami). Czste przeBczanie midzy instrukcjami MMX i instrukcjami zmiennoprzecinkowymi mo|e spowodowa znaczne zmniejszenie prdko[ci przetwarzania. Je|eli program przeprowadza obliczenia na liczbach zmiennoprzecinkowych oraz obliczenia z wykorzystaniem instrukcji MMX firma zaleca: PodziaB programu na osobne moduBy z których jeden przeprowadza tylko obliczenia na liczbach zmiennoprzecinkowych a drugi tylko obliczenia z wykorzystaniem instrukcji MMX. Nie nale|y przekazywa przez rejestry parametrów midzy jednym i drugim moduBem. W chwili zakoDczenia obliczeD z wykorzystaniem instrukcji MMX nale|y u|y instrukcji EMMS dla opró|nienia stosu rejestrów zmiennoprzecinkowych. KoDczc obliczenia zmiennoprzecinkowe nale|y pozostawi pusty stos rejestrów. Powy|sze zalecenia maj charakter ogólny. Tablica 4 przedstawia natomiast program obliczajcy iloczyn skalarny dwóch wektorów o stu skBadowych [24], [23]. W programie zaBo|ono, |e skBadowe obu wektorów zapisane s w tablicach wskazywanych odpowiednio przez rejestry EDX i EDI. Ka|da skBadowa jest 16-bitow caBkowit liczb staBoprzecinkow. Licznik ptli zorganizowano z wykorzystaniem rejestru ECX. Licznik zawiera liczb równ (-2)*100 czyli liczb przeciwn do liczby bajtów tablicy zawierajcej skBadowe wektora. W ptli odbywa si: Aadowanie do rejestru MM1 czterech skBadowych wektora mno|nej. Mno|enie skBadowych mno|nej przez odpowiadajce im skBadowe mno|nika poBczone z dodaniem wyników par mno|eD. Trzydziestodwubitowe wyniki dodawania umieszczone s w rejestrze MM1. Akumulacja dwóch dodawaD w rejestrze MM0. Po zakoDczeniu wykonywania ptli, w chwili gdy wyzerowana zostanie zawarto[ rejestru ECX, górna cz[ i dolna cz[ rejestru MM0 zawieraj dwie sumy cz[ciowe, które dodane tworz iloczyn skalarny wektorów. Zawarto[ akumulatora MM0 zostaje zachowana w rejestrze MM1, górna cz[ rejestru MM0 przesunita na miejsce dolnej a nastpnie 32-bitowe liczby zawarte w rejestrach MM1 i MM0 zostaj dodane do siebie. Dolna cz[ rejestru MM0 to obliczany iloczyn skalarny. Wystarczy teraz dokona zaokrglenia wyniku do 16-bitów przez spakowanie zawarto[ci akumulatora MM0. 20 Tablica 4. Program obliczajcy iloczyn skalarny z wykorzystaniem instrukcji MMX"! ; Parametry: ; próbka sygnaBu wej[ciowego na pocztku linii ; edx -> a[0] ; edi -> b[0] ; bmar -> tablica wspóBczynników filtru ; Zwraca: ; iloczyn skalarny a[i]*b[i] w najmBodszym s owie rejestru MM0 mov ecx, 100 ; ecx <- 100 == N sal ecx,1 ; ecx <- ecx*2 add edx,ecx ; edx -> a[N] add edi,ecx ; edi -> a[N] neg ecx ; ecx <- (-2)*N pxor mm0,mm0 ; mm0 <- 0 LOOP: movq mm1,[edx+ecx] ; mm1 <- a[i] a[i+1] a[i+2] a[i+3] pmadddw mm1,[edi+ecx] ; mm1 <- a[i]*b[i]+a[i+1]*b[i+1] ; a[i+2]*b[i+2]+a[i+3]*b[i+3] padddw mm0,mm1 ; mm0 <- mm0 + mm1 add ecx,8 ; ecx <- ecx + 8 jnz LOOP ; skocz je[li to nie koniec ptli movq mm1,mm0 ; mm1 <- mm0 psrlq mm0,32 ; mm0 <- mm0/2^(32) padddw mm0,mm1 ; mm0 <- mm0 + mm1 packssdw mm0,mm0 ; przeksztaB na format 1.15 6. Nowa architektura Texasa  VelociTI Po wielu latach sukcesów rynkowych firma Texas Instruments zdecydowaBa si unowocze[ni i ujednolici architektur oferowanych procesorów sygnaBowych. W ten sposób powstaBa specyfikacja architektury VLIW (ang. very long instruction word) nazwana przez firm VelociTI [9]. Architektura odnosi si do ukBadów przetwarzajcych liczby w formacie staBoprzecinkowym oraz do ukBadów przetwarzajcych liczby zapisane w formacie zmiennoprzecinkowym. W roku 1997 na rynku pojawiB si ukBad TMS320C6201  pierwszy z rodziny o nowej architekturze [6]. UkBad ten, przetwarzajcy liczby staBoprzecinkowe, taktowany zegarem o czstotliwo[ci 200 MHz mo|e osiga szczytow wydajno[ 1600 MIPS. Producent przewiduje, |e znajdzie on zastosowanie w modemach i wokoderach przeznaczonych dla obsBugi wielu kanaBów jednocze[nie26 oraz dla przetwarzania obrazów [9]. Drugi ukBad z rodziny to TMS320C6701  procesor zmiennoprzecinkowy, który taktowany zegarem 166 MHz osiga szczytow wydajno[ dochodzc do 1000 Mflops. 26 Obie aplikacje stanowi standardow cz[ stacji bazowej cyfrowej telefonii komórkowej. 21 Pami (notatnikowa) programu 32 - bit 256 - bit dane  C62xx CPU Pobranie instrukcji Power dawn Rejestry RozdziaB instrukcji Dekodowanie instrukcji sterujce Zcie|ka danych A Zcie|ka danych B DMA, EMIF Zbiór rejestrów A Zbiór rejestrów B UkBad sterowania UkBad testujcy Emulator .L1 .S1 .M1 .D1 .M2 .D2 .S2 .L2 Przerwania Urzdzenia I/O Pami (notatnikowa) programu timery, porty szeregowe, itd... 32 - bit 8-, 16-, 32 - bit dane Rysunek 4. Schemat blokowy jednostki centralnej procesora TMS320C6201 6.1 Jednostka centralna TMS320C6201 Jednostka centralna ukBadu TMS320C6201 przedstawiona jest na rysunku 4. UkBad zawiera osiem jednostek wykonawczych podzielonych na dwie grupy i oznaczonych L1, S1, M1, D1 oraz L2, S2, M2, D2. Ka|da z grup ma do dyspozycji szesna[cie 32-bitowych rejestrów  patrz rysunek 5. Dla pierwszej grupy jednostek s to rejestry A0-A15, dla grupy drugiej s to rejestry B0-B15. Ka|da jednostka wykonawcza ma swobodny dostp do rejestrów swojej grupy. Ka|da grupa jednostek ma jeden port pozwalajcy na pobieranie lub zapisywanie danych w pamici. W ten sposób w danym cyklu tylko jedna jednostka wykonawcza w ka|dej z grup mo|e zapisywa (odczytywa) pami. Podobny port pozwala grupie jednostek na dostp do rejestrów drugiej grupy jednostek. 22 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Rejestry u|ywane Rejestry u|ywane przez instrukcje do adresowania warunkowe cyklicznego B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 Rejestry u|ywane do adresowania z 15-bitowym przesuniciem Rysunek 5.Rejestry procesora TMS320C6201 Instrukcje pobierane s z pamici programu w porcjach po 256-bitów (ang. fetch packet), które nazwiemy liniami. Porcja taka zawiera osiem 32-bitowych instrukcji, z których ka|da odnosi si do jednej jednostki wykonawczej. NajmBodszy bit ka|dej z instrukcji okre[lany jest angielsk nazw P-bit. Je|eli P-bit instrukcji X równy jest 1 to nastpna instrukcja Y bdzie wykonywana równocze[nie z instrukcj X27. W ten sposób tworzone s BaDcuchy instrukcji wykonywanych równocze[nie przez ró|ne jednostki wykonawcze. AaDcuch taki nazywany jest w terminologii wprowadzonej przez firm Texas Instruments execute packet. Ka|da linia instrukcji pobranych przez jednostk centraln (fetch packet) musi zawiera caBkowit liczb BaDcuchów (execute packet) tzn. |e P-bit ostatniej28 z pobranych instrukcji musi by równy 0. Zachodz przy tym trzy mo|liwo[ci [14]: Wszystkie pobrane instrukcje (fetch packet) maj wyzerowany P-bit: Instrukcja A B C D E F G H P-bit 0 0 0 0 0 0 0 0 W zwizku z tym instrukcje te wykonywane s sekwencyjnie np. tak: Takt zegara L1 S1 D1 M1 L2 S2 D2 M2 1 nop Nop A nop nop nop nop nop 2 nop B nop nop nop nop nop nop 3 nop Nop nop nop nop C nop nop 4 nop Nop nop nop nop D nop nop 5 nop Nop nop E nop nop nop nop 27 Pod warunkiem, |e odnosz si do innych jednostek wykonawczych. 28 Magistrala sBu|ca pobieraniu instrukcji jest magistral 256-bitow. Osiem instrukcji pobieranych jest równocze[nie. Nale|aBoby zatem mówi o najmBodszej (najmniej znaczcej?) z pobranych instrukcji. 23 6 F Nop nop nop nop nop nop nop 7 nop Nop nop nop nop nop G nop 8 nop Nop nop nop nop nop nop H Pobrane instrukcje (fetch packet) tworz kilka BaDcuchów (execute packet): Instrukcja A B C D E F G H P-bit 1 1 0 1 0 0 1 0 i wykonywane s cz[ciowo równolegle: Takt zegara L1 S1 D1 M1 L2 S2 D2 M2 1 nop B A nop nop nop C nop 2 nop Nop E nop D nop nop nop 3 F Nop nop nop nop nop nop nop 4 nop Nop nop nop nop nop H G Pobrane instrukcje (fetch packet) tworz jeden BaDcuch (execute packet): Instrukcja A B C D E F G H 1 1 1 1 1 1 1 0 P-bit i wykonywane s wszystkie równolegle: Takt zegara L1 S1 D1 M1 L2 S2 D2 M2 1 A B C D E F G H Ze wzgldu na szybko[ przetwarzania danych najkorzystniejsza wydaje si sytuacja kiedy wszystkie pobrane instrukcje s wykonywane równolegle i wszystkie jednostki wykonawcze w ka|dym cyklu zegarowym s  zajte u|yteczn prac. Trudno si jednak spodziewa, |e uda si w ten sposób zakodowa ka|dy algorytm. Najcz[ciej bdziemy mieli do czynienia z  cz[ciow równolegBo[ci przetwarzania. Istotna trudno[ polega jedynie na tym, |e granice BaDcuchów instrukcji (execute packet) nie bd si pojawiaBy regularnie co osiem instrukcji. Mamy wtedy do dyspozycji przynajmniej dwie strategie postpowania. W trosce o ilo[ pamici zajmowanej przez kod programu BaDcuchy instrukcji zostan  przerwane co osiem instrukcji. W ten sposób nie zmienimy rozmiarów kodu ale przestaje to by kod optymalny pod wzgldem szybko[ci przetwarzania. Optymalno[ kodu mo|na zachowa uzupeBniajc go o instrukcje NOP29 tak, aby granice BaDcuchów instrukcji (execute packet) wypadaBy co 8 instrukcji. W najgorszym przypadku w kodzie optymalnym instrukcje grupowane s w BaDcuchy po 5 instrukcji. Ka|dy BaDcuch musi by wtedy uzupeBniony trzema instrukcjami NOP co daje wzrost 29 Instrukcja oznaczajca  nic nie rób" (ang. no operation). 24 objto[ci kodu o 60%. Je|eli zaBo|y, |e [rednia liczba instrukcji NOP w ka|dej linii instrukcji wynosi 1.5 to wzrost objto[ci kodu wynosi 30%. Tablica 5. Przyporzdkowanie instrukcji poszczególnym jednostkom wykonawczym procesora TMS320C6201 [9] L S D M Dodawanie liczb Dodawanie liczb Dodawanie liczb Mno|enie liczb staBoprzecinkowych staBoprzecinkowych staBoprzecinkowych staBoprzecinkowych Operacje logiczne Operacje logiczne Aadowanie i zapamitywanie danych Zliczanie bitów Operacje na bitach Przesuwanie Aadowanie staBych Instrukcje skoku i wywoBania podprogramu Zbiór jednostek wykonawczych procesora TMS320C6201 nie jest zupeBnie symetryczny, cho wiele czsto u|ywanych instrukcji mo|e by wykonywana przez wicej ni| jedn jednostk. Tablica 5 pokazuje jakie instrukcje wykonywane s przez poszczególne jednostki procesora. Na etapie tworzenia kodu programu trzeba przydzieli ka|dej instrukcji jednostk procesora, która j wykona. Na tym etapie zapada te| decyzja, które instrukcje bd wykonywane jednocze[nie oraz uzupeBnia si kod programu o instrukcje NOP. Wszystkie operacje wykonywane s na argumentach pobieranych z rejestrów procesora. Wynik dziaBania instrukcji zapamitywany jest tak|e w rejestrze. Oddzielono od siebie w ten sposób operacje dostpu do pamici (odczyt i zapis) od wBa[ciwych operacji przetwarzania. Zbiór instrukcji jest zbiorem typu RISC30 tzn. |e operacje wykonywane przez instrukcje s w miar proste i niezale|ne od siebie. Poniewa| procesor posiada du|y zbiór uniwersalnych rejestrów mo|liwa jest konstrukcja kompilatorów generujcych kod bardzo zbli|ony do kodu optymalnego31 pod wzgldem szybko[ci przetwarzania danych [9]. SzczegóBow list instrukcji procesora TMS320C6201 mo|na znalez w [14]. Godne podkre[lenia s przy tym nastpujce cechy tej listy: Procesor realizuje arytmetyk z nasyceniem. Sprztowo wspomaga realizacj algorytmu dzielenia liczb staBoprzecinkowych. Instrukcje zliczania nadmiarowych bitów znaku uBatwiaj programow realizacj arytmetyki zmiennoprzecinkowej oraz skalowanie grupy liczb pojawiajce si np. staBoprzecinkowym algorytmie FFT. Instrukcje porównania umieszczaj wynik (jedynk lub zero) w rejestrach ogólnego przeznaczenia  patrz rysunek 5. Instrukcja ADD2 (SUB2) pozwala na dodanie (odjcie) zawarto[ci dwóch rejestrów z pominiciem przeniesienia z pozycji binarnej 15 na 16  w ten sposób jedna instrukcja wykonuje dwa dodawania (odejmowania) liczb 16-bitowych. 30 ang. reduced instruction set computer 31 Punktem odniesienia s tu algorytmy kodowane rcznie na poziomie asemblera. 25 Procesor wykonuje operacje na wybranych grupach bitów  ekstrakcja, ustawianie, zerowanie. Najmniejsz adresowaln jednostk danych jest bajt. Adresowanie odbywa si z wykorzystaniem rejestrów ogólnego przeznaczenia. Adresy s 32-bitowe. Daje to przestrzeD adresow 4GB. Adresowanie cykliczne (bufory cykliczne) mog by realizowane z wykorzystaniem wybranych rejestrów  patrz rysunek 5. Wszystkie instrukcje procesora TMS320C6201 mog by wykonywane warunkowo. Testowana jest wtedy zawarto[ jednego z rejestrów A1, A2, B0, B1, B2 przy czym zero oznacza tradycyjnie faBsz a warto[ ró|na od zera prawd. Ka|da z instrukcji, niezale|nie od od tego czy warunek jest speBniony czy te| nie wchodzi w etap wykonania. Dla instrukcji, której warunek nie jest speBniony wynik dziaBania nie jest zapisywany do rejestru przeznaczenia. Podobnie jest w przypadku instrukcji zapisu w pamici. Je|eli warunek nie jest speBniony nie jest uruchamiany mechanizm dostpu do pamici. Instrukcje warunkowe pozwalaj na eleganckie konstruowanie ptli if-else bez wykonywania instrukcji skoku32. W tablicy 6 pokazany jest fragment programu napisanego w jzyku C. Program skBada si wBa[ciwie z dwóch instrukcji if-else: Pierwsza instrukcja sprawdza zmienn b2. Je|eli jest ona ró|na od zera liczb przechowywan przez zmienn a5 powiksza si o liczb przechowywan przez zmienn b4. Druga instrukcja sprawdza zmienn a0. Je|eli jest równa zero nastpuje operacja mno|enia. W przeciwnym wypadku zerowana jest zmienna b0 i inkrementowana jest zmienna a5. Ten sam program napisany w asemblerze procesora TMS320C6201 przedstawiony jest w tablicy 7. CaBy program skBada si zaledwie z jednego BaDcucha instrukcji wykonywanych w tym samym cyklu zegarowym33 (execute packet). Pierwszej instrukcji programu napisanego w jzyku C odpowiada pierwsza instrukcja programu asemblerowego  warunkowa akumulacja zawarto[ci rejestru B4 w rejestrze A5. PozostaBe trzy instrukcje asemblerowe realizuj drug instrukcj if-else. Wszystkie trzy instrukcje bd wykonywane jednocze[nie ale ze wzgldu na wzajemnie wykluczajce si warunki zostanie utrwalony tylko wynik realizacji pierwszej z nich (cz[ if instrukcji w jzyku C) albo wynik dziaBania pozostaBych dwóch (cz[ else instrukcji w jzyku C). Nie ma tu |adnych skoków i zwizanych z tym opóznieD. Tablica 6. PrzykBadowy fragment programu w jzyku C zawierajcy instrukcje if-else if (b2) a5 += b4; if (a0) b0 = a0 * (unsigned) (b1 >> 16); else { b0 = 0; a5 += 1; } 32 Efektywny czas wykonania instrukcji skoku warunkowego w przypadku procesora z rozbudowanym przetwarzaniem potokowym (a takim procesorem jest TMS320C6201) mo|e by równy nawet kilkudziesiciu okresom segara taktujcego. 33 W asemblerze kolejne instrukcje Bczone s w BaDcuchy za pomoc dwóch pionowych kresek  || wstawionych midzy Bczone instrukcje. 26 Tablica 7. Realizacja instrukcji if-else w asemblerze procesora TMS320C6201 [B2] ADD .L1X A5, B4, A5 || [A0] MPYLSHU .M2X A0, B1, B0 || [!A0] ZERO .S1 B0 || [!A0] ADD .D1 A5, 1, A5 6.2 Potok instrukcji Ograniczenia wspóBczesnej submikronowej technologii elektronowej [15] skBaniaj konstruktorów do tworzenia procesorów o bardzo rozwinitym przetwarzaniu potokowym. Tak te| jest w przypadku procesora TMS320C6201. Przetwarzanie potokowe skBada si z trzech zasadniczych etapów: Pobranie instrukcji obejmujce cztery podetapy  cykle zegarowe: Ò! generowanie adresu nastpnej linii instrukcji lub wyliczenie adresu instrukcji skoku; Ò! przekazanie adresu do pamici programu; Ò! sprawdzenie czy pobierana linia zapisana jest w pamici notatnikowej; je|eli pobranie linii instrukcji wymaga signicia do pamici zewntrznej wstrzymywane jest przetwarzanie caBego potoku instrukcji na czas potrzebny dla pobrania instrukcji z pamici zewntrznej; jest to jedyny przypadek kiedy wstrzymywany jest caBy potok instrukcji; Ò! przekazanie pobranej instrukcji jednostce centralnej. Dekodowanie instrukcji, które realizowane jest w dwóch podetapach: Ò! w pobranej linii instrukcji wydzielane s BaDcuchy instrukcji wykonywanych równolegle (execute packets); Ò! dekodowanie kolejnych BaDcuchów instrukcji i przekazywanie ich odpowiednim jednostkom w celu realizacji; dekodowanie ka|dego BaDcucha instrukcji trwa jeden cykl zegarowy i dopóki nie zostan zdekodowane wszystkie BaDcuchy tworzce lini wstrzymuje si pobieranie kolejnych linii instrukcji. Wykonanie instrukcji  ta cz[ potoku zawiera pi etapów34 przetwarzania E1-E5. Wykonywanie wikszo[ci instrukcji koDczy si jednak ju| po pierwszym etapie tak, jak ilustruje to tabela 8. Tabela uwzgldnia: Ò! result latency  liczba cykli zegarowych niezbdnych dla ukoDczenia instrukcji; Ò! delay slots  opóznienie  liczba BaDcuchów instrukcji, nastpujcych po zadanej instrukcji X, dla których wynik dziaBania instrukcji X jest jeszcze niedostpny; opóznienie jest zawsze równe liczbie cykli zegarowych niezbdnych dla ukoDczenia instrukcji minus jeden; Ò! functional unit latency  czas, liczony w cyklach zegarowych, po upBywie którego jednostka realizujca instrukcj mo|e podj wykonywanie nastpnej instrukcji; dla 34 Zmiennoprzecinkowy procesor TMS320C6701 o architekturze VelociTI potrzebuje nawet do dziesiciu etapów w celu zakoDczenia instrukcji arytmetycznych podwójnej precyzji. 27 procesora TMS320C6201 czas ten zawsze wynosi jeden co oznacza, |e w ka|dym cyklu zegarowym ka|da jednostka mo|e rozpocz realizacj kolejnej instrukcji35. Tablica 8 wskazuje, |e najwiksze opóznienie wystpuje podczas realizacji instrukcji skoku. W istocie instrukcja skoku realizowana jest ju| w pierwszym cyklu E1 etapu wykonania i powoduje zmian adresu linii instrukcji, która bdzie pobierana. Potok instrukcji ani nie jest wstrzymywany, ani nie jest uniewa|niany. Powoduje to, |e jeszcze pi BaDcuchów instrukcji (execute packets) pobranych po instrukcji skoku bdzie wykonanych zanim nastpi wykonanie pierwszej instrukcji wskazywanej przez argument instrukcji skoku. Jednym sBowem procesor TMS320C6201 dysponuje jedynie instrukcj skoku z opóznieniem, a opóznienie wynosi pi cykli zegarowych (instrukcji, BaDcuchów instrukcji). W ka|dym BaDcuchu instrukcji mog pojawi si dwie instrukcje skoku  jedna wykonywana przez jednostk S1, a druga przez jednostk S2. Procesor zachowa si w sposób przewidywalny jedynie wtedy, gdy obie instrukcje s instrukcjami warunkowymi, a warunki wzajemnie si wykluczaj. Tablica 8. Czas realizacji instrukcji procesora TMS320C6201 Instrukcja Result Delay Functional unit latency slots latency Instrukcje mno|enia: MPY, SMPY 2 1 1 Instrukcja Badowania danych: LD(B,H,W,D) 5 4 1 Instrukcja skoku: B 6 5 1 Wszystkie pozostaBe instrukcje 1 0 1 Instrukcja pobrania danych z pamici (LD) jest jedyn instrukcj procesora TMS320C6201, która wymaga na etapie realizacji piciu cykli zegarowych E1-E5. W etapie E1 obliczany jest adres argumentu; w etapie E2 adres przekazywany jest do podsystemu pamici; w etapie E3 procesor sprawdza czy argument znajduje si w pamici notatnikowej, a je|eli nie caBy potok instrukcji wstrzymywany jest w celu realizacji dostpu do zewntrznej pamici RAM; w etapie E4 dane przekazywane s z podsystemu pamici do wBa[ciwej jednostki centralnej;w etapie E5 nastpuje zapisanie danych w rejestrze. Ze wzgldu na opisany mechanizm dla czterech instrukcji (execute packets) nastpujcych po instrukcji LD dane pobierane przez instrukcj LD nie s jeszcze dostpne. Natomiast modyfikacje rejestru sBu|cego do adresowania widoczne s ju| dla nastpnej instrukcji po instrukcji LD. Instrukcja zapisywania w pamici (ST) realizowana jest w cigu trzech cykli zegarowych E1-E3. W etapie E1 obliczany jest adres argumentu; w etapie E2 adres przekazywany jest do podsystemu pamici; w etapie E3 dane przekazywane s do podsystemu pamici. Dziki odpowiedniej konstrukcji podsystemu pamici wydaje si, |e kombinacja instrukcji ST i LD wykonywana jest zawsze tak jak gdyby nie istniaBy jakiekolwiek opóznienia w ich wykonaniu. Mo|liwe s bowiem tylko trzy sytuacje [14]: Bezpo[rednio po instrukcji Badowania (LD) z komórki pamici o adresie X wystpuje instrukcja skBadowania (ST) do tej samej komórki X. Kiedy instrukcja ST znajduje si na etapie E3 wykonania i zapisywane dane przekazywane s do podsystemu pamici instrukcja LD jest na etapie wykonywania E4 i odczytywane dane dostarczane s do 35 Czas ten mo|e by wikszy dla innych procesorów nale|cych do rodziny o architekturze VelociTI. 28 jednostki centralnej. W rezultacie stare dane z komórki o adresie X s Badowane do rejestru, a nowe dane (pochodzce z procesora) zapisywane do komórki X. Bezpo[rednio po instrukcji skBadowania (ST) w komórce pamici o adresie X wystpuje instrukcja Badowania (LD) z tej samej komórki X. Kiedy instrukcja ST znajduje si na etapie E3 wykonania i nowe dane przekazywane s do podsystemu pamici instrukcja LD jest na etapie wykonywania E2 i do podsystemu pamici przekazywany jest dopiero adres argumentu instrukcji LD. W rezultacie nowe dane zapisywane s w komórce o adresie X i te same dane Badowane s do rejestru procesora. Instrukcja LD Badowania z komórki o adresie X jest wykonywana równolegle (poBczona w BaDcuch) z instrukcj skBadowania ST w tej samej komórce. W rezultacie wykonania tych instrukcji stara warto[ z pamici zapisana zostaje w rejestrze procesora, a nowa warto[ (pochodzca z procesora) zapisana w komórce X. 6.3 Przerwania Procesor TMS320C6201 ma mo|liwo[ reakcji na 14 przerwaD. S to: zerowanie procesora  RESET, przerwanie niemaskowane  NMI, 12 przerwaD maskowanych INT4-INT15. yródBem dwóch pierwszych przerwaD s zawsze sygnaBy doprowadzone do wyprowadzeD zewntrznych procesora. Cz[ przerwaD maskowanych wykorzystywanych jest przez urzdzenia peryferyjne zintegrowane wraz z procesorem za[ pozostaBe mog pochodzi od urzdzeD zewntrznych. Ka|demu przerwaniu przypisany jest priorytet. Najbardziej uprzywilejowane jest zerowanie procesora, nastpnie przerwanie niemaskowane i przerwania maskowane dla których stopieD uprzywilejowania maleje wraz ze wzrostem numeru tzn. najbardziej uprzywilejowanym w[ród przerwaD maskowanych jest przerwanie INT4 a najmniej uprzywilejowanym jest przerwanie INT15. Zerowanie procesora odbywa si niezale|nie od jego stanu wewntrznego. ObsBug przerwania niemaskowanego mo|e uniemo|liwi jedna z poni|szych okoliczno[ci: Aktualnie obsBugiwane jest przerwanie niemaskowane, które pojawiBo si wcze[niej. WBa[nie wykonana zostaBa instrukcja skoku. Procesor blokuje automatycznie system przerwaD na pi taktów zegarowych36 aby prawidBowo zakoDczy wykonywanie instrukcji, które znalazBy si ju| w potoku37. ObsBug przerwania maskowanego mo|e uniemo|liwi jedna z poni|szych okoliczno[ci: Aktualnie obsBugiwane jest przerwanie niemaskowane, które pojawiBo si wcze[niej. WBa[nie wykonana zostaBa instrukcja skoku i system przerwaD procesora jest zablokowany na okres piciu taktów zegarowych. Programowo zablokowano obsBug wszystkich przerwaD maskowanych przez wyzerowanie bitu GIE (ang. global interrupt enable) w rejestrze sterujcym prac procesora CSR (ang. control status register). Programowo zamaskowano obsBug zgBaszanego przerwania przez wpisanie do rejestru masek IER (ang. interrupt enable register) zera na pozycji odpowiadajcej zgBaszanemu przerwaniu. 36 Nawet je|eli wykonanie instrukcji skoku warunkowego nie doszBo do skutku. 37 Przerwanie którejkolwiek z piciu instrukcji (execute packets) nastpujcyh po instrukcji skoku powoduje, |e [lad zachowywany przez procesor podczas przechodzenia do procedury obsBugi przerwania nie pozwala na odtworzenie stanu potoku przed przerwaniem. 29 ZgBoszenie przerwania polega na przej[ciu zewntrznego sygnaBu zgBoszenia przerwania ze stanu niskiego do stanu wysokiego. Procesor wykrywa pojawienie si sygnaBu |dania przerwania w czasie nie przekraczajcym trzech cykli zegarowych. W tym czasie sprawdza si czy mo|e zosta podjte wykonywanie procedury obsBugi przerwania tzn. czy system przerwaD jest aktywny, czy przerwanie nie jest zamaskowane itd. Je|eli procedura obsBugi zgBaszanego przerwania mo|e by podjta to: Blokowane jest przyjmowanie dalszych przerwaD. Uniewa|niane s wszystkie instrukcje znajdujce si w potoku, które nie doszBy jeszcze do etapu wykonania. Do rejestru IRP (ang. interrupt return pointer) wpisywany jest adres najstarszej z uniewa|nionych instrukcji. Powrót z procedury obsBugi przerwania polega na wykonaniu skoku do instrukcji wskazywanej przez rejestr IRP. W rejestrze IFR (ang. interrupt flag register) ustawiany jest bit odpowiadajcy zgBaszanemu przerwaniu. W nastpnym cyklu zegarowym: W potoku instrukcji wymuszany jest skok do procedury obsBugi przerwania. Na zewntrz uaktywniany jest sygnaB IACK sygnalizujcy urzdzeniom zewntrznym, |e procesor podjB obsBug zgBoszonego przerwania. Jeszcze jeden cykl zegarowy pózniej zerowana jest flaga w rejestrze IFR odpowiadajca obsBugiwanemu przerwaniu. W rezultacie od chwili zgBoszenia przerwania do chwili rozpoczcia etapu E1 pierwszej instrukcji procedury obsBugi przerwania upBywa 11 cykli zegarowych czyli zaledwie 55 ns. Procesor nie wspomaga sprztowo zagnie|d|ania przerwaD. Procedury obsBugi przerwaD tworz tablic wektorów przerwaD. Tablica wektorów przerwaD mo|e zosta umieszczona (prawie) gdziekolwiek w przestrzeni adresowej programu. Ka|demu z przerwaD odpowiada w tablicy jedna 256-bitowa procedura obsBugi tworzca jedn lini instrukcji (fetch packet). Je|eli tak krótka procedura obsBugi przerwania jest niewystarczajca nale|y wykona skok do wBa[ciwej procedury obsBugi przerwania. Nale|y pamita, |e ka|dy skok, w tym skok realizujcy powrót z procedury obsBugi przerwania, wykonywany jest z opóznieniem. Blokowanie systemu przerwaD po wykonaniu instrukcji skoku powoduje, |e ciasne ptle programowe, których rozmiar nie przekracza piciu instrukcji (execute packets) nie mog by przerwane. Podczas realizacji takiej ptli po wykonaniu instrukcji skoku potok instrukcji zawiera zawsze nastpn instrukcj skoku. W programach realizujcych algorytmy cyfrowego przetwarzania sygnaBów takie ciasne i czasochBonne ptle pojawiaj si bardzo czsto. Aby umo|liwi obsBug przerwaD ptl tak nale|y sztucznie powikszy tak aby zawieraBa przynajmniej sze[ instrukcji. W tym celu mo|na posBu|y si wieloetapow instrukcj NOP. Argumentem tej instrukcji jest liczba cykli zegarowych potrzebnych na jej realizacj. Architektura procesora nakBada pewne ograniczenia na sposób pisania programów, które mog by przerwane w celu obsBu|enia przerwania. PrzykBadem  patologicznego pod tym wzgldem programu mo|e by ten zamieszczony w pierwszej cz[ci tablicy 9. Instrukcja LD pobiera z pamici dane i umieszcza je w rejestrze A1. Ze wzgldu na opisane wcze[niej opóznienia w realizacji instrukcji LD dane te bd dostpne dopiero dla instrukcji mno|enia MPY. W midzyczasie programista skorzystaB ze  starej zawarto[ci rejestru A1. W obecno[ci przerwaD program mo|e dziaBa zupeBnie inaczej. ZaBó|my, |e przerwanie nastpi po przekazaniu instrukcji LD do wykonania a przed rozpoczciem wykonywania instrukcji dodawania. Po powrocie z procedury obsBugi przerwania w rejestrze A1 bdzie ju| nowa warto[ pobrana przez instrukcj 30 LD. Poprawna posta programu znajduje si w drugiej cz[ci tablicy 9. Instrukcja LD zapisuje pobrane dane do rejestru A6 i ewentualne przerwanie nie wpBywa na sposób dziaBania programu. Tablica 9. WpByw przerwaD na poprawno[ dziaBania programu realizowanego przez procesor TMS320C6201 ; ; Program dziaBajcy wadliwie w obecno[ci przerwaD ; LDW .D1 *A0,A1 ; A1 <- [A0] ADD .L1 A1,A2,A3 ; A3 <- A2 + A1(stare) NOP 3 ; odczekaj trzy cykle zegarowe MPY .M1 A1,A4,A5 ; A5 <- A4 * A1(nowe) . . . ; ; Program dziaBajcy poprawnie w obecno[ci przerwaD ; LDW .D1 *A0,A6 ; A6 <- [A0] ADD .L1 A1,A2,A3 ; A3 <- A2 + A1 NOP 3 ; odczekaj trzy cykle zegarowe MPY .M1 A6,A4,A5 ; A5 <- A4 * A6 . . . 6.4 Pami PrzestrzeD adresowa programu oraz przestrzeD adresowa danych s w ukBadzie TMS320C6201 rozdzielone. Razem z jednostk centraln zintegrowano 64K bajtów pamici programu. Pami ta mo|e pomie[ci 16K instrukcji albo 2K linii programu (fetch packets). Je|eli wewntrzna pami programu jest zdecydowanie za maBa dla realizacji zadaD postawionych przed systemem mo|na j skonfigurowa jako pami notatnikow [18]. UkBad TMS320C6201 zawiera tak|e 64K bajty pamici danych. Pami danych podzielona jest na dwa 32K bajtowe bloki umieszczone  jeden za drugim w przestrzeni adresowej danych. Ka|dy z bloków podzielony jest na cztery banki pamici o dBugo[ci sBowa 16 bitów i pracujce z przeplotem [2], [1]. W ten sposób w wikszo[ci przypadków mo|liwy jest jednoczesny dostp do pamici dwóch  uprawnionych do tego jednostek wykonawczych D1 i D2 (oraz kontrolera DMA). Konflikt powstaje jedynie wtedy, gdy obie jednostki w tym samym cyklu zegarowym usiBuj si dosta do tego samego banku pamici co ilustruje tablica 10. W tym przypadku przetwarzanie zostaje zatrzymane 0na jeden dodatkowy takt zegarowy tak, aby umo|liwi dwa kolejne dostpy do tego samego banku pamici. Je|eli dojdzie do konfliktu pomidzy instrukcj Badowania LD i instrukcj skBadowania ST zawsze najpierw wykonywana jest instrukcja Badowania LD. 31 Tablica 10. Schemat konfliktów podczas dostpu do wewntrznej pamici danych procesora TMS320C6201 D1 bajt Pó s owo s owo D2 LSB 0 0 0 0 1 1 1 1 0 0 1 1 00 10 adresu 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 000 bajt 001 010 011 100 101 110 111 000 pó s owo 010 100 110 000 s owo 100 Zacieniowane pole oznacza konflikt Dostp do zewntrznej pamici programu i do zewntrznej pamici danych realizowany jest za po[rednictwem specjalizowanego ukBadu sterujcego o nazwie EMIF (ang. external memory interface). Pozwala on na: DoBczenie do ukBadu procesora szerokiej gamy pamici RAM. Szczytow szybko[ przesyBania danych pomidzy pamici zewntrzn a procesorem równ 800 Mbajtów/s. Mo|liwo[ zaadresowania do 52 Mbajtów pamici. Pamici podzielone s na cztery bloki (ang. chip-enable space). Trzy z nich mog zawiera do 16 Mbajtów pamici, a czwarty 4 Mbajty pamici. Adresowanie pojedynczych bajtów. Mo|liwo[ pobierania danych z pamici ROM o organizacji o[mio i szesnasto bitowej. WspóBdzielenie pamici z innymi procesorami. 32 UkBad EMIF pozwala na doBczanie ró|nych typów pamici RAM bez konieczno[ci stosowania dodatkowych ukBadów logicznych. W szczególno[ci dotyczy to: Synchronicznej, statycznej pamici RAM pracujcej w trybie zakBadkowania (SBBSRAM). Czstotliwo[ zegara taktujcego mo|e by równa czstotliwo[ci zegara taktujcego procesor lub dwukrotnie ni|sza. Synchronicznej dynamicznej pamici RAM (SDRAM) taktowanej zegarem o czstotliwo[ci równej poBowie czstotliwo[ci zegara procesora. UkBad EMIF zapewnia wBa[ciwe od[wie|anie pamici. Wszelkiego rodzaju pamici asynchroniczne SRAM, ROM, flash itd. Istnieje mo|liwo[ programowej zmiany liczby cykli oczekiwania na gotowo[ pamici. Najmniejsz adresowaln porcj pamici jest jeden bajt. Z pamici pobiera mo|na bajty, póBsBowa (2 bajty) i sBowa (4 bajty). Adres ka|dego póBsBowa musi by parzysty, a adres ka|dego sBowa musi by podzielny przez cztery. Do pamici mog siga tylko dwie instrukcje: Badowanie LD i skBadowanie ST. Instrukcje te mog by wykonane tylko przez jednostk D1 lub D2. Dostpne jest tylko adresowanie po[rednie przez rejestr z indeksowaniem. yródBem indeksu mo|e by rejestr wewntrzny procesora, krótka 5-bitowa staBa lub staBa 16-bitowa. Rejestr sBu|cy do adresowania mo|e by inkrementowany (dekrementowany) przed lub po wykonaniu dostpu do pamici. Adresujc z wykorzystaniem rejestrów A4-A7 lub B4-B7 mo|na zorganizowa bufory cykliczne. 6.5 Peryferia Procesory z rodziny TMS320C62xx integrowane s wraz z pewn liczb urzdzeD peryferyjnych. Poni|ej przedstawiony jest krótki ich przegld. 6.5.1 Kontroler DMA [9] Kontroler DMA pozwala na przeprowadzenie transmisji danych midzy dwoma obszarami pamici lub pomidzy pamici a urzdzeniem zewntrznym bez konieczno[ci anga|owania procesora centralnego. Transmisja mo|e odbywa si z szybko[ci dochodzc do 800 Mbajtów/s. Dostpne s cztery programowalne kanaBy transmisji oraz kanaB pity przeznaczony dla obsBugi portu HIP. Ka|dy kanaB posiada nastpujce wBasno[ci: Posiada swój wBasny zestaw rejestrów zawierajcych adres zródBowy, adres przeznaczenia oraz licznik przesBaD. Zaimplementowane schematy indeksowania pozwalaj na przesyBanie danych pobieranych z komórki o ustalonym adresie oraz przesyBanie danych tworzcych tablic jedno lub dwuwymiarow. PrzesyBanie danych mo|e by wyzwalane przez zdarzenia, których zródBem jest urzdzenie zewntrzne lub urzdzenie zintegrowane razem z procesorem. Sygnalizuje jednostce centralnej, za pomoc przerwania, zakoDczenie transmisji lub pojawienie si bBdów. Mo|e by zaprogramowany w trybie autoinicjalizacji tak, aby podjB nastpn transmisj bez konieczno[ci interwencji ze strony jednostki centralnej. Mo|e tak|e obsBugiwa transmisj póBdupleksow  od pamici do urzdzenia zewntrznego i w kierunku odwrotnym. Podczas obsBugi procedury zerowania procesora  RESET  kontroler DMA mo|e zosta wykorzystany dla przesBania programu z zewntrznej pamici ROM do wewntrznej pamici RAM. 33 6.5.2 Porty szeregowe UkBad TMS320C6201 posiada zintegrowane dwa synchroniczne porty szeregowe podobne do tych, które firma stosuje w ukBadach TMS320C2x/C5x/C54x. Cech szczególn procesora TMS320C6201 jest mo|liwo[ obsBugiwania transmisji z portu szeregowego do pamici oraz w kierunku odwrotnym przez kontroler DMA. Port mo|e prowadzi transmisj z szybko[ci do 100 Mbitów/s. Chodzi tu oczywi[cie o dwa strumienie danych ka|dy o wymienionej przepBywno[ci  jeden to dane transmitowane od procesora do urzdzenia zewntrznego, drugi strumieD stanowi dane transmitowane do procesora. Port jest portem wielokanaBowym przystosowanym do wspóBpracy z ukBadami obsBugujcymi protokoBy transmisji T1, E1 oraz MVIP. 6.5.3 Timer UkBad timera  programowanego 32 bitowego licznika  mo|e by taktowany zegarem zewntrznym albo zegarem powstaBym w wyniku podziaBu czstotliwo[ci zegara taktujcego procesor przez cztery. Ta ostatnia mo|liwo[ pozwala na odmierzanie odcinków czasu o dBugo[ci przekraczajcej jedn minut z rozdzielczo[ci 20 ns. W zale|no[ci od sposobu zaprogramowania na wyj[ciu timera generowany jest pojedynczy impuls lub fala prostoktna. O zakoDczeniu odliczania czasu timer mo|e informowa procesor generujc |danie przerwania. 6.5.4 Port dla komunikacji z jednostk nadrzdn (HIP) Port dla komunikacji z jednostk nadrzdn HIP (ang. host interface port) jest 16-bitowym ukBadem pozwalajcym na dostp do pamici wewntrznej procesora TMS320C6201 przez procesor nadrzdny. Port mo|e by taktowany zegarem o czstotliwo[ci do 50 MHz i prowadzi transmisj z prdko[ci do 100 Mbajtów/s. Konstrukcja portu pozwala na u|ycie praktycznie dowolnego mikroprocesora lub mikrokontrolera w charakterze jednostki nadrzdnej bez konieczno[ci u|ywania rozbudowanych logicznych ukBadów po[redniczcych. 6.5.5 UkBad oszczdzania energii Procesor TMS320C6201 mo|na programowo wprowadzi w stan o niskim poborze energii. Istniej trzy takie stany: Power down 1: Zatrzymana zostaje jednostka centralna, natomiast wszystkie urzdzenia peryferyjne zintegrowane wewntrz procesora dziaBaj. Wyj[cie z tego stanu nastpuje w wyniku pojawienia si niezamaskowanego |dania przerwania. Przerwanie mo|e pochodzi tak od urzdzenia zewntrznego jak i od urzdzenia zintegrowanego wraz z jednostk centraln. Power down 2: Zatrzymana zostaje jednostka centralna oraz wszystkie urzdzenia peryferyjne z wyjtkiem ptli PLL. Wyj[cie z tego stanu mo|liwe jest tylko przez zerowanie procesora sygnaBem RESET. Power down 3: Stan taki sam jak power down 2 lecz ptla PLL procesora tak|e nie dziaBa  nie s generowane |adne sygnaBy zegarowe. 6.6 PrzykBad programowania Programowanie maszyny cyfrowej o takim stopniu przetwarzania równolegBego jaki prezentuje ukBad TMS320C6201 ró|ni si istotnie od programowania konwencjonalnego mikroprocesora lub mikroprocesora superskalarnego. DokBadne omówienie tego zagadnienia wychodzi poza ramy tego artykuBu a zainteresowani Czytelnicy musz zosta odesBani do literatury [19], [20]. Tutaj przedstawiona zostanie jedynie jedna z wielu stosowanych technik o angielskiej nazwie software 34 pipelining co w swobodnym tBumaczeniu na jzyk polski oznacza programowe zakBadkowanie. Niech przykBadowy algorytm oblicza iloczyn skalarny dwóch wektorów38: N-1 c = a Å" b = Å" bi a i " i=0 SkBadowe pierwszego wektora zapisane s w tablicy natomiast skBadowe drugiego wektora zapisane s w tablicy . Iloczyn skalarny to suma iloczynów kolejnych skBadowych obu wektorów. W tablicy 11 przedstawiony jest program napisany w asemblerze procesora TMS320C6201 obliczajcy taki iloczyn w sposób caBkowicie pomijajcy mo|liwo[ci przetwarzania równolegBego. Obliczanie iloczynu odbywa si w ptli. Pierwsza instrukcja programu inicjuje w rejestrze A1 licznik ptli. Druga instrukcja zeruje akumulator A7. Od tego miejsca zaczyna si wBa[ciwe  ciaBo ptli. Pierwsze dwie instrukcje ptli Baduj do procesora po jednej skBadowej ka|dego z mno|onych wektorów. Aby potrzebne dane znalazBy si w rejestrach wewntrznych procesora trzeba odczeka dodatkowo 4 cykle zegarowe. Wtedy mo|na przemno|y skBadowe. Na wynik trzeba poczeka dodatkowo przez jeden takt zegarowy. Dalej nastpuje akumulacja wyniku mno|enia w rejestrze A7, dekrementacja licznika ptli zawartego w rejestrze A1 i skok warunkowy na pocztek ptli. Nim jednak skok zostanie wykonany upBynie pi taktów zegarowych, które procesor spdzi na wykonywaniu instrukcji NOP. W ten sposób ka|dy przebieg ptli wymaga szesnastu taktów zegarowych. Dla wektorów o stu skBadowych daje to razem z dwiema pocztkowymi instrukcjami programu 1602 cykle zegarowe. Tablica 11. Obliczanie iloczynu skalarnego  przetwarzanie szeregowe ; ; Liczba cykli = 16*N+2; N=100 => Liczba cykli = 1602 ; MVK .S1 100, A1 ; A1 <- N == liczba iteracji ZERO .L1 A7 ; A7 <- 0 LOOP: LDH .D1 *A4++,A2 ; A2 <- [A4] == a[i] ; A4 <- A4 + 2 LDH .D1 *A3++,A5 ; ; A5 <- [A5] == b[i] ; A5 <- A5 + 2 NOP 4 ; trwa Badowanie! MPY .M1 A2,A5,A6 ; A6 <- a[i] * b[i] NOP ; trwa mno|enie! ADD .L1 A6,A7,A7 ; A7 <- A7 + a[i] * b[i] SUB .S1 A1,1,A1 ; A1 <- A1  1 [A1] B .S2 LOOP ; je|li to nie koniec to skok NOP 5 ; wyczy[ potok ; teraz skok Czas wykonywania przedstawionego programu mo|na istotnie zmniejszy uwzgldniajc mo|liwo[ci przetwarzania równolegBego jakie stwarza procesor TMS320C6201 oraz uwzgldniajc opóznienie z jakim realizowana jest instrukcja skoku. PrzykBad ulepszonego programu przedstawia tablica 12. SkBadowe obu wektorów Badowane s jednocze[nie parami  skBadowa o indeksie parzystym + skBadowa o indeksie nieparzystym  z wykorzystaniem instrukcji Badowania sBowa 32-bitowego LDW. Zmniejsza to liczb instrukcji w ptli o jeden. SkBadowe o parzystych indeksach przetwarzane s przez pierwsz grup jednostek 38 Zauwa|my od razu, |e obliczanie iloczynu skalarnego jest bardzo zbli|one do obliczania odpowiedzi filtru FIR. 35 wykonawczych, a skBadowe o nieparzystych indeksach przez grup drug. Zmniejsza to liczb przebiegów ptli o poBow. Liczba instrukcji w ptli ulegBa zmniejszeniu tak|e poniewa| zamiast bezczynnie oczekiwa na zaBadowanie skBadowych mno|onych wektorów dokonano dekrementacji licznika ptli i zainicjowano wykonanie instrukcji skoku. W ten sposób zaoszczdzono dalszych 7 instrukcji NOP. W sumie daje to ptl zBo|on z o[miu instrukcji. Dla przemno|enia dwóch wektorów o stu skBadowych potrzeba 402 taktów zegarowych39  prawie cztery razy mniej ni| w poprzednim programie. Tablica 12. Obliczanie iloczynu skalarnego  przetwarzanie równolegBe ; ; Liczba cykli = 4*N+2; N=100 => Liczba cykli = 402 ; MVK .S1 50,A1 ; A1 <- 50 == N/2 || ZERO .L1 A7 ; A7 <- 0 || ZERO .L2 B7 ; B7 <- 0 LOOP: LDW .D1 *A4++,A2 ; A2 <- a[i] a[i+1] ; A4 <- A4 + 4 || LDW .D2 *B4++,B2 ; B2 <- b[i] b[i+1] ; B4 <- B4 + 4 SUB .S1 A1,1,A1 ; A1 <- A1 - 1 [A1] B .S2 LOOP ; je|li to nie koniec to skocz NOP 2 ; trwa Badowanie skBadowych ! MPY .M1X A2,B2,A6 ; A6 <- a[i] * b[i] || MPYH .M2X A2,B2,B6 ; B6 <- a[i+1] * b[i+1] NOP ; trwa mno|enie ADD .L1 A6,A7,A7 ; A7 <- A7 + A6 || ADD .L2 B6,B7,B7 ; B7 <- B7 + B6 ; tu nastpuje skok ADD .L1X A7,B7,A4 ; iloczyn skalarny = A4 <- A7 + B7 Program przedstawiony w tablicy 12 podczas jednego przebiegu ptli dokonuje równolegle mno|enia skBadowych wektorów dla dwóch kolejnych indeksów oraz akumulacji wyników. Zauwa|my, |e ka|da instrukcja ptli wykonywana jest przez inn jednostk wykonawcz. Mo|na zatem wszystkie instrukcje wykona jednocze[nie Bczc je w jeden BaDcuch (execute packet). W tym przypadku ze wzgldu na zale|no[ci midzy argumentami poszczególnych instrukcji realizowane bd elementy kilku ptli jednocze[nie. Odpowiedni program pokazany jest w tablicy 13. W chwili gdy wykonywany jest n-ty raz BaDcuch instrukcji wskazywany przez etykiet LOOP realizowana jest: Akumulacja iloczynu skBadowych o indeksie 2n-12 oraz 2n-11. Mno|enie skBadowych o indeksie 2n-10 a[2n-10]·b[2n-10] oraz skBadowych o indeksie 2n-9 a[2n-9]·b[2n-9]. Dekrementacja licznika ptli oraz skok do etykiety LOOP. Aadowanie dwóch kolejnych skBadowych pierwszego wektora tzn. skBadowej o indeksie 2n  a[2n]  oraz skBadowej o indeksie 2n++1  a[2n+1]. Aadowanie dwóch kolejnych skBadowych drugiego wektora tzn. skBadowej o indeksie 2n  b[2n]  oraz skBadowej o indeksie 2n+1  b[2n+1]. Licznik ptli dekrementowany jest od warto[ci N/2+1 (N  liczba skBadowych mno|onych wektorów) do warto[ci 0. W tym momencie przestaje by wywoBywana ptla LOOP natomiast 39 Z uwzgldnieniem inicjacji ptli i koDcowej akumulacji. 36 akumulatory zawieraj ju| iloczyny skBadowych o indeksie N-12 oraz N-11. Ptla LOOP jest jednak wykonana dalej dopóki, dopóty tworzce j instrukcje znajduj si w potoku. Oznacza to |e ptla zostanie wykonana jeszcze pi razy tak, aby ostatecznie dokona akumulacji iloczynów skBadowych o indeksach N-2 i N-1. Je|eli uwzgldnimy instrukcje zaczynajce program, których zadaniem jest zerowanie zmiennych oraz wypeBnienie potoku instrukcji kopiami ptli LOOP, oraz ostatni instrukcj obliczajc iloczyn skalarny to dla przemno|enia dwóch wektorów o stu skBadowych ka|dy potrzeba zaledwie 57 taktów zegarowych. Siedem razy mniej ni| w przypadku przetwarzania równolegBego i 28 razy mniej ni| w przypadku przetwarzania szeregowego. Jednak nie ma ró|y bez kolców  tak ciasna ptla programowa nie mo|e zosta przerwana w celu obsBu|enia przerwania40. Tablica 13. Obliczanie iloczynu skalarnego  programowe zakBadkowanie ; ; Liczba cykli = N/2+7; N=100 => Liczba cykli = 57 ; B .S2 LOOP ; skok do ptli || MVK .S1 51,A1 ; A1 <- N/2 + 1 == 51 B .S2 LOOP ; skok do ptli B .S2 LOOP ; skok do ptli || ZERO .L1 A7 ; suma0 == A7 <- 0 || ZERO .L2 B7 ; suma1 == B7 <- 0 B .S2 LOOP ; skok do ptli || ZERO .L1 A6 ; wynik_mno|enia0 == A6 <- 0 || ZERO .L2 B6 ; wynik_mno|enia1 == B6 <- 0 B .S2 LOOP ; skok do ptli || ZERO .L1 A2 ; mno|na == A2 <- 0 || ZERO .L2 B2 ; mno|nik == B2 <- 0 LOOP: ADD .L1 A6,A7,A7 ; sum0 += a[2n-12] * b[2n-12] || ADD .L2 B6,B7,B7 ; sum1 += a[2n-11] * b[2n-11] || MPY .M1X A2,B2,A6 ; a[2n-10] * b[2n-10] || MPYH .M2X A2,B2,B6 ; a[2n-9] * b[2n-9] ||[A1] ADD .S1 -1,A1,A1 ; dekrementuj licznik ptli ||[A1] B .S2 LOOP ; skok do ptli || LDW .D1 *A4++,A2 ; Baduj a[2n] & a[2n+1] z pamici || LDW .D2 *B4++,B2 ; Baduj b[2n] & b[2n+1] z pamici ; tu nastpuje skok ADD .L1X A7,B7,A4 ; iloczyn_skalarny = suma0 + suma1 7. Supermikrokontroler  projekt TriCore WspóBczesna technologia elektronowa coraz cz[ciej daje mo|liwo[ konstrukcji caBych urzdzeD cyfrowych w postaci pojedynczej struktury scalonej. UkBad taki skBada si zazwyczaj z: Szybkiego 32-bitowego mikrokontrolera konstrukcyjnie przystosowanego do przetwarzania liczb z szybko[ci porównywaln z szybko[ci procesora sygnaBowego. Najró|niejszych pamici póBprzewodnikowych np. DRAM, SRAM, ROM, flash itp. UkBadów logicznych charakterystycznych dla danej aplikacji (ang. ASIC  application specific integrated circuit). 40 Istnieje jeszcze jeden mankament  realizujc algorytm sigamy w pamici poza tablic a[i] oraz poza tablic b[i]. 37 A Pami programu Pami programu 32 bit Pami notatnikowa L JTAG Emulator Pami kontekstu 32 bit Pami podrczna A System przerwaD 64 bit = 2 do 4 instrukcji 32 bit R Procesor we/wy A Pobranie instrukcji 16 bit Koprocesor Jednostka centralna T Arytmometr dla Procesor we/wy B obliczania Rejestry Operacje adresów 8 bit systemowe na bitach S Procesor we/wy C ALU 32 bit Generator I Sterowanie ModuB PCP adresów MAC G Rejestry Rejestry adresowe danych A 64 bit 64 bit 32 bit Wymiana danych M Pami podrczna Pami notatnikowa Pami danych Rysunek 6. Schemat blokowy procesora TC-1 Konfiguracja taka pozwala na programow realizacj wielu zadaD, które dotychczas wykonywano sprztowo, a to: Na ogóB zmniejsza koszt projektu poniewa| mo|na wykorzysta go w caBo[ci lub w cz[ci w innych projektach. Pozwala na eliminacj ewentualnych bBdów poprzez wymian oprogramowania nawet je|eli urzdzenie jest ju| u klienta. Daje klientowi mo|liwo[ instalacji nowej wersji oprogramowania o udoskonalonych wBasno[ciach u|ytkowych. Np. w przypadku cyfrowego telefonu komórkowego caBo[ przetwarzania cyfrowego mo|e by realizowana przez jeden ukBad. W typowej obecnie konstrukcji, tak jak ilustruje to rysunek 1, stosowane s przynajmniej dwa ukBady. Procesor sygnaBowy zaanga|owany jest w celu kompresji i dekompresji sygnaBu mowy, kodowania i dekodowania danych cyfrowych, realizacji modulacji i demodulacji w pa[mie podstawowym. Jednym sBowem realizuje protokoBy transmisji le|ce w warstwie fizycznej modelu ISO/OSI. Natomiast mikrokontroler realizuje protokoBy transmisji nale|ce do warstwy poBczeniowej oraz obsBuguje interfejs u|ytkownika [13]. Te same zadania mo|e realizowa jeden szybki, 32-bitowy mikrokontroler o charakterystyce zbli|onej do charakterystyki procesora sygnaBowego [11]. PrzykBadem takiego ukBadu jest procesor TC-1  38 pierwszy z rodziny ukBadów o architekturze TriCore opracowanej przez firm Siemens Microelectronics Inc.41 Cechy charakterystyczne tego ukBadu to: Architektura bdca hybryd mikrokontrolera i staBoprzecinkowego procesora sygnaBowego. Szybkie przeBczanie zadaD. Procesor TC-1 mo|e przej[ od realizacji zadania charakterystycznego dla mikrokontrolera do zadania charakterystycznego dla procesora sygnaBowego w czasie zaledwie dwóch cykli zegarowych! Mo|liwo[ integracji razem z pamici póBprzewodnikow o du|ej pojemno[ci co podnosi wydajno[ systemu, jego niezawodno[ oraz zmniejsza zu|ycie energii42. Mo|liwo[ doBczania zewntrznych urzdzeD peryferyjnych praktycznie bez po[redniczcych ukBadów logicznych. Lista instrukcji zakodowana w postaci sBów 16-bitowych i 32-bitowych tak, aby typowe programy byBy mo|liwie maBe. Lista instrukcji oraz architektura procesora zbli|ona jest do architektury typu RISC (ang. reduced instuction set procesor) co pozwala na konstrukcj efektywnych kompilatorów jzyka C/C++. 7.1 Jednostka centralna procesora TC-1 Schemat blokowy procesora TC-1 przedstawiony jest na rysunku 6. Jest to procesor o architekturze Harvard z magistral danych rozdzielon od magistrali programu. Procesor jest ukBadem superskalarnym zawierajcym trzy jednostki wykonawcze: Jednostka staBoprzecinkowa. Przetwarza potokowo, w czterech etapach, instrukcje arytmetyczno-logiczne. Przetwarzanie odbywa si z wykorzystaniem dwóch 16-bitowych ukBadów mno|cych i jednostki arytmetyczno-logicznej. W potoku tym w jednym takcie zegarowym mo|na wykona dwa mno|enia poBczone z akumulacj. Jednostka dysponuje interfejsem do zewntrznego ukBadu koprocesora, który mo|e wykonywa np. operacje na liczbach zmiennoprzecinkowych. Jednostka realizujca operacje Badowania z pamici LD i skBadowania w pamici ST. Wszystkie instrukcje arytmetyczne i logiczne u|ywaj w charakterze argumentów rejestrów wewntrznych procesora. Dane z oraz do pamici przenoszone s przez par instrukcji LD/ST przetwarzanych w osobnym, czteroetapowym potoku. Jednostka realizujca rozkazy skoku. Przetwarza rozkazy potokowo w dwóch etapach. W ten sposób w ka|dym cyklu zegarowym mo|e koDczy si realizacja nawet trzech instrukcji. W praktyce procesor taktowany zegarem 100 MHz ma wydajno[ 130 MIPS [21]. Procesor TC-1 posiada trzydzie[cidwa 32-bitowe rejestry wewntrzne. Szesna[cie z nich A0-A15 przeznaczonych jest do adresowania. PozostaBe szesna[cie rejestrów D0-D15 to rejestry danych. Niektóre z tych rejestrów s wyró|nione. Np. D15 jest domy[lnym rejestrem danych, natomiast rejestr A10 to wskaznik stosu. Poza tym procesor zawiera trzy 32-bitowe rejestry systemowe: PC  licznik rozkazów oraz PCXI, PSW  przechowujce dane dotyczce stanu wewntrznego procesora. Rejestry procesora TC-1 pokazane s na rysunku 7. W zasadzie wszystkie instrukcje procesora TC-1 s instrukcjami 32-bitowymi. Jednak te, które s u|ywane najcz[ciej maj swoje wersje 16-bitowe co pozwala na zmniejszenie 41 Od 1 kwietnia firma Siemens SMI jest wydzielona z koncernu Siemens i nosi nazw Infineon Inc. 42 Oczywi[cie w stosunku do systemu którego pami umieszczona zostaBa w innym ukBadzie scalonym. 39 Rysunek 7. Rejestry procesora TC-1 rozmiarów typowych programów oraz podnosi szybko[ przetwarzania  w jednym cyklu pobiera si i kieruje do przetwarzania cztery zamiast dwóch instrukcji. Krótkie instrukcje: S instrukcjami dwuargumentowymi a nie trójargumentowymi, tak jak ich 32-bitowe odpowiedniki. Czsto stosuj argumenty domy[lne  rejestry adresowe i rejestr danych. Ich argumenty natychmiastowe oraz adresy wzgldne s krótkie. Zestaw instrukcji obejmuje: Instrukcje Badowania i skBadowania  jedyne instrukcje dokonujce wymiany danych midzy procesorem a pamici operacyjn. Instrukcje arytmetyczno-logiczne: Ò! PrzesBania midzy rejestrami. Ò! Dodawanie i odejmowanie liczb staBoprzecinkowych ze znakiem lub bez. Istnieje osobny zbiór instrukcji realizujcych dodawanie z nasyceniem gdy wynik przekroczy najwiksz (najmniejsz) liczb któr mo|na zapisa w danym formacie. Ò! Mno|enie dwóch 32-bitowych liczb staBoprzecinkowych poBczone z dodawaniem (akumulacj). Mno|one liczby mog by liczbami uBamkowym w formacie 1.31 lub liczbami caBkowitymi. Ò! Instrukcje wspomagajce programow realizacj dzielenia liczb staBoprzecinkowych. Ò! Obliczanie warto[ci bezwzgldnej, warto[ci bezwzgldnej z ró|nicy, wybieranie wikszego lub mniejszego argumentu. 40 Ò! Warunkowe instrukcje dodawania i odejmowania. Realizacja instrukcji uzale|niona jest od warto[ci jednego z argumentów (rejestru). Je|eli jest ró|ny od zera instrukcja jest wykonywana. W przeciwnym wypadku procesor pomija j. Ò! Instrukcje logiczne realizujce operacje na ka|dej parze odpowiadajcych sobie bitów argumentów: AND, OR, XOR, NAND, NOR, XNOR. Dwie instrukcje dokonuj dodatkowo negacji jednego z argumentów ANDN i ORN. Ò! Instrukcje zliczajce nadmiarowe bity znaku, pocztkowe zera oraz pocztkowe jedynki. Ò! Przesunicia arytmetyczne w lewo i w prawo o dowoln liczb bitów. Ò! Ekstrakcja dowolnego pola bitowego argumentu. Instrukcje arytmetyczne realizujce operacje na spakowanych argumentach. Ka|dy z trzydziestodwubitowych rejestrów-argumentów przechowuje dwa argumenty 16-bitowe lub cztery argumenty 8-bitowe. Operacja arytmetyczna (dodawanie, odejmowanie, mno|enie, obliczanie warto[ci bezwzgldnej) realizowana jest dla odpowiadajcych sobie argumentów 16-bitowych lub 8-bitowych. W ten sposób procesor realizuje elementy przetwarzania wektorowego (ang. SIMD  single instruction multiple data). W przypadku cyfrowego przetwarzania sygnaBu akustycznego 16-bitowa reprezentacja liczb jest na ogóB wystarczajca, natomiast w przypadku obrazów wystarcza nawet reprezentacja 8-bitowa. Instrukcje porównania  wynik porównania umieszczony jest w rejestrze ogólnego przeznaczenia przy czym zero oznacza faBsz natomiast warto[ ró|na od zera oznacza prawd. Operacje logiczne wykonywane na pojedynczych bitach argumentów. Operacje arytmetyczne i operacje porównania wykonywane na rejestrach adresowych. Pozwalaj na programow realizacj trybów adresowania, które nie s wspomagane bezpo[rednio przez procesor. Skoki warunkowe i bezwarunkowe. Wykonanie instrukcji warunkowej uzale|nione jest od zawarto[ci rejestru ogólnego przeznaczenia przy czym zero oznacza faBsz a warto[ ró|na od zera prawd. Instrukcje systemowe pozwalajce na manipulacje zawarto[ci rejestrów sterujcych prac procesora. 7.2 Pami oraz tryby adresowania Najmniejszym adresowanym przez procesor TC-1 elementem danych jest jeden bajt. Poniewa| adresy s 32-bitowe daje to przestrzeD adresow o pojemno[ci 4 Gbajty. Jest to wspólna przestrzeD danych, programu43 oraz urzdzeD peryferyjnych. PrzestrzeD adresowa podzielona jest na szesna[cie 256 Kbajtowych segmentów o numerach od 0 do 15. Numer segmentu tworz cztery najstarsze bity adresu. Pierwsze 16 Kbajtów ka|dego segmentu mo|na zaadresowa w trybie adresowania bezpo[redniego [21]. Ostatnie dwa segmenty (o numerze 14 i 15) przeznaczone s dla urzdzeD peryferyjnych. Procesor oprócz bajtów mo|e adresowa sBowa 16-, 32- i 64-bitowe. Dostpnych jest przy tym siedem trybów adresowania. Tryby adresowania procesora TC-1 zostaBy zebrane w tablicy 14. Oprócz adresowania bezpo[redniego dostpne s ró|ne warianty adresowania po[redniego przez rejestr. Mnogo[ trybów adresowania uBatwia konstrukcj kompilatora jzyka C/C++ oraz 43 Mimo, |e magistrala programu i magistrala danych s rozdzielone. 41 pozwala na Batwy dostp do typowych struktur danych tzn. tablic, stosów, buforów cyklicznych itp. Tablica 14. Tryby adresowania procesora TC-1 Tryb adresowania Argumenty Po[lizg (l. Bitów) Bezpo[rednie adres 18 bitowy - Po[rednie przez rejestr rejestr bazowy + po[lizg 10 / 16 po[rednie przez rejestr z preinkrementacj rejestr bazowy + po[lizg 10 Po[rednie przez rejestr z postinkrementacj rejestr bazowy + po[lizg 10 Adresowanie po[rednie cykliczne dwa rejestry adresowe 10 adresowanie po[rednie z odwróceniem bitów dwa rejestry adresowe - 7.3 Zadania i konteksty Procesor TC-1 wspomaga sprztowo szybkie przeBczanie zadaD i wymian kontekstu. Przez kontekst rozumie si zawarto[ wszystkich rejestrów procesora niezbdnych dla wznowienia wykonywania zadania. Procesor dzieli kontekst na  górny (ang. upper) oraz  dolny (ang. lower). Kontekst górny tworz rejestry systemowe PCXI, PSW, rejestry danych D8-D15 oraz rejestry adresowe A10-A15. Kontekst dolny tworzy licznik rozkazów PC, rejestry danych D0-D7 oraz rejestry adresowe A2-A7. Rejestry adresowe A0, A1, A8 i A9 maj znaczenie globalne i nie nale| do kontekstu |adnego zadania. Procesor przechowuje w pamici operacyjnej poBczon list obszarów CSW (ang. context switch area). Ka|dy z tych obszarów skBada si z szesnastu 32-bitowych sBów, które przechowuj dokBadnie jeden kontekst górny lub jeden kontekst dolny. Dziki specjalnej magistrali Bczcej procesor oraz zintegrowan z nim pami czas przesBania kontekstu do pamici wynosi zaledwie dwa takty zegarowe [21]. Wymiana kontekstu nastpuje w przypadku obsBugi przerwania oraz wywoBania podprogramu. 7.4 System przerwaD System przerwaD procesora TC-1 jest bardzo rozbudowany. SkBadaj si naD liczne moduBy SRN (ang. service request node). Ka|demu przerwaniu, poprzez programowanie odpowiadajcego mu moduBu SNR, nadaje si wBa[ciwy priorytet44. Procesor dopuszcza bowiem zagnie|d|anie przerwaD. Tylko przerwanie o wy|szym priorytecie mo|e przerwa realizacj procedury obsBugi przerwania o ni|szym priorytecie. Procedury obsBugi przerwaD identyfikowane s wedBug priorytetu tzn. wszystkie przerwania o tym samym priorytecie obsBugiwane s przez t sam procedur. Tablica wektorów przerwaD zawiera kolejno procedury obsBugi przerwaD o coraz wy|szym priorytecie. Ka|da taka procedura skBada si z o[miu instrukcji. Je|eli to nie wystarcza trzeba wykona skok do wBa[ciwej procedury obsBugi przerwania le|cej poza tablic wektorów przerwaD. Wyboru zgBoszenia przerwania o najwy|szym priorytecie dokonuje moduB ICU (ang. 44 Mo|liwe jest tak|e okre[lenie, czy przerwanie bdzie obsBugiwane przez jednostk centraln czy te| przez procesor peryferyjny (PCP). 42 A) Nieskomplikowana procedura obsBugi przerwania Przerwanie Procedura obsBugi Zadanie A Zadanie A przerwania Czas Zachowaj Aaduj górny kontekst A górny kontekst A B) Przerwanie - przypadek Przerwanie ogólny Procedura obsBugi Zadanie A Zadanie A przerwania Czas Zachowaj Aaduj górny kontekst A górny kontekst A dolny kontekst A dolny kontekst A C) Przerwanie z wymian Aaduj Zachowaj kontekstu górny kontekst A górny kontekst A dolny kontekst A dolny kontekst A Przerwanie Procedura obsBugi Zadanie A Zadanie A przerwania Czas Zachowaj Aaduj górny kontekst A górny kontekst A dolny kontekst A dolny kontekst A Rysunek 8. ObsBuga przerwaD przez procesor TC-1 interrupt control unit) a nastpnie zgBasza je do procesora w celu uruchomienia wBa[ciwej procedury obsBugi przerwania. Procesor podejmuje wtedy nastpujce dziaBania45: Zachowuje w pamici górny kontekst. Blokuje system przerwaD. Zapamituje priorytet obsBugiwanego przerwania (priorytet przerwania staje si priorytetem jednostki centralnej). Inicjuje system ochrony pamici i urzdzeD peryferyjnych. Siga do tablicy wektorów przerwaD po pierwsz instrukcj procedury obsBugi przerwania. Rysunek 8 pokazuje trzy mo|liwe scenariusze jakie mo|e realizowa procedura obsBugi przerwania. W najprostszym przypadku wystarcza jej dla realizacji swojego zadania korzystanie z rejestrów automatycznie zachowanego kontekstu górnego  rysunek 8a. W ogólnym przypadku procedura obsBugi przerwania musi zachowa tak|e dolny kontekst  rysunek 8b. 45 O ile np. system przerwaD procesora nie jest zablokowany. 43 Przerwanie mo|e tak|e powodowa wznowienie wykonywania wcze[niej rozpocztego zadania B  rysunek 8c. Wymaga to na pocztku sprowadzenia zachowanego w pamici kontekstu zadania B, a przed zarzuceniem jego dalszego wykonywania kontekst zadania B musi by zachowany w pamici. 7.5 Ochrona pamici oraz urzdzeD peryferyjnych [22] Kiedy system ochrony pamici procesora TC-1 jest uaktywniony, sprawdza  legalno[ ka|dego dostpu do pamici systemu. Dotyczy to tak zapisu jak i odczytu oraz pobrania instrukcji. System ten zbudowany jest w oparciu o zbiór rejestrów wyznaczajcych granice obszarów chronionych. Dla ka|dego obszaru chronionego okre[lony jest typ dopuszczalnych operacji. Istnieje zawsze kilka (od dwóch do czterech) takich zbiorów, przechowywanych w obszarze CSFR (ang. core special function registers). Ka|dy ze zbiorów rejestrów ochrony zwizany jest z jednym z wykonywanych zadaD. System ochrony pozwala  przetrwa kluczowym dla urzdzenia zadaniom systemowym mimo bBdnego dziaBania innych mniej istotnych zadaD. System ochrony pamici chroni tak|e urzdzenia peryferyjne  przestrzeD adresowa urzdzeD peryferyjnych zajmuje dwa ostatnie segmenty przestrzeni adresowej danych. Dla ka|dego zadania okre[lony jest stopieD uprzywilejowania w stosunku do urzdzeD peryferyjnych: User-0 Mode: zadanie nie ma prawa dostpu do urzdzeD peryferyjnych. User-1 Mode: zadanie ma dostp do wspólnych urzdzeD nie objtych ochron. Supervisor Mode: zadanie ma dostp do wszystkich zasobów systemu oraz do wszystkich rejestrów systemowych. 7.6 Magistrala FPI Jednostka centralna procesora TC-1 Bczy si z urzdzeniami peryferyjnymi umieszczonymi na tym samym chipie za po[rednictwem magistrali FPI (ang. flexible peripherial bus). Jest to to uniwersalna magistrala z 32 liniami adresowymi i 64 liniami danych. Taktowana zegarem 100 MHz mo|e przesyBa do 800 MB/s. Magistral FPI charakteryzuje ponadto: Mo|liwo[ koegzystencji do 16 urzdzeD-nadzorców magistrali (ang. master). Praca synchroniczna. Mo|liwo[ transmisji sBów 8-, 16-, 32- i 64-bitowych. Realizacja pojedynczych przesBaD oraz przesBaD blokowych. Urzdzenia doBczane do magistrali FPI mog aktywnie uczestniczy w realizacji protokoBu transmisji (ang. master) lub by urzdzeniami pasywnymi (ang. slave), których rejestry s zapisywane lub odczytywane przez urzdzenia aktywne. 7.7 Procesor peryferyjny (PCP) Procesor peryferyjny (ang. PCP  peripherial control processor module) przeznaczony jest dla obsBugi urzdzeD zewntrznych zaimplementowanych poza ukBadem procesora. Jego zadaniem jest nadzorowanie transmisji danych od i do obsBugiwanych urzdzeD. UkBad mo|e obsBugiwa do 255 kanaBów logicznych na zasadzie obsBugi |dania przerwania. ObsBugiwanych mo|e by nawet 64 urzdzeD zewntrznych [21] bez konieczno[ci przerywania pracy wBa[ciwej jednostki centralnej. Procesor PCP mo|e przy tym wykonywa nastpujce zadania: Przenosi dane z jednego obszaru pamici do drugiego lub pomidzy pamici a urzdzeniem zewntrznym. Przenosi dane pomidzy pamici wewntrzn procesora PCP i urzdzeniem zewntrznym. 44 Czyta dane, modyfikowa wykonujc na nich operacje arytmetyczne lub logiczne i zapisywa wynik z powrotem. Przenosi dane z jednego miejsca na drugie a| do napotkania w[ród przenoszonych danych okre[lonej warto[ci. Czyta dane, bada ich warto[ i podejmowa na tej podstawie stosowne dziaBania. Czyta dane i dokonywa ich akumulacji. W ten sposób procesor PCP mo|e wykonywa zadania, które w przeciwnym razie musiaBy by zosta wykonane przez jednostk centraln. Np. procesor peryferyjny mo|e: ZaBadowa do rejestru urzdzenia zewntrznego staB w celu inicjalizacji timera. Zmodyfikowa pojedynczy bit lub pole bitowe w rejestrze urzdzenia zewntrznego w celu uruchomienia przetwarzania analogowo/cyfrowego. U[rednia wyniki pomiarów okresu przebiegu. Procesor PCP posiada swój wBasny ukBad arbitra|owy, który wybiera spo[ród wszystkich zgBoszeD to o najwy|szym priorytecie i inicjuje jego obsBug. Programy realizowane przez procesor PCP mog by przechowywane w jego wBasnej pamici wewntrznej lub w pamici danych i wtedy s mu udostpniane za po[rednictwem magistrali FPI. 7.8 Emulator sprztowy Procesor TC-1 wyposa|ony jest w emulator sprztowy doBczony do systemu za po[rednictwem magistrali FPI. Emulator wspomaga nastpujce zadania: ZakBadanie puBapek sprztowych podczas uruchamiania programów. Zledzenie zawarto[ci rejestrów procesora oraz pamici w czasie rzeczywistym. Zledzenie dziaBania urzdzeD peryferyjnych. 8. Podsumowanie Architektura wszystkich typów procesorów wydaje si coraz bardziej ujednolica. Procesory sygnaBowe przejmuj funkcje mikrokontrolerów, mikroprocesory ogólnego przeznaczenia specjalizuj si w wykonywaniu algorytmów cyfrowego przetwarzania sygnaBów, mikrokontrolery przygotowywane s do pracy pod kontrol wielozadaniowego systemu operacyjnego np. Windows CE oraz do przetwarzania sygnaBów. By mo|e niedBugo hasBo jeden miliard tranzystorów, jeden procesor, jeden chip (i jeden system operacyjny  Bill Gates) w ka|dym |yrandolu stanie si rzeczywisto[ci [17]. Literatura [1] Andrew S. Tanenbaum: Organizacja maszyn cyfrowych w ujciu strukturalnym, WNT, Warszawa 1980 [2] M. Morris Mano, Architektura komputerów, WNT, Warszawa 1988 [3] BolesBaw PochopieD, Arytmetyka systemów cyfrowych, Skrypt Pol. Zl. Nr 1548, Gliwice 1990 [4] Stefan Wgrzyn: Systemy sterowane przepBywem operacji i systemy sterowane przepBywem argumentów, Zeszyty Naukowe Pol. Zl., Seria: Informatyka, Z.24, Gliwice 1993, ss.9-19 [5] Stefan Wgrzyn: Przyspieszenie realizacji algorytmów w systemach sterowanych przepBywem argumentów, Zeszyty Naukowe Pol. Zl., Seria: Informatyka, Z.28, Gliwice 1994, ss.67-75 [6] http://www.ti.com/sc/docs/integrat/97dec/dspfirst.html 45 [7] Texas Instruments, TMS320C1x/2x/2xx/5x Assembly Language Tools, Users Guide, 1995 (SPRU018D) [8] Texas Instruments, TMS320C5x Users Guide, 1996 (SPRU056C) [9] Nat Seshan, High VelociTI Processing, IEEE Signal Processing Magazine, Vol. 15, No 2, marzec 1998, ss.86-101 [10] Tsuhan Chen [ed.], VLSI Design and Implementation Fuels Signal-Processing Revolution, IEEE Signal Processing Magazine, Vol. 15, No 1, styczeD 1998, ss.22-37 [11] Manfred Schlett, Trends in Embedded-Microprocesor Design, Computer, Vol 31, No 8, sierpieD 1998, ss.44-49 [12] Carole Dulong, The IA-64 Architecture at Work, Computer, Vol 31, No 7, lipiec 1998, ss.24-32 [13] Jennifer Eyre, Jeff Bier, DSP Processors Hit the Mainstream, Computer, Vol 31, No 8, sierpieD 1998, ss.51-59 [14] Texas Instruments, TMS320C62xx CPU and Instruction Set Reference Guide, styczeD 1997 (SPRU189A) [15] Doug Matzke, Will Physical Scalability Sabotage Performance Gains?, Computer, Vol 30, No 9, wrzesieD 1997, ss.37-39 [16] Keith Diefendorff, Pradeep K. Dubey: How Multimedia Workloads Will Change Processor Design, Computer, Vol 30, No 9, wrzesieD 1997, ss.43-45 [17] Yale N. Patt, Marius Evers, Daniel H. Friendly, Jared Stark: One Billion Transistors, One Uniprocessor, One Chip, Computer, Vol 30, No 9, wrzesieD 1997, ss.51-57 [18] Texas Instruments, TMS320C62xx Peripherals Reference Guide, styczeD 1997, (SPRU190) [19] Texas Instruments, TMS320C62xx Programmer s Guide, styczeD 1997, (SPRU198) [20] Texas Instruments, TMS320C6x Optimizing C Compiler User s Guide, styczeD 1997, (SPRU187A) [21] Siemens A.G., TriCore Architecture Overview Handbook, 22 luty 1999 [22] Siemens A.G., TriCore Architecture Manual, 14 grudzieD 1998 [23] Intel, Using MMX* Technology Instructions to Compute a 16-Bit FIR Filter, Application Note AP-559, http://developer.intel.com/drg/mmx/AppNotes/AP559.htm [24] Intel, MMX Technology Technical Overview, http://developer.intel.com/drg/mmx/Manuals/overview/index.htm [25] Jeff Stevens: DSPs in Communications, IEEE Spectrum, wrzesieD 1998, ss.39-46 [26] Christopher Inacio, Denise Ombres: The DSP Decision: Fixed Point or Floating?, IEEE Spectrum, wrzesieD 1996, ss.72-74 [27] Edward A.Lee, David G.Messerschmitt, Digital Communication, Kluwer Academic Publishers, 1994 [28] John G.Proakis: Digital Communications, McGraw Hill, 1995 [29] Ian Glover, Peter Grant: Digital Communications, Prentice Hall Inc., 1998 [30] Jacek Izydorczyk, Grzegorz PBonka, Grzegorz Tyma: Teoria sygnaBów, wstp, Wydawnictwo Helion, Gliwice 1999 [31] Analog Devices: ASDP-2100 Family User s Manual, 1995 [32] ZSP Corporation: The ZSP16401 Digital Signal Processor, Product Note v0.6, 27 marzec 1998 [33] Grzegorz PBonka, Grzegorz Tyma: Laboratorium Cyfrowego Przetwarzania SygnaBów Instytutu Elektroniki Politechniki Zlskiej, Przegld Telekomunikacyjny + Wiadomo[ci Telekomunikacyjne, nr 10, 1996 46 [34] Analog Devices: ADSP-21160 Technical Specifivation, Rev 3.0, 24 luty 1999 [35] Intel: P6 Family of Processors Hardware Developer s Manual, wrzesieD 1998 [36] http://www.cyrix.com/html/products/mii/index.htm [37] Advanced Micro Devices: AMD-K6 Data Sheet, 1998 47

Wyszukiwarka

Podobne podstrony:
Architektura Komputerów
Architektura Komputerow wiedza
Wirusy komputerowe Architektura komputerów M Ciepły, K Składzień
architektura komputera
Architektura Komputerow lista 3
Architektury Komputerów zagadnienia
Architektura komputerów
Architektura Komputerow Skrypt
Rozdział 01 Komunikacja procesora z innymi elementami architektury komputera
Architektura komputerów i systemy operacyjne
5 Architektura funkcjonalna komputera

więcej podobnych podstron