Préparez-vous développeurs Android, un nouveau compilateur Android arrive
Publié: 2022-03-11La fragmentation est une source de frustration pour les développeurs et les consommateurs Android depuis des années ; maintenant, il semble que les choses vont empirer avant de s'améliorer. Un nouveau compilateur Android arrive, encore une fois, et il y a quelques développements notables sur le front matériel, qui pourraient affecter les développeurs.
Avec Dalvik hors de vue, de nombreuses personnes s'attendaient à ce que le nouveau moteur d'exécution ART 64 bits de Google reste en place pendant des années, ce qui sera probablement le cas, mais il fera l'objet d'une refonte majeure dans un proche avenir. En plus d'offrir une prise en charge du matériel 64 bits, ART a également introduit la compilation anticipée (AOT), tandis que Dalvik était un compilateur juste-à-temps (JIT). Le nouveau compilateur Optimized débloquera encore plus de possibilités.
En ce qui concerne les développements matériels, il existe de nouvelles tendances et de nouveaux et anciens acteurs dans l'industrie des systèmes sur puce pour smartphones, mais j'y reviendrai plus tard.
Examinons d'abord les plans d'exécution de Google.
Dalvik, ART, ART avec le nouveau compilateur Android
ART a été introduit avec Android 5.0 l'année dernière, lancé sur le Nexus 9 et le Nexus 6, bien que ce dernier utilise un processeur ARMv7-A 32 bits. Cependant, plutôt que d'être conçu à partir de zéro, ART était en fait une évolution de Dalvik, qui s'est éloigné du JIT.
Dalvik compile les applications à la volée, si nécessaire. Ceci, évidemment, ajoute plus de charge CPU, augmente le temps nécessaire pour lancer des applications et nuit à la durée de vie de la batterie. Étant donné qu'ART compile tout à l'avance, lors de l'installation, il n'a pas à perdre de cycles d'horloge lors de la compilation chaque fois que l'appareil démarre une application. Il en résulte une expérience utilisateur plus fluide, tout en réduisant la consommation d'énergie et en augmentant la durée de vie de la batterie.
Alors, que va faire Google ensuite ?
Étant donné que ART a été développé pour tirer parti des nouveaux cœurs de processeur ARMv8 64 bits, qui ont commencé à être mis en ligne à la fin de l'année dernière, le compilateur d'origine semble avoir été une mesure provisoire. Cela signifiait que le délai de mise sur le marché était la priorité, et non l'efficacité et l'optimisation. Cela ne signifie pas que l'ART n'était qu'un travail précipité bâclé, car ce n'était pas le cas; le runtime fonctionne bien et a été salué par les développeurs et les utilisateurs.
Cependant, il y a place à l'amélioration, et maintenant, il semble que Google travaille sur un compilateur considérablement amélioré depuis un certain temps, et l'effort est probablement antérieur à la sortie officielle d'ART. Le concepteur de puces britannique ARM a récemment révélé quelques faits intéressants sur les plans d'exécution de Google, pointant vers un nouveau compilateur "Optimizing" pour ART. Le nouveau compilateur propose des représentations intermédiaires (IR) qui permettent la manipulation de la structure du programme avant la génération du code. Il utilise un seul niveau de représentation intermédiaire, structuré comme un graphe riche en informations, qui fournit de meilleures informations aux parties du compilateur sensibles à l'architecture.
Le compilateur "Quick" utilise deux niveaux de représentation intermédiaires, avec de simples listes chaînées d'instructions et de variables, mais il perd des informations importantes lors de la création de l'IR.
ARM affirme que le nouveau compilateur "Optimizing" offrira un certain nombre d'avantages significatifs, le décrivant comme un "grand bond en avant" en termes de technologie de compilateur. Le compilateur offrira une meilleure infrastructure pour les futures optimisations et contribuera à améliorer la qualité du code.
Optimisation et fonctionnalités clés du compilateur rapide
ARM a décrit la différence entre les deux compilateurs dans une seule diapositive, affirmant que le compilateur "Optimizing" permet une utilisation plus efficace des registres, moins de déversement dans la pile et nécessite moins de code pour s'exécuter.
Voici comment ARM le dit :
Quick a un algorithme d'allocation de registre très simple.
- Manque d'informations dans le RI
- Vitesse de compilation par rapport à la complexité - origines en tant que JIT
- Mauvaises performances - beaucoup de registres se sont répandus dans la pile
L'optimisation utilise Liner Scan Register Allocation.
- Excellent compromis entre performance et temps
- L'analyse de la vivacité est utilisée
- Minimiser le déversement du registre dans la pile »
Bien que le nouveau compilateur soit toujours en développement, ARM a partagé quelques chiffres de performances ; dans les tests CPU synthétiques, le compilateur donne une augmentation des performances de l'ordre de 15 à 40 %. La vitesse de compilation est augmentée d'environ 8 %. Cependant, la société prévient que les chiffres "changent quotidiennement" à mesure que le nouveau compilateur mûrit.
L'accent est mis sur l'obtention d'une quasi-parité avec le compilateur "Quick", qui présente actuellement un net avantage en termes de vitesse de compilation et de taille de fichier.
À l'heure actuelle, cela ressemble à un compromis; le nouveau compilateur « Optimisé » offre des améliorations de performances impressionnantes dans les applications liées au processeur et les benchmarks synthétiques, mais se traduit par des fichiers 10 % plus volumineux qui se compilent environ 8 % plus lentement. Alors que les deux derniers chiffres semblent être compensés par les gains de performances du processeur, gardez à l'esprit qu'ils s'appliqueront à toutes les applications, quelle que soit la charge du processeur, en utilisant des ressources encore plus limitées telles que la RAM et le stockage. Rappelez-vous que compiler en 64 bits consomme déjà plus de RAM que compiler en 32 bits.
Toute réduction de la vitesse de compilation et des temps de lancement est également une source de préoccupation, en raison de son effet sur la réactivité de l'appareil et l'expérience utilisateur.
La course ARM multicœur
Une autre source de préoccupation, indépendamment de l'exécution et du compilateur, est la popularité des processeurs multicœurs basés sur les architectures ARMv7-A et ARMv8. L'engouement pour l'octa-core a commencé en 2013 et a été rapidement rejeté comme un coup marketing bon marché. Un dirigeant de Qualcomm est allé jusqu'à qualifier les processeurs octa-core de "stupides" et de "stupides", affirmant que l'entreprise n'en fabriquerait pas parce que ses ingénieurs "ne sont pas stupides". Le même directeur a également décrit la prise en charge 64 bits sur l'Apple A7 comme un "truc".
Avance rapide de deux ans, et j'ai un smartphone Qualcomm octa-core Cortex-A53 64 bits sur mon bureau, tandis que le cadre en question a un titre de poste différent sur sa plaque signalétique.
Comme si les puces à 8 cœurs ne suffisaient pas, l'année prochaine, nous verrons les premiers appareils basés sur des processeurs d'application à 10 cœurs. La première puce de smartphone à 10 cœurs provient de MediaTek sous la forme de l'Helio X20 et comportera trois grappes de cœurs de processeur, surnommées énorme.Medium.TINY. Ça a l'air amusant, et ça s'améliore ; nous allons bientôt commencer à voir les premiers appareils Android abordables basés sur une nouvelle génération de processeurs Intel.
Examinons les guerres du noyau ARM et ce qu'elles signifient pour les développeurs et les consommateurs. Il existe deux versions distinctes des conceptions octa-core ARM SoC. Les solutions haut de gamme ont tendance à utiliser la disposition big.LITTLE d'ARM, en utilisant quatre cœurs à faible puissance et quatre gros cœurs pour une charge élevée. La deuxième façon de coller huit cœurs de processeur ARM dans une puce consiste à utiliser des cœurs identiques ou des cœurs identiques dans deux clusters avec des vitesses d'horloge différentes.
Les principaux fabricants de puces mobiles ont tendance à utiliser les deux approches, les puces big.LITTLE dans les appareils haut de gamme, ainsi que les octa-cores réguliers sur les produits grand public. Les deux approches ont leurs avantages et leurs inconvénients, alors regardons de plus près.
ARM big.LITTLE vs octa-core régulier :
L'utilisation de deux clusters de cœurs de processeur différents permet d'obtenir de bonnes performances et une efficacité à un seul thread sur les conceptions big.LITTLE. Le compromis est qu'un seul cœur Cortex-A57 a à peu près la taille de quatre petits cœurs Cortex-A53, et il est moins efficace.
L'utilisation de huit cœurs identiques, ou de huit cœurs identiques dans deux clusters avec des horloges différentes, est rentable et économe en énergie. Cependant, les performances d'un seul thread sont faibles.
La génération actuelle de conceptions big.LITTLE basées sur des cœurs ARMv8 ne peut pas utiliser le nœud de fabrication 28 nm le moins cher. Même à 20 nm, certaines conceptions présentent beaucoup d'étranglement, ce qui limite leurs performances soutenues. Les octa-cœurs standard basés sur les cœurs de processeur Cortex-A53 peuvent être efficacement implémentés en 28 nm, de sorte que les fabricants de puces n'ont pas à utiliser de nœuds de fabrication de pointe comme le FinFET 20 nm ou 16/14 nm, ce qui réduit les coûts.
Je ne veux pas vous ennuyer à mourir avec les tendances en matière de conception de puces, mais quelques éléments de base sont importants à garder à l'esprit pour les processeurs mobiles 2015 et 2016 :
- La plupart des puces utiliseront des nœuds de fabrication de 28 nm et des cœurs Cortex-A53, limitant les performances à un seul thread.
- Le gros cœur Cortex-A57 est implémenté dans deux conceptions majeures de Samsung et Qualcomm, mais d'autres fabricants de puces semblent l'ignorer et attendre le cœur Cortex-A72.
- Les performances multithread deviendront de plus en plus pertinentes au cours des 18 prochains mois.
- On ne peut pas s'attendre à de gros gains de performances avant que les nœuds 20 nm et FinFET ne deviennent nettement moins chers (2016 et au-delà).
- Des conceptions à 10 cœurs arrivent également.
Tous ces points ont certaines implications pour les développeurs Android. Tant que les fabricants de puces sont bloqués sur des processus de 28 nm pour la majorité des puces de smartphones et de tablettes, les développeurs devront faire de leur mieux pour exploiter les performances multithread et se concentrer sur l'efficacité.

ART et les nouveaux compilateurs devraient contribuer grandement à améliorer les performances et l'efficacité, mais ils ne pourront pas enfreindre les lois de la physique. Les anciennes conceptions 32 bits ne seront plus utilisées dans de nombreux appareils à l'avenir, et même les appareils les moins chers commencent à être livrés avec du silicium 64 bits et Android 5.0.
Bien qu'Android 5.x ait encore une base d'utilisateurs relativement petite, il se développe rapidement et se développera encore plus rapidement maintenant que les téléphones de 100 à 150 dollars arrivent avec des puces 64 bits et Android 5.0. La transition vers Android 64 bits se passe bien.
La grande question est de savoir quand Dalvik obtiendra le nouveau compilateur Optimized. Il pourrait être lancé plus tard cette année, ou l'année prochaine avec Android 6.0 ; il est encore trop tôt pour le dire avec certitude.
L'informatique hétérogène arrive sur les mobiles
Il y a une autre chose à garder à l'esprit; les graphiques mobiles deviennent de plus en plus puissants, en particulier sur les processeurs haut de gamme, les fabricants de puces font donc beaucoup de travail dans les coulisses pour les exploiter à des fins autres que les jeux et le décodage vidéo. L'informatique hétérogène existe depuis quelques années, permettant aux PC de décharger des tâches hautement parallélisées sur le GPU.
La même technologie arrive maintenant sur les processeurs mobiles, fusionnant efficacement les cœurs CPU et GPU. L'approche permettra aux développeurs de débloquer plus de performances en exécutant certains types de programmes, à savoir les charges OpenCL, sur le GPU. Les développeurs pourront se concentrer sur le débit, tandis que les processeurs géreront automatiquement l'exécution parallèle sur les CPU et les GPU.
Bien sûr, cela ne fonctionnera pas dans toutes les applications et ne réduira pas la charge dans toutes les situations, mais dans certaines niches, cela devrait débloquer plus de performances et aider à réduire la consommation d'énergie. En fonction de la charge, le SoC décidera automatiquement comment traiter le code, en utilisant le CPU pour certaines tâches tout en déchargeant les autres sur le GPU.
Puisqu'il s'agit d'applications parallélisées, l'approche devrait apporter les plus grandes améliorations en matière de traitement d'image. Par exemple, si vous devez utiliser une super résolution et rééchantillonner des images, le processus peut être divisé en différentes étapes dans OpenCL. Si le processus implique différentes étapes, telles que find_neighbor
, col_upsample
, row_upsample
, sub
et blur2
, le matériel répartira la charge entre les cœurs CPU et GPU de la manière la plus efficace, en fonction du type de cœur qui gérera la tâche donnée de la meilleure façon. façon. Cela améliorera non seulement les performances d'un ordre de grandeur, mais contribuera également à réduire la consommation d'énergie.
Intel est de retour d'entre les morts, et ça a l'air bien pour un cadavre
Intel a raté le coche de la révolution mobile et a pratiquement cédé le marché à ARM et à ses partenaires matériels. Cependant, le fabricant de puces américain a l'argent et les ressources nécessaires pour passer quelques années sur le banc et faire son retour.
L'année dernière, Intel a subventionné les ventes de ses processeurs Atom pour tablettes, réussissant à quadrupler les livraisons en moins d'un an. Il se tourne désormais vers le segment des smartphones avec de nouveaux processeurs SoFIA Atom x3. Franchement, je ne suis pas tout à fait sûr que ces puces devraient même être appelées processeurs Intel car elles ne sont pas réellement produites par le géant des puces. Les processeurs SoFIA sont conçus avec un budget serré, en coopération avec des fabricants de puces chinois. Ils sont fabriqués sur le nœud 28 nm, ils sont lents, minuscules et bon marché.
Cela peut surprendre certains observateurs occasionnels, mais Intel ne se soucie pas des solutions mobiles haut de gamme ; Les pièces SoFIA bas de gamme alimenteront les téléphones Android banalisés à un prix compris entre 50 et 150 dollars. Les premières conceptions devraient commencer à être expédiées d'ici la fin du deuxième trimestre de 2015, et la plupart d'entre elles seront conçues pour les marchés asiatiques, ainsi que pour les marchés émergents dans d'autres parties du monde. Bien qu'il soit possible d'en voir certains en Amérique du Nord et en Europe, Intel semble se concentrer sur la Chine et l'Inde.
Intel couvre ses paris avec les processeurs Atom x5 et x7, qui utiliseront une toute nouvelle architecture ainsi que le nœud de fabrication 14 nm de pointe de la société. Cependant, ces produits sont destinés aux tablettes plutôt qu'aux smartphones, du moins pour le moment.
La grande question, celle à laquelle je n'ai pas de réponse, est de savoir combien de victoires en design Intel peut obtenir à son actif. Les analystes sont divisés sur la question et les prévisions d'expédition ressemblent à des estimations à ce stade.
L'année dernière, Intel a prouvé qu'il était prêt à subir des pertes et à brûler des milliards de dollars pour prendre pied sur le marché des tablettes. Il est encore trop tôt pour dire s'il utilisera la même approche avec les nouvelles puces Atom, en particulier les produits SoFIA pour smartphones.
Jusqu'à présent, je n'ai vu qu'un seul produit basé sur un processeur Intel SoFIA - une tablette chinoise à 69 $ avec une connectivité 3G. Il s'agit essentiellement d'un téléphone surdimensionné, donc comme vous pouvez l'imaginer, un téléphone SoFIA d'entrée de gamme pourrait finir par coûter beaucoup moins cher. Ce doit être une proposition tentante pour les fabricants de smartphones et de tablettes en boîte blanche, car ils pourraient facilement concevoir des appareils de 50 à 100 dollars avec un autocollant «Intel Inside» au dos, ce qui, d'un point de vue marketing, sonne bien.
Malheureusement, nous ne pouvons que deviner combien de téléphones et de tablettes Intel seront expédiés au cours de la prochaine année. Il s'agit évidemment de millions d'unités, de dizaines de millions, mais la question est : combien de dizaines ? La plupart des analystes pensent qu'Intel expédiera entre 20 et 50 millions de processeurs Atom x3 cette année, ce qui est une goutte d'eau dans la mesure où les expéditions totales de smartphones devraient atteindre 1,2 milliard d'appareils cette année. Cependant, Intel est impitoyable, a de l'argent à brûler et n'a pas à faire de profit sur l'une de ces puces. Il pourrait capturer 3 à 4 % du marché d'ici la fin de 2015, mais la part de marché devrait continuer à croître en 2016 et au-delà.
Qu'est-ce que cela signifie pour les développeurs Android ?
Intel a eu une mauvaise réputation auprès de certains développeurs Android en raison de certains problèmes de compatibilité. C'était un vrai problème il y a quelques années, car le matériel était très différent des cœurs ARM standard utilisés dans la plupart des appareils.
Heureusement, l'entreprise a fait beaucoup de progrès au cours des deux années; il propose des programmes de formation complets, une documentation complète et bien plus encore. En fait, un rapide coup d'œil aux listes d'emplois de LinkedIn révèle qu'Intel embauche des dizaines de développeurs Android, avec quelques nouveaux postes vacants chaque mois.
Alors tout va bien, non ? En fait ça dépend…
La semaine dernière, j'ai eu l'occasion de tester un nouveau téléphone Asus basé sur l'Atom Z3560 d'Intel, et je dois dire que j'ai été satisfait des résultats. c'est une bonne plate-forme matérielle capable d'adresser 4 Go de RAM sur un appareil économique. Asus pense pouvoir vendre 30 millions d'unités cette année, ce qui est vraiment impressionnant compte tenu de la part de marché des smartphones d'Intel.
Le seul problème est que certaines applications Android se comportent toujours mal sur le matériel Intel . Habituellement, ce n'est rien de trop gros, mais vous obtenez des plantages étranges, des scores de référence irréalistes et d'autres bizarreries de compatibilité. La mauvaise nouvelle est que les développeurs ne peuvent pas faire grand-chose pour résoudre les problèmes liés au matériel, même si l'obtention de certains appareils basés sur Intel pour les tests serait un bon début. La bonne nouvelle : Intel fait de son mieux pour tout régler de son côté, pour que vous n'ayez pas à le faire.
En ce qui concerne le matériel ARM, nous verrons plus de cœurs de processeur dans encore plus de clusters. Les performances d'un seul thread resteront limitées sur de nombreux appareils grand public, à savoir les téléphones bon marché basés sur des SoC Cortex-A53 quadricœurs et octa-core. Il est trop tôt pour dire si les nouveaux compilateurs Google/ARM pourront ou non améliorer les performances de ces appareils. Ils le feront probablement, mais de combien ? L'informatique hétérogène est une autre tendance à surveiller pour l'année prochaine.
En conclusion, voici ce à quoi les développeurs Android devraient s'attendre en termes de logiciels et de matériel fin 2015 et 2016 :
- Plus de processeurs Intel x86 dans les segments de marché d'entrée de gamme et grand public.
- La part de marché d'Intel sera négligeable en 2015, mais pourrait croître en 2016 et au-delà.
- Plus de conceptions multicœurs ARMv8 à venir en ligne.
- Nouveau compilateur ART "optimisé".
- L'informatique hétérogène arrive, mais cela prendra du temps.
- La transition vers les nœuds de fabrication FinFET et Cortex-A72 débloquera plus de performances et de fonctionnalités.