Organizacja i projektowanie bloków sterowania - kik
Transkrypt
Organizacja i projektowanie bloków sterowania - kik
ORGANIZACJA I PROJEKTOWANIE BLOKÓW STEROWANIA RÓWNOLEGŁYCH JEDNOSTEK PRZETWARZAJĄCYCH PRZEZNACZONYCH DO REALIZACJI W UKŁADACH REPROGRAMOWALNYCH Oleg Maslennikow Politechnika Koszalińska, Wydział Elektroniki i Informatyki, ul. Śniadeckich 2, 75-453 Koszalin email: [email protected] Streszczenie W pracy przedstawiono koncepcję lokalnego sterowania elementami przetwarzającymi równoległej jednostki przetwarzającej i zaproponowano metodę jej realizacji, która, w odróżnieniu od znanych metod, jest w pełni sformalizowana. Poza tym, struktury wewnętrzne otrzymywanych bloków sterowania są prostsze od znanych i dobrze dopasowane do struktur wewnętrznych komórek FPGA, ponieważ zawierają tylko jedno-bitowe kolejki FIFO o niewielkiej długości. Zastosowanie zaproponowanej metody pokazano na przykładzie projektowania bloków sterowania EP dla macierzy procesorowej realizującej metodę podstawienia. 1. WPROWADZENIE W wyniku naukowo-technologicznego rozwoju współczesnej cywilizacji ciągle pojawiają się nowe problemy, których rozwiązanie wymaga coraz większej mocy obliczeniowej. Rozwiązanie większości z nich w czasie rzeczywistym mogą zapewnić tylko jednoukładowe systemy komputerowe SoC (ang. System-on-Chip) zawierające specjalistyczne równoległe jednostki przetwarzające. Obecnie, już na etapie projektowania architektury równoległej jednostki przetwarzającej systemu SoC trzeba uwzględniać kluczowe ograniczenie technologii VLSI, mianowicie to, że zwiększenie częstotliwości pracy układu wymaga zmniejszenia długości wewnętrznych połączeń. Na przykład, dla projektowych reguł technologicznych 0,065 μm, których realizacja zaplanowana jest na 2008 r, wszystkie obliczenia i operacje sterowania wykonywane w ciągu pojedynczego taktu zegarowego będą wykorzystywać tylko około 8% pola powierzchni układu scalonego [1–3]. Wynika stąd, że w procesie projektowania architektur równoległych jednostek przetwarzających dla systemów SoC musi być w maksymalnie możliwym stopniu uwzględniona zasada lokalności połączeń wewnętrznych. Przykładami równoległych architektur z regularną siecią lokalnych połączeń są architektury macierzy procesorowych [4–7], które były realizowane jako układy ASIC już od końca lat 80, ale nie uzyskały dużego rozpowszechnienia głównie z powodu bardzo wąskiej specjalizacji. Wąska specjalizacja oznacza, że zwykle macierz procesorowa przeznaczona jest do realizacji jednego zadanego algorytmu, a jej architektura otrzymywana jest w wyniku odwzorowania tego algorytmu, zwykle zadanego grafem zależności informacyjnych, wykorzystując specjalne metody odwzorowania [4,7–10]. Ponieważ architektura macierzy jest w maksymalnym stopniu dopasowana do operacji i zależności informacyjnych realizowanego algorytmu, ta architektura ma najlepszy stosunek wydajność/złożoność_sprzętowa wśród wszystkich innych architektur równoległych jednostek przetwarzających. Ale wąska specjalizacja macierzy procesorowych powoduje wzrost ich ceny przy realizacji w układach ASIC i uniemożliwia ich szerokie zastosowanie. Realizacja macierzy procesorowych w układach FPGA lub w obszarach reprogramowalnych systemów SoC [11–13] pozwala usunąć wymienione wady, ponieważ struktury wewnętrzne elementów przetwarzających (EP), ich sterowanie i połączenia można łatwo dopasować do wymaganej architektury macierzy. Dlatego realizacja algorytmów regularnych na macierzach procesorowych implementowanych w układach reprogramowalnych jest najbardziej efektywna w porównaniu z realizacją tych algorytmów na innych równoległych systemach (względem kryterium wydajność/cena). Podczas opracowywania metod projektowania architektur macierzy procesorowych otrzymano wiele ważnych rezultatów, jednak sporo problemów, np. dotyczących automatyzacji procesu projektowania i sterowania otrzymaną architekturą, nie zostało w pełni rozwiązanych głównie z powodu braku masowej produkcji takich systemów. W związku z powyższym, w następnym rozdziale pracy przedstawiono koncepcję sterowania lokalnego równoległymi jednostkami przetwarzającymi z architekturą macierzy procesorowych. Jest ona oparta o zasadę systolicznego przetwarzania danych, i zakłada, że w trakcie obliczeń sygnały sterowania (podobnie, jak i dane) zostają przekazywane pomiędzy lokalnymi blokami sterowania (LBS) poszczególnych EP jednostki za pomocą specjalnie to tego celu przeznaczonych i przeważnie krótkich linii sterowania. Dzięki temu realizacja w/w koncepcji pozwala zmniejszyć złożoność lokalnych bloków sterowania, oraz znacznie zmniejszyć liczbę i długość linii sterowania w systemie. Następnie, w rozdziale trzecim zaproponowano opartą o nią metodę projektowania struktur wewnętrznych bloków sterowania dla poszczególnych EP macierzy procesorowej. Opracowana metoda, w odróżnieniu od znanych, jest w pełni sformalizowana. Poza tym, struktury wewnętrzne otrzymywanych bloków LBS są najprostsze wśród znanych oraz dobrze dopasowane do struktur wewnętrznych komórek FPGA, ponieważ zawierają tylko jedno-bitowe kolejki FIFO różnej długości. W rozdziale czwartym zastosowanie zaproponowanej metody jest pokazane na przykładzie projektowania bloków sterowania EP dla macierzy procesorowej realizującej metodę podstawienia. 2. KONCEPCJA STEROWANIA LOKALNEGO ELEMENTAMI PRZETWARZAJĄCYMI RÓWNOLEGŁEJ JEDNOSTKI Obecnie istnieje szereg metod odwzorowania algorytmów regularnych, których zastosowanie pozwala na otrzymanie wysokowydajnych architektur równoległych jednostek przetwarzających SoC o pożądanych parametrach [4, 7 – 10]. Następnym etapem w projektowaniu strukturalnym jest organizacja sterowania otrzymaną architekturą. To oznacza, że, w pewien sposób, jednostka operacyjna każdego EP w trakcie obliczeń powinna otrzymywać kody kolejnych wykonywanych operacji. Sposób ten, oczywiście, zależy od realizacji poszczególnych elementów przetwarzających równoległej jednostki. Na przykład, zakładając, że system SoC zwykle jest przeznaczony do realizacji nie jednego, lecz pewnego zbioru algorytmów, jego EP mogą być sterowane programowo, lub nawet mogą być zbudowane na bazie znanych mikroprocesorów bądź mikrokontrolerów. W obu przypadkach, przed rozpoczęciem obliczeń, muszą być sformowane i zapisane do pamięci programów każdego EP odpowiednie programy wykonawcze (ang. executing programs) [14]. Natomiast, w przypadku realizacji równoległej jednostki w oparciu o układ reprogramowalny, architektura jednostki, struktury wewnętrzne jej EP oraz bloki LBS są za każdym razem dopasowywane do konkretnego algorytmu realizowanego przez jednostkę. To znacząco upraszcza złożoność bloków sterowania, ale nie rozwiązuje problemu opracowania (w sposób systematyczny) ich struktur wewnętrznych lub ich opisu w języku opisu sprzętu. Jedną z możliwych koncepcji organizacji sterowania w tym przypadku jest koncepcja sterowania lokalnego, która jest oparta o ideę maksymalnego uproszczenia bloków sterowania znajdujących się w poszczególnych EP – tzw. lokalnych bloków sterowania (LBS). Koncepcję tę na przykładzie jednowymiarowej macierzy procesorowej ilustruje rys. 1. Koncepcja sterowania lokalnego zakłada istnienie w równoległej jednostce przetwarzającej jednego centralnego bloku sterowania CBS, który ma tylko q jedno-bitowych wyjść (gdzie q – liczba różnych typów operacji w realizowanym algorytmie), przy czym stan aktywny wyjścia z numerem i świadczy o niezbędności wykonania operacji z kodem KOPi w tym EP, do którego to wyjście zostało podłączone. Inaczej mówiąc, wyjście i jest znacznikiem KOPi. W czasie pracy CBS wydaje sygnały sterowania (uaktywniając odpowiednie wyjścia 1, 2, ..., q) tylko do tych elementów przetwarzających, z którymi jest on połączony, tzn. tylko do tych EP, w których odpowiednia operacja (KOP1, KOP2 ,..., KOPq) powinna być wykonana najwcześniej. Np., jeśli i–ta operacja powinna być wykonywana najpierw w j–tym EP, potem w k–tym EP, potem w l–tym EP, itd., to i–te wyjście CBS będzie połączone tylko z i–tym wejściem lokalnego bloku sterowania j–tego EP, natomiast i–te wejścia LBS k–tego i l– tego EP będą połączone z i–tymi wyjściami LBS odpowiednio j–tego i k–tego EP. Poza tym, jeśli różnica w czasie pomiędzy wykonaniem i–tej operacji w j–tym a k–tym EP wynosi p taktów, to sygnał uaktywnienia i–tej operacji będzie przechowywany w ciągu tych p taktów w LBS j–tego EP. W tym celu, w obwodzie łączącym i–te wejście LBS z jego i–tym wyjściem powinna się znaleźć kolejka typu FIFOi złożona z p przerzutników typu D. W związku z tym, zgodnie z koncepcją sterowania lokalnego, LBS i–tego EP będzie zawierał tylko kolejki FIFO różnej długości, których liczba jest równa liczbie różnych typów operacji wykonywanych w i–tym EP, albo (co oznacza to samo) liczbie wejść lub wyjść LBS. 1 CBS 2 … q EP1 EP2 EP3 ... EPh ... LBS LBS LBS LBS ... bloki funkcyjne bloki funkcyjne bloki funkcyjne ... bloki funkcyjne Rys. 1. Koncepcja sterowania lokalnego W porównaniu z innymi koncepcjami sterowania, ta koncepcja pozwala zmniejszyć złożoność LBS poszczególnych EP równoległej jednostki, oraz znacznie zmniejszyć liczbę i długość linii sterowania w systemie. W związku z tym, w następnym rozdziale pracy przedstawiono opracowaną przez autora i w pełni sformalizowaną metodę projektowania bloków sterowania EP, która realizuje opisaną koncepcję. Pozwala to na wykorzystanie zaproponowanej metody w systemach komputerowego wspomagania projektowania CAD, co z kolei owocuje skróceniem czasu i kosztów projektowania systemu. 3. METODA PROJEKTOWANIA BLOKÓW STEROWANIA ELEMENTAMI PRZETWARZAJĄCYMI RÓWNOLEGŁEJ JEDNOSTKI Jeżeli przy pomocy jednej ze znanych metod konstruowania grafów zależności informacyjnych algorytmów regularnych, bądź w sposób heurystyczny, otrzymano graf algorytmu, który musi realizować jednostka, to wówczas informacje o typach poszczególnych wierzchołków GZI mogą być przedstawione za pomocą tabeli 1, gdzie przez xi,j , yi,j oraz cj zaznaczone są odpowiednio granice dolne, granice górne oraz przyrosty współrzędnych kj , (j = 1, ... , n, i = 1, ... , q), q — liczba różnych typów wierzchołków w grafie algorytmu. Przypomnijmy, że graf zależności informacyjnych algorytmu jest jego reprezentacją geometryczną, ponieważ wierzchołki grafu odpowiadają wykonywanym w algorytmie operacjom, a łuki – przekazaniom zmiennych między wierzchołkami [4-10]. Należy również zaznaczyć, że liczba q w tab. 1 nie zawsze jest równa liczbie różnych typów operacji algorytmu, ponieważ dwa wierzchołki mają różne typy wtedy, kiedy odpowiadają wykonaniu różnych operacji lub posiadają różne zbiory wychodzących i wchodzących do nich łuków. Tab. 1. Tabela typów wierzchołków grafu algorytmu Typ wierzchołka 1 2 ... q Współrzędna k1 from to step Współrzędna k2 from to step ... x1,1 x2,1 c1 c1 x1,2 x2,2 c1 xq,2 ... ... ... ... xq,1 y1,1 y2,1 ... yq,1 y1,2 y2,2 ... yq,2 c2 c2 c2 ... Współrzędna kn from to step x1,n x2,n xq,n y1,n y2,n ... yq,n cn cn cn W proponowanej metodzie zakłada się, że n-wymiarowy graf algorytmu oraz m-wymiarowa architektura macierzy procesorowej realizującej ten algorytm zostały już otrzymane, przy czym informacje o typach poszczególnych wierzchołków grafu są przedstawione za pomocą tab.1, natomiast struktura jednostki oraz funkcja szeregująca poszczególne obliczenia w czasie są określone za pomocą macierzy FS(m,n) odwzorowania przestrzennego i wektora FT(1,n) odwzorowania czasowego. Poza tym, zakłada się, że funkcja FT(1,n) jest funkcją liniową. Wtedy dowolny wierzchołek K=( k1 , k2 ,..., kn ), grafu jest realizowany w elemencie przetwarzającym jednostki o współrzędnych WEP(m) = FS (m, n) ⋅ K (n) = (k1* , k 2* ,K, k m* ) (1) T = FT ⋅K + const1 = f1⋅k1 + f2⋅k2 + ... + fn⋅kn + const1 , (2) w momencie czasu gdzie wartość stałej const1 określa się w taki sposób, żeby pierwszy wierzchołek Kmin grafu był realizowany w takcie numer jeden, skąd const1 = 1 - FT ⋅Kmin. Metoda realizująca koncepcję sterowania lokalnego jest oparta na przyjętych założeniach i zawiera następujące kroki: 1. Na podstawie danych z tab. 1 dla każdego typu wierzchołków grafu algorytmu formuje się program (3) umożliwiający otrzymanie listy wierzchołków danego typu wraz z numerem taktu T i współrzędnymi WEP elementu przetwarzającego (lub numerem EP, jeśli m=1), w którym konkretny wierzchołek powinien być realizowany. Przykładowa postać tego programu dla wierzchołków i–tego typu (i = 1, 2, ..., q) jest następująca: for k1 = xi,1 to yi,1 step ci,1 for k2 = xi,2 to yi,2 step ci,2 . . . . . . . . . . . (3) for kn = xi,n to yi,n step ci,n {obliczenie numeru taktu T, w którym wierzchołek będzie realizowany - wzór (2)} {obliczenie współrzędnych EP, w którym wierzchołek będzie realizowany - wzór (1)} {drukowanie obliczonych wartości T i WEP dla wierzchołka (k1 ,k2 ,…,kn)}; endfor . . . . . . . . . . . endfor endfor , gdzie wartości xi,j , yi,j i ci,j (j=1, 2, …, n) są pobierane z i-tego wiersza tab. 1. 2. Uruchamia się program (3), a wyniki jego pracy przedstawiają sobą dwie listy: z numerami taktów oraz z numerami (lub współrzędnymi) elementów przetwarzających, w których dana operacja KOPi będzie wykonywana. Listy te mogą być przedstawione, na przykład, w postaci tabeli 2, która może zawierać kilka wierszy z jednakowym numerem taktu T, jeśli w tym takcie kilka różnych EP wykonuje operację KOPi. Tab. 2. Przykładowa lista numerów taktów i współrzędnych EP Numer taktu T k 5 2 8 5 2 1 1 3 * 1 Współrzędne EP … k* 2 1 2 2 1 … … … … k m* 3 1 1 3 3. Wykonuje się uporządkowanie (sortowanie) wierszy w tabeli 2, w taki sposób, żeby po uporządkowaniu numery taktów były umieszczone w kolejności rosnącej. 4. Na podstawie uporządkowanych danych z tab. 2 określane są połączenia między EP wykonującymi operację KOPi. Odbywa się to w ten sposób, że i-te wyjście LBS EP umieszczonego w wierszu l tabeli 2 (po uporządkowaniu) podłączone zostaje do i-tego wejścia LBS elementu przetwarzającego umieszczonego w wierszu (l+1) tabeli, czyli do tego EP, w którym operacja KOPi powinna być wykonana w najbliższym czasie. Wejście LBS elementu przetwarzającego znajdującego w pierwszym wierszu uporządkowanej tabeli jest podłączone do i-tego wyjścia CBS. W przypadku, kiedy tabela zawiera kilka wierszy (l+1), (l+2), …, (l+z) z jednakowym numerem taktu T, i-te wyjście LBS EP znajdującego się w l–tym wierszu tabeli powinno być podłączone do i-tych wejść LBS wszystkich z EP znajdujących się w tych wierszach. Kolejność tych połączeń może być dowolna, ale najlepszą z nich będzie ta, która daje najmniejszą długość połączeń. 5. Określa się długość kolejek FIFOi znajdujących się w LBS poszczególnych EP. Dla EP znajdującego w l-tym wierszu tabeli 2, w obwodzie łączącym i–te wejście LBS z jego i– tym wyjściem, długość kolejki FIFOi wynosi p komórek (przerzutników typu D), gdzie wartość p jest równa różnicy numerów taktów znajdujących się w (l+1)–szym a l–tym wierszem tabeli 2. Dodatkową zaletą zaprojektowanych w ten sposób bloków sterowania EP jest to, że ich struktura wewnętrzna jest dobrze dopasowana do struktur wewnętrznych komórek układów reprogramowalnych FPGA, ponieważ zawiera tylko jedno-bitowe i nie duże kolejki FIFO. 4. PRZYKŁAD. PROJEKTOWANIE LOKALNYCH BLOKÓW STEROWANIA DLA EP RÓWNOLEGŁEJ JEDNOSTKI REALIZUJĄCEJ METODĘ PODSTAWIENIA Metoda podstawienia jest przeznaczona do rozwiązywania układów równań liniowych postaci A ⋅ x = b , w których macierz współczynników A(N,N)={ aij } jest macierzą trójkątną dolną. Przykładowy algorytm realizujący metodę podstawienia może być przedstawiony za pomocą fragmentu programu (2.34), operującego wyłącznie na elementach macierzy A znajdujących się na przekątnej głównej i poniżej przekątnej głównej. for i = 1 to N step 1 for j = 1 to i-1 step 1 b(i)= b(i) - a(i, j)*x(j) endfor x(i)= b(i)/ a(i, i) endfor (4) Graf bazowy G1 zależności informacyjnych algorytmu (4) jest dwuwymiarowy i zawiera dwa typy wierzchołków. Wierzchołki pierwszego typu odpowiadają obliczeniu pierwiastków x(i), natomiast wierzchołki drugiego typu – modyfikacji elementów wektora b. Dla przypadku N = 7 graf G1 przedstawiony został na rys. 2.a, gdzie wierzchołki pierwszego typu zaznaczone są czarnym kolorem. Rys.2.b przedstawia przekształcony graf bazowy G2, cechujący się prawie dwukrotnie mniejszą szerokością wzdłuż osi j. Liczba różnych typów wierzchołków w nowym grafie G2 wynosi q = 6. Tabela 3 zawiera informacje o lokalizacji wierzchołków poszczególnych typów w grafie G2. a) b) j j* b1 i 1,1 x1 b2 b3 1,2 1,3 1,4 2,3 2,4 2,2 x2 b4 3, 3 x3 b5 b6 1,5 2,5 b7 1,6 1,7 2,6 2,7 3,4 3,5 3,6 3,7 4,4 4,5 4,6 4,7 5,6 5,7 6,6 6,7 i* 1,1 (1,1) (1,2) (2,1) (1,3) 1,2 (2,2) 2,2 (3,1) (3,2) 5,5 (4,3) 2,3 x5 (6,1) x6 7,7 4,4 (2,4) 1,3 (3,3) 3,3 (5,1) x4 (1,4) 3,4 1,4 (4,4) 2,4 (5,3) 1,5 (5,4) 1,6 (6,3) 2,5 (6,4) 1,7 (8,1) 2,6 4,5 (8,2) 2,7 (8,3) (7,4) 3,6 (8,4) 3,7 (9,4) x7 c) 5,5 EP1 EP2 LBS EP3 LBS LBS 4,6 5,6 EP4 LBS (11,2) 4,7 5,7 (11,3) 6,6 bloki funkcyjne bloki funkcyjne bloki funkcyjne bloki funkcyjne (12,3) 6,7 x b (13,1) 7,7 Rys. 2. Graf bazowy G1 (a) i przekształcony G2 (b) oraz architektura S2 macierzy procesorowej (c) realizującej metodę podstawienia W celu otrzymania architektury macierzy procesorowej realizującej algorytm (4), wykorzystano funkcje odwzorowania przestrzennego FS = [i * j*] = [0 1] oraz odwzorowania szeregującego FT =[1 0]. W ten sposób powstaje architektura S2 równoległej jednostki przetwarzającej (przedstawiona na rys. 2c) posiadająca (N+1)/2 elementów przetwarzających (dwóch różnych typów), jedno wejście (magistralę) do wprowadzenia elementów wektora b, i jedno wyjście dla wyprowadzenia wyników – elementów wektora x. Tab. 3. Typy poszczególnych wierzchołków grafu G2 metody podstawienia Typy KOP from 1 2 3 4 5 6 1 j* N – j*+2 3 j* + 2 N – j* + 4 Współrzędna i* to 1 j* N – j*+2 2 ⋅N – 1 2⋅N – j* N + j* – 2 Współrzędna j* to step from 1 1 1 2 2 2 1 2 (N+1)/2 1 2 (N+1)/2 1 (N+1)/2 2 1 (N+1)/2 3 step 1 1 –1 1 1 –1 Struktury wewnętrzne pierwszego oraz j*-tego EP (j*=2, 3,..., (N-1)/2) bez bloków LBS przedstawiono odpowiednio na rys. 3a i rys. 3b, gdzie DC oznacza dekoder przekształcający kod operacji KOP w sygnały sterujące poszczególnymi blokami funkcyjnymi, MUX oznacza multiplekser, DIV – blok dzielenia, R – rejestr, SM – sumator, MUL – blok mnożący, a FIFO – kolejkę o długości N komórek. Należy zaznaczyć, że linie przerywane w blokach MUX pokazują przepływ danych w przypadku podania jedynki logicznej na odpowiednie wejścia sterujące, a rejestry R2 i R3 pełnią rolę elementów opóźniających o jeden takt zegarowy. a) b) KOP EP1 KOP EPj* DC DC MUX MUX1 “1” „1” SM R1 DIV R MUL F I F O F I F O MUX2 „1” R2 b1 R3 bj Rys. 3. Struktury wewnętrzne elementów przetwarzających architektury S2 Przykładowa postać programu (3) dla wierzchołków trzeciego typu (KOP3) reprezentuje konstrukcja (5). for j* = (N+1)/2 to 2 step -1 for i* = (N - j* + 2) to (N - j* + 2) step 1 T = i* numerEP = j* endfor endfor . (5) Wyniki pracy programu (5), jak i programów dla pozostałych kodów KOP, opracowanych zgodnie z szablonem (3), formują listy z numerami taktów oraz z numerami EP, w których odpowiednie operacje KOP będą wykonywane. Listy te (posortowane według zwiększenia wartości T) dla wszystkich numerów KOP są umieszczone w tabeli 4. Tab. 4. Lista z numerami taktów i EP, w których odpowiednie operacje KOP będą wykonywane. KOP1 T EP 1 1 KOP2 T EP 2 2 3 3 4 4 KOP3 T EP 5 4 6 3 7 2 KOP4 T EP 3 1 5 1 7 1 9 1 11 1 13 1 KOP5 T EP 4 2 5 3 6 4 6 2 7 3 8 4 8 2 9 3 10 4 10 2 11 3 12 4 KOP6 T EP 7 4 8 3 9 4 Analiza danych z pierwszych dwóch kolumn tabeli 4 świadczy, że sygnał KOP1 będzie podawany z wyjścia centralnego bloku sterowania na wejście LBS pierwszego EP i nie będzie przekazywany do żadnego innego EP jednostki. To samo dotyczy sygnału sterującego KOP4. Z tego powodu, LBS pierwszego EP będzie zawierał tylko dwie linie doprowadzające wymienione sygnały do dekodera DC, który z kolei przekształca te sygnały w sygnały sterowania multiplekserem MUX i zapisu do rejestru R zgodnie z następującymi wzorami: MUX = KOP1 i R = KOP1 ⋅ KOP4 ∨ KOP4 ⋅ KOP1 . (6) Analiza trzeciej i czwartej kolumny tab. 4 wykazuje, że drugie wyjście CBS (odpowiadające operacji KOP2) będzie połączone tylko z wejściem LBS drugiego EP, natomiast z wyjścia tego LBS sygnał KOP2 będzie przekazany z opóźnieniem o jeden takt na wejście LBS trzeciego EP, a z jego wyjścia (też z opóźnieniem o 1 takt) na wejście LBS czwartego EP. W ten sam sposób będą połączone wejścia LBS drugiego, trzeciego i czwartego EP w celu przekazania sygnału KOP5. W wyniku tego powstaje ostateczna architektura jednostki przetwarzającej uwzględniająca struktury wewnętrzne LBS wszystkich EP i cechująca się wyłącznie lokalnymi połączeniami. Dla przypadku N=7 ta architektura została przedstawiona na rys. 4, gdzie cyfry umieszczone obok wyjść bloku CBS oznaczają numery KOP, a przekreślone kwadraciki przerzutniki typu D. Dekodery DC elementów przetwarzających z numerami od 2 do (N+1)/2 przekształcają otrzymywane sygnały KOP2, KOP3, KOP5 i KOP6 w sygnały sterowania multiplekserów MUX1 i MUX2 oraz w sygnał zapisu do rejestru R1 zgodnie z następującymi wyrażeniami: MUX 1 = KOP2 ∨ KOP3 , MUX 2 = KOP2 ∨ KOP5 R1 = KOP2 ⋅ KOP3 ⋅ KOP5 ⋅ KOP6 ∨ KOP3 ⋅ KOP2 ⋅ KOP5 ⋅ KOP6 ∨ ∨ KOP5 ⋅ KOP3 ⋅ KOP2 ⋅ KOP6 ∨ KOP6 ⋅ KOP3 ⋅ KOP5 ⋅ KOP2 (7) . CBS 1 4 5 2 EP1 3 6 EP2 LBS bloki funkcyjne EP3 EP4 LBS LBS LBS bloki funkcyjne bloki funkcyjne bloki funkcyjne x b Rys. 4. Architektura S2 macierzy procesorowej wraz z blokami sterowania LBS i CBS Praca bloku CBS polega na ustawieniu jedynek logicznych na swoich wyjściach we właściwych momentach czasu. Tabelę pracy bloku CBS tworzy się na podstawie danych z tab. 4, poprzez usunięcie z niej wszystkich wierszy z numerami EP, z którymi CBS nie ma połączeń bezpośrednich. Dla przypadku N = 7 jest ona przedstawiona w tabeli 5. Należy zaznaczyć, że np. zwiększenie rozmiaru N macierzy danych wejściowych do rozmiaru N1, spowoduje pojawienie się w jednostce (N1 – N)/2 dodatkowych EP oraz wydłużenie czasu realizacji algorytmu o (N1 – N) taktów. Jednak struktura wewnętrzna poszczególnych LBS, jak i bloków funkcyjnych EP jednostki wraz z siecią ich połączeń zostaną bez zmian. Ważność tej zalety rośnie w przypadku realizacji systemu SoC lub jego jednostki przetwarzającej w układach reprogramowalnych. Tab. 5. Tabela pracy bloku CBS architektury S2 KOP1 T EP 1 1 KOP2 T EP 2 2 KOP3 T EP 5 4 KOP4 T EP 3 1 5 1 7 1 9 1 11 1 13 1 KOP5 T EP 4 2 6 2 8 2 10 2 KOP6 T EP 7 4 9 4 5. PODSUMOWANIE Na podstawie wykonanej w niniejszej pracy analizy ustalono, że architektury macierzy procesorowych mają najlepszy stosunek wydajność/złożoność_sprzętowa wśród innych możliwych architektur równoległych jednostek przetwarzających dla jednoukładowych systemów czasu rzeczywistego; oraz że realizacja algorytmów regularnych na macierzach procesorowych implementowanych w układach reprogramowalnych jest najbardziej efektywna w porównaniu z realizacją tych algorytmów na innych równoległych systemach (względem kryterium wydajność/cena). W związku z tym, przedstawiono koncepcję sterowania lokalnego równoległymi jednostkami przetwarzającymi z architekturą macierzy procesorowych, która jest oparta o zasadę systolicznego przetwarzania danych, i zakłada, że w trakcie obliczeń sygnały sterowania (podobnie, jak i dane) zostają przekazywane pomiędzy lokalnymi blokami sterowania poszczególnych elementów przetwarzających jednostki za pomocą specjalnie to tego celu przeznaczonych i przeważnie krótkich linii sterowania. Dzięki temu realizacja w/w koncepcji pozwala zmniejszyć złożoność lokalnych bloków sterowania, oraz znacznie zmniejszyć liczbę i długość linii sterowania w systemie. W oparciu o tę koncepcję opracowano metodę projektowania struktur wewnętrznych bloków sterowania dla poszczególnych EP macierzy procesorowej, która w odróżnieniu od znanych, jest w pełni sformalizowana. Poza tym, struktury wewnętrzne otrzymywanych bloków sterowania są najprostsze wśród znanych oraz dobrze dopasowane do struktur wewnętrznych komórek FPGA, ponieważ zawierają tylko jedno-bitowe kolejki FIFO o niewielkiej długości. Pozwala to na wykorzystanie zaproponowanej metody w systemach komputerowego wspomagania projektowania CAD, co z kolei owocuje skróceniem czasu i kosztów projektowania systemu. LITERATURA [1] Matzke D. Will Physical Scalability Sabotage Performance Gains? Computer, Vol.30, N.9, 1997, s. 37–39. [2] Berthet C.: Going Mobile: The Next Horizont for Multi-million Gate Designs in the SemiConductor Industry. Proc. Int.Conf. DAC’2002, 2002, s. 375–378. [3] Lackey D.E., Zuchowski P.S.: Designing Mega-ASICs in Nanogate Technologies. Proc. Int.Conf. DAC’2003, 2003, s. 769–775. [4] Quinton P., Robert Y. Systolic algorithms and architectures. Prentice Hall, Engl. Cliffs, 1991. [5] Kucharew G. A., Tropczenko A. Ju., Szmerko W. P.: Sistoliczeskie procesory dla obrabotki signalow. Minsk, Białoruś, 1988, 127 s. [6] Moreno J.H., Lang T. Matrix computations on systolic-type arrays. Kluwer Acad.Publ., 1992. [7] S. Y. Kung. VLSI Array Processors. Englewood Cliffs, N.J., Prentice Hall, 1988. [8] Cosnard M. Designing parallel algorithms for linearly connected processors and systolic arrays. Advances in Parallel Computing, 1990, v.1, s. 273–317. [9] Barada H., and El-Amawy A.: A methodology for algorithm regularization and mapping into time-optimal VLSI arrays. Parallel Computing, 1993, N 19, s. 33–61. [10] Wyrzykowski R., Kanevski J.S., Maslennikov O. Mapping recursive algorithms into processor arrays. Proc. Int. Workshop „Parallel Numerics'94”, Smolenice, (Slovakia), 1994, pp.169-191. [11] Abramovici M., Stroud C., Emmert M.: Using Embedded FPGAs for SoC Yield Improvement. Proc. Int.Conf. DAC’2002, 2002, р. 713–720. [12] Zeidman B. The Future of Programmable Logic. Embedded Systems Programming, 10/2/2003. [13] Takahashi D. Reconfigurable chips make a comeback. Electronic Business, 8/1/2003. [14] Maslennikov O. Systematic generation of executing programs for processor elements in parallel ASIC or FPGA-based systems and their transformation into VHDL-descriptions of the processor element control units. Lecture Notes in Computer Science, Springer, 2002, Vol.2328, s. 272–279. ORGANIZATION AND DESIGN OF CONTROL BLOCKS FOR PARALLEL PROCESSING UNITS DESTINED FOR IMPLEMENTATION IN REPROGRAMMABLE DEVICES Oleg Maslennikow Technical University of Koszalin, Department of Electronics and Informatics, ul. Sniadeckich 2, 75-453 Koszalin email: [email protected] Abstract In this paper, the conception of the control of parallel processing units with processor array architecture, named the local control conception, is presented. This conception is based on the idea of the systolic type distribution of control signals between processor elements in the target parallel processing unit. Realization of this conception causes the cardinally reduction of numbers and lengths of the control lines in the target architecture in comparison with others known control conceptions, as well as the reduction of a complexity of local control units in their implementation in reconfigurable FPGA-based devices. Then, the method of the design of local control unit internal structures is proposed. This method is based on the above conception and is fully formalized. This method has been used for design of local control units for processor array architecture destined for realization of the forward substitution algorithm.