VideoCore - VideoCore

Um processador Broadcom VideoCore alimenta a linha de microcomputadores populares Raspberry Pi .

VideoCore é um processador multimídia móvel de baixo consumo originalmente desenvolvido pela Alphamosaic Ltd e agora de propriedade da Broadcom . Sua arquitetura DSP bidimensional o torna flexível e eficiente o suficiente para decodificar (bem como codificar) uma série de codecs de multimídia em software, mantendo o baixo consumo de energia. O núcleo de propriedade intelectual de semicondutor ( núcleo SIP) foi encontrado até agora apenas em SoCs Broadcom.

Detalhes técnicos

Restrições do sistema multimídia

Os dispositivos móveis de multimídia requerem muito processamento de vídeo de alta velocidade, mas com baixa energia para longa duração da bateria. O núcleo do processador ARM tem um alto valor de IPS por watt (e, portanto, domina o mercado de telefonia móvel), mas requer coprocessadores de aceleração de vídeo e controladores de vídeo para um sistema completo. A quantidade de dados que passam entre esses chips em alta velocidade resulta em maior consumo de energia. Co-processadores especializados podem ser otimizados para rendimento sobre latência (mais núcleos e paralelismo de dados, mas em uma velocidade de clock menor) e ter conjuntos de instruções e arquiteturas de memória projetadas para processamento de mídia (por exemplo, aritmética de saturação e manuseio de formatos de dados especializados) .

Motor 3D

O VideoCoreIV-AG100-R encontrado no Raspberry Pi 1, 2 e 3, está documentado para oferecer suporte total a OpenGL ES 2.0 e OpenVG 1.1.

O motor 3D é composto por vários subsistemas, sendo o mais abundante os QPUs. Uma QPU é um processador SIMD ( instrução única, dados múltiplos ) de 16 vias .

"Cada processador tem duas ALUs vetoriais de ponto flutuante que realizam operações de multiplicação e não multiplicação em paralelo com latência de ciclo de instrução única. Internamente, a QPU é um processador SIMD de 4 vias multiplexado 4 × em quatro ciclos, tornando-o particularmente adequado para processamento streams de quads de pixels ", de acordo com o VideoCore® IV 3D Architecture Reference Guide da Broadcom . [2]

“Os QPUs são organizados em grupos de até quatro, denominados segmentos, que compartilham certos recursos comuns”, continua o documento. cf. Vértice e sombreador .

Essas "fatias" correspondem aproximadamente às unidades de computação da AMD .

Pelo menos VC 4 (por exemplo, no Raspberry Pi) não oferece suporte à compressão de textura S3 (S3TC). Provavelmente também não oferece suporte à Compressão de textura escalável adaptativa (ASTC).

Algoritmos de compressão de vídeo

De algoritmos de compressão de vídeo correntemente em uso ampla, tal como H.263 , H.264 / MPEG-4 AVC , MPEG-4 , MPEG-2 , MPEG-1 , H.265 , Daala , Theora , VP8 e VP9 , da Broadcom VideoCore produtos suportam aceleração de hardware de algumas operações. Em alguns casos, apenas descompactação, apenas compactação ou ambos até uma determinada resolução (por exemplo, 720p ou 1080p) e até uma certa taxa de quadros (por exemplo, 30 ou 60 quadros por segundo).

(Deve ser entendido que a falta de aceleração de hardware não é um obstáculo absoluto para a obtenção de algum método de processamento ou transcodificação de tais fluxos, o uso de instruções de CPU de uso geral, talvez a uma taxa percebida lentamente contra a aceleração de hardware, pode superar tal obstáculo. A prevenção de tal obstáculo usando uma resolução mais baixa diminui o uso de energia e reduz os dissipadores de calor, pois ajuda na preservação dos componentes.)

Principais recursos do VideoCore

  • Conjunto de instruções escrito com o processamento de vídeo em mente desde o início. Por exemplo, a saturação aritmética de modo que a soma de dois pixels brilhantes não se 'envolva' em valores escuros.
  • Uma matriz de unidades de processamento gráfico para computação paralela de dados de vídeo a uma velocidade de clock relativamente baixa.
  • A integração muito alta coloca CPU, GPUs, memória e circuito de exibição em um único chip, removendo a carga de energia de dirigir barramentos fora do chip rápidos.

Variantes

O VC01 baseado em VideoCore I fornece recursos de vídeo e multimídia para vários telefones Samsung, incluindo SCH-V540, SCH-V4200, SCH-V490.

O VC02 baseada em II VideoCore / BCM2722 processador fornece capacidades de vídeo para a Apple 's 5ª geração iPod .

O processador BCM2727 baseado em VideoCore III oferece recursos de vídeo, fotos e gráficos 3D para o Nokia N8 .

O processador VideoCore IV BCM2763 é aprimorado em relação ao VideoCore III com suporte para codificação e decodificação 1080p , juntamente com suporte para câmera de resolução mais alta e gráficos 2D e 3D mais rápidos, tudo em baixa potência. É usado no Nokia 808 PureView , em algumas versões do hardware Roku e no Raspberry Pi (modelos 2835/2836 para as versões 1/2).

O processador VideoCore IV BCM28155 suporta codificação e decodificação 1080p, gráficos 2D e 3D aprimorados com CPU ARM Cortex-A9 dual-core no chipset BCM28155. É usado no Samsung Galaxy S II Plus , Samsung Galaxy Grand e Amazon Fire TV Stick .

O processador VideoCore V BCM7251 suporta decodificação e transcodificação 2160p60 ou codificação / decodificação dupla 1080p60, oferece suporte a codec aprimorado (H.265), suporte DDR3 e DDR4, USB 3.0, PCIe, Gigabit Ethernet e 802.11ac em um ARM Cortex- dual-core CPU dual core A15 Brahma15.

Tabela de SoCs que adotam blocos VideoCore SIP

SoC GPU CPU Visor máximo Utilizando dispositivos
Microarquitetura Frequencia. ( MHz ) Conjunto de instruções Microarquitetura Núcleos Frequencia. (MHz)
VC01 VideoCore 1 Nenhum CIF
Lista
  • Samsung SCH-V490, Samsung SCH-V420, Samsung SCH-V450, Samsung SCH-V4200, Samsung SCH-V540, Samsung SCH-X699,
BCM2702 (VC02) VideoCore 2 Nenhum SD PAL / NTSC
Lista
  • 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 Nenhum SD PAL / NTSC
BCM2091 VideoCore 4 Nenhum Não especificado
BCM2722 VideoCore 2 Nenhum SD PAL / NTSC
BCM2724 VideoCore 2 Nenhum SD PAL / NTSC
BCM2727 VideoCore 3 Nenhum HD 720p
Lista
BCM11181 VideoCore 3 Nenhum HD 720p
BCM2763 VideoCore 4 Nenhum Full HD 1080p
BCM2820 VideoCore 4 ARMv6 ARM1176 1 600 Full HD 1080p
BCM2835 VideoCore 4 250 ARMv6 ARM1176 1 700 Full HD 1080p
BCM2836 VideoCore 4 250 ARMv7 Cortex-A7 4 900 Full HD 1080p Raspberry Pi 2
BCM2837 VideoCore 4 300 ARMv8 Cortex-A53 4 1200 Full HD 1080p Raspberry Pi 3
BCM11182 VideoCore 4 Nenhum Full HD 1080p
BCM11311 VideoCore 4 ARMv7 Cortex-A9 2 Full HD 1080p
BCM21654 VideoCore 4 ARMv7 Cortex-A9 + Cortex-R4 1 + 1 Full HD 1080p
BCM21654G VideoCore 4 ARMv7 Cortex-A9 1 até 1000 HD 720p
BCM21663 VideoCore 4 ARMv7 Cortex-A9 1 até 1200 HD 720p
Lista
  • K-Touch W68, K-Touch W70
BCM21664 VideoCore 4 ARMv7 Cortex-A9 1 até 1000 HD 720p
BCM21664T VideoCore 4 ARMv7 Cortex-A9 1 até 1200 Full HD 1080p
Lista
BCM28150 VideoCore 4 ARMv7 Cortex-A9 2 Full HD 1080p
Lista
BCM21553 VideoCore 4 ARMv6 ARM11 1 Full HD 1080p
Lista
BCM28145 / 28155 VideoCore 4 ARMv7 Cortex-A9 2 1200 Full HD 1080p
BCM23550 VideoCore 4 ARMv7 Cortex-A7 4 1200 Full HD 1080p
Lista
  • 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 Microarquitetura Frequencia. ( MHz ) Conjunto de instruções Microarquitetura Núcleos Frequencia. (MHz) Visor máximo Utilizando dispositivos
GPU CPU

Produtos VideoCore

Os chips VideoCore podem executar aplicativos completos - eles não são simplesmente chips de vídeo DSP que requerem um processador separado para fornecer e coletar dados. Na prática, porém, eles são frequentemente usados ​​como aceleradores simples, já que as empresas geralmente preferem assimilar com cautela a nova tecnologia em vez de correr um grande risco ao portar uma grande quantidade de código de aplicativo de um design existente baseado em ARM. O VideoCore também pode não ter eficiência energética ideal em tarefas não DSP, mas pode ser acoplado a um núcleo de CPU altamente eficiente, por exemplo, tarefas não multimídia típicas raramente requerem mais de largura de barramento de 32 bits, enquanto o design VideoCore emprega vários núcleos de largura de barramento largo. O vídeo iPod da Apple é um bom exemplo dessa abordagem.

Os laptops de baixo consumo usam processadores e chips gráficos de baixo consumo e, portanto, muitas vezes lutam para reproduzir o vídeo em taxas de quadros máximas. Não é desejável ou prático portar um sistema operacional completo em um chip VideoCore, então apenas a decodificação de vídeo precisa ser descarregada em uma placa aceleradora de vídeo (por exemplo, usando o chip BCM70015).

Os reprodutores de Blu-ray também podem usá-lo como um acelerador de vídeo de baixa potência.

Observando que os chips VideoCore eram geralmente usados ​​com chips baseados em ARM, os chips mais recentes têm processadores VideoCore e ARM.

Suporte Linux

Em 28 de fevereiro de 2014, no dia do segundo aniversário do Raspberry Pi , a Broadcom, junto com a fundação Raspberry PI, anunciou o lançamento da documentação completa para o núcleo gráfico VideoCore IV e um lançamento de código-fonte completo da pilha de gráficos sob um Licença BSD de 3 cláusulas .

No entanto, apenas uma pequena parte do driver foi lançada como código-fonte aberto; toda a aceleração de vídeo é feita usando um firmware codificado para sua GPU proprietária, que não era de código aberto. Todo o SoC é gerenciado por um RTOS baseado em ThreadX que é carregado no VPU do Videocore durante a inicialização.

Uma visão geral da arquitetura do sistema baseado em VideoCore foi compilada (com base em engenharia reversa e pesquisa de patentes) por Herman Hermitage e está disponível no GitHub.

Em junho de 2014, Emma Anholt trocou a Intel pela Broadcom para desenvolver um driver gratuito (driver DRM / KMS e driver Gallium3D) para VC4 (VideoCore 4). Após uma semana, ele relatou um progresso notável.

Eu assumi uma nova função como desenvolvedor de código aberto lá. Vou trabalhar na construção de um Mesa 3D licenciado pelo MIT e um driver DRM de kernel para o 2708 (também conhecido como 2835), o chip que está no Raspberry Pi .

O código gráfico 3D licenciado gratuitamente foi comprometido com o Mesa em 29 de agosto de 2014 e foi lançado pela primeira vez como parte do Mesa 10.3.

Concorrentes de mercado

Similar faixas de chips multimídia móvel incluem Adreno , Texas Instruments OMAP , Nvidia Tegra , allwinner a1x e Freescale i.MX . Estes são baseados em ARM com matrizes de unidades de processamento gráfico.

Fontes de dados

A página da Broadcom no YouTube tem vídeos que demonstram a capacidade de processamento de vídeo, mas seu site só fornece resumos de produtos. Dados detalhados e ferramentas de desenvolvimento estão disponíveis apenas sob NDA , e apenas para fabricantes com um mercado para muitas unidades. No entanto, em 28 de fevereiro de 2014, no dia do segundo aniversário do Raspberry Pi, a Broadcom, junto com a Raspberry Pi Foundation, anunciou o lançamento da documentação completa para o núcleo gráfico VideoCore IV e um lançamento de código-fonte completo da pilha de gráficos sob uma licença BSD de 3 cláusulas.

Veja também

Referências