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