VideoCore - VideoCore
VideoCore ist ein mobiler Multimedia-Prozessor mit geringem Stromverbrauch, der ursprünglich von Alphamosaic Ltd entwickelt wurde und jetzt im Besitz von Broadcom ist . Seine zweidimensionale DSP- Architektur macht es flexibel und effizient genug, um eine Reihe von Multimedia-Codecs in Software zu dekodieren (sowie zu kodieren) und gleichzeitig einen geringen Stromverbrauch beizubehalten. Der Halbleiter-Intelligence-Property-Core (SIP-Core) wurde bisher nur auf Broadcom-SoCs gefunden.
Technische Details
Einschränkungen des Multimediasystems
Mobile Multimediageräte erfordern viel Hochgeschwindigkeits-Videoverarbeitung, jedoch bei geringer Leistung für eine lange Akkulaufzeit. Der ARM- Prozessorkern hat eine hohe IPS- pro-Watt-Zahl (und dominiert damit den Mobilfunkmarkt), benötigt aber für ein komplettes System Videobeschleunigungs-Coprozessoren und Display-Controller. Die Datenmenge, die mit hoher Geschwindigkeit zwischen diesen Chips übertragen wird, führt zu einem höheren Stromverbrauch. Spezialisierte Co-Prozessoren können für den Durchsatz über die Latenzzeit optimiert sein (mehr Kerne und Datenparallelität, aber mit einer niedrigeren Taktgeschwindigkeit) und verfügen über Befehlssätze und Speicherarchitekturen, die für die Medienverarbeitung ausgelegt sind (z. B. Sättigungsarithmetik und Verarbeitung spezialisierter Datenformate) .
3D-Engine
Der im Raspberry Pi 1, 2 und 3 enthaltene VideoCoreIV-AG100-R unterstützt laut Dokumentation OpenGL ES 2.0 und OpenVG 1.1 vollständig .
Die 3D-Engine besteht aus verschiedenen Subsystemen, von denen die QPUs am häufigsten vorkommen. Eine QPU ist ein 16-Wege- Single-Instruction-Multiple- Data- (SIMD)-Prozessor.
"Jeder Prozessor verfügt über zwei Vektor-Gleitkomma- ALUs , die Multiplikations- und Nicht-Multiplikationsoperationen parallel mit einer einzigen Befehlszykluslatenz ausführen. Intern ist die QPU ein 4-Wege-SIMD-Prozessor, der 4x über vier Zyklen gemultiplext wird, was sie besonders für die Verarbeitung geeignet macht Streams von Pixelquadraten ", gemäß dem VideoCore® IV 3D Architecture Reference Guide von Broadcom . [2]
„QPUs sind in Gruppen von bis zu vier, sogenannten Slices, organisiert, die sich bestimmte gemeinsame Ressourcen teilen“, heißt es in dem Dokument weiter. vgl. Vertex und Shader .
Diese "Slices" entsprechen in etwa den Compute Units von AMD .
Zumindest VC 4 (zB im Raspberry Pi) unterstützt keine S3 Texture Compression (S3TC). Es unterstützt wahrscheinlich auch keine Adaptive Scalable Texture Compression (ASTC).
Videokompressionsalgorithmen
Von derzeit weit verbreiteten Videokomprimierungsalgorithmen wie H.263 , H.264/MPEG-4 AVC , MPEG-4 , MPEG-2 , MPEG-1 , H.265 , Daala , Theora , VP8 und VP9 , Broadcoms VideoCore Produkte unterstützen die Hardwarebeschleunigung einiger Vorgänge. In manchen Fällen nur Dekompression, nur Kompression oder beides bis zu einer bestimmten Auflösung (zB 720p oder 1080p) und bis zu einer bestimmten Bildrate (zB 30 oder 60 Bilder pro Sekunde).
(Es sollte klar sein, dass das Fehlen von Hardwarebeschleunigung kein absolutes Hindernis für den Erhalt eines Verfahrens zum Verarbeiten oder Umcodieren solcher Ströme ist, das unter Verwendung von Allzweck-CPU-Befehlen, möglicherweise mit einer als langsam empfundenen Geschwindigkeit, die gegen die Hardwarebeschleunigung erhoben wird, ein solches Hindernis überwinden kann. Das Vermeiden eines solchen Hindernisses durch eine niedrigere Auflösung verringert den Stromverbrauch und reduziert Kühlkörper, da dies die Erhaltung der Komponenten unterstützt.)
Hauptfunktionen von VideoCore
- Anleitungssatz, der von Anfang an mit Blick auf die Videoverarbeitung geschrieben wurde. Zum Beispiel Sättigungsarithmetik, damit sich die Summe zweier heller Pixel nicht in dunkle Werte „umwickelt“.
- Ein Array von Grafikverarbeitungseinheiten zum parallelen Berechnen von Videodaten bei relativ niedriger Taktgeschwindigkeit.
- Durch die sehr hohe Integration werden CPU, GPUs, Speicher und Anzeigeschaltungen auf einem einzigen Chip untergebracht, wodurch die Strombelastung durch das Ansteuern schneller Off-Chip-Busse entfällt.
Varianten
Der auf VideoCore I basierende VC01 bietet Video- und Multimediafunktionen für verschiedene Samsung-Telefone, einschließlich SCH-V540, SCH-V4200, SCH-V490.
Die VideoCore II-basierte VC02 / BCM2722 Prozessor bietet Video - Funktionen für Apple - s 5. Generation iPod .
Der auf VideoCore III basierende BCM2727- Prozessor bietet Video-, Stand- und 3D-Grafikfunktionen für das Nokia N8 .
Der VideoCore IV BCM2763- Prozessor verbessert den VideoCore III mit Unterstützung für 1080p- Kodierung und -Dekodierung, zusammen mit Kameraunterstützung mit höherer Auflösung und schnelleren 2D- und 3D-Grafiken, alles bei sehr geringem Stromverbrauch. Es wird im Nokia 808 PureView , einigen Versionen der Roku- Hardware und dem Raspberry Pi (2835/2836-Modelle für die Versionen 1/2 entsprechend) verwendet.
Der VideoCore IV BCM28155- Prozessor unterstützt 1080p-Kodierung und -Dekodierung, verbesserte 2D- und 3D-Grafik mit Dual-Core- ARM-Cortex-A9- CPU im BCM28155-Chipsatz. Es wird im Samsung Galaxy S II Plus , Samsung Galaxy Grand und Amazon Fire TV Stick verwendet .
Der VideoCore V BCM7251 Prozessor unterstützt 2160p60 Decodierung und Transcodierung oder Dual 1080p60 Codierung/Decodierung, bietet verbesserte Codec-Unterstützung (H.265), DDR3 und DDR4 Unterstützung, USB 3.0, PCIe, Gigabit Ethernet und 802.11ac auf einem Dual-Core ARM Cortex- A15 Brahma15 Dual-Core-CPU.
Tabelle der SoCs, die VideoCore SIP-Blöcke verwenden
SoC | GPU | Zentralprozessor | Maximale Anzeige | Geräte verwenden | ||||
---|---|---|---|---|---|---|---|---|
Mikroarchitektur | Freq. ( MHz ) | Befehlssatz | Mikroarchitektur | Kerne | Freq. (MHz) | |||
VC01 | VideoCore 1 | Keiner | CIF |
Aufführen
|
||||
BCM2702 (VC02) | VideoCore 2 | Keiner | SD PAL/NTSC |
Aufführen
|
||||
BCM2705 (VC05) | VideoCore 2 | Keiner | SD PAL/NTSC | |||||
BCM2091 | VideoCore 4 | Keiner | Nicht spezifiziert | |||||
BCM2722 | VideoCore 2 | Keiner | SD PAL/NTSC |
Aufführen |
||||
BCM2724 | VideoCore 2 | Keiner | SD PAL/NTSC | |||||
BCM2727 | VideoCore 3 | Keiner | HD 720p |
Aufführen |
||||
BCM11181 | VideoCore 3 | Keiner | HD 720p | |||||
BCM2763 | VideoCore 4 | Keiner | Full-HD 1080p | |||||
BCM2820 | VideoCore 4 | ARMv6 | ARM1176 | 1 | 600 | Full-HD 1080p | ||
BCM2835 | VideoCore 4 | 250 | ARMv6 | ARM1176 | 1 | 700 | Full-HD 1080p |
Aufführen |
BCM2836 | VideoCore 4 | 250 | ARMv7 | Kortex-A7 | 4 | 900 | Full-HD 1080p | Raspberry Pi 2 |
BCM2837 | VideoCore 4 | 300 | ARMv8 | Kortex-A53 | 4 | 1200 | Full-HD 1080p | Raspberry Pi 3 |
BCM11182 | VideoCore 4 | Keiner | Full-HD 1080p | |||||
BCM11311 | VideoCore 4 | ARMv7 | Kortex-A9 | 2 | Full-HD 1080p | |||
BCM21654 | VideoCore 4 | ARMv7 | Kortex-A9 + Kortex-R4 | 1+1 | Full-HD 1080p | |||
BCM21654G | VideoCore 4 | ARMv7 | Kortex-A9 | 1 | bis zu 1000 | HD 720p | ||
BCM21663 | VideoCore 4 | ARMv7 | Kortex-A9 | 1 | bis 1200 | HD 720p |
Aufführen
|
|
BCM21664 | VideoCore 4 | ARMv7 | Kortex-A9 | 1 | bis zu 1000 | HD 720p | ||
BCM21664T | VideoCore 4 | ARMv7 | Kortex-A9 | 1 | bis 1200 | Full-HD 1080p |
Aufführen
|
|
BCM28150 | VideoCore 4 | ARMv7 | Kortex-A9 | 2 | Full-HD 1080p |
Aufführen
|
||
BCM21553 | VideoCore 4 | ARMv6 | ARM11 | 1 | Full-HD 1080p |
Aufführen
|
||
BCM28145/28155 | VideoCore 4 | ARMv7 | Kortex-A9 | 2 | 1200 | Full-HD 1080p | ||
BCM23550 | VideoCore 4 | ARMv7 | Kortex-A7 | 4 | 1200 | Full-HD 1080p |
Aufführen
|
|
BCM7251 | VideoCore 5 | ARMv7 | ARM-Cortex-A15 | 2 | 1666 | 4K 2160p | ||
BCM2711B0 | VideoCore VI | 500 | ARMv8 | ARM-Cortex-A72 | 4 | 1500 | Dual 4K 2160p | Raspberry Pi 4B |
SoC | Mikroarchitektur | Freq. ( MHz ) | Befehlssatz | Mikroarchitektur | Kerne | Freq. (MHz) | Maximale Anzeige | Geräte verwenden |
GPU | Zentralprozessor |
VideoCore-Produkte
VideoCore-Chips können komplette Anwendungen ausführen – sie sind nicht einfach nur Video-DSP-Chips, die einen separaten Prozessor benötigen, um Daten bereitzustellen und zu sammeln. In der Praxis werden sie jedoch oft wie einfache Beschleuniger verwendet, da Unternehmen neue Technologien in der Regel lieber behutsam aufnehmen, anstatt ein großes Risiko einzugehen, große Mengen an Anwendungscode aus einem bestehenden ARM-basierten Design zu portieren. Der VideoCore ist möglicherweise auch bei Nicht-DSP-Aufgaben nicht optimal energieeffizient, kann aber mit einem hocheffizienten CPU-Kern gekoppelt werden, zum Beispiel erfordern typische Nicht-Multimedia-Aufgaben selten mehr als 32 Bit Busbreite, während das VideoCore-Design mehrere Kerne mit breiter Busbreite. Der Apple Video iPod ist ein gutes Beispiel für diesen Ansatz.
Laptops mit niedrigem Stromverbrauch verwenden Prozessoren und Grafikchips mit niedrigem Stromverbrauch und haben daher oft Schwierigkeiten, Videos mit vollen Bildraten abzuspielen. Es ist nicht wünschenswert oder praktisch, ein vollständiges Betriebssystem auf einen VideoCore-Chip zu portieren, so dass nur die Videodecodierung auf ein Videobeschleunigerboard (zB mit dem BCM70015-Chip) ausgelagert werden muss.
Blu-ray-Player können es auch als stromsparenden Videobeschleuniger verwenden.
Da VideoCore-Chips normalerweise mit ARM-basierten Chips verwendet wurden, verfügen die neuesten Chips über VideoCore- und ARM-Prozessoren.
Linux-Unterstützung
Am 28. Februar 2014, am Tag des zweiten Jahrestages des Raspberry Pi , gab Broadcom zusammen mit der Raspberry PI Foundation die Veröffentlichung einer vollständigen Dokumentation für den VideoCore IV-Grafikkern sowie eine vollständige Quellfreigabe des Grafikstapels unter a . bekannt 3-Klausel BSD-Lizenz .
Allerdings wurde nur ein kleiner Teil des Treibers als Open Source veröffentlicht; Die gesamte Videobeschleunigung erfolgt mit einer Firmware, die für die proprietäre GPU codiert ist, die nicht Open Source war. Der gesamte SoC selbst wird von einem ThreadX- basierten RTOS verwaltet , das beim Booten in die VPU des Videocores geladen wird.
Eine Architekturübersicht des VideoCore-basierten Systems wurde (basierend auf Reverse Engineering & Patentrecherche) von Herman Hermitage zusammengestellt und ist auf GitHub verfügbar.
Im Juni 2014 verließ Emma Anholt Intel für Broadcom, um einen kostenlosen Treiber ( DRM / KMS-Treiber und Gallium3D- Treiber) für VC4 (VideoCore 4) zu entwickeln. Nach einer Woche berichtete er von bemerkenswerten Fortschritten.
Dort habe ich eine neue Rolle als Open-Source-Entwickler übernommen. Ich werde daran arbeiten, einen MIT-lizenzierten Mesa 3D- und Kernel- DRM- Treiber für den 2708 (auch bekannt als 2835) zu erstellen , den Chip, der sich im Raspberry Pi befindet .
– Emma Anholt, http://anholt.livejournal.com/44239.html
Der frei lizenzierte 3D-Grafikcode wurde am 29. August 2014 an Mesa übergeben und erstmals als Teil von Mesa 10.3 veröffentlicht.
Marktkonkurrenten
Ähnliche mobile Multimedia - Chip Bereiche umfassen Adreno , Texas Instruments OMAP , Nvidia Tegra , AllWinner A1X und Freescale i.MX . Diese sind ARM-basiert mit Arrays von Grafikprozessoren.
Datenquellen
Die Broadcom-YouTube-Seite enthält Videos, die die Videoverarbeitungsfähigkeiten demonstrieren, aber ihre Website geht nur so weit, dass sie Produktbeschreibungen bietet. Detaillierte Daten und Entwicklungstools stehen nur unter NDA zur Verfügung , und dann nur für Hersteller mit einem Markt für sehr viele Einheiten. Am 28. Februar 2014, am Tag des zweiten Jahrestages des Raspberry Pi, kündigte Broadcom jedoch zusammen mit der Raspberry Pi Foundation die Veröffentlichung einer vollständigen Dokumentation für den VideoCore IV-Grafikkern sowie eine vollständige Quellversion des Grafikstapels an unter einer 3-Klausel-BSD-Lizenz.