VideoCore
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
|
||||
BCM2702 (VC02) | VideoCore 2 | Nic | SD PAL/NTSC |
Lista
|
||||
BCM2705 (VC05) | VideoCore 2 | Nic | SD PAL/NTSC | |||||
BCM2091 | VideoCore 4 | Nic | Nieokreślony | |||||
BCM2722 | VideoCore 2 | Nic | SD PAL/NTSC |
Lista
|
||||
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 |
Lista |
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
|
|
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
|
|
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 .
— Emma Anholt, http://anholt.livejournal.com/44239.html
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.