VideoCore

Last updated

A Broadcom VideoCore processor powers the line of popular Raspberry Pi micro-computers. Raspberry-Pi-2-Bare-BR.jpg
A Broadcom VideoCore processor powers the line of popular Raspberry Pi micro-computers.

VideoCore is a series of low-power mobile multimedia processors originally developed by Alphamosaic Ltd and now owned by Broadcom. Alphamosaic marketed its first version as a two-dimensional DSP architecture that makes it flexible and efficient enough to decode (as well as encode) a number of multimedia codecs in software while maintaining low power usage. [1] The semiconductor intellectual property core (SIP core) has been found so far only on Broadcom SoCs.

Contents

Technical details

Multimedia system constraints

Mobile multimedia devices require a lot of high-speed video processing but at low power for long battery life. The ARM processor core has a high IPS per watt figure (and thus dominates the mobile phone market) but requires video acceleration coprocessors and display controllers for a complete system. The amount of data passing between these chips at high speed results in higher power consumption. Specialised co-processors may be optimised for throughput over latency (more cores and data parallelism, but at a lower clock speed) and have instruction-sets and memory architectures designed for media processing (e.g. saturation arithmetic, and handling of specialised data formats).

3D engine

The VideoCoreIV-AG100-R found in the Raspberry Pi 1, 2 and 3, is documented to fully support OpenGL ES 2.0 and OpenVG 1.1.

The 3D engine is composed of various subsystems, the most abundant being the QPUs. A QPU is a 16-way single instruction, multiple data (SIMD) processor.

"Each processor has two vector floating-point ALUs which carry out multiply and non-multiply operations in parallel with single instruction cycle latency. Internally the QPU is a 4-way SIMD processor multiplexed 4× over four cycles, making it particularly suited to processing streams of quads of pixels," according to Broadcom's VideoCore® IV 3D Architecture Reference Guide.

"QPUs are organized into groups of up to four, termed slices, which share certain common resources," the document continues. cf. Vertex and shader.

These "slices" correspond roughly to AMD's Compute Units.

At least VC 4 (e.g. in the Raspberry Pi) does not support S3 Texture Compression (S3TC). [2] It probably also does not support Adaptive Scalable Texture Compression (ASTC).

Video compression algorithms

Of video compression algorithms currently in wide use, such as H.263, H.264/MPEG-4 AVC, MPEG-4, MPEG-2, MPEG-1, H.265, Daala, Theora, VP8 and VP9, Broadcom's VideoCore products support hardware acceleration of some operations. In some cases only decompression, only compression or both up to a certain resolution (e.g. 720p or 1080p) and up to a certain frame rate (e.g. 30 or 60 frames per second).

VideoCore key features

Variants

The VideoCore I-based VC01 provides video and multimedia capabilities to various Samsung phones, including SCH-V540, SCH-V4200, SCH-V490. [3]

The VideoCore II-based VC02 / BCM2722 processor provides video capabilities for Apple's 5th generation iPod. [4]

The VideoCore III-based BCM2727 processor provides video, still and 3D graphics capabilities for the Nokia N8.

The VideoCore IV BCM2763 processor improves on the VideoCore III with support for 1080p encode and decode, along with higher resolution camera support and faster 2D and 3D graphics, all at very low power. It is used in the Nokia 808 PureView, [5] some versions of Roku hardware and the Raspberry Pi (2835/2836 models for versions 1/2 accordingly). [6]

The VideoCore IV BCM28155 processor supports for 1080p encode and decode, improved 2D and 3D graphics with dual-core ARM Cortex-A9 CPU in BCM28155 chipset. It is used in the Samsung Galaxy S II Plus, Samsung Galaxy Grand and Amazon Fire TV Stick.

The VideoCore V BCM7251 processor supports 2160p60 decode and transcode or dual 1080p60 encode/decode, features improved codec support (H.265), DDR3 and DDR4 support, USB 3.0, PCIe, Gigabit Ethernet and 802.11ac on a dual-core ARM Cortex-A15 Brahma15 dual core CPU.

Table of SoCs adopting VideoCore SIP blocks

SoC GPUCPUMax displayUtilizing devices
MicroarchitectureFreq. (MHz) Instruction set Microarchitecture CoresFreq. (MHz)
VC01VideoCore 1None CIF
List
  • Samsung SCH-V490, Samsung SCH-V420, Samsung SCH-V450, Samsung SCH-V4200, Samsung SCH-V540, Samsung SCH-X699,
BCM2702 (VC02) VideoCore 2NoneSD PAL/NTSC
List
  • 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 2NoneSD PAL/NTSC
BCM2091 VideoCore 4NoneUnspecified
BCM2722 VideoCore 2NoneSD PAL/NTSC
BCM2724 VideoCore 2NoneSD PAL/NTSC
BCM2727 VideoCore 3NoneHD 720p
List
BCM11181 VideoCore 3NoneHD 720p
BCM2763 VideoCore 4NoneFull HD 1080p
BCM2820 VideoCore 4ARMv6 ARM1176 1600Full HD 1080p
BCM2835 VideoCore 4250ARMv6 ARM1176 1700Full HD 1080p
BCM2836VideoCore 4250ARMv7 Cortex-A7 4900Full HD 1080p [lower-alpha 1] Raspberry Pi 2 [7]
BCM2837VideoCore 4300ARMv8 Cortex-A53 41200Full HD 1080p [lower-alpha 1] Raspberry Pi 3 [7]
BCM11182 VideoCore 4NoneFull HD 1080p
BCM11311 VideoCore 4ARMv7 Cortex-A9 2Full HD 1080p
BCM21654 VideoCore 4ARMv7 Cortex-A9 + Cortex-R4 1+1Full HD 1080p
BCM21654G VideoCore 4ARMv7 Cortex-A9 1up to 1000HD 720p
BCM21663 VideoCore 4ARMv7 Cortex-A9 1up to 1200HD 720p
List
  • K-Touch W68, K-Touch W70
BCM21664 VideoCore 4ARMv7 Cortex-A9 1up to 1000HD 720p
BCM21664T VideoCore 4ARMv7 Cortex-A9 1up to 1200Full HD 1080p
List
BCM28150 VideoCore 4ARMv7 Cortex-A9 2Full HD 1080p
List
  • Aimed at 3G baseband processing, powerful enough to run Android OS.
BCM21553 VideoCore 4ARMv6 ARM11 1Full HD 1080p
List
BCM28145/28155 VideoCore 4ARMv7 Cortex-A9 21200Full HD 1080p
BCM23550 VideoCore 4ARMv7 Cortex-A7 41200Full HD 1080p
List
  • HTC Desire 601 Dual SIM, XOLO Opus-HD, [10] Samsung Galaxy Grand Neo, K-Touch W96, K-Touch W98
BCM7251 (archive.org) VideoCore 5ARMv7 ARM Cortex-A15 216664K 2160p
BCM2711B0VideoCore 6500ARMv8 ARM Cortex-A72 41800Dual 4K 2160p Raspberry Pi 4B [11]
BCM2712VideoCore 7800ARMv8 ARM Cortex-A76 42400Dual 4K 2160p 60fps Raspberry Pi 5 [12]
SoC MicroarchitectureFreq. (MHz) Instruction set Microarchitecture CoresFreq. (MHz)Max displayUtilizing devices
GPUCPU
  1. 1 2 Editing /boot/config.txt can yield higher resolutions by changing scan count and pixel clocks (i.e. 2560x1080) [9]

VideoCore products

VideoCore chips can run complete applications – DSP chips are not simply just video DSP chips that require a separate processor to supply and collect data. The VideoCore may also not be optimally power-efficient at non-DSP tasks, but may be coupled with a highly efficient CPU core. For instance, typical non-multimedia tasks rarely require more than 32-bit bus width, while the VideoCore design employs multiple wide-bus-width cores.

The video decoding was offloaded onto a video accelerator board using a BCM chip.[ citation needed ]

Blu-ray players can also use it as a low-power video accelerator.

Noting that VideoCore chips were usually used with ARM-based chips, the latest chips have VideoCore and ARM processors.

Linux support

On 28 February 2014, on the day of the second anniversary of the Raspberry Pi, Broadcom, together with the Raspberry Pi Foundation, announced the release of full documentation for the VideoCore IV graphics core, and a complete source release of the graphics stack under a 3-clause BSD license. [13] [14] [15]

However, only a minor part of the driver was released as open source; all of the video acceleration is done using a firmware coded for its proprietary GPU, which was not open sourced. The entire SoC itself is managed by a ThreadX-based RTOS that is loaded into the VideoCore's VPU during bootup. [16]

An architectural overview of the VideoCore based system was compiled (based on reverse engineering & patent research) by Herman Hermitage and is available on GitHub. [17]

In June 2014, Emma Anholt left Intel for Broadcom to develop a free driver (DRM/KMS driver and Gallium3D-driver) for VC4 (VideoCore 4). [18] After one week, she reported noteworthy progress. [19] [20]

I've taken on a new role as an open source developer there. I'm going to be working on building an MIT-licensed Mesa 3D and kernel DRM driver for the 2708 (aka the 2835), the chip that's in the Raspberry Pi. [21]

The freely licensed 3D graphics code was committed to Mesa on 29 August 2014, [22] and was first released as part of Mesa 10.3.

Compute Kernel programming

The open source community has produced a C++ library called V3DLib for directly running custom compute kernels on the VideoCore GPU on all Raspberry Pi's. This allows general-purpose computing on graphics processing units (GPGPU) which is not limited by OpenGL's graphics-oriented API.

Market competitors

Similar mobile multimedia chip ranges include Adreno, Texas Instruments OMAP, Nvidia Tegra, AllWinner A1X and Freescale i.MX. These are ARM-based with arrays of graphics processing units.

Data sources

The Broadcom YouTube page [23] has videos demonstrating the video processing capability, but their website only goes as far as providing product briefs. Detailed data and development tools are only available under NDA, and then only for manufacturers with a market for very many units.

See also

Related Research Articles

<span class="mw-page-title-main">Graphics processing unit</span> Specialized electronic circuit; graphics accelerator

A graphics processing unit (GPU) is a specialized electronic circuit initially designed to accelerate computer graphics and image processing. After their initial design, GPUs were found to be useful for non-graphic calculations involving embarrassingly parallel problems due to their parallel structure. Other non-graphical uses include the training of neural networks and cryptocurrency mining.

OpenVG is an API designed for hardware-accelerated 2D vector graphics. Its primary platforms are mobile phones, gaming & media consoles and consumer electronic devices. It was designed to help manufacturers create more attractive user interfaces by offloading computationally intensive graphics processing from the CPU onto a GPU to save energy. The OpenGL ES library provides similar functionality for 3D graphics. OpenVG is managed by the non-profit technology consortium Khronos Group.

<span class="mw-page-title-main">OMAP</span> Texas Instruments image/video processors

OMAP is a family of image/video processors that was developed by Texas Instruments. They are proprietary system on chips (SoCs) for portable and mobile multimedia applications. OMAP devices generally include a general-purpose ARM architecture processor core plus one or more specialized co-processors. Earlier OMAP variants commonly featured a variant of the Texas Instruments TMS320 series digital signal processor.

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

<span class="mw-page-title-main">Texas Instruments DaVinci</span> Family of system-on-a-chip processors

The Texas Instruments DaVinci is a family of system on a chip processors that are primarily used in embedded video and vision applications. Many processors in the family combine a DSP core based on the TMS320 C6000 VLIW DSP family and an ARM CPU core into a single system on chip. By using both a general-purpose processor and a DSP, the control and media portions can both be executed by separate processors.

Unified Video Decoder is the name given to AMD's dedicated video decoding ASIC. There are multiple versions implementing a multitude of video codecs, such as H.264 and VC-1.

<span class="mw-page-title-main">Tegra</span> System on a chip by Nvidia

Tegra is a system on a chip (SoC) series developed by Nvidia for mobile devices such as smartphones, personal digital assistants, and mobile Internet devices. The Tegra integrates an ARM architecture central processing unit (CPU), graphics processing unit (GPU), northbridge, southbridge, and memory controller onto one package. Early Tegra SoCs are designed as efficient multimedia processors. The Tegra-line evolved to emphasize performance for gaming and machine learning applications without sacrificing power efficiency, before taking a drastic shift in direction towards platforms that provide vehicular automation with the applied "Nvidia Drive" brand name on reference boards and its semiconductors; and with the "Nvidia Jetson" brand name for boards adequate for AI applications within e.g. robots or drones, and for various smart high level automation purposes.

Rockchip is a Chinese fabless semiconductor company based in Fuzhou, Fujian province. Rockchip has been providing SoC products for tablets & PCs, streaming media TV boxes, AI audio & vision, IoT hardware since founded in 2001. It has offices in Shanghai, Beijing, Shenzhen, Hangzhou and Hong Kong. It designs system on a chip (SoC) products, using the ARM architecture licensed from ARM Holdings for the majority of its projects.

<span class="mw-page-title-main">PandaBoard</span> Single board computer

The PandaBoard was a low-power single-board computer development platform based on the Texas Instruments OMAP4430 system on a chip (SoC). The board has been available to the public at the subsidized price of US$174 since 27 October 2010. It is a community supported development platform.

<span class="mw-page-title-main">Raspberry Pi</span> Series of low-cost single-board computers

Raspberry Pi is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. The Raspberry Pi project originally leaned toward the promotion of teaching basic computer science in schools. The original model became more popular than anticipated, selling outside its target market for diverse uses such as robotics, home and industrial automation, and by computer and electronic hobbyists, because of its low cost, modularity, open design, and its adoption of the HDMI and USB standards.

Intel Quick Sync Video is Intel's brand for its dedicated video encoding and decoding hardware core. Quick Sync was introduced with the Sandy Bridge CPU microarchitecture on 9 January 2011 and has been found on the die of Intel CPUs ever since.

<span class="mw-page-title-main">Mali (processor)</span> Series of graphics processing units produced by ARM Holdings

The Mali and Immortalis series of graphics processing units (GPUs) and multimedia processors are semiconductor intellectual property cores produced by Arm Holdings for licensing in various ASIC designs by Arm partners.

Heterogeneous System Architecture (HSA) is a cross-vendor set of specifications that allow for the integration of central processing units and graphics processors on the same bus, with shared memory and tasks. The HSA is being developed by the HSA Foundation, which includes AMD and ARM. The platform's stated aim is to reduce communication latency between CPUs, GPUs and other compute devices, and make these various devices more compatible from a programmer's perspective, relieving the programmer of the task of planning the moving of data between devices' disjoint memories.

AMD Steamroller Family 15h is a microarchitecture developed by AMD for AMD APUs, which succeeded Piledriver in the beginning of 2014 as the third-generation Bulldozer-based microarchitecture. Steamroller APUs continue to use two-core modules as their predecessors, while aiming at achieving greater levels of parallelism.

Video Code Engine is AMD's video encoding application-specific integrated circuit implementing the video codec H.264/MPEG-4 AVC. Since 2012 it was integrated into all of their GPUs and APUs except Oland.

Heterogeneous computing refers to systems that use more than one kind of processor or core. These systems gain performance or energy efficiency not just by adding the same type of processors, but by adding dissimilar coprocessors, usually incorporating specialized processing capabilities to handle particular tasks.

<span class="mw-page-title-main">AMD TrueAudio</span> AMDs application-specific integrated circuit

TrueAudio is AMD's application-specific integrated circuit (ASIC) intended to serve as dedicated co-processor for the calculations of computationally expensive advanced audio signal processing, such as convolution reverberation effects and 3D audio effects. TrueAudio is integrated into some of the AMD GPUs and APUs available since 2013.

<span class="mw-page-title-main">AMD PowerTune</span> Brand name by AMD

AMD PowerTune is a series of dynamic frequency scaling technologies built into some AMD GPUs and APUs that allow the clock speed of the processor to be dynamically changed by software. This allows the processor to meet the instantaneous performance needs of the operation being performed, while minimizing power draw, heat generation and noise avoidance. AMD PowerTune aims to solve thermal design power and performance constraints.

Vulkan is a low-level, low-overhead cross-platform API and open standard for 3D graphics and computing. It was intended to address the shortcomings of OpenGL, and allow developers more control over the GPU. It is designed to support a wide variety of GPUs, CPUs and operating systems, it is also designed to work with modern multi-core CPUs.

References

  1. Alphamosaic Ltd > Technology VideoCore, archived on 9 February 2003.
  2. "Can I play Morrowind with OpenMW on other platforms like the Raspberry Pi?". 6 August 2011.
  3. "Broadcom presentation by Yossi Cohen" (PDF).
  4. Ecker, Clint (20 October 2005). "Video iPod: Vivisection". Ars Technica . Retrieved 29 March 2008.
  5. "Nokia 808 PureView with Unbelievable 41 Megapixel Camera". staygrab.com. Archived from the original on 13 January 2013. Retrieved 23 January 2013.
  6. "BCM2835 - Raspberry Pi Documentation".
  7. 1 2 3 "Raspberry Pi FAQs - Frequently Asked Questions".
  8. "Roku 2 XS Teardown". My Cable Alternatives. 28 July 2011.
  9. "STICKY: HOWTO: Create Custom HDMI modes - Page 3". Raspberry Pi Forums. Retrieved 24 September 2019.
  10. "Opus HD". Xolo . Archived from the original on 10 October 2014.
  11. "Raspberry Pi 4 Review: The New Gold Standard for Single-Board Computing". Tom's Hardware. 28 August 2019. Retrieved 24 September 2019.
  12. "Introducing: Raspberry Pi 5!". Raspberry Pi. 28 September 2023. Retrieved 28 September 2023.
  13. "Raspberry Pi marks 2nd birthday with plan for open source graphics driver". 28 February 2014.
  14. "A birthday present from Broadcom". Raspberry Pi. 28 February 2014.
  15. "Android for All: Broadcom Gives Developers Keys to the VideoCore Kingdom". www.broadcom.com. Retrieved 24 September 2019.
  16. Hermitage, Herman (21 March 2015). "Fun and Games with the Videocoreiv Quad Processor Units". GitHub .
  17. "hermanhermitage/videocoreiv". GitHub .
  18. "Eric Anholt Leaves Intel's Linux Graphics Team For Broadcom". 17 June 2014.
  19. "VC4 Linux driver". GitHub . Archived from the original on 22 July 2014. Retrieved 22 June 2014.
  20. "VC4 driver week 1". 22 June 2014. Archived from the original on 16 August 2014.
  21. Eric Anholt. "new job!" . Retrieved 27 December 2023.
  22. "vc4: Initial skeleton driver import". The Mesa 3D Graphics Library. 9 August 2014.
  23. "Broadcom Limited". YouTube .