Przyspieszenie sprzętowe — Hardware acceleration

Przyspieszenie sprzętowe to wykorzystanie sprzętu komputerowego zaprojektowanego do bardziej wydajnego wykonywania określonych funkcji w porównaniu z oprogramowaniem działającym na jednostce centralnej (CPU) ogólnego przeznaczenia . Wszelkie transformacja z danych , które mogą być obliczane w uruchomionym oprogramowaniem na ogólny CPU może być obliczona w wykonane na zamówienie sprzętu, lub w jakiejś kombinacji obu.

Aby wykonać zadania obliczeniowe szybciej (lub lepiej w inny sposób), ogólnie można zainwestować czas i pieniądze w ulepszanie oprogramowania, ulepszanie sprzętu lub jedno i drugie. Istnieją różne podejścia, które mają zalety i wady w postaci zmniejszonej latencji , zwiększonej przepustowości i zmniejszonego zużycia energii . Typowe zalety skupienia się na oprogramowaniu mogą obejmować szybszy rozwój , niższe jednorazowe koszty inżynieryjne , zwiększoną przenośność i łatwość aktualizowania funkcji lub łatania błędów , kosztem ogólnych kosztów obliczeń. Zalety skupienia się na sprzęcie mogą obejmować przyspieszenie , zmniejszone zużycie energii , mniejsze opóźnienia, zwiększoną równoległość i przepustowość oraz lepsze wykorzystanie obszaru i komponentów funkcjonalnych dostępnych w układzie scalonym ; kosztem mniejszej możliwości aktualizacji projektów po wytrawieniu na krzemie oraz wyższych kosztów weryfikacji funkcjonalnej i czasu wprowadzenia na rynek. W hierarchii cyfrowych systemów obliczeniowych, począwszy od procesorów ogólnego przeznaczenia po w pełni dostosowany sprzęt, istnieje kompromis między elastycznością a wydajnością, przy czym wydajność wzrasta o rzędy wielkości, gdy dana aplikacja jest wdrażana wyżej w tej hierarchii. Ta hierarchia obejmuje procesory ogólnego przeznaczenia, takie jak CPU, bardziej wyspecjalizowane procesory, takie jak GPU , stałe funkcje zaimplementowane w programowalnych macierzach bramek (FPGA) oraz stałe funkcje zaimplementowane w układach scalonych specyficznych dla aplikacji (ASIC).

Przyspieszenie sprzętowe jest korzystne dla wydajności i praktyczne, gdy funkcje są ustalone, więc aktualizacje nie są tak potrzebne, jak w rozwiązaniach programowych. Wraz z pojawieniem się reprogramowalnych urządzeń logicznych, takich jak FPGA, ograniczenie akceleracji sprzętowej do w pełni ustalonych algorytmów złagodziło się od 2010 roku, umożliwiając stosowanie akceleracji sprzętowej w obszarach problemowych wymagających modyfikacji algorytmów i przepływu sterowania przetwarzaniem .

Przegląd

Można tworzyć układy scalone do wykonywania dowolnych operacji na sygnałach analogowych i cyfrowych . Najczęściej w informatyce sygnały są cyfrowe i mogą być interpretowane jako binarne dane liczbowe . Sprzęt i oprogramowanie komputerowe działają na informacjach w reprezentacji binarnej w celu wykonywania obliczeń ; jest to osiągane przez obliczanie funkcji binarnych na bitach wejściowych i wysyłanie wyniku do jakiegoś urządzenia wyjściowego w dół w celu przechowywania lub dalszego przetwarzania .

Równoważność obliczeniowa sprzętu i oprogramowania

Ponieważ wszystkie maszyny Turinga mogą uruchamiać dowolną obliczalną funkcję , zawsze możliwe jest zaprojektowanie niestandardowego sprzętu, który spełnia tę samą funkcję, co dane oprogramowanie. I odwrotnie, oprogramowanie zawsze może być używane do emulowania funkcji danego sprzętu. Sprzęt niestandardowy może oferować wyższą wydajność na wat dla tych samych funkcji, które można określić w oprogramowaniu. Języków opisu sprzętu (HDL), takich jak Verilog i VHDL można modelować te same semantykę jako oprogramowanie i syntezy projekt w netlist , które mogą być zaprogramowane do FPGA lub składający się z bramek logicznych w układzie ASIC.

Komputery z zapisanym programem

Ogromna większość przetwarzania opartego na oprogramowaniu występuje na maszynach implementujących architekturę von Neumanna , określanych zbiorczo jako komputery z programami przechowywanymi w pamięci . Programy komputerowe są przechowywane jako dane i wykonywane przez procesory . Takie procesory muszą pobierać i dekodować instrukcje, a także ładować operandy danych z pamięci (jako część cyklu instrukcji ), aby wykonać instrukcje stanowiące program. Poleganie na wspólnej pamięci podręcznej kodu i danych prowadzi do „wąskiego gardła von Neumanna”, podstawowego ograniczenia przepustowości oprogramowania na procesorach implementujących architekturę von Neumanna. Nawet w zmodyfikowanej architekturze Harvard , gdzie instrukcje i dane mają oddzielne bufory w hierarchii pamięci , nie ma nad głową do dekodowania instrukcji opcodes i multipleksowanie dostępne jednostki wykonawcze na mikroprocesora lub mikrokontrolera , co prowadzi do niskiego wykorzystania drukowanej. Nowoczesne procesory zapewniające jednoczesną wielowątkowość wykorzystują niepełne wykorzystanie dostępnych jednostek funkcjonalnych procesora i równoległość na poziomie instrukcji między różnymi wątkami sprzętowymi.

Sprzętowe jednostki wykonawcze

Sprzętowe jednostki wykonawcze nie opierają się na ogół na architekturze von Neumanna lub zmodyfikowanej architekturze Harvarda i nie muszą wykonywać kroków pobierania i dekodowania instrukcji w cyklu instrukcji i ponosić kosztów tych etapów. Jeśli potrzebne obliczenia są określone w projekcie sprzętowym poziomu transferu rejestru (RTL), koszty czasu i powierzchni obwodu, które zostałyby poniesione przez etapy pobierania i dekodowania instrukcji, można odzyskać i wykorzystać do innych zastosowań.

Ta regeneracja oszczędza czas, moc i powierzchnię obwodów w obliczeniach. Odzyskane zasoby mogą być wykorzystane do zwiększonych obliczeń równoległych, innych funkcji, komunikacji lub pamięci, a także zwiększonych możliwości wejścia/wyjścia . Odbywa się to kosztem użyteczności ogólnego przeznaczenia.

Nowe architektury sprzętowe

Większa personalizacja RTL projektów sprzętowych pozwala nowym architektom, takim jak przetwarzanie w pamięci , architektury wyzwalane przez transport (TTA) i sieci na chipie (NoC), na dalsze korzystanie ze zwiększonej lokalizacji danych w kontekście wykonania, zmniejszając w ten sposób opóźnienia obliczeniowe i komunikacyjne między moduły i jednostki funkcjonalne.

Niestandardowy sprzęt jest ograniczony pod względem możliwości przetwarzania równoległego tylko przez obszar i bloki logiczne dostępne na matrycy układu scalonego . W związku z tym sprzęt ma znacznie większą swobodę oferowania masowej równoległości niż oprogramowanie na procesorach ogólnego przeznaczenia, oferując możliwość implementacji modelu równoległej maszyny o dostępie swobodnym (PRAM).

Oczywiste jest, aby budować wielordzeniowych i manycore jednostek przetwórczych z mikroprocesorowych podstawowych schematów IP na jednym FPGA lub ASIC. Podobnie, wyspecjalizowane jednostki funkcjonalne mogą być złożone równolegle, jak w przypadku cyfrowego przetwarzania sygnałów, bez osadzania ich w rdzeniu IP procesora . Dlatego akceleracja sprzętowa jest często wykorzystywana do powtarzalnych, stałych zadań obejmujących niewielkie rozgałęzienia warunkowe , zwłaszcza w przypadku dużych ilości danych. W ten sposób NVIDIA „s CUDA linia procesorów graficznych są realizowane.

Mierniki wdrożenia

Wraz ze wzrostem mobilności urządzeń opracowano nowe metryki, które mierzą względną wydajność określonych protokołów akceleracji, biorąc pod uwagę takie cechy, jak fizyczne wymiary sprzętu, zużycie energii i przepustowość operacji. Można je podsumować w trzech kategoriach: efektywność zadań, efektywność realizacji i elastyczność. Odpowiednie metryki uwzględniają obszar sprzętu wraz z odpowiednią przepustowością operacji i zużytą energią.

Aplikacje

Przykłady akceleracji sprzętowej obejmują funkcjonalność akceleracji bitów bitowych w procesorach graficznych (GPU), wykorzystanie memrystorów do przyspieszania sieci neuronowych oraz akcelerację sprzętową wyrażeń regularnych do kontroli spamu w branży serwerowej , mającą na celu zapobieganie atakom odmowy usługi wyrażeń regularnych (ReDoS). Sprzęt, który wykonuje akcelerację, może być częścią procesora ogólnego przeznaczenia lub oddzielną jednostką zwaną akceleratorem sprzętowym, chociaż zwykle określa się je bardziej szczegółowym terminem, takim jak akcelerator 3D lub akcelerator kryptograficzny .

Tradycyjnie, procesory były sekwencyjne (instrukcje są wykonywane jedna po drugiej) i zostały zaprojektowane do wykonywania algorytmów ogólnego przeznaczenia kontrolowanych przez pobierania instrukcji (na przykład przesuwając tymczasowych wyników do iz pomocą pliku rejestrowego ). Akceleratory sprzętowe poprawiają wykonanie określonego algorytmu, umożliwiając większą współbieżność , dysponując określonymi ścieżkami danych dla ich zmiennych tymczasowych i redukując obciążenie związane z kontrolą instrukcji w cyklu pobierania, dekodowania i wykonywania.

Nowoczesne procesory są wielordzeniowe i często wyposażone są w równoległe jednostki „pojedynczej instrukcji; wiele danych” ( SIMD ). Mimo to przyspieszenie sprzętowe nadal przynosi korzyści. Akceleracja sprzętowa jest odpowiednia dla każdego algorytmu wymagającego dużej mocy obliczeniowej, który jest często wykonywany w zadaniu lub programie. W zależności od ziarnistości akceleracja sprzętowa może różnić się od małej jednostki funkcjonalnej do dużego bloku funkcjonalnego (takiego jak szacowanie ruchu w MPEG-2 ).

Jednostki przyspieszenia sprzętowego według aplikacji

Podanie Akcelerator sprzętowy Akronim
Grafika komputerowa Procesor graficzny GPU
  • GPU
  • CUDA
  • RTX
Przetwarzanie sygnału cyfrowego Cyfrowy procesor sygnału DSP
Przetwarzanie sygnału analogowego Programowalna tablica analogowa FPAA
  • FPRF
Przetwarzanie dźwięku Karta dźwiękowa i mikser karty dźwiękowej Nie dotyczy
Sieć komputerowa Procesor sieciowy i kontroler interfejsu sieciowego NPU i NIC
  • NoC
  • TCPOE lub TOE
  • I/OAT lub IOAT
Kryptografia Akcelerator kryptograficzny i bezpieczny kryptoprocesor Nie dotyczy
Sztuczna inteligencja Akcelerator AI Nie dotyczy
  • VPU
  • PNN
  • Nie dotyczy
Algebra wieloliniowa Jednostka przetwarzająca tensor TPU
Symulacja fizyki Jednostka przetwarzania fizyki PPU
Wyrażenia regularne Koprocesor wyrażeń regularnych Nie dotyczy
Kompresja danych Akcelerator kompresji danych Nie dotyczy
Przetwarzanie w pamięci Sieć na chipie i tablica skurczowa NoC; Nie dotyczy
Przetwarzanie danych Jednostka przetwarzania danych DPU
Dowolne zadanie obliczeniowe Sprzęt komputerowy sprzęt (czasami)
  • FPGA
  • ASIC
  • CPLD
  • SoC
    • MPSoC
    • PSoC

Zobacz też

Bibliografia

Zewnętrzne linki