Rdzeń wizualny pikseli

Pixel Visual Core ( PVC ) to seria procesorów obrazu opartych na architekturze ARM w pakiecie (SiP) zaprojektowanych przez Google . PVC to w pełni programowalna wielordzeniowa architektura obrazu , wizji i sztucznej inteligencji , specyficzna dla domeny (DSA) dla urządzeń mobilnych, aw przyszłości dla IoT . Po raz pierwszy pojawił się w Google Pixel 2 i 2 XL , które zostały wprowadzone 19 października 2017 r. Pojawił się również w Google Pixel 3 i 3 XL . Począwszy od Pixela 4, ten układ został zastąpiony Pixel Neural Core .

Historia

Google wcześniej używał procesora , procesora graficznego , procesora IPU i DSP Qualcomm Snapdragon do obsługi przetwarzania obrazu na swoich urządzeniach Google Nexus i Google Pixel . Wraz ze wzrostem znaczenia fotografii obliczeniowej Google opracował Pixel Visual Core (PVC). Google twierdzi, że PVC zużywa mniej energii niż przy użyciu procesora i karty graficznej , a jednocześnie jest w pełni programowalny, w przeciwieństwie do jednostki przetwarzającej tensor (TPU) układ scalony specyficzny dla aplikacji (ASIC). Rzeczywiście, klasyczne urządzenia mobilne są wyposażone w procesor sygnału obrazu (ISP), który jest potokiem przetwarzania obrazu o stałej funkcjonalności . W przeciwieństwie do tego, PVC ma elastyczną programowalną funkcjonalność, nie ograniczającą się tylko do przetwarzania obrazu.

PVC w Google Pixel 2 i 2 XL jest oznaczony jako SR3HX X726C502.

PVC w Google Pixel 3 i 3 XL jest oznaczony jako SR3HX X739F030.

Dzięki PVC Pixel 2 i Pixel 3 uzyskały mobilny DxOMark na poziomie 98 i 101. Ten ostatni był najwyżej sklasyfikowanym jednoobiektywowym mobilnym wynikiem DxOMark, na równi z iPhonem XR.

Oprogramowanie Pixel Visual Core

Skierowany acykliczny widok wykresu jądra (jąder) dla programistów PVC

Typowy program do przetwarzania obrazu w PVC jest napisany w Halide . Obecnie obsługuje tylko podzbiór języka programowania Halide bez operacji zmiennoprzecinkowych iz ograniczonymi wzorcami dostępu do pamięci. Halide to język specyficzny dla domeny , który pozwala użytkownikowi oddzielić algorytm od planowania jego wykonania. W ten sposób programista może napisać program zoptymalizowany pod kątem docelowej architektury sprzętowej.

Pixel Visual Core ISA

PVC ma dwa typy architektury zestawu instrukcji (ISA) , wirtualną i fizyczną. Najpierw program w języku wysokiego poziomu jest kompilowany do wirtualnego ISA (vISA) , inspirowanego RISC-V ISA, który całkowicie odcina się od docelowej generacji sprzętu. Następnie program vISA jest kompilowany do tzw. fizycznego ISA (pISA) , czyli VLIW ISA. Ten krok kompilacji bierze pod uwagę docelowe parametry sprzętowe (np. tablicę rozmiaru PE, rozmiar STP, itp.) i wyraźnie określa ruchy pamięci. Oddzielenie vISA i pISA pozwala pierwszej z nich być niezależną od architektury i generacji, podczas gdy pISA można skompilować offline lub za pomocą kompilacji JIT .

Architektura Pixel Visual Core

Przykład PVC z 4 rdzeniami

Pixel Visual Core został zaprojektowany jako skalowalna, wielordzeniowa, energooszczędna architektura, obejmująca od parzystych liczb od 2 do 16 rdzeni. Rdzeniem PVC jest jednostka przetwarzania obrazu (IPU), programowalna jednostka dostosowana do przetwarzania obrazu. Architektura Pixel Visual Core została również zaprojektowana albo jako własny układ, jak SR3HX, albo jako blok IP dla System on a chip (SOC) .

Jednostka przetwarzania obrazu (IPU)

Rdzeń IPU ma procesor szablonowy (STP), pulę buforów linii (LBP) i NoC . STP zapewnia głównie 2-D SIMD tablicę elementów przetwarzających (PE) zdolnych do wykonywania obliczeń szablonowych , małe sąsiedztwo pikseli. Chociaż wydaje się to podobne do tablic skurczowych i czoła fali, STP ma wyraźny ruch danych kontrolowany przez oprogramowanie. Każdy PE zawiera 2x 16-bitowe jednostki arytmetyczne (ALU) , 1x 16-bitową jednostkę mnożnika-akumulatora (MAC) , 10x 16-bitowych rejestrów i 10x 1-bitowych rejestrów predykatów.

Pula buforów linii (LBP)

Biorąc pod uwagę, że jedną z najbardziej kosztownych energetycznie operacji jest dostęp do pamięci DRAM, każdy STP posiada tymczasowe bufory zwiększające lokalność danych , czyli LBP. Zastosowany LBP to 2-D FIFO , który obsługuje różne rozmiary odczytu i zapisu. LBP wykorzystuje model behawioralny jednego producenta i wielu konsumentów. Każdy LBP może mieć osiem logicznych pamięci LB i jedną dla DMA operacje wejścia-wyjścia. Ze względu na naprawdę dużą złożoność systemu pamięci, projektanci PVC określają kontroler LBP jako jeden z najtrudniejszych komponentów. Zastosowany NoC to sieć pierścieniowa na chipie, używana do komunikacji tylko z sąsiednimi rdzeniami w celu oszczędzania energii i zachowania potokowego wzorca obliczeniowego.

Procesor szablonów (STP)

Reprezentacja dwuwymiarowej tablicy PE. Białe to pełne PE (16x16), szare to część "halo" (144). Dla jasności nie wszystkie połączenia są zgłaszane.

STP ma dwuwymiarową tablicę PE: na przykład tablicę 16x16 pełnych PE i cztery linie uproszczonych PE zwane „halo” . STP ma skalarny procesor, zwany skalarnym torem (SCL), który dodaje instrukcje sterujące z małą pamięcią instrukcji. Ostatnim elementem STP jest jednostka magazynowania danych zwana generatorem arkuszy (SHG), w której arkusz jest jednostką dostępu do pamięci PVC.

Podsumowanie projektu SR3HX

SR3HX PVC jest wyposażony w 64-bitowy procesor ARMv8a ARM Cortex-A53 , 8 rdzeni procesora obrazu (IPU), 512 MB LPDDR4 , MIPI, PCIe. Każdy rdzeń IPU ma 512 jednostek arytmetycznych (ALU) składających się z 256 elementów przetwarzających (PE) ułożonych w dwuwymiarową tablicę 16 x 16. Te rdzenie wykonują niestandardowy VLIW ISA. Na każdy element przetwarzający przypadają dwie 16-bitowe jednostki ALU, które mogą działać na trzy różne sposoby: niezależne, połączone i połączone. SR3HX PVC jest produkowany jako SiP przez TSMC przy użyciu ich 28HPM HKMG proces. Został zaprojektowany przez ponad 4 lata we współpracy z firmą Intel . (Nazwa kodowa: Monette Hill) Google twierdzi, że SR3HX PVC jest 7-16 razy bardziej energooszczędny niż Snapdragon 835 . A że SR3HX PVC może wykonywać 3 biliony operacji na sekundę, HDR+ może działać 5 razy szybciej i zużywać mniej niż jedną dziesiątą energii niż Snapdragon 835 . Obsługuje Halide do przetwarzania obrazu i TensorFlow do uczenia maszynowego. Obecny układ działa z częstotliwością 426 MHz, a pojedynczy IPU jest w stanie wykonać więcej niż 1 TeraOPS.

  1. ^ a b c Cutress, Ian. „Hot Chips 2018: blog Google Pixel Visual Core na żywo (10:00 czasu pacyficznego, 17:00 UTC)” . www.anandtech.com . Źródło 2019-02-02 .
  2. ^ a b c d e f g hi j Hennessy   , John; Patterson, David (2017). Architektura komputera: podejście ilościowe (wyd. Szóste). Morgana Kaufmanna. s. 579–606. ISBN 978-0-12-811905-1 .
  3. ^ „Porzucenie Google Pixel 2 XL” . iFixit . 2017-10-19 . Źródło 2019-02-02 .
  4. ^ „Porzucenie Google Pixel 3 XL” . iFixit . 2018-10-16 . Źródło 2019-02-02 .
  5. ^ „Pixel 2 DxOMark” .
  6. ^ „Pixel 3 DxOMark” .
  7. Bibliografia _ _
  8. ^ a b c d „The Pixel Visual Core: w pełni programowalny procesor obrazu, wizji i sztucznej inteligencji firmy Google dla urządzeń mobilnych. HotChips2018” (PDF) .
  9. ^ „Pixel Visual Core (PVC) - Google - WikiChip” . pl.wikichip.org . Źródło 2019-02-02 .
  10. ^ „Google nawiązał współpracę z firmą Intel w zakresie układu Pixel Visual Core w Pixelu 2” . xda-developers . 2017-10-25 . Źródło 2019-02-02 .
  11. ^ a b „Pixel Visual Core: przetwarzanie obrazu i uczenie maszynowe na Pixelu 2” . Google . 2017-10-17 . Źródło 2019-02-02 .