FDRA: Struktura dla dynamicznie rekonfigurowalnego akceleratora obsługującego wielopoziomowy paralelizm
FDRA to otwarty (open-source) szkielet (framework) służący do eksploracji i projektowania heterogenicznych systemów System-on-Chip (SoC), które integrują standardowy procesor z dynamicznie rekonfigurowalnym akceleratorem (DRA).
Główne szczegóły i komponenty frameworku FDRA:
Cel i Zastosowanie
Głównym celem FDRA jest uproszczenie procesu projektowania systemów, które wymagają zarówno elastyczności oprogramowania, jak i wysokiej wydajności obliczeń sprzętowych. Umożliwia on nakładanie się (ang. overlap) komunikacji danych, obliczeń i konfiguracji, co zwiększa ogólną wydajność systemu.
Zastosowania obejmują przede wszystkim:
Badania nad architekturami komputerowymi.
Projektowanie systemów wbudowanych o wysokiej efektywności energetycznej.
Implementację algorytmów wymagających intensywnych obliczeń, np. w przetwarzaniu obrazów, uczeniu maszynowym, czy telekomunikacji.
Kluczowe Cechy
Dynamiczna rekonfiguracja: Akcelerator (DRA) może zmieniać swoje funkcje w czasie wykonywania, dostosowując się do różnych zadań bez przerywania pracy całego systemu.
Wsparcie dla wielopoziomowego paralelizmu: Framework obsługuje paralelizm na poziomie pętli (loop-level), instrukcji (instruction-level) i zadań (task-level).
Integracja CPU-CGRA: FDRA integruje procesor RISC-V z akceleratorem typu CGRA (Coarse-Grained Reconfigurable Architecture), co pozwala na efektywny podział zadań między nimi.
Efektywność: W porównaniu do innych podobnych rozwiązań, FDRA wykazuje znaczną poprawę prędkości wykonania (ok. 1.67x) i efektywności energetycznej.
Obsługa pamięci: Umożliwia dostęp do współdzielonej pamięci podręcznej L2 (shared L2 cache) przy użyciu adresów wirtualnych oraz wspiera bezpośredni dostęp do pamięci (DMA).
Komponenty Frameworku
FDRA składa się z kilku zintegrowanych części:
CGRA-MG: Moduł do modelowania architektury SoC (System-on-Chip) integrującego DRA i procesor RISC-V.
App-Compiler: Kompilator oparty na LLVM, generujący grafy przepływu danych (DFG) z kodu źródłowego aplikacji.
CGRA-Compiler: Kompilator mapujący zadania na akcelerator CGRA i zarządzający harmonogramowaniem (task scheduler).
Benchmarks: Zestaw programów testowych w języku C z adnotacjami wskazującymi fragmenty kodu przeznaczone do akceleracji.
FDRA jest udostępniany na licencji BSD-3-Clause, a kod źródłowy jest dostępny publicznie, co ułatwia dalsze badania i rozwój.