Jetez un œil à l'intérieur de la propre puce GPU d'Apple utilisée dans l'iPhone
Pour les tout premiers modèles de produits Apple, iPhone et iPad, la société a licencié et utilisé la puce GPU PowerVR d'Imagination Technologies pour afficher des graphiques. Apple a même acquis environ 10% d'Imagination et est son plus gros client, générant environ 30% des revenus. Et tout comme Apple a commencé à utiliser le processeur ARM sous licence et utilise maintenant ses propres développements, il semble être passé de l'utilisation de PowerVR au développement de son propre GPU. Il est apparu pour la première fois sur le processeur A8 utilisé sur l'iPhone 6, et ses descendants sont sur les A9 et A10 Fusion utilisés sur les iPhone 6S et 7.Un GPU moderne, comme ceux que l'on trouve à l'intérieur de l'iPhone et de l'iPad, a trois composants principaux qui nécessitent un travail bien coordonné pour démontrer l'image. Le premier est le matériel, qui fournit des graphiques avec des fonctions fixes, qui est responsable du traitement des commandes API, de la pixellisation des triangles et de la sortie raster. Le second est le noyau du shader, le cœur du GPU, qui exécute les shaders logiciels (sommets, géométrie, pixels et calcul du shader). Ce dernier est un logiciel; pilote graphique qui s'exécute sur le CPU et combine toutes les fonctions qui contrôlent le fonctionnement du GPU. Le pilote convertit les applications graphiques écrites en API Metal ou OpenGL ES en un ensemble de commandes pour le matériel avec des fonctions fixes et en shaders programmables fonctionnant dans des noyaux de shader. Un des composants les plus importants d'un pilote est un compilateur,création de code machine pour travailler sur des noyaux de shader.Dans les générations précédentes, le matériel à fonction fixe, les noyaux de shader et le pilote Apple étaient utilisés sous licence d'Imagination Technologies. Mais au cours des 6-7 dernières années, Apple a engagé de manière agressive des architectes graphiques et des programmeurs pour compiler et piloter des logiciels d'entreprises telles que AMD, Intel, Google et Nvidia pour développer son propre GPU. Par exemple, Mike Wuerthele d'Apple Insider a écrit qu'environ 25 personnes sont passées d'Imagination Technologies à Apple cette année. Le GPU d'Apple semble toujours utiliser du matériel à matériel fixe de PowerVR. Mais sur la base de diverses preuves disponibles dans le domaine public, il est clair qu'Apple a remplacé les noyaux de shaders programmables par ses propres noyaux, plus efficaces et plus rapides.Pour tirer parti de leur utilisation, Apple a également développé son propre pilote et compilateur qui émettent du code pour son architecture. Le résultat global de ceci est une conception exclusive de GPU propriétaire, malgré une partie de l'héritage laissé par PowerVR. Il s'agit d'une conception de classe mondiale avec une vitesse et une efficacité énergétique impressionnantes. Le processeur A9 a les meilleurs résultats dans toutes les mesures de vitesse, et l'A10 Fusion est 40 à 50% plus rapide.La documentation du GPU d'Apple n'a jamais été partagée. Pour que les développeurs puissent tirer parti du GPU, ils doivent comprendre comment écrire des programmes de shader pour les compilateurs Metal et OpenGL. Lors de la WWDC 2016, les ingénieurs d'Apple ont présenté "Advanced Shader Optimization for Metal", qui contient les instructions les plus détaillées pour le réglage fin et les détails architecturaux de leur GPU aujourd'hui. L'architecture GPU PowerVR Series 6 souffre également d'un manque de documentation, mais Imagination Technologies a partagé certaines des instructions d'optimisation les plus simples. En comparant les informations disponibles sur ces deux puces, nous pouvons conclure qu'elles sont très différentes. En particulier, l'ensemble de registres et de fonctions de conversion de données d'Apple sont mieux adaptés à la vitesse et à l'efficacité énergétique, et leur compilation est plus facile.Apple améliore les performances et l'efficacité énergétique avec des registres plus petits
Les API graphiques mobiles OpenGL ES et Metal API prennent en charge un format à virgule flottante demi-précision 16 bits utilisé pour calculer et stocker les données d'image, ce qui consomme moins d'énergie que les calculs simple précision 32 bits. Dans certains cas, les calculs en demi-précision perdent en précision plus rapidement que les calculs en simple précision. Mais pour de nombreuses applications travaillant avec les graphiques, le traitement d'image et l'apprentissage automatique, une demi-précision est suffisante pour produire des résultats corrects, en particulier du fait que la plupart des écrans ont une plage dynamique d'un pixel de 8 à 12 bits.L'ensemble de registres pour le GPU d'Apple se compose de registres 16 bits, idéaux pour les données quotidiennes, à en juger par les présentations disponibles dans le domaine public [1]. Les données à virgule flottante simple précision et les autres données 32 bits nécessitent deux registres. Par conséquent, un ensemble de registres peut stocker deux fois plus de variables 16 bits que de variables 32 bits. Les ingénieurs d'Apple soulignent que l'utilisation de calculs à mi-temps entraîne une augmentation significative de la vitesse et des économies d'énergie par rapport à la précision simple, ce qui suggère que leur architecture se concentre sur l'utilisation de la demi-précision comme concept principal de conception.En revanche, les GPU PowerVR séries 6 et 7 utilisent des registres 32 bits et sont conçus pour des calculs en simple précision, à en juger par les instructions d'Imagination Technologies [2]. Dans la série 6, les instructions les plus couramment utilisées, FMAD, FMUL et FADD, peuvent fonctionner avec une demi-précision, mais simplement en mettant à zéro quelques bits des registres source et résultat. Certaines instructions peuvent fonctionner avec deux éléments SIMD 16 bits dans un seul registre (et la série 7 étend ces capacités à un plus grand nombre d'instructions), mais l'exécution SIMD est très différente de l'exécution scalaire utilisant des registres 16 bits. Pour PowerVR, le stockage de données au format 16 bits est une perte de mémoire de registre et le nombre maximal de variables stockées ne double pas automatiquement.Par conséquent, l'utilisation de données 16 bits devrait réduire la quantité de données passant par la mémoire et la consommation d'énergie, mais pas nécessairement augmenter la vitesse ou l'efficacité de la consommation d'énergie, comme c'est le cas avec le GPU d'Apple.La conversion simple permet aux programmeurs d'accéder à une demi-précision
L'un des problèmes courants des données 16 bits est que, bien que la plupart des calculs ne causent pas de problèmes avec une diminution de la précision, certains nécessitent toujours une grande précision. Par exemple, un shader qui calcule la couleur d'un grand bloc de pixels, puis calcule la moyenne, peut coûter 16 bits pour chaque pixel individuel, mais peut nécessiter 32 bits lors de la somme des données pour un calcul précis. Si la conversion des données de pixels de 16 à 32 bits est trop coûteuse, le shader utilisera 32 bits pour produire un résultat précis.Le GPU d'Apple offre une conversion très rapide entre les types de données, ce qui encourage la précision du mélange et crée plus d'opportunités pour les calculs 16 bits à haute vitesse et à faible consommation. Selon leur présentation, la conversion des types de données est «gratuite» - apparemment, quelque part dans le chemin de données se trouve un convertisseur matériel. Du point de vue matériel, cette approche est plus chère, mais elle simplifie entre autres considérablement le compilateur et facilite le travail des programmeurs.Les séries 6 et 7 de PowerVR peuvent effectuer des conversions de précision des données, mais certainement pas «gratuitement». L'instruction d'optimisation indique clairement que chaque conversion de données (avec une précision décroissante ou croissante) est coûteuse et recommande aux programmeurs d'écrire des shaders avec un nombre minimum de transformations [3].GPU Apple: différence technologique
La différence entre l'ensemble de registres et la conversion des données vers le GPU Apple et le GPU Imagination est énorme. L'organisation d'un ensemble de registres est la base du noyau de shader, elle affecte la conception de presque tout, de l'architecture de l'ensemble d'instructions pour les noyaux de shader à l'exécution de parties du code et de la logique de répartition. Par exemple, la taille du registre détermine le chemin de données et le schéma de la quasi-totalité du fonctionnement du noyau de shader. La conversion des données n'affecte pas beaucoup, mais la différence est très importante pour le compilateur et pour les développeurs. Le GPU PowerVR Series 7 est assez similaire à la 6e génération précédente et utilise des registres 32 bits. Sur la base de cette différence, nous pouvons conclure que le GPU d'Apple utilise ses propres noyaux de shaders développés par la société. Cela signifie qu'Apple a développé son propre compilateur de shaders pour OpenGL ES et Metal API, et, très probablement,et votre pilote graphique.Même certains programmes de mesure du rendement voient la différence. Le tableau où le GPU pour iPhone 7 est décrit comme G9 est entré en quelque sorte dans les résultats de GFXBench.
Mais ce résultat de test de la base de données publique a été rapidement effacé et toutes les références au G9 ont disparu.Il existe de nombreuses autres différences entre le GPU Apple et PowerVR qui peuvent être détectées en exécutant des tests spéciaux avec des shaders Metal et en comparant les résultats avec des shaders OpenGL ES similaires sur le GPU PowerVR. Toutes les différences ne s'appliqueront pas au matériel. Par exemple, le GPU Apple prend en charge les versions d'OpenGL ES jusqu'à 3.0, et le GPU PowerVR fonctionne également avec les versions ultérieures. Mais de telles différences peuvent survenir en raison des fonctionnalités des logiciels et des pilotes.Avantages stratégiques de sa propre conception
L'intégration verticale d'Apple est unique à l'électronique grand public. Dans le cas de l'iPhone et de l'iPad, l'entreprise contrôle presque tout - de la conception des circuits de base du processeur au système d'exploitation et aux services pour les utilisateurs de cartes, d'iMessage et de l'appareil photo. Cela vous permet de jouer sur le travail conjoint du matériel et des logiciels, ce qui est inaccessible pour leurs concurrents.La tendance générale est claire: à chaque étape, Apple renforce le contrôle de la plate-forme et de l'écosystème. Au début, Apple a utilisé des processeurs ARM standard et a externalisé la plupart du travail à Samsung, mais a finalement développé ses propres processeurs compatibles avec ARMv8, devant ses rivaux. De même, la société a acheté Anobit et a utilisé l'équipe et la technologie pour créer son propre contrôleur de stockage flash. Développer votre propre CPU n'est que la prochaine étape pour créer des avantages stratégiques.Le plus évident d'entre eux est que les GPU d'Apple sont meilleurs (plus rapides et plus efficaces) que leurs concurrents, y compris ceux d'ARM ou d'Imagination, ainsi que de Qualcomm. Être leader en termes de performances signifie une plus grande satisfaction des utilisateurs et moins de décharge de la batterie à la fois dans le cas des jeux, et dans le cas de la génération d'images et de l'apprentissage automatique.La bibliothèque Metal Performance Shaders comprend des dizaines de shaders bien optimisés fonctionnant sur le GPU et fournissant un ensemble riche d'outils pour les développeurs [4]. Ils comprennent les réseaux de neurones pour la classification, les procédures de traitement d'image. Instagram utilise le GPU pour effectuer le mappage de ton et améliorer le contraste des photos. Il est même possible que la caméra Apple utilise un GPU pour divers effets. Pour l'imagerie et les réseaux de neurones, la demi-précision est idéale et l'architecture du shader Apple est plus performante que PowerVR.Le deuxième avantage est qu'Apple peut créer de nouvelles fonctionnalités et corriger des bugs dans le GPU sans apporter ces avantages aux concurrents.Troisièmement, le délai d'entrée sur le marché et la planification. Une série de processeurs sortent sur le cycle annuel agressif fixé par l'iPhone. L'iPhone étant un produit haut de gamme, Apple doit impressionner les utilisateurs avec rapidité et montrer de bons progrès pour stimuler la demande. En conséquence, Apple devient souvent l'un des principaux clients des nouvelles technologies (par exemple, à 10 nm de TSMC), ce qui implique un gros risque. Avec son propre GPU, une entreprise peut décider de consacrer autant de temps et d'énergie à sa réalisation. L'imagination a juste moins d'argent et moins de personnel.Apple doit regrouper soigneusement la conception, la validation, la production et l'écosystème de logiciels pour faire fonctionner des millions de téléphones et de tablettes qui tombent entre les mains des utilisateurs. Les mois précédant la sortie se composent de cycles effrénés de recherche et de correction de bugs, de mise à jour du logiciel et du matériel graphique. Étant donné que le GPU est désormais le sien, ce cycle est sous le contrôle direct d'Apple avec un petit nombre de dépendances externes, ce qui aide l'entreprise à suivre le lancement à temps.Un exemple hypothétique - si les ingénieurs d'Apple trouvent une grave erreur dans le noyau du shader, ils pourront le réparer et le vérifier le même jour. L'implication d'un tiers signifie que pour les débutants, cette partie doit d'abord évaluer la priorité de l'erreur, approuver les modifications ou les solutions de contournement, ce qui peut prendre un certain temps en raison de la nécessité de se coordonner avec d'autres clients. Exynos 5410 de Samsung est un exemple classique des dangers liés à la propriété intellectuelle de tiers. Il a été développé sur la base des Cortex A15 et A7 d'ARM en configuration Big.Little pour économiser de l'énergie, mais en raison d'une erreur dans la cohérence des caches, Samsung a dû désactiver les fonctionnalités d'économie d'énergie. Les développements propres réduisent considérablement ces risques, car dans ce cas, il n'y a pas de conflit d'intérêts et le transfert d'informations au sein de l'entreprise est beaucoup plus facile,qu'entre entreprises.Le dernier avantage d'un GPU propriétaire est la réduction de la dépendance vis-à-vis des fournisseurs, ce qui donne à l'entreprise une position favorable dans les négociations et réduit les risques commerciaux. Créer des alternatives pour les principaux fournisseurs, internes ou externes, est l'un des anciens principes d'Apple. Par exemple, Apple dépendait de Qualcomm et de leurs modems LTE pour l'iPhone. Quand Intel a développé un modem concurrent, Apple l'a adapté à la plupart des fournisseurs GSM. À l'avenir, cela permet de réduire les coûts et crée des opportunités intéressantes.Le GPU propriétaire crée une alternative cachée à l'utilisation future de la propriété intellectuelle d'Imagination. La société a déjà créé une équipe de développement GPU et une équipe de pilotes, développant ensemble la plupart des processeurs A8, A9 et A10. Si Imagination Technologies était achetée ou en retard dans la partie technique, Apple pourrait simplement développer son propre matériel graphique avec des fonctions fixes pour remplacer PowerVR.Les prochaines étapes d'Apple
Après de nombreuses années à embaucher des architectures graphiques, Apple a développé son propre GPU, qui est déjà installé sur les processeurs A8, A9 et A10 fonctionnant sur l'iPhone 6, 6S et 7. Le GPU a toujours du fer de PowerVR, mais il est clair que les noyaux de shader sont très différents de ceux qui utilisent Imagination Technologies. Cela signifie qu'Apple a créé ses propres compilateurs pour Metal et OpenGL ES, et très probablement, son propre pilote.A en juger par l'histoire de l'entreprise, rien de surprenant dans le développement de son propre GPU. En plus des avantages évidents de la vitesse, il y en a moins évidents - un meilleur contrôle de l'écosystème, un temps de mise sur le marché plus court et moins d'erreurs.Avant, Apple a trois options. Statu quo - Imagination Technologies a concédé sous licence du matériel à fonction fixe pour compléter ses composants. Dans ce cas, Apple passera à la prochaine version de PowerVR, mais, probablement en parallèle, en convenant des meilleures conditions et frais. La deuxième option consiste à acheter Imagination Technologies. Mais avec cela, des projets secondaires inutiles (ligne MIPS) viendront, et Apple a déjà raté une telle opportunité en 2016. Mais Apple peut continuer son propre développement du GPU, ce qui conduira à une prédominance sur Imagination Technologies. L'entreprise devra décider si elle peut faire mieux toute seule, mais jusqu'à présent, elle a très bien réussi à obtenir des qualifications de classe mondiale dans de nouveaux domaines.Les références
[1] Alex Kan et Fiona, Advanced Metal Shader Optimization. WWDC 2016. Un et deux
[2] Référence du jeu d'instructions du compilateur PowerVR Series6. 17 mars 2016
[3] Recommandations de performances PowerVR. 17 mars 2016
[4] Cadre de Metal Performance Shaders
Source: https://habr.com/ru/post/fr398851/
All Articles