Czym są akceleratory w układach logicznych i jaka jest ich przyszłość?

W ostatnich latach technologia po stronie procesorów oraz coraz ważniejszych na rynku SoC do telewizorów, smartfonów, czy nawet już komputerów i laptopów, poczyniła ogromne postępy. Mowa nie tylko o tej najbardziej surowej wydajności, skupiającej się na zwiększaniu instrukcji na cykl, taktowania oraz liczby rdzeni, ale również “procesorowych wspomagaczy” w postaci akceleratorów i koprocesorów. Na opisanie różnic między nimi znajdziemy czas w przyszłości, bo dziś skupimy się na tym, czym są akceleratory, czyli cisi bohaterowie wysokiej wydajności. Kogo powinien zainteresować ten artykuł? Każdego, kto zastanawiał się m.in. nad tym, dlaczego ray-tracing i DLSS firmy NVIDIA wymaga do działania specjalnego sprzętu.
Czym są akceleratory w układach logicznych, akceleratory, opis akceleratory, czym są akceleratory
Czym są akceleratory w układach logicznych, akceleratory, opis akceleratory, czym są akceleratory

Potencjał akceleratorów przewidziano już pół wieku temu

Już w latach 60. ubiegłego wieku pojawiały się głosy, że pomimo rosnącej mocy obliczeniowej procesorów, nie będziemy mogli opierać przyszłości technologii wyłącznie na nich i wiecie co? Patrząc na dzisiejszy rozwój technologii, te głosy miały rację, bo choć dysponujemy obecnie procesorami, których wydajność niewyobrażalnie przewyższa te sprzed pół wieku, to akceleratory są wymagane, aby posuwać rozwój technologii do przodu. 

Takie wnioski wysnuł m.in. Ivan Sutherland, publikując w 1968 roku artykuł “On the design of Display Processors“. Było to następstwem opracowania przez jego zespół “Display List”, czyli specjalnego sprzętowego “wspomagacza” dla procesora centralnego, który został uznany za pierwszy w historii akcelerator. Dzięki niemu CPU nie musiał przerywać trwających obliczeń, kiedy nadchodził moment wyświetlenia czegoś na ekranie oscyloskopu. Działał, jak na dzisiejsze czasy, banalnie, podając bezpośrednio procesorowi współrzędne wyświetlanego obrazu na ekranie, co uwalniało go od wspomnianej przerwy. 

Czytaj też: Co oznaczają certyfikaty 80 PLUS na zasilaczach i dlaczego potrzebujemy czegoś nowego?

Zgodnie z przewidywaniami, dziś akceleratory znajdziemy praktycznie w każdym zaawansowanym sprzęcie z układem logicznym. Doszło nawet do tego, że akceleratory mają… własne akceleratory, a przykładem tego są karty graficzne. Same w sobie są dla procesora centralnego graficznymi akceleratorami, którym oddaje się całą odpowiedzialność za wyświetlany obraz. Jednak np. w Volta GPU od NVIDIA jest obecna specjalna jednostka NVDLA, która już w rozwinięciu swojej nazwy (NVIDIA Deep Learning Accelerator) zdradza, czym dokładnie jest. Oczywiście to nie jedyny akcelerator w GPU, bo w nim znajdziemy też te odpowiedzialne za filtrowanie tekstur, czy rasteryzację geometrii sceny. 

W obecnych czasach popularność zyskują zwłaszcza te akceleratory, które odpowiadają za obliczenia związane ze sztuczną inteligencją. Nie można zapominać przy tym o tych mniej imponujących, do których już przywykliśmy i które zwykle nie zasługują nawet na wzmiankę przy premierach nowych układów. Mowa o akceleratorach odpowiadających za odtwarzanie nagrań, tych zajmujących się zapisywaniem robionych zdjęć w pamięci telefonu, szyfrowaniem i deszyfrowaniem plików, a nawet przyspieszających działanie stron internetowych, czy aplikacji PHP. Innymi słowy, jest ich sporo, a projektuje się je po to, aby zwiększyć możliwości danego sprzętu w konkretnych (zwykle wymagających lub często wykonujących się) obliczeniach.

Słyszeliście zapewne o nich często, ale czy potraficie wskazać dokładnie czym są akceleratory?

Dla większości ludzi logiczne układy w komputerach kończą się na GPU i CPU, ale z roku na rok ogłoszenia firm technologicznych (Apple, MediaTeka, NVIDII, czy AMD) coraz częściej podkreślają obecność w swoich nowych produktach specjalnych układów. Chwalą się, że dzięki nim funkcja rozpoznawania mowy jest szybsza, grafika piękniejsza, a płynność działania systemu i aplikacji znacznie wyższa. Za to właśnie w głównej mierze odpowiadają akceleratory, które zawdzięczają nazwę angielskiemu “accelerate”, co w tłumaczeniu oznacza “przyspieszać”. 

To właśnie robią akceleratory – przyspieszają działanie w określonych obciążeniach. Nie myślcie jednak, że dotyczy to bezpośrednio ogólnej wydajności sprzętu, bo gdyby tak było, to zamiast procesorów, nasze sprzęty napędzałyby jedynie przepastne zestawy akceleratorów. Te nie zwiększają bowiem bezpośrednio ogólnej wydajności sprzętu bo skupiają się bezpośrednio wyłącznie na konkretnym i jasno określonym zadaniu. 

Dodatkowo, aby uznać coś za akcelerator, musi on być fizycznym elementem obecnym w krzemowej matrycy procesora (znacznie mniejszym względem głównego procesora) i realizować od niego dane zadania szybciej i przy niższym zużyciu energii. To jest ich głównym celem, wokół którego skupia się ich projekt oraz zestaw obsługiwanych instrukcji. Dlatego właśnie akceleratory odznaczają się na tle CPU i GPU pod kątem stosunku wydajności w tym konkretnym zadaniu do zajmowanej powierzchni i prądożerności, a tym samym generowanego ciepła odpadowego. 

Akceleratory działają również całkowicie niezależnie od procesora centralnego, co wyjaśnia obecność w ich strukturze zarówno jednostek sterujących, jak i arytmetyczno-logicznych. Każdy nadrzędny układ logiczny jest dla nich czymś w rodzaju “szefa”, bo wskazuje im zakres obowiązków i przyjmuje tylko potwierdzenie wykonania albo finalne wyniki bez wchodzenia w szczegóły ich uzyskania. To sprawia, że akcelerator, to praktycznie odrębny układ logiczny (procesor w procesorze) w danym chipie, który wymaga bardzo złożonej ingerencji w architekturę i sposób działania danego układu logicznego. Ten musi bowiem rozpoznawać i przekierowywać odpowiednio poszczególne zadania. 

Czemu akceleratory zawdzięczają swoją wyjątkowość?

W wyjaśnianiu tego, dlaczego akceleratory są tak wspaniałe w zakresie swoich obowiązków, trzeba zagłębić się w sferę projektu akceleratora oraz jego pamięci. W pierwszym przypadku wszystko rozbija się o specjalizację oraz złożoność wykorzystywanych danych. Jak było już wspomniane, projektanci akceleratorów skupiają się na konkretnych zadaniach, więc i na instrukcjach, przez co nie muszą iść na żadne kompromisy. Ich projekt sprawia, że radzą sobie z wykonywaniem złożonych instrukcji bez wymuszonej przez sprzęt potrzeby dzielenia ich na szereg mniejszych zadań. 

Czytaj też: Jak AMD radzi sobie z zasilaniem Ryzenów? Wyjaśniamy PPT i PBO

Co innego przy projektowaniu CPU/GPU. W ich przypadku szeroki zakres obowiązków wymaga półśrodków w myśl wykonywania konkretnych obliczeń, co sprowadza się do postawienia na prostsze instrukcje, których zebranie do kupy daje dopiero wynik. Jest to związane z szeregiem etapów przechwytywania, odczytywania, zapisywania i dekodowania instrukcji, które pochłaniają moc obliczeniową i trwają znacznie dłużej w porównaniu do wykonywania tego samego, ale z użyciem akceleratora. 

Jeśli z kolei idzie o wykorzystywanie danych, to pod tym kątem akceleratory najlepiej określić powiedzeniem “mierz siły na zamiary”. Obliczenia wymagające mniejszej precyzji, które trafiają do jednostek zdolnych do podawania znacznie dokładniejszych wyników (kiedy tylko takie są dostępne), zajmą dokładnie tyle samo czasu i energii, jakby zadanie wymagało podania właśnie tych bardziej złożonych. Dlatego właśnie odpowiednie akceleratory o mniej skomplikowanych jednostkach obliczeniowych, będą spisywać się w takich obciążeniach znacznie lepiej. 

Trzeci “filar wyjątkowości akceleratorów” wieńczy obecność w każdym akceleratorze własnej pamięci RAM, która jest kluczowa do zapewnienia im niezależności oraz możliwości “pracy na swoje konto”. Najprostszym tego przykładem tego jest VRAM w kartach graficznych. Bez tej ekskluzywnej dla siebie pamięci (zwykle w innych akceleratorach przyjmuje ona postać skromnego, ale wydajnego układu SRAM) akceleratory nieustannie musiałyby pobierać dane z pamięci operacyjnej komputera, a to obniżyłoby ich wydajność przez zwiększenie opóźnienia dostępu do danych. Danych, które przecież akceleratory przerabiają w mgnieniu oka. 

Czytaj też: Praca zdalna i częste wideokonferencje? Poprawcie ich jakość z NVIDIA Broadcast

Słowem zakończenia, czyli przyszłość malowana w barwach akceleratorów

Pamiętacie wspominany wyżej w tekście koncept “zestawu akceleratorów” zamiast procesorów centralnych, czy graficznych? Chociaż pewne jest, że zarówno CPU, jak i GPU do lamusa nie odejdą, to przy zbliżaniu się do bariery 1 nm, zwiększającym się nacisku na konkretne obciążenia, czy spowalniającym Prawie Moore’a, inżynierowie będą coraz częściej zmuszani do zamieszczania w krzemowych matrycach specjalnych akceleratorów z myślą o określonych zadaniach.

Może dojść nawet do momentu, że jeden z nich będzie tak ważny, że producenci przekują go ze skromnego, maleńkiego układu, na dedykowaną kartę rozszerzeń. Są jednak na to małe szanse, a przynajmniej nie tak duże, jak wizja przyszłości, w której będzie się regularnie “podkradać” procesorom pewnego rodzaju instrukcje na rzecz akceleratorów.