VideoCore - VideoCore
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
|
||||
BCM2702 (VC02) | VideoCore 2 | Nenhum | SD PAL / NTSC |
Lista
|
||||
BCM2705 (VC05) | VideoCore 2 | Nenhum | SD PAL / NTSC | |||||
BCM2091 | VideoCore 4 | Nenhum | Não especificado | |||||
BCM2722 | VideoCore 2 | Nenhum | SD PAL / NTSC |
Lista |
||||
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 |
Lista |
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
|
|
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
|
|
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 .
- Emma Anholt, http://anholt.livejournal.com/44239.html
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.