Rdzeń wideo - VideoCore
VideoCore to energooszczędny procesor multimedialny do urządzeń przenośnych , pierwotnie opracowany przez firmę Alphamosaic Ltd, a obecnie należący do firmy Broadcom . Jego dwuwymiarowa architektura DSP sprawia, że jest wystarczająco elastyczny i wydajny, aby dekodować (a także kodować) szereg kodeków multimedialnych w oprogramowaniu przy zachowaniu niskiego zużycia energii. IP-Core (SIP core) stwierdzono do tej pory tylko na Broadcom SoCs.
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ługi czas pracy na baterii. ARM procesor ma wysoki IPS wata rysunku (a więc dominuje na rynku telefon komórkowy), ale wymaga wideo koprocesory przyspieszenia i kontrolery wyświetlenia dla całego systemu. Ilość danych przesyłanych między tymi chipami z dużą prędkością powoduje większe zużycie energii. Wyspecjalizowane koprocesory mogą być zoptymalizowane pod kątem przepustowości z opóźnieniem (więcej rdzeni i równoległość danych, ale przy niższym taktowaniu) oraz mają zestawy instrukcji i architektury pamięci zaprojektowane do przetwarzania mediów (np. arytmetyka nasycenia i obsługa wyspecjalizowanych formatów danych) .
Silnik 3D
VideoCoreIV-AG100-R znajdujący się w Raspberry Pi 1, 2 i 3 ma udokumentowaną pełną obsługę OpenGL ES 2.0 i OpenVG 1.1.
Silnik 3D składa się z różnych podsystemów, z których najbardziej rozpowszechnionym są jednostki QPU. QPU to 16-drożny procesor z pojedynczą instrukcją i wieloma danymi (SIMD).
„Każdy procesor ma dwie wektorowe zmiennoprzecinkowe jednostki ALU, które wykonują operacje mnożenia i nie mnożenia równolegle z opóźnieniem pojedynczego cyklu instrukcji. Wewnętrznie QPU jest 4-drożnym procesorem SIMD multipleksowanym 4x w ciągu czterech cykli, co czyni go szczególnie przydatnym do przetwarzania strumienie quadów pikseli”, zgodnie z Przewodnikiem referencyjnym architektury VideoCore® IV 3D firmy Broadcom . [2]
„Jednostki QPU są zorganizowane w grupy składające się z maksymalnie czterech, zwanych wycinkami, które mają pewne wspólne zasoby” — kontynuuje dokument. por. Vertex i shader .
Te „plastry” 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 on również Adaptive Scalable Texture Compression (ASTC).
Algorytmy kompresji wideo
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ą przyspieszenie sprzętowe 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 szybkości klatek (np. 30 lub 60 klatek na sekundę).
(Należy rozumieć, że brak przyspieszenia sprzętowego nie jest absolutną przeszkodą w uzyskaniu jakiegoś sposobu przetwarzania lub transkodowania takich strumieni, przy użyciu instrukcji procesora ogólnego przeznaczenia, być może z szybkością postrzeganą jako powolną nałożoną na przyspieszenie sprzętowe, może pokonać taką przeszkodę. Zapobieganie takiej przeszkodzie przy użyciu niższej rozdzielczości zmniejsza zużycie energii i redukuje radiatory, ponieważ pomaga w zachowaniu komponentów.)
Kluczowe cechy VideoCore
- Zestaw instrukcji napisany od początku z myślą o przetwarzaniu wideo. Na przykład arytmetyka nasycenia, dzięki której suma dwóch jasnych pikseli nie „zawija się” w ciemne wartości.
- Tablica procesorów graficznych do równoległego przetwarzania danych wideo przy stosunkowo niskiej szybkości zegara.
- Bardzo wysoka integracja sprawia, że procesor, GPU, pamięć i obwody wyświetlacza znajdują się w jednym chipie, eliminując obciążenie związane z jazdą szybkimi autobusami off-chip.
Warianty
Oparty na VideoCore I VC01 zapewnia funkcje wideo i multimedialne różnym telefonom Samsung, w tym SCH-V540, SCH-V4200, SCH-V490.
VideoCore II na bazie VC02 / BCM2722 procesor zapewnia wideo możliwości dla firmy Apple „s 5. generacji iPod .
Procesor BCM2727 oparty na VideoCore III zapewnia obsługę wideo, zdjęć i grafiki 3D dla telefonu Nokia N8 .
Procesor VideoCore IV BCM2763 ulepsza 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 poborze mocy. Jest używany w Nokia 808 PureView , niektórych wersjach sprzętu Roku i Raspberry Pi (odpowiednio modele 2835/2836 dla wersji 1/2).
Procesor VideoCore IV BCM28155 obsługuje kodowanie i dekodowanie 1080p, ulepszoną grafikę 2D i 3D z dwurdzeniowym procesorem ARM Cortex-A9 w chipsecie BCM28155. Jest używany w Samsung Galaxy S II Plus , Samsung Galaxy Grand i Amazon Fire TV Stick .
Procesor 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 układów SoC przyjmujących bloki VideoCore SIP
| SoC | GPU | procesor | Maksymalny wyświetlacz | Wykorzystanie urządzeń | ||||
|---|---|---|---|---|---|---|---|---|
| Mikroarchitektura | Częst. ( MHz ) | Zestaw instrukcji | Mikroarchitektura | Rdzenie | Częst. (MHz) | |||
| VC01 | Rdzeń wideo 1 | Nic | CIF |
Lista
|
||||
| BCM2702 (VC02) | Rdzeń wideo 2 | Nic | SD PAL/NTSC |
Lista
|
||||
| BCM2705 (VC05) | Rdzeń wideo 2 | Nic | SD PAL/NTSC | |||||
| BCM2091 | Rdzeń wideo 4 | Nic | Nieokreślony | |||||
| BCM2722 | Rdzeń wideo 2 | Nic | SD PAL/NTSC |
Lista |
||||
| BCM2724 | Rdzeń wideo 2 | Nic | SD PAL/NTSC | |||||
| BCM2727 | Rdzeń wideo 3 | Nic | HD 720p |
Lista |
||||
| BCM11181 | Rdzeń wideo 3 | Nic | HD 720p | |||||
| BCM2763 | Rdzeń wideo 4 | Nic | Full HD 1080p | |||||
| BCM2820 | Rdzeń wideo 4 | ARMv6 | ARM1176 | 1 | 600 | Full HD 1080p | ||
| BCM2835 | Rdzeń wideo 4 | 250 | ARMv6 | ARM1176 | 1 | 700 | Full HD 1080p |
Lista |
| BCM2836 | Rdzeń wideo 4 | 250 | ARMv7 | Cortex-A7 | 4 | 900 | Full HD 1080p | Raspberry Pi 2 |
| BCM2837 | Rdzeń wideo 4 | 300 | ARMv8 | Cortex-A53 | 4 | 1200 | Full HD 1080p | Raspberry Pi 3 |
| BCM11182 | Rdzeń wideo 4 | Nic | Full HD 1080p | |||||
| BCM11311 | Rdzeń wideo 4 | ARMv7 | Cortex-A9 | 2 | Full HD 1080p | |||
| BCM21654 | Rdzeń wideo 4 | ARMv7 | Cortex-A9 + Cortex-R4 | 1+1 | Full HD 1080p | |||
| BCM21654G | Rdzeń wideo 4 | ARMv7 | Cortex-A9 | 1 | do 1000 | HD 720p | ||
| BCM21663 | Rdzeń wideo 4 | ARMv7 | Cortex-A9 | 1 | do 1200 | HD 720p |
Lista
|
|
| BCM21664 | Rdzeń wideo 4 | ARMv7 | Cortex-A9 | 1 | do 1000 | HD 720p | ||
| BCM21664T | Rdzeń wideo 4 | ARMv7 | Cortex-A9 | 1 | do 1200 | Full HD 1080p |
Lista
|
|
| BCM28150 | Rdzeń wideo 4 | ARMv7 | Cortex-A9 | 2 | Full HD 1080p |
Lista
|
||
| BCM21553 | Rdzeń wideo 4 | ARMv6 | RAMIĘ11 | 1 | Full HD 1080p |
Lista
|
||
| BCM28145/28155 | Rdzeń wideo 4 | ARMv7 | Cortex-A9 | 2 | 1200 | Full HD 1080p | ||
| BCM23550 | Rdzeń wideo 4 | ARMv7 | Cortex-A7 | 4 | 1200 | Full HD 1080p |
Lista
|
|
| BCM7251 | Rdzeń wideo 5 | ARMv7 | ARM Cortex-A15 | 2 | 1666 | 4K 2160p | ||
| BCM2711B0 | VideoCore VI | 500 | ARMv8 | Ramię Cortex-A72 | 4 | 1500 | Podwójny 4K 2160p | Raspberry Pi 4B |
| SoC | Mikroarchitektura | Częst. ( MHz ) | Zestaw instrukcji | Mikroarchitektura | Rdzenie | Częst. (MHz) | Maksymalny wyświetlacz | Wykorzystanie urządzeń |
| GPU | procesor | |||||||
Produkty VideoCore
Chipy VideoCore mogą obsługiwać kompletne aplikacje - nie są to po prostu chipy wideo DSP, które wymagają oddzielnego procesora do dostarczania i gromadzenia danych. W praktyce jednak są one często używane jak proste akceleratory, ponieważ firmy zwykle wolą ostrożnie przyswajać nową technologię, niż podejmować duże ryzyko przeniesienia dużej ilości kodu aplikacji z istniejącego projektu opartego na ARM. VideoCore może również nie być optymalnie energooszczędny w zadaniach innych niż DSP, ale może być połączony z wysoce wydajnym rdzeniem procesora, na przykład typowe zadania niezwiązane z multimediami rzadko wymagają więcej niż 32-bitowej szerokości magistrali, podczas gdy konstrukcja VideoCore wykorzystuje wiele rdzenie o dużej szerokości magistrali. Dobrym przykładem tego podejścia jest iPod wideo firmy Apple.
Laptopy o niskim poborze mocy wykorzystują procesory i układy graficzne o niskim poborze mocy, dlatego często mają problemy z odtwarzaniem wideo z pełną liczbą klatek na sekundę. Portowanie całego systemu operacyjnego na chipie 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).
Odtwarzacze Blu-ray mogą również używać go jako akceleratora wideo o niskim poborze mocy.
Zauważając, że układy VideoCore były zwykle używane z układami opartymi na ARM, najnowsze układy mają procesory VideoCore i ARM.
Wsparcie dla Linuksa
W dniu 28 lutego 2014 r., w dniu drugiej rocznicy powstania Raspberry Pi , firma Broadcom wraz z fundacją Raspberry PI ogłosiła wydanie pełnej dokumentacji rdzenia graficznego VideoCore IV oraz kompletne wydanie źródłowe stosu graficznego pod 3-klauzulowa licencja BSD .
Jednak tylko niewielka część sterownika została wydana jako open source; cała akceleracja wideo odbywa się za pomocą 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ł opracowany (w oparciu o inżynierię wsteczną i badania patentowe) przez Hermana Hermitage'a i jest dostępny na GitHub.
W czerwcu 2014 roku Emma Anholt opuściła firmę Intel dla Broadcom, aby opracować darmowy sterownik (sterownik DRM / KMS i sterownik Gallium3D ) dla VC4 (VideoCore 4). Po tygodniu zgłosił godne uwagi postępy.
Objąłem tam nową rolę jako programista open source. Będę pracował nad budowaniem licencjonowanego przez MIT sterownika Mesa 3D i jądra DRM dla 2708 (aka 2835), układu znajdującego się w Raspberry Pi .
— Emma Anholt, http://anholt.livejournal.com/44239.html
Wolnie licencjonowany kod grafiki 3D został wprowadzony do Mesy 29 sierpnia 2014 roku i został po raz pierwszy wydany jako część Mesa 10.3.
Konkurenci rynkowi
Podobne serie mobilnych układów multimedialnych obejmują Adreno , Texas Instruments OMAP , Nvidia Tegra , AllWinner A1X oraz Freescale i.MX . Są one oparte na architekturze ARM z tablicami procesorów graficznych.
Źródła danych
Strona Broadcom YouTube zawiera filmy demonstrujące możliwości przetwarzania wideo, ale ich strona internetowa zawiera jedynie informacje o produktach. Szczegółowe dane i narzędzia programistyczne są dostępne tylko w ramach umowy NDA , i to tylko dla producentów, którzy mają rynek na bardzo wiele jednostek. Jednak 28 lutego 2014 r., w dniu drugiej rocznicy powstania Raspberry Pi, firma Broadcom wraz z Raspberry Pi Foundation ogłosiła wydanie pełnej dokumentacji rdzenia graficznego VideoCore IV oraz kompletne wydanie źródłowe stosu graficznego na 3-klauzulowej licencji BSD.