Veja o chip GPU da Apple usado no iPhone



Para os primeiros modelos de produtos da Apple, iPhone e iPad, a empresa licenciou e usou o chip PowerVR GPU da Imagination Technologies para exibir gráficos. A Apple adquiriu até 10% da Imagination e é seu maior cliente, gerando cerca de 30% da receita. E assim que a Apple começou a usar a CPU do ARM sob licença e agora usa seus próprios desenvolvimentos, parece que passou do uso do PowerVR para o desenvolvimento de sua própria GPU. Ele apareceu pela primeira vez no processador A8 usado no iPhone 6 e seus descendentes estão no A9 e A10 Fusion usados ​​no iPhone 6S e 7.

Uma GPU moderna, como as encontradas no iPhone e iPad, possui três componentes principais que requerem trabalho bem coordenado para demonstrar a imagem. O primeiro é o hardware, que fornece funções fixas aos gráficos, responsáveis ​​pelo processamento de comandos da API, triângulos rasterizados e saída raster. O segundo é o núcleo do shader, o coração da GPU, que executa os shaders de software (vértices, geometria, pixels e computação do shader). O último é software; driver gráfico que roda na CPU e combina todas as funções que controlam a operação da GPU. O driver converte aplicativos gráficos escritos em Metal ou OpenGL ES API em um conjunto de comandos para hardware com funções fixas e em shaders programáveis ​​que trabalham em kernels de shader. Um dos componentes mais importantes de um driver é um compilador,criando código de máquina para trabalhar em kernels de shader.

Nas gerações anteriores, o hardware de função fixa, os núcleos de shader e o driver da Apple eram usados ​​sob licença da Imagination Technologies. Nos últimos 6 a 7 anos, porém, a Apple contratou agressivamente arquitetos e programadores gráficos para compilar e direcionar software de empresas como AMD, Intel, Google e Nvidia para desenvolver sua própria GPU. Por exemplo, Mike Wuerthele, da Apple Insider, escreveu que cerca de 25 pessoas passaram da Imagination Technologies para a Apple este ano. A GPU da Apple parece ainda estar usando hardware de hardware fixo do PowerVR. Mas com base em várias evidências disponíveis em domínio público, fica claro que a Apple substituiu os kernels de shader programáveis ​​por seus próprios, mais eficientes e mais rápidos.Para tirar proveito de seu uso, a Apple também desenvolveu seu próprio driver e compilador que emitem código para sua arquitetura. O resultado geral disso é um design exclusivo da GPU, apesar de parte do legado deixado pelo PowerVR. É um design de classe mundial com velocidade impressionante e eficiência energética. O processador A9 tem os melhores resultados em todas as medições de velocidade, e o A10 Fusion é 40-50% mais rápido.

A documentação da GPU da Apple nunca foi compartilhada. Para que os desenvolvedores tirem vantagem da GPU, eles precisam descobrir como escrever programas de sombreador para os compiladores Metal e OpenGL. Na WWDC 2016, os engenheiros da Apple apresentaram a "Advanced Shader Optimization for Metal", que contém as instruções mais detalhadas para o ajuste fino e os detalhes arquitetônicos de sua GPU atualmente. A arquitetura da GPU PowerVR Series 6 também sofre com a falta de documentação, mas a Imagination Technologies compartilhou algumas das instruções mais simples de otimização. Comparando as informações disponíveis sobre esses dois chips, podemos concluir que eles são muito diferentes. Em particular, o conjunto de registros e funções de conversão de dados da Apple são mais adequados para velocidade e eficiência energética, e compilá-los é mais fácil.

Apple melhora o desempenho e a eficiência energética com registros menores


As APIs gráficas móveis OpenGL ES e Metal API suportam o formato de ponto flutuante de meia precisão de 16 bits usado para calcular e armazenar dados de imagem, que consomem menos energia que os cálculos de precisão única de 32 bits. Os cálculos de meia precisão, em alguns casos, perdem a precisão mais rapidamente que os cálculos de precisão única. Porém, para muitas aplicações que trabalham com gráficos, processamento de imagens e aprendizado de máquina, é necessária meia precisão para produzir os resultados corretos - especialmente devido ao fato de que a maioria das telas possui uma faixa dinâmica de um pixel de 8 a 12 bits.

O conjunto de registros da GPU da Apple consiste em registros de 16 bits, ideais para dados diários, a julgar pelas apresentações disponíveis em domínio público [1]. Dados de ponto flutuante de precisão única e outros dados de 32 bits requerem dois registros. Como resultado, um conjunto de registros pode armazenar duas vezes mais variáveis ​​de 16 bits do que as de 32 bits. Os engenheiros da Apple enfatizam que o uso de cálculos no intervalo leva a um aumento significativo na velocidade e na economia de energia em comparação com a precisão única, o que sugere que sua arquitetura está focada no uso da meia precisão como o principal conceito no design.

Por outro lado, as GPUs PowerVR das séries 6 e 7 usam registros de 32 bits e são projetadas para cálculos de precisão única, a julgar pelas instruções da Imagination Technologies [2]. Na Série 6, as instruções mais usadas, FMAD, FMUL e FADD, podem trabalhar com meia precisão, mas simplesmente zerando alguns bits da fonte e dos registros de resultados. Algumas instruções podem funcionar com dois elementos SIMD de 16 bits em um único registro (e a Série 7 expande esses recursos para um número maior de instruções), mas a execução do SIMD é muito diferente da execução escalar usando registros de 16 bits. Para o PowerVR, o armazenamento de dados no formato de 16 bits é um desperdício de memória do registro e o número máximo de variáveis ​​armazenadas não é duplicado automaticamente.Portanto, o uso de dados de 16 bits deve reduzir a quantidade de dados que passam pela memória e pelo consumo de energia, mas não necessariamente aumentar a velocidade ou a eficiência do consumo de energia, como é o caso da GPU da Apple.

A conversão simples dá aos programadores acesso a meia precisão


Um dos problemas comuns dos dados de 16 bits é que, embora a maioria dos cálculos não cause problemas com uma diminuição na precisão, alguns ainda exigem alta precisão. Por exemplo, um sombreador que calcula a cor de um grande bloco de pixels e calcula a média, pode custar 16 bits para cada pixel individual, mas pode exigir 32 bits ao somar dados para calcular com precisão. Se a conversão de dados de pixel de 16 para 32 bits for muito cara, o shader utilizará 32 bits para produzir um resultado preciso.

A GPU da Apple oferece uma conversão muito rápida entre os tipos de dados, o que incentiva a precisão da mistura e cria mais oportunidades para cálculos de 16 bits em alta velocidade e baixo consumo. De acordo com a apresentação, a conversão de tipos de dados é "gratuita" - aparentemente, em algum lugar no caminho de dados há um conversor de hardware. Do ponto de vista do hardware, essa abordagem é mais cara, mas, entre outras coisas, simplifica bastante o compilador e facilita o trabalho dos programadores.

As séries 6 e 7 do PowerVR podem fazer conversões de precisão de dados, mas certamente não são "gratuitas". A instrução de otimização afirma claramente que cada conversão de dados (com precisão decrescente ou crescente) é cara e recomenda que os programadores escrevam shaders com um número mínimo de transformações [3].

GPUs da Apple: diferença tecnológica


A diferença entre o conjunto de registros e a conversão de dados na GPU da Apple e na GPU Imagination é enorme. A organização de um conjunto de registros é a base do núcleo do shader, afeta o design de quase tudo, desde a arquitetura do conjunto de instruções dos kernels do shader até a execução de partes do código e a lógica de despacho. Como exemplo, o tamanho do registro determina o caminho dos dados e o esquema de quase toda a operação do núcleo do shader. A conversão de dados não afeta muito, mas a diferença é muito importante para o compilador e para os desenvolvedores. A GPU PowerVR Series 7 é bastante semelhante à 6ª geração anterior e usa registradores de 32 bits. Com base nessa diferença, podemos concluir que a GPU da Apple usa seus próprios núcleos de shader desenvolvidos pela empresa. Isso significa que a Apple desenvolveu seu próprio compilador de sombreador para OpenGL ES e Metal API e, provavelmente,e seu driver gráfico.

Até alguns programas de medição de desempenho veem a diferença. A tabela em que a GPU para o iPhone 7 é descrita como G9 de alguma forma entrou nos resultados do GFXBench.



Mas esse resultado de teste do banco de dados público foi logo aniquilado e todas as referências ao G9 desapareceram.

Existem muitas outras diferenças entre a GPU da Apple e o PowerVR que podem ser detectadas executando testes especiais com shaders de metal e comparando os resultados com shaders OpenGL ES semelhantes na GPU do PowerVR. Nem todas as diferenças se aplicam ao hardware. Por exemplo, a GPU da Apple suporta versões do OpenGL ES até 3.0, e a GPU do PowerVR também funciona com versões posteriores. Mas essas diferenças podem ocorrer devido aos recursos de software e drivers.

Benefícios estratégicos do projeto próprio


A integração vertical da Apple é exclusiva para eletrônicos de consumo. No caso do iPhone e iPad, a empresa controla quase tudo - desde o design dos circuitos básicos do processador até o sistema operacional e serviços para usuários de Maps, iMessage e Camera. Isso permite que você jogue no trabalho conjunto de hardware e software, que é inatingível para seus concorrentes.

A tendência geral é clara - a cada passo, a Apple está aumentando o controle sobre a plataforma e o ecossistema. Inicialmente, a Apple usou processadores ARM padrão e terceirizou a maior parte do trabalho para a Samsung, mas no final desenvolveu seus próprios CPUs compatíveis com ARMv8, à frente dos rivais. Da mesma forma, a empresa comprou a Anobit e usou a equipe e a tecnologia para criar seu próprio controlador de armazenamento flash. Desenvolver sua própria CPU é apenas o próximo passo na criação de vantagens estratégicas.

O mais óbvio deles é que as GPUs da Apple são melhores (mais rápidas e mais eficientes) do que as rivais, incluindo as da ARM ou Imagination, além da Qualcomm. Liderar no desempenho significa maior satisfação do usuário e menos consumo de bateria, tanto no caso de jogos quanto no de geração de imagens e aprendizado de máquina.

A biblioteca Metal Performance Shaders inclui dezenas de shaders bem otimizados em execução na GPU e fornece um rico conjunto de ferramentas para desenvolvedores [4]. Eles incluem redes neurais para classificação, procedimentos de processamento de imagem. O Instagram usa a GPU para efetuar o mapeamento de tom e melhorar o contraste das fotos. É até possível que a câmera da Apple use uma GPU para vários efeitos. Para redes neurais e de imagem, a meia precisão é ideal e a arquitetura de sombreador da Apple tem um desempenho melhor que o PowerVR.

A segunda vantagem é que a Apple pode criar novos recursos e corrigir bugs na GPU sem trazer esses benefícios aos concorrentes.

Terceiro, tempo de entrada no mercado e planejamento. A série de processadores sai no agressivo ciclo anual definido pelo iPhone. Como o iPhone é um produto premium, a Apple deve impressionar os usuários com velocidade e mostrar bons progressos para estimular a demanda. Como resultado, a Apple geralmente se torna um cliente líder de novas tecnologias (por exemplo, 10 nm da TSMC), o que implica um grande risco. Com sua própria GPU, uma empresa pode decidir gastar tanto tempo e energia em como alcançá-la. A imaginação apenas tem menos dinheiro e menos funcionários.

A Apple precisa agrupar perfeitamente o design, a validação, a produção e o ecossistema do software para executar milhões de telefones e tablets que caem nas mãos dos usuários. Os meses que antecederam o lançamento consistem em ciclos frenéticos de busca e correção de bugs, atualização de software e hardware de gráficos. Como a GPU agora é própria, esse ciclo está sob controle direto da Apple com um pequeno número de dependências externas, o que ajuda a empresa a acompanhar o lançamento no prazo.

Um exemplo hipotético - se os engenheiros da Apple encontrarem um erro grave no núcleo do shader, poderão corrigi-lo e verificá-lo no mesmo dia. O envolvimento de terceiros significa que, para iniciantes, essa parte deve primeiro avaliar a prioridade do erro, aprovar as alterações ou soluções alternativas, o que pode levar algum tempo devido à necessidade de coordenação com outros clientes. O Exynos 5410 da Samsung é um exemplo de livro didático dos perigos de lidar com propriedade intelectual de terceiros. Ele foi desenvolvido com base no Cortex A15 e A7 da ARM na configuração Big.Little para economizar energia, mas devido a um erro na consistência dos caches, a Samsung teve que desativar os recursos de economia de energia. Os desenvolvimentos próprios reduzem bastante esses riscos, pois, neste caso, não há conflito de interesses e a transferência de informações dentro da empresa é muito mais fácil,do que entre empresas.

A última vantagem de uma GPU proprietária é a redução da dependência de fornecedores, o que confere à empresa uma posição favorável nas negociações e reduz os riscos de negócios. Criar alternativas para os principais fornecedores, internos ou externos, é um dos princípios antigos da Apple. Por exemplo, a Apple dependia da Qualcomm e de seus modems LTE para o iPhone. Quando a Intel desenvolveu um modem concorrente, a Apple o adaptou para a maioria dos provedores de GSM. No futuro, isso permitirá reduzir custos e criar oportunidades interessantes.

A GPU proprietária cria uma alternativa oculta ao uso da propriedade intelectual da Imagination no futuro. A empresa já criou uma equipe de desenvolvimento de GPU e uma equipe de drivers, desenvolvendo juntos a maioria dos processadores A8, A9 e A10. Se a Imagination Technologies fosse comprada ou atrasada na parte técnica, a Apple poderia simplesmente desenvolver seu próprio hardware para gráficos com funções fixas para substituir o PowerVR.

Próximos passos da Apple


Depois de muitos anos contratando arquiteturas gráficas, a Apple desenvolveu sua própria GPU, que já está instalada nos processadores A8, A9 e A10 rodando nos iPhone 6, 6S e 7. A GPU ainda possui o ferro do PowerVR, mas é claro que os núcleos de shader são muito diferentes dos aqueles que usam tecnologias de imaginação. Isso significa que a Apple criou seus próprios compiladores para Metal e OpenGL ES e, provavelmente, seu próprio driver.

A julgar pela história da empresa, não há nada de surpreendente no desenvolvimento de sua própria GPU. Além das vantagens óbvias na velocidade, há outras menos óbvias - controle aprimorado do ecossistema, menor tempo de colocação no mercado e menos erros.

Adiante, a Apple tem três opções. Status quo - a Imagination Technologies licenciou o hardware de função fixa para complementar seus componentes. Nesse caso, a Apple atualizará para a próxima versão do PowerVR, mas, provavelmente em paralelo, concordando com as melhores condições e taxas. A segunda opção é comprar a Imagination Technologies. Mas com isso, projetos paralelos desnecessários (linha MIPS) virão, e a Apple já perdeu essa oportunidade em 2016. Mas a Apple pode continuar seu próprio desenvolvimento da GPU, o que, como resultado, levará a uma predominância sobre as Imagination Technologies. A empresa terá que decidir se pode fazer melhor por conta própria, mas até agora eles têm sido muito bons em obter qualificações de classe mundial em novas áreas.

Referências


[1] Alex Kan e Fiona, Otimização avançada de sombreadores de metal. WWDC 2016. Um e dois
[2] Referência do conjunto de instruções do compilador PowerVR Series6. 17 de março de 2016
[3] Recomendações de desempenho do PowerVR. 17 de março de 2016
[4] Metal Performance Shaders Framework

Source: https://habr.com/ru/post/pt398851/


All Articles