Sprzęt  / Artykuł

Czekacie na grafen? To może być ważniejsze. Czym jest HSA?

Heterogeniczna architektura systemu, czyli połączenie mocy obliczeniowej procesorów typu CPU i GPU. Tak w skrócie można zdefiniować to pojęcie. Ale co to tak naprawdę oznacza? I jakie korzyści z tego możemy czerpać?

Zbudować superszybki procesor, który ma gigantyczną moc obliczeniową to nie jest żaden problem. Problem w tym, że to nie jedyne kryterium, jakie producent musi wziąć pod uwagę. Liczy się też jego cena, rozmiar, energooszczędność i wiele innych parametrów. Projektowanie mikroprocesora to decydowanie się z czego trzeba zrezygnować, by osiągnąć coś innego. Na jaki kompromis pójść, by efekt końcowy wyszedł najlepiej. I jakie sztuczki zastosować.

Konsumencki komputer nie może być tylko i wyłącznie wydajny. Ma też długo pracować na baterii, być poręczny i niewiele ważyć. Warto też zdać sobie sprawę, że tego samego oczekuje się nawet od superkomputerów. Te nie mogą być zbyt drogie w eksploatacji, a na te koszty składają się przecież pobór prądu czy energia zużywana przez urządzenia chłodzące.

Nie należy jednak rozumieć tego tak, że wydajność przestała być ważna. Wręcz przeciwnie: to nadal najważniejsze kryterium dla mikroprocesora. Po prostu owa wydajność musi uwzględniać również inne kryteria. Od łatwości programowania procesora po jego niskie koszty produkcji i eksploatacji. Dlatego też inżynierowie głowią się nad kolejnymi „sztuczkami”, mającymi na celu zwiększenie użyteczności mikroprocesorów a zarazem zmniejszenie wyżej wspomnianych kosztów. Jednym z najnowszych pomysłów jest HSA, a więc Heterogeniczna Architektura Systemu.

Wyspecjalizowane procesory, które się nie dogadują

Komputery praktycznie od samego początku wyposażane były w co najmniej jeden procesor ogólnego zastosowania (CPU). Z czasem jednak nauka i technika nauczyły się jak konstruować układy scalone, które wspierałyby CPU w bardzo ważnej i wymagającej dużej mocy obliczeniowej kwestii, jaką jest renderowanie trójwymiarowej grafiki. Tak powstały procesory GPU, a więc wyspecjalizowane jednostki stworzone do jednego, konkretnego celu: przetwarzania wieloboków, tekstur i innych elementów wirtualnego świata.

graph_GPU_CPU

Odwzorowywanie jak najdokładniej otaczającego nas świata wymaga procesorów o mocy, która dla inżynierów nie jest jeszcze osiągalna. Ale ci bardzo się starają. Wystarczy porównać to, co było możliwe w grach wideo na konsolach sprzed dziesięciu lat i na aktualnie sprzedawanych. Z czasem okazało się, że przeliczenia, jakie wykonują dedykowane grafice GPU mają zastosowanie również i w innych problemach matematycznych. Okazało się, że GPU radzą sobie genialnie z równoległym przetwarzaniem danych, a CPU z resztą obliczeń.

Układy GPU są coraz potężniejsze i coraz wydajniejsze. Jednak ich związek z układami CPU do niedawna był znikomy. GPU nie potrafi funkcjonować bez CPU, to ten drugi układ zarządza pracą pierwszego, ale na tym, w dużym uproszczeniu, związek obu procesorów się kończy. A skoro już udało się dojść do tego, że zarówno CPU i GPU nadają się do ogólnych zastosowań, z czego każdy z procesorów jest lepszy do innych rodzajów przeliczeń, to może by tak zwiększyć związek między dwoma układami?

CPU i GPU w tandemie

Po co właściwie łączyć dwa procesory w jeden zgrany zespół obliczeniowy? Przede wszystkim po to, by ułatwić życie programistom. Każdy z układów ma osobną pamięć, więc dane muszą być za każdym razem przenoszone z jednej przestrzeni do drugiej. Na dodatek CPU, jak już wspominaliśmy wyżej, zarządza poprzez sterownik pracą GPU, co powoduje dodatkowe opóźnienia i daje niepotrzebny narzut na moc obliczeniową.

Tak powstał pomysł na HSA, czyli układ scalony integrujący CPU i GPU i pozwalający obu tym procesorom na ściślejszą współpracę, eliminując wyżej przedstawione wady. Dzięki HSA, aplikacje mogą tworzyć struktury danych w pojedynczej przestrzeni adresowej, a ich przetwarzaniem zajmie się układ który lepiej się do tego nadaje, nie wchodząc zarazem w drogę drugiemu. Korzyści, jak się okazało, są gigantyczne.

HSAAcceleratedProcessingUnit

AMD, jedna z firm zajmujących się promocją HSA, sprawdziła ile w efekcie możemy zyskać. Wykorzystała do tego oprogramowanie Haar Face Detects które służy do rozpoznawania twarzy w strumieniu wideo. Porównano wersję pracującą w standardzie OpenCL ale niezoptymalizowaną pod HSA oraz taką, która uwzględnia nową architekturę (przy czym optymalizacja była prosta, w formie rozszerzeń do kodu napisanego w C++). Efekt? 2,3-krotne zwiększenie wydajności przy 2,4-krotnym zredukowaniu poboru prądu.

Sprzęt już jest, czemu więc nadal brakuje aplikacji?

Opracowanie sprzętu to dopiero połowa sukcesu. Producenci sprzętu muszą również zaprojektować procesory i dokumentację tak, by programistom było jak najłatwiej pisać aplikacje wykorzystujące moc HSA. A to wcale nie jest takie proste i oczywiste. W dzisiejszych czasach nie mamy jednej, obowiązującej platformy sprzętowej i software’owej. Deweloperzy muszą przewidzieć przeróżne architektury i systemy operacyjne, a to dla nich są bardzo duże koszty. Dlatego też starają się pisać kod w sposób uniwersalny, by przy okazji decyzji na udostępnienie programu na inną platformę, pracy nad portowaniem tejże aplikacji było jak najmniej.

W tym celu powołano Fundację HSA, której założycielami są AMD, ARM, Imagination Technologies MediaTek, Texas Instruments, Samsung i Qualcomm. Fundacja ta ma zająć się wspieraniem i promowaniem otwartych standardów do ujarzmienia możliwości, jakie drzemią w nowej architekturze. Przykładowym efektem tych prac jest niskopoziomowa warstwa interfejsu o nazwie HSAIL (HSA Indermediate Language), dzięki której deweloperzy nie muszą optymalizować kodu pod różne kombinacje CPU i GPU.

Istnienie tej fundacji jest niezbędne do popularyzacji HSA z bardzo prostego względu: przekonywanie poszczególnych twórców oprogramowania do optymalizacji kodu pod nowe rozwiązanie sprzętowe jest skazane na porażkę. Tych twórców jest zbyt wielu, a na dodatek nie każdy może dostrzec dla siebie korzyści w optymalizacji pod HSA. Kluczowym jest więc ułatwianie życia deweloperom jak tylko się da i zapewnianiu im odpowiednich narzędzi, by ci nie musieli ich szukać i tworzyć na własną rękę.

HSASolutionStack

Pracy przed fundacją jest jeszcze sporo. Zwłaszcza, że dwóch istotnych dla rynku graczy, a więc Intel i Nvidia, nie są zainteresowane promocją tego standardu, a sama fundacja działa raptem od dwóch lat. Postępy jednak widać już teraz. Warto przypomnieć, że dwie najbardziej liczące się konsole do gier zapewniają twórcom gier i aplikacji na nie pełnię dobrodziejstw tej architektury. Coraz więcej aplikacji na PC również powstaje z uwzględnieniem tej architektury. HSA jest też już częścią specyfikacji OpenCL 2.0 a Windows 10, a więc platforma mająca napędzać szeroki przekrój urządzeń, od Xboxa One, przez tablety, gadżety iOT i komputery osobiste aż po smartfony daje duże nadzieje na unifikację sposobu pisania aplikacji z uwzględnieniem możliwości, jakie zapewnia HSA.

Reszta to tylko kwestia czasu.

*Ilustracja tytułowa pochodzi z serwisu Shutterstock

przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst