Obliczenia rekonfigurowalne – architektura komputera łącząca elastyczność procesorów ogólnego przeznaczenia z wysoką wydajnością specjalizowanych układów scalonych. Jest to możliwe dzięki zastosowaniu szybkich bezpośrednio programowalnych macierzy bramek logicznych (ang. field-programmable gate array – FPGA).
Uniwersalny procesory mając do dyspozycji ograniczoną liczbę interpretowanych rozkazów jest w stanie wykonać skomplikowane zadania obliczeniowe. Czas potrzebny na obliczenia zależy od liczby wymaganych kroków, która wynika z poziomu komplikacji zadania. Lepszą wydajnością charakteryzują się specjalizowane układy scalone (ang. application-specific integrated circuit – ASIC), przeznaczone do realizacji z góry określonego zadania. Ich wadą jest brak cechy uniwersalności.
Koncepcja komputerów z możliwością rekonfiguracji istnieje od lat 60. XX wieku, kiedy to Gerald Estrin zaproponował realizację komputera składającego się ze standardowego procesora i tablicy „rekonfigurowalnego” sprzętu. Procesor kontrolowałby zachowanie konfigurowalnego sprzętu, który byłby dostosowywany do najbardziej wydajnego wykonywania określonego zadania, takiego jak na przykład przetwarzanie obrazu lub dopasowywanie wzorców. Po zakończeniu zadania sprzęt mógłby podlegać ponownej rekonfiguracji w celu dostosowania do innej aplikacji. Stosowanie takiej hybrydowej architektury komputera pozwoliłoby osiągnąć wydajność dedykowanego urządzenia jednocześnie zachowując elastyczność procesora ogólnego przeznaczenia[1][2].
Obecnie obliczenia rekonfigurowalne są realizowane poprzez scalenie uniwersalnego procesora z układem FPGA. Pierwszy pełni rolę kontrolera konfiguracji, a wewnątrz drugiego implementowany jest specjalizowany obwód. Rekonfigurację przeprowadza się „ładując” nowy obwód na programowalną macierz bramek[3].
Częściowa rekonfiguracja (ang. partial reconfiguration – PR) polega na zmianie wydzielonej części macierzy FPGA, podczas gdy reszta układu zachowuje swoją poprzednią strukturę. Wymaga modułowego projektowania układu. Część macierzy rezerwuje się jako moduł rekonfigurowalny, a reszta układu pozostaje statyczna bez możliwość późniejszego zmieniania połączeń. Można wyróżnić dwa typy częściowej rekonfiguracji[4]: