artykuły

HotChips 2019: przegląd sprzętowych akceleratorów SI

8
4 września 2019, 15:21 Mateusz Brzostek

Huawei DaVinci – jedna architektura, różne skale

Huawei zaprezentował architekturę DaVinci, której głównym założeniem projektowym była doskonała skalowalność. Ta sama architektura miała nadawać się do niewielkich i energoszczędnych akceleratorów wbudowanych w procesor urządzenia noszonego lub telefonu, kamerę telewizji przemysłowej, komputer sterujący dronem, robotem albo samochodem, a w największej wersji: do budowy akceleratorów SI w serwerach i centrach danych. Architektura DaVinci miała nadawać się do okoliczności odległych od siebie o 6 rzędów wielkości pod względem budżetu energetycznego: od miliwatów do megawatów.

Wydaje się, że przeznaczenie jednej architektury i do wnioskowania, i do uczenia maszynowego, na dodatek w różnej skali, musi się wiązać z jakąś nieefektywnością; z całego spektrum zastosowań na pewno na którymś końcu bardziej efektywna byłaby specjalna, dostosowana do jednego zadania wersja. Huawei twierdzi, że dzięki zastosowaniu tej samej architektury w małych i dużych akceleratorach można znacznie oszczędzić i ułatwić sobie prace nad oprogramowaniem: niezależnie od urządzenia i skali używa się tych samych technik, bibliotek i kompilatorów. Oszczędność na systemie oprogramowania ma uzasadniać jednolitą architekturę.

Najmniejszą jednostkę architektury DaVinci Huawei nazywa rdzeniem. Każdy składa się z trzech głównych bloków obliczeniowych: jeden operuje na pojedynczych wektorach i służy m. in. do operacji kontrolnych, drugi operuje na macierzach dwuwymiarowych, trzeci – na macierzach trójwymiarowych.

Kliknij, aby powiększyć

Rdzenie DaVinci występują w trzech konfiguracjach różniących się liczbą jednostek arytmetycznych. W średniej konfiguracji DaVinci obrabia w jednym cyklu zegara dwuwymiarową macierz 8× 16 liczb i trówymiarową o każdym boku długości 16. Mała konfiguracja (stosowana np. w procesorach Kirin do smartfonów) ma 1/8 wydajności średniej wersji, a największa – dwukrotnie większą, niż średnia wersja.

Akceleratory AI z architekturą DaVinci są od dłuższego czasu wykorzystywane w praktyce. Pewna liczba rdzeni DaVinci w małej konfiguracji jest wykorzystywana w akceleratorze NPU wbudowanym w procesory Kirin, np. w smartfonie Huawei P20 i wielu nowszych.

Najnowszym wcieleniem tej architektury są dwa osobne układy do akceleracji SI. Ascend 310 jest przeznaczony do wnioskowania, zawiera dwa średnie rdzenie DaVinci, 8 rdzeni ARM Cortex-A55 i sprzętowy dekoder obrazów i wideo. Ascend 310 korzysta z zewnętrznej pamięci LPDDR4 i będzie podłączany przez USB lub PCI-E jako akcelerator w serwerach (podobnie jak Intel Nervana NNP-I 1000). Z kolei Ascend 910 to ogromny układ przeznaczony do wielkoskalowego uczenia maszynowego.

Zgodnie z ruchem wskazówek zegara: chińska moneta 1 juan o średnicy 25 mm, akcelerator Ascend 310, procesor serwerowy Huawei Kunpeng 920, akcelerator Ascend 910

Podobnie jak procesory AMD w architekturze Zen 2, Ascend 910 jest funkcjonalnie podzielony na dwa jądra: jedno (Vitruvian) zawiera maszyny obliczeniowe, drugie (Nimbus) interfejsy wejścia/wyjścia. Do tego w jednej obudowie zamontowano też 4 stosy pamięci HBM2.

Ascend 910 zawiera 32 rdzenie DaVinci (o najwydajniejszej konfiguracji) oraz 16 rdzeni ARM Taishan. To mikroarchitektura opracowana przez Huawei/HiSilicon na potrzeby procesorów serwerowych, zgodna z ARMv8.2 i obsługująca również część instrukcji z grupy ARMv8.4, m. in. instrukcje pozwalające na policzenie iloczynu skalarnego. Rdzenie DaVinci są pogrupowane razem z segmentami pamięci podręcznej (w sumie 32 MB) i połączone siecią wewnątrz czipu – to topologia bardzo podobna do serwerowych procesorów Skylake Intela. Wbudowano również dekoder wideo przetwarzający 128 strumieni H.264 lub H.265 jednocześnie. Poza wbudowaną pamięcią podręczną oraz zamontowaną we wspólnej obudowie pamięcią HBM2 ten akcelerator wykorzystuje też zewnętrzną pamięć DDR4.

Jądro I/O zawiera kontrolery interfejsów potrzebnych do podłączenia akceleratora w serwerach: PCI-E 4.0 do połączenia z głównym procesorem, CCIX do połączenia z innymi akceleratorami z zachowaniem spójności pamięci, Ethernet z RoCE oraz własne łącze Huawei o nazwie Hydra, które może służyć do połączenia wielu Ascendów 910 między sobą lub z procesorami serwerowymi Kunpeng.

Jądro Vitruvian jest produkowane w TSMC w najnowszej wersji procesu technologicznego klasy 7 nm, wykorzystującej naświetlanie EUV w najważniejszych warstwach. Ascend 910 to jeden z najbardziej złożonych w produkcji układów SoC: w jednej obudowie, na jednej przekładce krzemowej są zamontowane jądra Vitruvian, Nimbus, cztery stosy HBM2 oraz dwa niefunkcjonalne kawałki krzemu służące do wypełnienia bryły SoC i utworzenia gładkiej górnej powierzchni.

Cały układ ma TDP 350 WPrzypominamy, że TDP nie jest miarą niczego, a szczególnie nie jest miarą poboru energii! TDP to określenie klasy układu chłodzenia, jaki zagwarantuje utrzymanie poprawnego działania procesora. Firmy serwerowe używają różnych kryteriów doboru TDP, a różne komponenty mają różne zakresy pożądanej temperatury pracy. i maksymalną teoretyczną wydajność 256 TFLOPS (z precyzją FP16). Te akceleratory będą używane przede wszystkim w postaci modułów OAM (Open Compute Project Accelerator Module), montowanych równolegle do płyty głównej modułów podobnych do serwerowych GPU Nvidii albo koprocesorów Google TPU. Huawei będzie używać ich w serwerach, gdzie na jednej płycie będzie zamontowanych 8 OAM z Ascend 910, a na drugiej – dwa procesory Intel Xeon.

U góry szuflada z ośmioma OAM z procesorami Ascend 910; u dołu szuflada z procesorami Intel Xeon.

Następna generacja: z jeszcze mocniej zintegrowaną pamięcią

W dalszej przyszłości Huawei zamierza posunąć integrację wielu jąder krzemowych o wiele dalej. Inżynierowie planują eksperymentalny układ (na razie nie jest jasne, czy w takiej formie będzie produkowany masowo), w którym pod jądrem z maszynami obliczeniowymi będzie zintegrowana bardzo szybka pamięć SRAM – ta sama, która jest najczęściej wykorzystywana jako pamięci podręczne w większości mikroprocesorów. Pamięć SRAM jest stosunkowo niewrażliwa na temperaturę, znacznie szybsza i prostsza niż DRAM. W ten sposób powierzchnia centralnego, obliczeniowego jądra będzie w większości przeznaczona na układy obliczeniowe, a pamięć podręczna zostanie „wyprowadzona” do osobnych jąder zamontowanych pod spodem. Kolejnym, wolniejszym poziomem pamięci mają być specjalne wersje pamięci HBM2E, w których dwa stosy 8 jąder z pamięcią będą ułożone na wspólnym jądrze z kontrolerem. Poza chipem będzie podłączona jeszcze wolniejsza i pojemniejsza pamięć, prawdopodobnie DDR4.

Taki układ byłby przykładem bezprecedensowej integracji – jeden składałby się z 15 osobnych komponentów, być może wykonanych każdy w innej fabryce lub procesie technologicznym, albo ze 111 osobnych kawałków krzemu!

5