VideoCore - VideoCore

Ein Broadcom VideoCore-Prozessor treibt die Reihe der beliebten Raspberry Pi- Mikrocomputer an.

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
  • Samsung SCH-V490, Samsung SCH-V420, Samsung SCH-V450, Samsung SCH-V4200, Samsung SCH-V540, Samsung SCH-X699,
BCM2702 (VC02) VideoCore 2 Keiner SD PAL/NTSC
Aufführen
  • 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 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
  • K-Touch W68, K-Touch W70
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
  • Ausgerichtet auf 3G-Basisbandverarbeitung, leistungsstark genug, um Android OS auszufü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
  • 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 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 .

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.

Siehe auch

Verweise