Clear Sky Science · pl

Projektowanie nieprecyzyjnych mnożników ze znakiem na FPGA dla wysokowydajnych zastosowań przetwarzania obrazu

· Powrót do spisu

Sprytniejsza matematyka dla ostrzejszych obrazów

Każde zdjęcie cyfrowe, które wykonujesz, zależy od miliardów drobnych obliczeń wykonywanych w tle. Wiele z tych obliczeń to mnożenia, a ich szybkie i efektywne przeprowadzenie jest kluczowe dla aparatów, telefonów i urządzeń wbudowanych. W artykule badano, jak można świadomie dopuścić drobne, kontrolowane błędy w tych mnożeniach, by zaoszczędzić energię i zasoby sprzętowe, przy jednoczesnym uzyskaniu obrazów praktycznie nieodróżnialnych dla oka człowieka.

Figure 1
Figure 1.

Dlaczego niedoskonałe może być wystarczająco dobre

Nie każde obliczenie musi być perfekcyjne, aby było użyteczne. W przetwarzaniu obrazu i sygnału wynik końcowy jest oglądany przez ludzi, którzy zwykle nie zauważają bardzo małych błędów numerycznych. Ta idea, zwana obliczeniami przybliżonymi, zamienia część precyzji matematycznej na znaczne zyski w szybkości, oszczędności energii i zmniejszeniu zajętości układu scalonego. Mnożenie jest jedną z najbardziej kosztownych operacji w takich systemach, a tradycyjne rozwiązania dążą do dokładnych wyników kosztem dużych nakładów sprzętowych. Autorzy skupiają się na budowie mnożników obsługujących liczby dodatnie i ujemne (mnożniki ze znakiem) i dostosowanych do popularnej, programowalnej platformy FPGA. Istniejące przybliżone mnożniki były w większości projektowane dla układów niestandardowych i dla liczb bez znaku, więc słabo przekładają się na systemy obrazowe opierające się w dużym stopniu na arytmetyce ze znakiem.

Elementy składowe wewnątrz układu programowalnego

Nowoczesne FPGA składają się z powtarzalnych jednostek zwanych tablicami LUT oraz szybkich łańcuchów przenoszenia (carry), które są szczególnie dobre w wykonywaniu dodawania. Autorzy najpierw analizują, jak dokładny 8‑bitowy mnożnik ze znakiem można złożyć z tych bloków. Dokładnie badają wewnętrzny wzór operacji, aby wyłapać powtarzające się lub zbędne struktury, takie jak zdublowana logika czy nadmierne rozszerzanie bitów znaku. Poprzez reorganizację projektu, scalanie podobnych części i odrzucenie bitów iloczynu, które są nigdy niepotrzebne ze względu na ograniczony zakres wejść, tworzą szczupły, „dokładny” mnożnik bazowy, który już używa mniej bramek logicznych i ma krótsze ścieżki sygnałowe w układzie. Ta zoptymalizowana wersja bazowa służy następnie jako fundament dla projektów przybliżonych.

Dwie odmiany przybliżonych mnożników

Z tej zoptymalizowanej bazy autorzy przedstawiają dwa przybliżone 8‑bitowe mnożniki ze znakiem. Oba opierają się na prostej idei: najmniej znaczące bity wyjścia najmniej wpływają na jakość obrazu, więc można je uprościć lub ustawić na stałe bez zauważalnego efektu wizualnego. W projekcie przybliżonym 1 siedem najmniej znaczących bitów wyjściowych nie jest obliczanych dokładnie, lecz wewnętrzne sygnały przeniesienia (carry) dla tych pozycji są wciąż generowane i starannie zarządzane. Przeszukiwanie wielu możliwości wybiera stałe wartości dla tych niskich bitów, które utrzymują średni błąd na niskim poziomie. Projekt przybliżony 2 idzie dalej: usuwa zarówno niskie bity wyjścia, jak i ich lokalne przeniesienia, co znacząco redukuje ilość potrzebnego sprzętu. W obu przypadkach struktura jest później przekształcana tak, by upakować wiele małych operacji w każdą tablicę LUT i wyrównać je względem szybkich łańcuchów przenoszenia, co daje zwarte „netlisty” układów efektywnie mapowane na strukturę FPGA.

Figure 2
Figure 2.

Wydajność, energia i jakość obrazu

Oba projekty są gruntownie testowane na układzie Xilinx Virtex‑7 i porównywane z wieloma istniejącymi przybliżonymi mnożnikami. Autorzy mierzą liczbę użytych tablic LUT, długość najwolniejszej ścieżki sygnałowej oraz zużycie mocy dynamicznej. Przeprowadzają też wyczerpującą symulację wszystkich kombinacji wejść, aby ilościowo określić średni i maksymalny błąd mnożenia. Oba nowe mnożniki osiągają lepszą równowagę tych czynników niż konkurencyjne podejścia: używają mniejszych zasobów, mają krótsze opóźnienia i zużywają mniej energii przy podobnych lub nawet mniejszych średnich błędach. Bardziej agresywny projekt, Przybliżony 2, używa najmniej sprzętu i energii kosztem większego maksymalnego błędu, podczas gdy Przybliżony 1 oferuje ścisłe granice błędu przy nieco większym użyciu zasobów. Aby pokazać praktyczny wpływ, autorzy zastosowali te mnożniki w dwóch powszechnych zadaniach przetwarzania obrazu — mieszaniu i wygładzaniu obrazu — i ocenili wyniki za pomocą standardowych miar jakości wizualnej. W obu zadaniach otrzymane obrazy pozostają bardzo zbliżone do tych uzyskanych przy użyciu mnożnika dokładnego, z wysokimi wartościami PSNR i miarami podobieństwa strukturalnego, bez widocznej degradacji dla obserwatora.

Co to oznacza dla codziennych urządzeń

Praca pokazuje, że starannie zaprojektowana arytmetyka „wystarczająco dobra” może znacząco zmniejszyć rozmiar i zużycie energii programowalnego sprzętu przy jednoczesnym zachowaniu jakości obrazu. Wykorzystując naturalną tolerancję obrazów na drobne błędy numeryczne i dostosowując projekt do specyficznych bloków budulcowych FPGA, autorzy tworzą mnożniki ze znakiem, które są jednocześnie szybkie i oszczędne. Dla przyszłych aparatów, systemów wizyjnych wbudowanych czy akceleratorów AI, które muszą działać w ograniczonych budżetach energetycznych i kosztowych, takie przybliżone mnożniki oferują praktyczny sposób na uzyskanie większej wydajności bez poświęcania tego, co ostatecznie ma największe znaczenie: tego, jak finalne zdjęcie wygląda dla ludzkiego oka.

Cytowanie: Hassan, J., Khurshid, B., Banday, S.A. et al. FPGA-based imprecise signed multiplier designs for high-performance image processing applications. Sci Rep 16, 10084 (2026). https://doi.org/10.1038/s41598-026-40524-4

Słowa kluczowe: obliczenia przybliżone, mnożniki FPGA, sprzęt do przetwarzania obrazu, projekt niskiego poboru mocy, arytmetyka ze znakiem