VideoCore

Procesor Broadcom VideoCore napędza linię popularnych mikrokomputerów Raspberry Pi .

VideoCore to mobilny procesor multimedialny o niskim poborze mocy, pierwotnie opracowany przez Alphamosaic Ltd , a obecnie należący do Broadcom . Jego dwuwymiarowa DSP sprawia, że ​​jest on wystarczająco elastyczny i wydajny, aby dekodować (a także kodować) szereg kodeków multimedialnych w oprogramowaniu przy jednoczesnym zachowaniu niskiego zużycia energii. Półprzewodnikowy rdzeń własności intelektualnej (rdzeń SIP) był jak dotąd znaleziony tylko w SoC firmy Broadcom.

Szczegóły techniczne

Ograniczenia systemu multimedialnego

Mobilne urządzenia multimedialne wymagają dużej szybkości przetwarzania wideo, ale przy niskim poborze mocy, co zapewnia długą żywotność baterii. Rdzeń ARM ma wysoki wskaźnik IPS na wat (a tym samym dominuje na rynku telefonów komórkowych), ale wymaga koprocesorów akceleracji wideo i kontrolerów wyświetlania dla kompletnego systemu. Ilość danych przesyłanych między tymi układami z dużą szybkością powoduje większe zużycie energii. Wyspecjalizowane koprocesory mogą być zoptymalizowane pod kątem przepustowości w czasie opóźnienia (więcej rdzeni i równoległość danych, ale przy niższej częstotliwości taktowania) oraz mieć zestawy instrukcji i architektury pamięci przeznaczone do przetwarzania mediów (np. arytmetyka nasycenia i obsługa wyspecjalizowanych formatów danych) .

Silnik 3D

Udokumentowano, że VideoCoreIV-AG100-R znajdujący się w Raspberry Pi 1, 2 i 3 w pełni obsługuje OpenGL ES 2.0 i OpenVG 1.1.

Silnik 3D składa się z różnych podsystemów, z których najobficiej występują jednostki QPU. QPU to 16-kierunkowy z pojedynczą instrukcją i wieloma danymi (SIMD).

„Każdy procesor ma dwie wektorowe zmiennoprzecinkowe jednostki ALU , które wykonują operacje mnożenia i niemnożenia równolegle z opóźnieniem pojedynczego cyklu instrukcji. Wewnętrznie jednostka QPU jest 4-kierunkowym procesorem SIMD multipleksowanym 4× w ciągu czterech cykli, dzięki czemu jest szczególnie odpowiednia do przetwarzania strumienie quadów pikseli”, zgodnie z przewodnikiem po architekturze VideoCore® IV 3D firmy Broadcom. [1]

„Jednostki QPU są zorganizowane w grupy do czterech, zwane plasterkami, które dzielą pewne wspólne zasoby” — kontynuuje dokument. por. Wierzchołki i shadery .

Te „plasterki” odpowiadają mniej więcej jednostkom obliczeniowym AMD .

Przynajmniej VC 4 (np. w Raspberry Pi) nie obsługuje kompresji tekstur S3 (S3TC). Prawdopodobnie nie obsługuje również adaptacyjnej skalowalnej kompresji tekstur (ASTC).

Algorytmy kompresji wideo

Spośród obecnie szeroko stosowanych algorytmów kompresji wideo, takich jak H.263 , H.264/MPEG-4 AVC , MPEG-4 , MPEG-2 , MPEG-1 , H.265 , Daala , Theora , VP8 i VP9 , VideoCore firmy Broadcom produkty obsługują akcelerację sprzętową niektórych operacji. W niektórych przypadkach tylko dekompresja, tylko kompresja lub obie do określonej rozdzielczości (np. 720p lub 1080p) i do określonej liczby klatek na sekundę (np. 30 lub 60 klatek na sekundę).

Kluczowe funkcje VideoCore

  • Zestaw instrukcji napisany od początku z myślą o przetwarzaniu wideo. Na przykład arytmetyka nasycenia , aby suma dwóch jasnych pikseli nie „zawijała się” w ciemne wartości.
  • Szereg jednostek przetwarzania grafiki do równoległego przetwarzania danych wideo przy stosunkowo niskiej częstotliwości zegara.
  • Bardzo wysoka integracja sprawia, że ​​CPU, GPU, pamięć i obwody wyświetlacza znajdują się w jednym chipie, eliminując obciążenie energetyczne związane z napędzaniem szybkich magistrali poza chipem.

Warianty

VC01 oparty na VideoCore I zapewnia funkcje wideo i multimedialne różnym telefonom Samsung, w tym SCH-V540, SCH-V4200, SCH-V490.

BCM2722 oparty na VideoCore II zapewnia możliwości wideo dla iPoda Apple piątej generacji .

BCM2727 oparty na VideoCore III zapewnia możliwości wideo, zdjęć i grafiki 3D dla telefonu Nokia N8 .

VideoCore IV BCM2763 jest udoskonalonym procesorem VideoCore III dzięki obsłudze kodowania i dekodowania 1080p , a także obsłudze kamer o wyższej rozdzielczości i szybszej grafice 2D i 3D, a wszystko to przy bardzo niskim zużyciu energii. Jest używany w Nokii 808 PureView , niektórych wersjach sprzętu Roku i Raspberry Pi (odpowiednio modele 2835/2836 dla wersji 1/2).

VideoCore IV BCM28155 obsługuje kodowanie i dekodowanie 1080p, ulepszoną grafikę 2D i 3D dzięki dwurdzeniowemu procesorowi ARM Cortex-A9 w chipsecie BCM28155. Jest używany w Samsung Galaxy S II Plus , Samsung Galaxy Grand i Amazon Fire TV Stick .

VideoCore V BCM7251 obsługuje dekodowanie i transkodowanie 2160p60 lub podwójne kodowanie/dekodowanie 1080p60, oferuje ulepszoną obsługę kodeków (H.265), obsługę DDR3 i DDR4, USB 3.0, PCIe, Gigabit Ethernet i 802.11ac na dwurdzeniowym procesorze ARM Cortex- Dwurdzeniowy procesor A15 Brahma15.

Tabela SoC przyjmujących bloki VideoCore SIP

SoC GPU procesor Maksymalny wyświetlacz Korzystanie z urządzeń
Mikroarchitektura Częstotliwość ( MHz ) Zestaw instrukcji Mikroarchitektura Rdzenie Częstotliwość (MHz)
VC01 Rdzeń wideo 1 Nic CIF
Lista
  • Samsung SCH-V490, Samsung SCH-V420, Samsung SCH-V450, Samsung SCH-V4200, Samsung SCH-V540, Samsung SCH-X699,
BCM2702 (VC02) VideoCore 2 Nic SD PAL/NTSC
Lista
  • TCL D308, TCL D918, Samsung SPH-B3100, Samsung SPH-P730, Sandisk v-mate, BenQ S700, O2 X3, Nintendo Play-yan, Sagem MyMobileTV,
BCM2705 (VC05) VideoCore 2 Nic SD PAL/NTSC
BCM2091 VideoCore 4 Nic Nieokreślony
BCM2722 VideoCore 2 Nic SD PAL/NTSC
BCM2724 VideoCore 2 Nic SD PAL/NTSC
BCM2727 VideoCore 3 Nic HD 720p
Lista
BCM11181 VideoCore 3 Nic HD 720p
BCM2763 VideoCore 4 Nic Full HD 1080p
BCM2820 VideoCore 4 ARMv6 ARM1176 1 600 Full HD 1080p
BCM2835 VideoCore 4 250 ARMv6 ARM1176 1 700 Full HD 1080p
BCM2836 VideoCore 4 250 ARMv7 Kora-A7 4 900 Full HD 1080p RaspberryPi 2
BCM2837 VideoCore 4 300 ARMv8 Kora-A53 4 1200 Full HD 1080p RaspberryPi 3
BCM11182 VideoCore 4 Nic Full HD 1080p
BCM11311 VideoCore 4 ARMv7 Kora-A9 2 Full HD 1080p
BCM21654 VideoCore 4 ARMv7 Cortex-A9 + Cortex-R4 1+1 Full HD 1080p
BCM21654G VideoCore 4 ARMv7 Kora-A9 1 do 1000 HD 720p
BCM21663 VideoCore 4 ARMv7 Kora-A9 1 do 1200 HD 720p
Lista
  • K-dotyk W68, K-dotyk W70
BCM21664 VideoCore 4 ARMv7 Kora-A9 1 do 1000 HD 720p
BCM21664T VideoCore 4 ARMv7 Kora-A9 1 do 1200 Full HD 1080p
Lista
BCM28150 VideoCore 4 ARMv7 Kora-A9 2 Full HD 1080p
Lista
BCM21553 VideoCore 4 ARMv6 ARM11 1 Full HD 1080p
Lista
BCM28145/28155 VideoCore 4 ARMv7 Kora-A9 2 1200 Full HD 1080p
BCM23550 VideoCore 4 ARMv7 Kora-A7 4 1200 Full HD 1080p
Lista
  • HTC Desire 601 Dual SIM, XOLO Opus-HD, Samsung Galaxy Grand Neo, K-Touch W96, K-Touch W98
BCM7251 VideoCore 5 ARMv7 ARM Cortex-A15 2 1666 4K 2160p
BCM2711B0 VideoCore VI 500 ARMv8 ARM Cortex-A72 4 1800 Podwójne 4K 2160p Raspberry Pi 4B
SoC Mikroarchitektura Częstotliwość ( MHz ) Zestaw instrukcji Mikroarchitektura Rdzenie Częstotliwość (MHz) Maksymalny wyświetlacz Korzystanie z urządzeń
GPU procesor

Produkty VideoCore

Układy VideoCore mogą obsługiwać kompletne aplikacje — nie są to po prostu układy wideo DSP, które wymagają osobnego procesora do dostarczania i gromadzenia danych. W praktyce jednak są one często używane jak zwykłe akceleratory, ponieważ firmy zazwyczaj wolą ostrożnie asymilować nową technologię, zamiast podejmować duże ryzyko przeniesienia dużej ilości kodu aplikacji z istniejącego projektu opartego na architekturze ARM. VideoCore może również nie być optymalnie energooszczędny w zadaniach innych niż DSP, ale może być połączony z bardzo wydajnym rdzeniem procesora, na przykład typowe zadania inne niż multimedialne rzadko wymagają szerokości magistrali większej niż 32-bity, podczas gdy projekt VideoCore wykorzystuje wiele rdzenie o szerokiej magistrali. Apple video iPod jest dobrym przykładem takiego podejścia.

Laptopy o niskim poborze mocy korzystają z procesorów i układów graficznych o niskim poborze mocy, przez co często mają problemy z odtwarzaniem wideo przy pełnej szybkości klatek. Portowanie pełnego systemu operacyjnego na układ VideoCore nie jest pożądane ani praktyczne, więc tylko dekodowanie wideo musi zostać przeniesione na kartę akceleratora wideo (np. przy użyciu układu BCM70015). [ potrzebne źródło ]

Odtwarzacze Blu-ray mogą również używać go jako akceleratora wideo o niskim poborze mocy.

Zauważając, że chipy VideoCore były zwykle używane z chipami opartymi na ARM, najnowsze chipy mają procesory VideoCore i ARM.

Wsparcie dla Linuksa

W dniu 28 lutego 2014 roku, w dniu drugiej rocznicy Raspberry Pi , firma Broadcom wraz z fundacją Raspberry PI ogłosiła wydanie pełnej dokumentacji rdzenia graficznego VideoCore IV oraz kompletnego wydania źródłowego stosu graficznego pod nazwą 3-klauzulowa licencja BSD .

Jednak tylko niewielka część sterownika została wydana jako open source; cała akceleracja wideo odbywa się przy użyciu oprogramowania układowego zakodowanego dla jego zastrzeżonego procesora graficznego, który nie był open source. Cały SoC jest zarządzany przez RTOS oparty na ThreadX , który jest ładowany do VPU VideoCore podczas uruchamiania.

Przegląd architektury systemu opartego na VideoCore został skompilowany (na podstawie inżynierii wstecznej i badań patentowych) przez Hermana Hermitage'a i jest dostępny na GitHub.

W czerwcu 2014 r. Emma Anholt opuściła firmę Intel i udała się do Broadcom w celu opracowania darmowego sterownika ( sterownik DRM / KMS i sterownik Gallium3D ) dla VC4 (VideoCore 4). Po tygodniu zgłosiła znaczące postępy.

Podjąłem tam nową rolę programisty open source. Zamierzam pracować nad zbudowaniem licencjonowanego przez MIT sterownika Mesa 3D i jądra DRM dla 2708 (inaczej 2835), układu, który znajduje się w Raspberry Pi .

Kod grafiki 3D na wolnej licencji został przekazany firmie Mesa 29 sierpnia 2014 r. I został po raz pierwszy wydany jako część Mesa 10.3.

Rynkowi konkurenci

Do podobnych mobilnych układów multimedialnych należą Adreno , Texas Instruments OMAP , Nvidia Tegra , AllWinner A1X i Freescale i.MX. Są one oparte na architekturze ARM z tablicami jednostek przetwarzania grafiki.

Źródła danych

Strona Broadcom w serwisie YouTube zawiera filmy demonstrujące możliwości przetwarzania wideo, ale ich witryna zawiera jedynie informacje o produktach. Szczegółowe dane i narzędzia programistyczne są dostępne tylko w ramach NDA i to tylko dla producentów z rynkiem bardzo wielu jednostek. Jednak 28 lutego 2014 roku, w dniu drugiej rocznicy Raspberry Pi, Broadcom wraz z Raspberry Pi Foundation ogłosił wydanie pełnej dokumentacji rdzenia graficznego VideoCore IV oraz kompletnego wydania źródłowego stosu graficznego na 3-klauzulowej licencji BSD.

Zobacz też