Dynamicznie Rekonfigurowalne Systemy
Podczas gdy pomysł tworzenia systemów komputerowych z elastycznym sprzętem sięga lat 60. XX wieku, to pojawienie się opartej na pamięci SRAM programowalnej macierzy bramek (FPGA) w latach 80. XX wieku wzmocniło rekonfigurowalne przetwarzanie jako dziedzinę badań i inżynierii. Od tego czasu rekonfigurowalne przetwarzanie stało się prężnie rozwijającą się dziedziną z coraz większą społecznością badawczą i ekscytującymi przedsięwzięciami komercyjnymi.
Rekonfigurowalne urządzenia komputerowe są w stanie dostosować swój sprzęt do wymagań aplikacji i obsługiwać szerokie i istotne domeny aplikacji, od wbudowanych do wysokowydajnych obliczeń, w tym motoryzację, lotnictwo i obronność, telekomunikację i sieci, medycynę i obliczenia biometryczne. Szczególnie w domenie wbudowanych obliczeń z jej wieloma i często sprzecznymi celami rekonfigurowalne systemy komputerowe oferują nowe kompromisy. Systemy wbudowane są napędzane przez mikroelektronikę, gdzie jednym z największych obecnie wyzwań jest kompromis między elastycznością a kosztami. Rekonfigurowalne urządzenia, zwłaszcza FPGA, wypełniają tę lukę, ponieważ zapewniają elastyczność zarówno w czasie projektowania, jak i w czasie wykonywania. W rezultacie w ostatnich latach obserwowaliśmy spadek liczby rozpoczęć projektowania układów ASIC, ale ciągły wzrost liczby rozpoczęć projektowania układów FPGA. Ciągły postęp w miniaturyzacji elementów mikroelektronicznych umożliwił integrację systemów z wieloma procesorami na jednym chipie o wielkości paznokcia (system-on-chip (SoC)). Często wolumeny produkcji układów SoC są raczej niskie, co zagraża ich korzyściom ekonomicznym. Z drugiej strony, nowoczesne układy FPGA to zasadniczo złożone układy SoC integrujące wbudowane procesory, możliwości przetwarzania sygnałów, transceivery wielogigabitowe i szerokie portfolio rdzeni IP. W ten sposób układy FPGA są pozycjonowane tak, aby stać się realną alternatywą dla układów ASIC i ASPP.
Jednak narzut w procesorach zebrany w ciągu ostatnich 30 lat nadal istnieje i uniemożliwia wydajne wykonywanie obliczeń. Najlepszą wydajność w porównaniu do obszaru/liczby bramek/poboru mocy nadal zapewniają dedykowane układy ASIC. Jednak wynikająca z tego elastyczność jest bardzo niska. Alternatywą są tutaj rekonfigurowalne architektury, które obiecują wydajność prawie jak ASIC i niskie zużycie energii przy elastyczności procesora CPU.
Dostępnych jest kilka koncepcji architektonicznych dla systemów rekonfigurowalnych. Jedną z koncepcji jest rozszerzenie podejścia von Neumanna lub Harvarda poprzez wprowadzenie modyfikowalnych zestawów instrukcji. W czasie wykonywania programista może dostosować niektóre instrukcje, aby zwiększyć wydajność wykonywania dla danej aplikacji. Jednak wąskie gardła pamięci związane z procesorami CPU są również utrzymywane w tym podejściu.
To ograniczenie można wyeliminować za pomocą innego podejścia: dynamicznych rekonfigurowalnych architektur opartych na tablicach. Ten typ architektury składa się z dużej liczby elementów przetwarzających, które są rozmieszczone w dwuwymiarowym polu. Duża liczba jednostek przetwarzających umożliwia bardzo wysoki paralelizm, a wynikająca z tego architektura oferuje energooszczędne przetwarzanie poprzez zmniejszenie wymagań dotyczących napięcia i częstotliwości. Problemem jest jednak programowalność. Ponieważ architektury oparte na tablicach nie mają prawie całkowicie bezpośredniego dostępu do pamięci (DMA), programista aplikacji musi przemyśleć swoje techniki.
Architektury oparte na tablicach dzielą się na dwie główne klasy: podejścia drobnoziarniste i gruboziarniste.
Architektury drobnoziarniste, takie jak FPGA, są oparte na logice bitowej i są bardzo elastyczne. Niemniej jednak programowanie jest dość trudne i wymaga pewnego doświadczenia w projektowaniu sprzętu. Ponadto narzut sprzętowy na rekonfigurowalność na poziomie bitowym jest bardzo wysoki, co można zobaczyć w wynikającym z tego poborze mocy i ograniczeniach rozmiaru projektu. Narzut sprzętowy jest tutaj zdefiniowany przez liczbę wymaganych rejestrów lub bitów SRAM na funkcję.
Architektury oparte na tablicach gruboziarnistych nie są dobrze zbadane w porównaniu z FPGA. Tutaj elementy przetwarzające składają się z jednostek logicznych arytmetycznych (ALU). Granularność konfiguracji sieci komunikacyjnej jest wektorem danych, który znacznie zmniejsza narzut rekonfiguracji.
Z dotychczasowych rozważań wynika, że atrakcyjne byłoby posiadanie rekonfigurowalnych bloków konstrukcyjnych, tzw. wbudowanych układów FPGA (eFPGA), dostępnych na SoC. Ponadto, ponieważ wykorzystanie bloków konstrukcyjnych na SoC jest ograniczone do bardzo ograniczonej klasy zastosowań, pojawia się pytanie, czy można wymienić tę wiedzę a priori na temat struktur, które mają być mapowane na tych eFPGA, na dalszą poprawę ich efektywności energetycznej i/lub powierzchniowej.
Ponieważ jest to bardzo podobne do pierwotnego pomysłu prowadzącego do procesorów zestawu instrukcji specyficznych dla aplikacji (ASIP), kolejnym zastosowaniem eFPGA jest ich wykorzystanie jako koprocesorów ASIP, co prowadzi do tak zwanych rekonfigurowalnych układów ASIP (rASIP) i umożliwia rekonfigurację architektury zestawu instrukcji ASIP w terenie (ISA).
Niezależnie od tego, czy jako samodzielny moduł SoC, czy jako koprocesor ASIP, ponieważ struktury arytmetyczne z natury charakteryzują się specjalnymi korzystnymi właściwościami, takimi jak iteracyjność i wysoka lokalność, układy eFPGA wydają się być szczególnie atrakcyjne jako platforma implementacyjna do obliczeń arytmetycznych, np. w cyfrowym przetwarzaniu sygnałów.