KOSYNTEZA SAMOREKONFIGUROWALNYCH SYSTEMÓW SOPC CO-SYNTHESIS OF SELF-RECONFIGURABLE SOPC SYSTEMS

Podobne dokumenty
Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Systemy wbudowane. Cel syntezy systemowej. Wykład 12: Przykłady kosyntezy systemów wbudowanych

Programowalne Układy Logiczne Konfiguracja/Rekonfiguracja

Metody optymalizacji soft-procesorów NIOS

Systemy na Chipie. Robert Czerwiński

Kosynteza dynamicznie samorekonfigurowalnych systemów wbudowanych

Projektowanie systemów wbudowanych: kosynteza metodą programowania genetycznego oraz przydział nieprzewidzianych zadań

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Budowa i zasada działania komputera. dr Artur Bartoszewski

Programowanie współbieżne Wykład 2. Iwona Kochańska

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

KOSYNTEZA SYSTEMÓW SOC METODĄ ROZWOJOWEGO PROGRAMOWANIA GENETYCZNEGO

Mikroprocesor Operacje wejścia / wyjścia

Magistrala systemowa (System Bus)

dr inż. Jarosław Forenc

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji

Wykorzystanie układów FPGA w implementacji systemów bezpieczeństwa sieciowego typu Firewall

Budowa komputera Komputer computer computare

Struktura i działanie jednostki centralnej

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

System plików. Warstwowy model systemu plików

Bezpieczeństwo informacji oparte o kryptografię kwantową

Implementacja algorytmu szyfrującego

AiSD zadanie trzecie

Przykładowe pytania DSP 1

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Katedra Mikroelektroniki i Technik Informatycznych

Sterowniki Programowalne (SP)

Kurs Zaawansowany S7. Spis treści. Dzień 1

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

LEKCJA TEMAT: Zasada działania komputera.

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

PROJEKT I OPTYMALIZACJA STRUKTURY LOGICZNEJ DYDAKTYCZNEGO SYSTEMU MIKROPROCESOROWEGO DLA LABORATORIUM PROJEKTOWANIA ZINTEGROWANEGO

Modularny system I/O IP67

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Zarządzanie pamięcią operacyjną

Elementy cyfrowe i układy logiczne

2 Kryptografia: algorytmy symetryczne

8. MAGISTRALE I GNIAZDA ROZSZERZEŃ. INTERFEJSY ZEWNĘTRZNE.

Algorytmy i Struktury Danych

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Zarządzanie pamięcią w systemie operacyjnym

Układy reprogramowalne i SoC Implementacja w układach FPGA

Działanie i charakterystyka sterownika GE FANUC VersaMaxNano

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Architektura komputerów. Układy wejścia-wyjścia komputera

ARCHITEKTURA PROCESORA,

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

FPGA, CPLD, SPLD. Synteza systemów reprogramowalnych 1/27. dr inż. Mariusz Kapruziak pok. 107, tel

Magistrale i gniazda rozszerzeń

Projektowanie układów na schemacie

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Sposoby projektowania systemów w cyfrowych

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

Opracował: Jan Front

Systemy wbudowane. Paweł Pełczyński

Realizacja bezpiecznego programowalnego sterownika logicznego z wykorzystaniem języków HDL

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Maciej Piotr Jankowski

Współczesne techniki informacyjne

5c. Sieci i przepływy

Szybkie prototypowanie w projektowaniu mechatronicznym

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

Język opisu sprzętu VHDL

PROBLEM ROZMIESZCZENIA MASZYN LICZĄCYCH W DUŻYCH SYSTEMACH PRZEMYSŁOWYCH AUTOMATYCZNIE STEROWANYCH

Procesory w FPGA H D L. dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Sortowanie topologiczne skierowanych grafów acyklicznych

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 8. Układy ciągłe. Regulator PID

Urządzenia wejścia-wyjścia

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Magistrale na schematach

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Wykład 3: Implementacja programów wbudowanych

PROJEKTOWANIE UKŁADÓW MIKROPROGRAMOWANYCH Z WYKORZYSTANIEM WBUDOWANYCH BLOKÓW PAMIĘCI W MATRYCACH PROGRAMOWALNYCH

SPOTKANIE 6: Klasteryzacja: K-Means, Expectation Maximization

AUTOMATYZACJA PROCESÓW DYSKRETNYCH 2016

Architektura komputerów

Automatyka i Robotyka studia stacjonarne drugiego stopnia

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Algorytmy przeszukiwania wzorca

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

Integracja systemów transakcyjnych

Podstawy Projektowania Przyrządów Wirtualnych. Wykład 9. Wprowadzenie do standardu magistrali VMEbus. mgr inż. Paweł Kogut

Transkrypt:

RADOSŁAW CZARNECKI, STANISŁAW DENIZIAK KOSYNTEZA SAMOREKONFIGUROWALNYCH SYSTEMÓW SOPC CO-SYNTHESIS OF SELF-RECONFIGURABLE SOPC SYSTEMS Streszczenie Wzrost złożoności współcześnie produkowanych układów FPGA umożliwił implementowanie w jednym układzie FPGA całych systemów komputerowych (SOPC). W artykule zaprezentowano metodę automatycznej syntezy dynamicznie samorekonfigurowanych systemów SOPC. Architektury dynamicznie rekonfigurowalne pozwalają na dużo lepsze wykorzystanie dostępnych zasobów sprzętowych przez wielokrotne ich użycie w różnych funkcjach w ramach działania tej samej aplikacji. Możliwe jest to dzięki częściowo rekonfigurowalnym układom FPGA. Zaprezentowany rafinacyjny algorytm kosyntezy maksymalizuje szybkość projektowanego systemu SOPC przy zadanym ograniczeniu powierzchni układu FPGA. Algorytm w rozwiązaniu startowym przyporządkowuje wszystkie zadania do wykonania w jednym procesorze uniwersalnym. Następnie iteracyjnie generuje nowe rozwiązania przez modyfikacje poprzednich. Algorytm uwzględnia czas rekonfigurowania układu w szeregowaniu zadań w taki sposób, aby zminimalizować wpływ tego czasu na szybkość całego systemu. Wykonane eksperymenty wykazały dużą skuteczność opracowanej metody w porównaniu z implementacją bez stosowania dynamicznej rekonfigurowalności. Słowa kluczowe: FPGA, kosynteza, dynamiczna rekonfiguracja, samorekonfiguracja Abstract In this work a co-synthesis method, which allows for optimization of dynamically self-reconfigurable SOPC system architecture, is presented. Partially reconfigurable FPGAs let better use hardware resources due to reuse of the same parts of the chip for different functionalities in the same application. The algorithm maximizes speed of the SOPC system taking into consideration FPGA s area constraints. The algorithm starts with the initial solution, where all tasks are assigned to only one general purpose processor module. Next it produces new solutions using iterative improvement methods. The reconfiguration times are taken into consideration in task s scheduling algorithm, in such way, that impact of this time on the system s performance is minimized. Co-synthesis results for dynamically reconfigurable SOPCs have been compared with the results of co-synthesis which didn t take into consideration dynamic reconfiguration. Experimental results showed that applying partially reconfigurable FPGAs significantly increases SOPC performance. In dynamically reconfigurable systems tasks are mostly executing in hardware. Keywords: FPGA, co-synthesis, dynamic reconfiguration, self-reconfiguration Mgr inż. Radosław Czarnecki, dr hab. inż. Stanisław Deniziak, Samodzielne Laboratorium Informatyki Technicznej, Wydział Inżynierii Elektrycznej i Komputerowej, Politechnika Krakowska.

4 Oznaczenia G (V, E) skierowany, acykliczny graf zadań v i zadanie nr i c ij krawędź grafu d ij waga związana z krawędzią GPP procesor uniwersalny VC komponent sprzętowy CL łącze komunikacyjne RS sektor układu FPGA Cu i powierzchnia procesora/sektora w FPGA CM i maksymalna wielkość przydzielonych zadań C(v i ) powierzchnia lub zajętość pamięci dla zadania i T(v i ) czas obliczeń dla zadania i CC i powierzchnia zajmowana przez łącze komunikacyjne b i przepustowość łącza komunikacyjnego E miara jakości rozwiązań 1. Wstęp Współcześnie produkowane układy FPGA umożliwiają implementowanie w jednym układzie całych systemów komputerowych (ang. System on a Programmable Chip SOPC), również złożonych z wielu procesorów. Dostępne są gotowe procesory w formie modułów IP (ang. Intellectual Property), np. Nios II firmy Altera, MikroBlaze firmy Xilinx, lub w formie rdzenia procesora na stałe wbudowanego w układ FPGA, np. PowerPC w układach Virtex II Pro/4 firmy Xilinx. Ogromne możliwości układów FPGA wzbudzają coraz większe zainteresowanie w dziedzinie implementacji wbudowanych systemów cyfrowych (ang. embedded systems) [13]. Jedną z ważniejszych zalet stosowania układów FPGA do implementacji systemów wbudowanych jest możliwość dynamicznej rekonfiguracji. Systemy dynamicznie rekonfigurowane opierają się na koncepcji tzw. wirtualnego sprzętu [14]. W systemach tych pewne moduły sprzętowe są rekonfigurowane w trakcie działania systemu i w ten sposób mogą realizować różne funkcje w różnym czasie. Dzięki temu możliwe jest odwzorowanie większej liczby obliczeń w ten sam sprzęt niż w przypadku systemu bez dynamicznej rekonfigurowalności. Pozwala to na uzyskanie systemów szybszych lub tańszych [4]. Ze względu na możliwości dynamicznej rekonfiguracji możemy wyróżnić następujące typy układów FPGA: układy jednokontekstowe, które są zawsze reprogramowane w całości (np. układy FPGA firmy Altera). Dynamiczną rekonfigurację można uzyskać przez implementację wieloukładową, tzn. podczas gdy część układów pracuje, pozostała część jest rekonfigurowana. Jednak ze względu na długi czas reprogramowania całych układów oraz duży koszt implementacji systemów wieloukładowych, efektywne wykorzystanie jednokontekstowych FPGA w systemach dynamicznie rekonfigurowanych jest bardzo trudne; układy wielokontekstowe, które pamiętają jednocześnie kilka konfiguracji. Rekonfigurowanie polega na przełączeniu pamięci konfiguracji i odbywa się bardzo szybko. Po-

wstały laboratoryjne prototypy takich układów [15]. Aktualnie jednak nie ma na rynku dostępnych żadnych układów tego typu; układy z częściową rekonfigurowalnością, w których można reprogramować tylko część komórek logicznych, podczas gdy pozostałe pracują w trybie normalnym. Reprogramowanie fragmentów układu jest bardzo szybkie (od kilku μs), dzięki czemu łatwiej jest zrównoleglić reprogramowanie z obliczeniami. Aktualnie dostępnych jest wiele układów z częściową rekonfiguracją, np. układy Virtex, Vitrtex II, Virtex 4, Spartan 3 firmy Xilinx, AT40K firmy Atmel. W artykule przedstawiono metodę automatycznej kosyntezy dynamicznie samorekonfigurowanych wieloprocesorowych systemów SOPC. Zaprezentowany algorytm maksymalizuje szybkość projektowanego systemu SOPC przy zadanym ograniczeniu powierzchni układu FPGA. Algorytm w rozwiązaniu startowym przyporządkowuje wszystkie zadania do wykonania w jednym procesorze uniwersalnym. Następnie iteracyjnie generuje nowe rozwiązania poprzez modyfikacje poprzednich. Algorytm uwzględnia czas rekonfigurowania fragmentów FPGA w szeregowaniu zadań w taki sposób, aby zminimalizować wpływ tego czasu na szybkość całego systemu. Jest to modyfikacja algorytmu [5] opracowanego dla wielokontekstowych FPGA, w którym czas rekonfiguracji można było pominąć. Zgodnie z wiedzą autorów jest to pierwszy algorytm kosyntezy rekonfigurowanych systemów SOPC, opartych na częściowo rekonfigurowanych FPGA. Kolejny rozdział stanowi przegląd dotychczas stosowanych rozwiązań w zakresie projektowania systemów dynamicznie rekonfigurowanych. W rozdziale 3 sformułowano problem. W rozdziale 4 opisano prezentowaną metodę syntezy. W rozdziale 5 przedstawiono opis samorekonfigurujących się systemów SOPC, projektowanych z zastosowaniem przedstawionej metody. W rozdziałach 6 i 7 zawarto wyniki eksperymentów oraz wnioski. 5 2. Systemy dynamicznie rekonfigurowane Jednym z pierwszych algorytmów kosyntezy dynamicznie rekonfigurowanych systemów wbudowanych jest CORDS [8]. Algorytm minimalizuje koszt systemu poprzez szukanie najtańszej architektury złożonej z układów FPGA i procesorów. W pracy [3] zaprezentowano algorytm kosyntezy dla architektury złożonej z jednego procesora i dynamicznie rekonfigurowanego układu FPGA. W obu przypadkach synteza wykonywana była na podstawie specyfikacji systemu w formie grafów zadań. Również w [11] zastosowano architekturę z jednym procesorem, ale przyjęto specyfikację w formie hierarchicznego FSM oraz grafu SDF. W kompilatorze Nimble [12] programy w języku C są odwzorowywane w system złożony z jednego procesora i dynamicznie rekonfigurowanego FPGA. Opracowano również wiele środowisk do implementacji systemów dynamicznie rekonfigurowanych. W [10] przedstawiono środowisko do implementacji systemów zbudowanych z modułów IP. Moduły te są rozmieszczane w wyznaczonych sektorach układu FPGA, połączonych ze sobą standardową szyną. Dynamiczna rekonfiguracja polega na wymianie modułu IP, natomiast połączenia pozostają bez zmian. Środowisko PaDReH [2] zawiera kompletny zestaw narzędzi do projektowania, walidacji i implementacji dynamicznie rekonfigurowanych systemów, w całości implementowanych w sprzęcie. W [9] implementacja polega na odwzorowaniu grafu zadań w zadaną architekturę. W środowisku SRP [1] przedstawiono platformę do tworzenia systemów dynamicznie rekonfigurowanych

6 przez procesor wbudowany w układ FPGA. W takim systemie nie ma potrzeby stosowania dodatkowych układów sterujących rekonfiguracją. Żadna ze znanych z literatury metod automatycznej syntezy dynamicznie rekonfigurowanych systemów wbudowanych nie uwzględnia implementacji systemu w formie wieloprocesorowego systemu SOPC. W większości tych metod stosowane są przestarzałe i nieprodukowane już układy FPGA. Okazuje się, że implementacja dynamicznie rekonfigurowanych systemów SOPC we współczesnych układach FPGA przebiega nieco inaczej: 1. Dodanie do projektowanej architektury nowego procesora uniwersalnego (w formie modułu IP) nie musi zwiększać kosztu systemu (jak to przyjmuje się w dotychczas stosowanych metodach), ale zmniejsza powierzchnię układu dostępną dla modułów sprzętowych. 2. Istnieją dwie metody częściowej rekonfiguracji: modułowa i różnicowa [16]. W metodzie różnicowej reprogramowane są dowolne komórki logiczne ta metoda zalecana jest jedynie w przypadkach gdy rekonfigurowane są niewielkie fragmenty FPGA. Dla systemów wbudowanych bardziej odpowiednia jest rekonfiguracja modułowa, w której reprogramowane są całe bloki komórek FPGA. Narzuca to pewne ograniczenia, gdyż systemów zaprojektowanych za pomocą dotychczasowych metod nie da się zaimplementować. W układach firmy Xilinx rekonfigurowane bloki mają wysokość równą wysokości układu FPGA, natomiast szerokość bloku jest wielokrotnością 4 klasterów (2 komórek CLB). Komórki znajdujące się w różnych blokach komunikują się przez specjalne szyny bus macro. Nie jest możliwa rekonfiguracja bloku położonego pomiędzy komunikującymi się blokami. Układy FPGA mogą być rekonfigurowalne przez zewnętrzny sterownik lub wewnętrznie poprzez specjalny port ICAP (ang. Internal Configuration Access Port) [1]. Drugie rozwiązanie nie wymaga stosowania żadnych dodatkowych układów i pozwala na implementację w formie samorekonfigurującego się systemu SOPC. Sterowanie rekonfiguracją może odbywać się przez wyspecjalizowany sterownik zaimplementowany w układzie FPGA bądź przez wbudowany procesor (np. Xilinx MicroBlaze, PowerPC). Algorytm prezentowany w tej pracy jest rozwinięciem metody [6], w której nie uwzględniono opisanych wyżej ograniczeń specyficznych dla najnowszych, częściowo rekonfigurowalnych układów firmy Xilinx oraz możliwości samorekonfiguracji systemu SOPC. Metoda [6] jest uniwersalna dla układów częściowo rekonfigurowalnych i może być podstawą do projektowania dynamicznie rekonfigurowalnych systemów SOPC opartych na układach innych firm. 3. Sformułowanie problemu Założono, że system reprezentowany jest w postaci acyklicznego i skierowanego grafu zadań G (V, E). Węzeł v i grafu G reprezentuje i-te zadanie. Krawędzie c ij reprezentują komunikację pomiędzy zadaniami v i i v j. Zadanie v j może się rozpocząć dopiero po zakończeniu zadania v i. Waga d ij związana z krawędzią określa liczbę przesyłanych danych pomiędzy dwoma komunikującymi się zadaniami. Transfer danych jest wykonywany niezależnie od przetwarzania danych. Przykładowy graf G przedstawiono ryc. 1.

7 V0 V1 V7 V2 V3 V14 V5 V8 V4 V6 V9 V10 V11 V12 V13 Ryc. 1. Graf zadań G Fig. 1. Taks graph G Dla każdego zadania określone są takie parametry, jak: powierzchnia zajmowana przez komponent sprzętowy wykonujący zadanie lub zajętość pamięci w przypadku implementacji programowej, oznaczane jako C i (v j ), oraz czas wykonania zadania T i (v j ). Wartości C i (v j ) i T i (v j ) są znane dla poszczególnych modułów lub mogą być ustalone metodami przybliżonymi. Założono, że docelowa architektura będzie się składać z procesorów uniwersalnych (GPP) i dynamicznie rekonfigurowalnych sektorów (RS), komunikujących się przez łącza komunikacyjne (CL). Moduły sprzętowe (VC) są rozmieszczone w sektorach RS. Sektor może pomieścić w danej chwili jeden lub kilka VC wykonujących zadania równolegle. Po zakończeniu wszystkich zadań sektor jest rekonfigurowany w celu alokacji kolejnych modułów VC. Rozmiary sektorów są określane na podstawie wielkości modułów VC oraz wymagań związanych z rekonfiguracją modułową. Algorytm wyznaczania dozwolonych rozmiarów sektorów zostanie omówiony w kolejnym rozdziale. Czas rekonfiguracji sektora jest określany na podstawie T r czasu rekonfiguracji jednej komórki logicznej (na podstawie danych katalogowych). Zakłada się, że istnieje dodatkowy procesor wbudowany GPPs, który zajmuje się tylko rekonfiguracją sektorów. Z każdym procesorem uniwersalnym i sektorami związane są takie parametry, jak: powierzchnia zajmowana przez procesor/sektor w układzie FPGA (Cu i ) oraz parametr maximum memory load (CM i ), który jest określany dla procesora uniwersalnego i oznacza maksymalną wielkość pamięci procesora. W tablicy 1 przedstawiono parametry przykładowego systemu z ryc. 1. Tablica 1 Zadanie Parametry komponentów i zadań GPP (Cu = 203 CLB) T i (v j ) C [μs] i (v j ) T i (v j ) [μs] VC T r = 0,86 μs C i (v j ) [CLB] v 0 406 29 49 215 v 1 765 25 52 317 v 2 650 24 33 10 v 3 713 7 29 96 v 4 236 44 70 156

8 cd. tabl. 1 GPP (Cu = 203 CLB) VC T r = 0,86 μs Zadanie T i (v j ) T C [μs] i (v j ) i (v j ) C i (v j ) [μs] [CLB] v 5 608 52 77 303 v 6 335 42 65 216 v 7 832 58 58 226 v 8 229 56 70 321 v 9 250 80 20 198 v 10 552 28 92 228 v 11 508 21 55 157 v 12 504 36 1 121 v 13 64 33 33 161 v 14 515 10 15 209 Łącza komunikacyjne charakteryzują się następującymi parametrami: powierzchnia zajmowana przez łącze CC i, przepustowość b i. Jeśli komunikujące się zadania v i i v j wykonywane są w tym samym komponencie, to czas komunikacji wynosi 0, jeśli zadania te są przydzielone do różnych komponentów i komponenty te mają dostęp do łącza CL i, wówczas czas transmisji danych określony jest wzorem: T k (v i,v j ) = d ij / b k. Przykładowe parametry łącza komunikacyjnego umieszczono w tabl. 2. Tablica 2 Parametry łączy komunikacyjnych CL CC [CLB] b Dostępność B1 163 2 kb/μs GPP, wszystkie VC (HW) Niech architektura systemu składa się z procesorów GPP i ponumerowanych od 1 do p, procesora sterującego rekonfiguracją GPP s, sektorów RS i od p + 1 do r i łączy komunikacyjnych ponumerowanych od 1 do c. Powierzchnia całkowita systemu jest zdefiniowana następująco p r c C = Cui + Cui + Cci + Cus i= 1 i= p+ 1 i= 1 Celem algorytmu przedstawionego w niniejszym artykule jest znalezienie najszybszej, dynamicznie rekonfigurowanej architektury, spełniającej wszystkie wymagania funkcjonalne określone w grafie G i zadane ograniczenia powierzchni (określonej przez wielkość docelowego układu FPGA). 4. Metoda kosyntezy W prezentowanej metodzie na etapie inicjalizacji odbywa się wyznaczanie dostępnych rozmiarów sektorów oraz generacja rozwiązania początkowego, a następnie wykonywana

jest rafinacja systemu przez tworzenie kolejnych rozwiązań na drodze modyfikacji poprzednich. 4.1. Inicjalizacja Na początku wyznaczane są rozmiary sektorów w taki sposób, aby były jak najbardziej zróżnicowane. Liczone są wszystkie możliwe sumy powierzchni zajmowanej przez zadania, które mogą być wykonane w komponentach sprzętowych VC. Spośród nich wybierane są te sumy, które najczęściej się powtarzają lub mają zbliżoną wielkość i nie przekraczają wielkości największego zadania. Wielkości znalezionych sektorów są zaokrąglane w górę do najbliższego, dozwolonego rozmiaru rekonfigurowalnego bloku. Największy sektor nie może być mniejszy od komponentu zajmującego największą powierzchnię. W rozwiązaniu początkowym wszystkie zadania grafu G przydzielone są do jednego procesora uniwersalnego. Rozwiązanie takie pozwala na największą swobodę w poszukiwaniu kolejnych rozwiązań (największa wolna powierzchnia FPGA). 4.2. Rafinacja Rafinacja polega na modyfikacji aktualnego rozwiązania poprzez dodawanie lub usuwanie modułu procesora GPP lub sektora RS. Obie modyfikacje mogą być wykonane w jednym kroku. Pozwala to na jednoczesne przesunięcie zadań z jednego procesora/sektora do innego. W każdym kroku usuwane są niewykorzystywane procesory. W przypadku gdy do jednego zasobu przydzielono więcej niż jedno zadanie, konieczne jest ich uszeregowanie. W algorytmie przyjęta została metoda szeregowania listowego (priorytety przydzielane w zależności od liczby następników w grafie G). Równocześnie z szeregowaniem zadań przydzielane są procesy komunikacyjne do łączy. Podczas szeregowania zadań w sektorach uwzględnia się powierzchnię sektora i możliwości równoległego wykonania zadań. Jeśli nie da się alokować wszystkich zadań ze względu na ograniczenia powierzchni, to konieczna jest rekonfiguracja sektora w celu ponownego wykorzystania tej samej powierzchni sektora do kolejnych zadań. W tym momencie czas wykonania zadań w sprzęcie jest zwiększany o czas rekonfiguracji sektora. W każdym kroku rafinacji rozpatrywane są wszystkie możliwe modyfikacje aktualnego rozwiązania. Do następnego kroku wybierane jest najlepsze rozwiązanie wg przyjętej miary jakości. Przy czym, aby zmniejszyć prawdopodobieństwo utknięcia algorytmu w lokalnym maksimum szybkości, miara jakości rozwiązania uwzględnia nie tylko szybkość systemu, ale także możliwości rafinacji w następnych krokach. Wprowadzony został parametr Ω, określający stopień wykorzystania powierzchni układu FPGA, który wyrażony jest wzorem 9 Ω = C FPGA C akt gdzie: C FPGA powierzchnia docelowego układu FPGA, C akt powierzchnia zajmowana przez aktualnie analizowane rozwiązanie (system SOPC). Im większy jest ten parametr, tym większe są możliwości rafinacji systemu w następnych krokach algorytmu.

10 Opracowany algorytm syntezy sterowany jest współczynnikiem E, który jest miarą jakości rozwiązań. Współczynnik E liczony jest w następujący sposób ΔΩ ΔSz ΔE = ΔSz Sz / ΔΩ gdy gdy gdy ΔΩ > 0 ΔΩ = 0 ΔΩ < 0 i ΔSz > 0 gdzie: Ω różnica współczynników Ω, Sz różnica szybkości dla porównywanych rozwiązań. Niech PE(RT i ) będzie dostępną w bibliotece jednostką wykonawczą, czyli procesorem GPP i lub sektorem RS i. Algorytm kosyntezy dynamicznie rekonfigurowalnych systemów SOPC wygląda następująco: Wyznacz rozmiary sektorów; Utwórz architekturę początkową A; Oblicz powierzchnię C akt ; Oblicz szybkość Sz systemu A; powtarzaj Gain = 0; dla każdego PE(RT i ) wykonuj { A =A PE(RT i ); powtarzaj Znajdź zadanie v k o największym współczynniku δe po przeniesieniu go nape(rt i ); jeżeli δe > 0 to przyporządkuj v k do PE(RT i ) dopóki nie ma już zadań, po przeniesieniu których δe > 0 ; A = A PEs bez przydzielonych zadań; jeżeli ΔE > Gain to { Gain = ΔE; A best = A ; } dla każdego procesora/sektora PE j A wykonuj { A = A PE j ; dla każdego v k PE j wykonuj { Znajdź PE l A dające najwiekszą wartość δe po przeniesieniu na niego zad v k ; Przyporządkuj v i do PE l } jeżeli ΔE > Gain to { Gain = ΔE; A best =A ; } } } jeżeli Gain > 0 to A = A best ; dopóki Gain = 0. Gain jest to globalny współczynnik zysku, ustawiany na początku na 0. Jeśli w całym kroku nie zostanie znalezione lepsze rozwiązanie, czyli nie zostanie spełniony warunek

ΔE > 0, to algorytm kończy działanie. Podczas przenoszenia zadań nie zmienia się powierzchnia zajmowana przez system, a zatem nie jest konieczne uwzględnianie parametru Ω, który jest zawsze równy 0. Dlatego w tym przypadku stosuje się zmodyfikowaną funkcję zysku, określoną przez parametr δe. Często przeniesienie jednego zadania v k nie prowadzi do zwiększenia szybkości, ale może zwiększyć prawdopodobieństwo uzyskania szybszych architektur w kolejnych krokach rafinacji, np. przez wieksze zrównoleglenie wykonywania zadań. Prawdopodobieństwo to może być większe, jeśli analizowane zadanie v k będzie przeniesione z implementacji programowej do sprzętowej oraz gdy czas rekonfiguracji sektora, na który jest przenoszone zadanie będzie mniejszy od czasu wykonania zadania v k przez procesor uniwersalny. Jeśli nie ma możliwości poprawy szybkości, to δe < 0 (dla takiego przypadku można przyjąć stałą wartość ujemną). Współczynnik δe jest liczony wg następującego wzoru 11 ΔSz ( Ti ( v δe = 1 k ) T rs( PEj) / T ( v j k ) gdy ΔSz > 0 gdy ΔSz = 0, PE i jest procesorem uniwersalnym i PE j jest sektorem i Ti ( vk ) > T j ( v w pozostałych przypadkach k ) i T rs( PEj) < T ( v ), i k gdzie: T i (v k ) i T j (v k ) czas wykonania zadań odpowiednio na komponencie, z którego i do którego zadanie jest przenoszone, T rs(pej) czas rekonfiguracji sektora PE j. Architektura, dla której otrzymano największy zysk (A best ) jest zapamiętywana jako wejściowa dla następnego kroku rafinacji. Algorytm sprawdza różne położenia sektorów w układzie FPGA. Sektory rozmieszczane są w taki sposób, aby rekonfiguracja sektorów znajdujących się pomiędzy komunikującymi się sektorami nigdy nie pokrywała się w czasie z transmisją danych. Dla każdego rozmieszczenia wykonywane jest szeregowanie zadań, podczas którego uwzględnia się powyższe założenie. Ogólna zasada romieszczania sektorów polega na tym, aby było jak najmniej rekonfiguracji pomiędzy często komunikującymi się sektorami. Jeśli nadal są konflikty, to rekonfiguracja albo transmisja danych przesuwana jest w czasie (w zależności od priorytetu zadań). Spośród wszystkich rozpatrywanych rozwiązań z różnym rozmieszczeniem sektorów wybierane jest rozwiązanie z najkrótszym czasem obliczeń. Do tak utworzonej architektury dodawany jest procesor, który będzie zajmował się wyłącznie rekonfiguracją sektorów. W przypadku gdy procesor jest modułem IP, część powierzchni układu FPGA jest zarezerwowana na ten moduł jeszcze przed wykonaniem syntezy systemu. Zasadę działania rafinacji przedstawiono na ryc. 2. W każdym kroku najpierw najlepszy zysk daje rozwiązanie o większej szybkości, następnie, gdy algorytm dojdzie do lokalnego maksimum szybkości, wybiera rozwiązanie, które daje większe możliwości rafinacji w następnym kroku. Dzięki temu ostateczne rozwiązanie jest znacznie lepsze od pierwszego znalezionego maksimum szybkości. Na rycinie 3 pokazano wynik kosyntezy systemu SOPC dla grafu G z ryc. 1 i parametrów z tabl. 1 i 2. R oznacza rekonfigurację sektora RS. Powierzchnię układu FPGA przyjęto jako 2000 CLB, a dostępne sektory zajmowały powierzchnie o następujących

12 wielkościach: 112, 224 i 452 CLB. Powierzchnia procesora uniwersalnego wynosiła 203 CLB. Czas rekonfiguracji 1 CLB przyjęto 0,86 μs (obliczone dla rodziny układów Xilinx Virtex 4). Uzyskano system zajmujący powierzchnię 1937 o czasie obliczeń 1745 μs. Dla porównania, przy takich samych parametrach bez dynamicznej rekonfiguracji uzyskany wynik to system o powierzchni 1850 i czasie obliczeń 2375 μs. czas obliczeń 8000 7000 6000 5000 4000 3000 2000 1000 0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 kolejne rozwiązania Ryc. 2. Wykres zbieżności dla przykładowego grafu G Fig. 2. Efficiency convergence for the following solutions analyzed for G graph GPPs RS1 RS2 RS1 RS2 RS2 GPP1 T4 T10 T9 T13 GPP2 T7 T14 S1(224) T0 R T3 T2 R T11 T1 T5 T8 T6 S2(452) R R R czas T12 0 202 261 397 468 529 642 790 661 1093 1292 1375 1469 1680 1745 Ryc. 3. Wykres Gantta dla architektury otrzymanej w wyniku kosyntezy Fig. 3. Gantt charts of scheduled and allocated tasks 5. Implementacja samorekonfigurowalnych systemów SOPC Utworzoną w wyniku kosyntezy architekturę systemu SOPC można zaimplementować we współczesnych układach firmy Xilinx, np. serii Virtex 4. Cały system jest implementowany w jednym układzie FPGA, bez potrzeby stosowania zewnętrznych układów do sterowania rekonfiguracją. Implementacja dynamicznie rekonfigurowalnych systemów SOPC opiera się na metodzie tworzenia systemów dynamicznie samorekonfigurowalnych SRP, zaproponowanej przez firmę Xilinx [1]. Sterowaniem rekonfiguracją zajmuje się osobny procesor wbudowany w FPGA w postaci modułu IP (np. MicroBlaze) lub w formie rdzenia sprzętowego PowerPC. Wszystkie konfiguracje, które mają być programowane w trakcie działania systemu, są przechowywane w pamięci cache. Rekonfigurowany może być w danym przedziale czasu tylko fragment układu (sektor), zgodnie z omówionymi wcześniej zasadami. Przyjęto tryb programowania SelectMAP 32-bitowy, który jest obecnie najszybszą metodą reprogramowania. Po zsyntezowaniu procesów implementowanych sprzętowo generowane są bity konfiguracyjne (bitstream) dla poczatkowej implementacji systemu oraz bity konfiguracyjne dla

poszczególnych konfiguracji wszystkich modułów. Bity konfiguracyjne są generowane przez standardowe narzędzia firmy Xilinx zgodnie z zasadami projektowania modułowego (Modular Design Flow) [16]. W momencie startu systemu ładowana jest do układu FPGA konfiguracja początkowa, a następnie system jest dynamicznie rekonfigurowany przez ładowanie ciągów bitów dla poszczególnych modułów, które mają być kolejno rekonfigurowane. Rekonfiguracja odbywa się poprzez specjalny port ICAP (ang. Internal Configuration Access Port) [1]. Dynamiczna rekonfiguracja systemu SOPC wygląda następująco: po wykonaniu wszystkich zadań w sektorze ostatnio zakończone zadanie przesyła sygnał do procesora o konieczności rekonfiguracji tego sektora, na podstawie informacji o ostatnio wykonywanym zadaniu procesor pobiera z odpowiedniego adresu pamięci cache kolejną konfigurację do zaprogramowania i modyfikuje na tej podstawie zawartość bufora, znając informacje o położeniu sektora w układzie, sterownik rekonfiguruje układ z nową zawartością. Na rycinie 4 pokazano rozmieszczenie sektorów w układzie FPGA dla sytemu opisanego grafem z ryc. 1, zsyntezowanego metodą opisaną w p. 4 i zaimplementowanego jako system samorekonfigurowalny. W układzie FPGA utworzone zostały 3 sektory. Jeden sektor to sektor nierekonfigurowalny S stały, w którym umieszczone zostały procesory w postaci modułów IP (GPP1, GPP2 i procesor sterujący rekonfiguracją GPPs). Dwa pozostałe sektory RS1 i RS2 są dynamicznie rekonfigurowalne i zadania do nich przydzielone są zaimplementowane sprzętowo. Ze względu na to, iż powierzchnie sektorów RS1 i RS2 są ograniczone, w celu wykonania wszystkich zadań przydzielonych do tych sektorów konieczne są rekonfiguracje sektorów w czasie działania systemu. Kolejne rekonfiguracje oznaczone są literą R. Kolejność wykonania zadań w sektorze RS1 jest następująca: T0, R, T2 i T3, R, T11, a w sektorze RS2: T1, R, T5, R, T8, R, T6 i T12. Umieszczenie nierekonfigurowalnego sektora pomiędzy dwoma sektorami dymamicznie rekonfigurowalnymi pozwoliło na uniknięcie konfliktu transmisji danych pomiędzy komunikujacymi się blokami a rekonfiguracją sektora położonego między nimi (nie jest możliwa rekonfiguracja bloków, przez które w tym samym czasie odbywa się transmisja). 13 RS1 T0 S stały GPP1 GPP2 RS2 T1 GPPs T2 T3 R R R R R T5 T11 T8 T6 T12 Ryc. 4. Rozmieszczenie sektorów w układzie FPGA dla systemu otrzymanego w wyniku kosyntezy Fig. 4. Sector placement in the FPGA area for obtained architecture

14 6. Wyniki eksperymentów W celu zaprezentowania efektywności kosyntezy dynamicznie samorekonfigurowalnych systemów SOPC wykonano eksperymenty dla systemów opisanych grafami zadań o różnej wielkości (10 150 węzłów). Grafy zostały wygenerowane losowo. Dokonano porównania wyników syntezy tych grafów dla implementacji z zastosowaniem częściowo rekonfigurowalnych układów FPGA firmy Xilinx oraz dla implementacji bez uwzględnienia dynamicznej rekonfigurowalności. W bibliotece komponentów dostępne były parametry dla jednego typu procesora uniwersalnego (implementowanego w postaci modułu IP w FPGA), parametry komponentów sprzętowych, jeden typ łącza komunikacyjnego, czasy wykonania zadań i ich powierzchnia w FPGA oraz zajętość pamięci. Powierzchnia docelowego układu FPGA dla kolejnych systemów była zwiększana wraz ze wzrostem liczby węzłów grafu G. Kolejne kolumny tablicy wyników (tabl. 3) to: liczba zadań grafu G, powierzchnia układu FPGA, czas wykonania zadań i powierzchnia systemu otrzymanego w wyniku kosyntezy, opis znalezionej architektury (p procesory uniwersalne, s sektory, hw liczba zadań wykonywanych w sprzęcie), czas syntezy w [s] (procesor AMD Athlon 850 MHz, 512 MB RAM). Ostatnia kolumna zawiera procentową zmianę szybkości systemów SOPC z częściowo rekonfigurowalnymi układami w stosunku do szybkości systemów bez uwzględnienia rekonfigurowalności. Do liczby wykorzystanych procesorów uniwersalnych, zamieszczonych w opisie architektury, należy dodać w każdym przypadku jeden procesor zajmujący się wyłącznie sterowaniem rekonfiguracją systemu. Tablica 3 Porównanie wyników kosyntezy systemów SOPC dla losowych grafów Graf Powierzchnia FPGA Z częściową rekonfiguracją Bez rekonfiguracji Przyrost (uniwersalne) Czas alg.[s] szybkości [%] czas pow. opis czas pow. opis 10 1100 2509 933 2p,1s,5 hw 0,611 4078 927 2p, 3 hw 62% 30 1500 4302 1498 3p,2s,18 hw 1,031 6734 1425 4p, 2 hw 57% 50 2000 5926 1786 3p,3s,29 hw 2,394 8352 1825 6p, 3 hw 41% 70 2500 6435 2480 5p,2s,30 hw 8,963 9605 2407 7p, 5 hw 49% 90 3000 8508 2865 4p,4s,43 hw 24,115 9707 2658 8p, 6 hw 14% 110 3500 8360 2708 5p,5s,50 hw 43,482 8859 3353 11p, 7 hw 6% 130 4000 8815 2661 6p,3s,56 hw 43,232 9564 3995 12p, 13 hw 9% 150 4500 10891 3332 7p,4s,60 hw 170,796 13037 4295 9p, 13 hw 20% Uzyskane wyniki pokazują korzyści wynikające ze stosowania technologii częściowo rekonfigurowalnych układów FPGA, gdzie rekonfiguracja jest sterowana przez wbudowany w układ procesor. Rozwiązania otrzymane w wyniku kosyntezy dla systemów SOPC dynamicznie samorekonfigurowalnych wykazały średnio 30% wzrost szybkości w stosunku do architektur uzyskiwanych dla algorytmu bez możliwości dynamicznej rekonfiguracji. Ogólnie dla systemów samorekonfigurowalnych dynamicznie można zauważyć dużo lepsze wykorzystanie sprzętu, za pomocą którego zadania wykonywane są szybciej. Było to możliwe dzięki kilkukrotnemu użyciu tych samych fragmentów układu FPGA do różnych zadań. Dynamiczna rekonfiguracja sektorów układu wiąże się z dodatkowymi czasami rekonfiguracji. Wpływ tych czasów na szybkość systemu SOPC został zmniejszony przez odpowiednie uszeregowanie zadań.

7. Wnioski 15 W artykule omówiono metodę kosyntezy dla dynamicznie samorekonfigurowalnych systemów SOPC. Stosowane są w niej powszechnie dostępne, częściowo rekonfigurowalne układy FPGA firmy Xilinx. Zastosowano możliwość sterowania rekonfiguracją przez wbudowany w układ procesor, przez co działanie systemu SOPC jest niezależne od zewnętrznych układów i cały systemem jest ograniczony do jednego układu FPGA. Częściowo rekonfigurowalne układy FPGA dają możliwość wielokrotnego używania tych samych powierzchni układu do różnych funkcji. Nie ma zatem takiego ograniczenia na liczbę zadań, które mogą być wykonane w sprzęcie, jak w przypadku układów bez możliwości dynamicznej rekonfiguracji. Tym samym całkowita szybkość projektowanego systemu SOPC otrzymanego w wyniku kosyntezy jest znacznie większa, pomimo narzutów czasowych spowodowanych dodatkowymi czasami rekonfiguracji części układu. Algorytm kosyntezy dla układów częściowo rekonfigurowalnych będzie dalej rozwijany, tak aby jeszcze lepiej wykorzystać możliwości dynamicznej rekonfiguracji w tych układach. W szczególności będą prowadzone prace nad udoskonaleniem etapu wyznaczania dostępnych rozmiarów sektorów, który nie zawsze daje dobre efekty. Rozważane będą również inne metody rafinacji pozwalające na lepsze wykorzystanie powierzchni FPGA dla największych systemów. Literatura [1] Blodget B., Roxby P.J., Keller E., A Self-reconfiguring Platform, Proc. FPL 2003, 565-574. [2] Carvalho E., Calazans N., Briao E., Moraes F., PaDReH A Framework for the Design and Implementation of Dynamically and Partially Reconfigurable Systems, Proc. SBCCI, 2004, 10-15. [3] C h a t h a K.S., V e m u r i R., Hardware-Software Codesign for Dynamically Reconfigurable Architectures, Proc. FPL, 1999, 175-184. [4] Compton K., Hauck S., Reconfigurable Computing: A Survey of Systems and Software, ACM Computing Surveys, Vol. 34, No. 2, June 2002, 171-210. [5] Czarnecki R., Deniziak S., Sapiecha K., An Iterative Improvement Cosynthesis Algorithm for Optimization of SOPC Architekture with Dynamically Reconfigurable FPGAs, Proc. EUROMICRO DSD, 2003, 443-446. [6] Czarnecki R., Deniziak S., Kosynteza dynamicznie rekonfigurowalnych systemów SOPC, Pomiary. Automatyka. Kontrola, 2006 (przyjęte do publikacji). [7] DeHon A., Comparing Computing machines, Proc. SPIE Configurable Computing: Technology and Applications, Vol. 3526, 1998, 124-133. [8] D i c k R.P., J h a N.K., CORDS: Hardware-Software Co-Synthesis of Reconfigurable Real-Time Distributed Embedded Systems, Proc. ICCAD, 1998, 62-68. [9] E i s e n r i n g M., P l a t z n e r M., A Framework for Run-time reconfigurable Systems, The Journal of Supercomputing, Vol. 21, 2002, 145-159. [10] K a l t e H., L a n g e n D., V o n n a h m e E., B r i n k m a n n A., R u c k e r t U., Dynamically Reconfigurable System-on-Programmable-Chip, Proc. Euromicro PDP, 2002, 235-242.

16 [11] L e e S., Y o o S., C h o i K., Reconfigurable SoC Design with Hierarchical FSM and Synchronous Dataflow Model, Proc. CODES, 2002, 199-204. [12] L i Y., C a l l a h a n T., D a r n e l l E., H a r r R., K u r k u r e U., S t o c k w o o d J., Hardware-Software Co-Design of Embedded Reconfigurable Architectures, Proc. DAC, 2000, 507-512. [13] Morris K., Prime-time Processing. Are Embedded Systems on FPGA Ready?, FPGA and Programmable Logic Journal, Feb. 8 th, 2005, www.fpgajournal.com. [14] Singh S., Bellec P., Virtual Hardware for Graphics Applications using FPGAs, Proc. FCCM, 1994, 49-58. [15] T r i m b e r g e r S., C a r b e r r y D., J o h n s o n A., W o n g J., A Time-Multiplexed FPGA, Proc. FCCM, 1997, 22-28. [16] Xilinx Inc., Two Flows for Partial Reconfiguration: Module Based or Difference Based, Xilinx Application Note XAPP290, v. 1.2, 2004.