La fragmentation a été une source de frustration pour Développeurs Android et les consommateurs pendant 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 des développements notables sur le front matériel, qui pourraient affecter les développeurs.
Avec Dalvik hors de propos, de nombreuses personnes s'attendaient à ce que le nouveau runtime ART compatible 64 bits de Google reste 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 un support pour le matériel 64 bits, ART a également introduit la compilation à l'avance (AOT), tandis que Dalvik était un compilateur juste à temps (JIT). Le nouveau compilateur optimisé ouvrira encore plus de possibilités.
En ce qui concerne les développements matériels, il y a quelques nouvelles tendances et quelques nouveaux et anciens acteurs dans l'industrie des Smartphones System-on-Chip, mais j'y reviendrai plus tard.
Tout d'abord, examinons les plans d'exécution de Google.
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é de JIT.
Dalvik compile des applications à la volée, si nécessaire. Cela augmente évidemment la charge du processeur, augmente le temps nécessaire au lancement des applications et nuit à la durée de vie de la batterie. Étant donné que ART compile tout à l'avance, lors de l'installation, il n'est pas nécessaire de perdre des 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?
Puisque 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é, pas l'efficacité et l'optimisation. Cela ne veut pas dire que l’ART n’était qu’une tâche urgente bâclée, 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 de ART. Le concepteur britannique de puces, ARM, a récemment révélé quelques faits intéressants sur les plans d'exécution de Google, indiquant un nouveau compilateur «Optimisation» 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 de code. Il utilise un niveau unique 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 «rapide» utilise deux niveaux de représentation intermédiaire, avec de simples listes chaînées d'instructions et de variables, mais il perd des informations importantes lors de la création IR.
ARM affirme que le nouveau compilateur «Optimisation» offrira un certain nombre d'avantages significatifs, le décrivant comme un «grand pas en avant» en termes de technologie de compilation. Le compilateur offrira une meilleure infrastructure pour les optimisations futures et contribuera à améliorer la qualité du code.
ARM a souligné la différence entre les deux compilateurs dans une seule diapositive, affirmant que le compilateur «Optimisation» permet une utilisation plus efficace des registres, moins de débordement dans la pile et nécessite moins de code pour s'exécuter.
Voici comment ARM le dit:
Rapide a un très algorithme d'allocation de registre simple.
Optimiser utilise l'allocation de registre de balayage de doublure.
exemple de repose-bottes à ressort oauth2
Bien que le nouveau compilateur soit toujours en développement, ARM a partagé quelques chiffres de performances; dans les tests de CPU synthétiques, le compilateur produit 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 la 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 gros qui se compilent environ 8% plus lentement. Bien que les deux derniers chiffres semblent l'emporter sur 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. N'oubliez pas que la compilation en 64 bits prend déjà plus de RAM que la compilation 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.
Une autre source de préoccupation, quels que soient le temps d'exécution et le 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 cadre de Qualcomm est allé jusqu'à appeler des processeurs octa-core «Idiot» et «stupide» , disant que l'entreprise n'en ferait pas parce que ses ingénieurs «ne sont pas idiots». Le même exécutant a également décrit le support 64 bits sur l'Apple A7 comme un «gadget».
Avance rapide de deux ans, et j'ai un smartphone Cortex-A53 octa-core Qualcomm 64 bits sur mon bureau, tandis que le dirigeant en question a un titre de poste différent sur sa plaque nominative.
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 vient de MediaTek sous la forme du Helio X20 , et comportera trois grappes de cœurs de processeur, surnommés énorme.Medium.TINY. Cela semble amusant et ça va mieux; 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 principales d'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 utilisent généralement les ARM mise en page big.LITTLE , utilisant quatre cœurs de 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-cœurs réguliers sur les produits grand public. Les deux approches ont leurs avantages et leurs inconvénients, alors regardons de plus près.
L'utilisation de deux clusters de cœurs de processeur différents permet de bonnes performances et une efficacité de thread unique 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 qu’il est moins efficace.
node.js est utilisé pour créer des programmes côté serveur.
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, certains modèles présentent beaucoup d'étranglement, ce qui limite leurs performances durables. Les octa-cœurs standard basés sur des cœurs de processeur Cortex-A53 peuvent être efficacement mis en œuvre en 28 nm, de sorte que les fabricants de puces n'ont pas à utiliser des nœuds de fabrication de pointe comme 20 nm ou 16/14 nm FinFET, ce qui réduit les coûts.
Je ne veux pas vous ennuyer à mort avec les tendances de conception de puces, mais quelques principes de base sont importants à garder à l'esprit pour les processeurs mobiles 2015 et 2016:
Tous ces points ont certaines implications pour les développeurs Android. Tant que les fabricants de puces sont bloqués à des processus de 28 nm pour la majorité des puces de smartphone et de tablette, les développeurs devront faire de leur mieux pour exploiter les performances multi-thread et se concentrer sur l'efficacité.
L'ART et les nouveaux compilateurs devraient grandement contribuer à 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, et même les appareils les moins chers commencent à être livrés avec le 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 $ arrivent avec des puces 64 bits et Android 5.0. La transition vers Android 64 bits se déroule bien.
La grande question est de savoir quand Dalvik obtiendra le nouveau compilateur optimisé. 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.
Il y a une autre chose à garder à l'esprit; Les graphiques mobiles sont de plus en plus puissants, en particulier sur les processeurs haut de gamme, de sorte que les fabricants de puces font beaucoup de travail en coulisse pour les exploiter à d'autres fins que les jeux et le décodage vidéo. Calcul hétérogène existe depuis quelques années, permettant aux PC de décharger des tâches hautement parallélisées vers le GPU.
La même technologie arrive maintenant aux 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 processeurs et les GPU.
Bien sûr, cela ne fonctionnera pas dans toutes les applications et réduira 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 processeur pour certaines tâches tout en en déchargeant d'autres sur le GPU.
Puisque nous avons affaire à des applications parallélisées, l'approche devrait apporter les plus grandes améliorations du traitement d'image. Par exemple, si vous devez utiliser la super-résolution et rééchantillonner des images, le processus peut être divisé en différentes étapes dans OpenCL. Si le processus comporte 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. Cela améliorera non seulement les performances d'un ordre de grandeur, mais contribuera également à réduire la consommation d'énergie.
Intel a raté le bateau sur 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 pour passer quelques années sur le banc et faire un retour.
L'année dernière, Intel a subventionné les ventes de ses processeurs Atom pour tablettes, réussissant à quadrupler les expéditions en moins d'un an. Il tourne désormais son attention sur 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 les fabricants de puces chinois. Ils sont fabriqués sur le nœud 28nm, 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 standard entre 50 $ et 150 $. Les premiers modèles devraient commencer à être expédiés d'ici la fin du deuxième trimestre de 2015, et la plupart d'entre eux seront conçus pour les marchés asiatiques, ainsi que pour les marchés émergents dans d'autres régions du monde. S'il est possible que nous en voyions certains en Amérique du Nord et en Europe, Intel semble se concentrer sur la Chine et l'Inde.
Intel couvre ses paris avec Processeurs Atom x5 et x7 , qui utilisera une architecture entièrement nouvelle et le nœud de fabrication de pointe 14 nm 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, à laquelle je n’ai pas de réponse, est de savoir combien de projets de conception Intel peut obtenir sous sa ceinture. 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 smartphone.
Jusqu'à présent, je n'ai vu qu'un seul produit basé sur un processeur Intel SoFIA - une tablette chinoise à 69 dollars avec connectivité 3G. C'est essentiellement 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. Cela doit être une proposition tentante pour les fabricants de smartphones et de tablettes à 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 livrés au cours de l'année prochaine. Nous avons évidemment affaire à des millions d'unités, des 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 représente une baisse dans le seau étant donné que les expéditions totales de smartphones devraient atteindre 1,2 milliard d'appareils cette année. Cependant, Intel est impitoyable, a de l’argent à dépenser et n’a pas à faire de profit sur aucune 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à.
Intel a une mauvaise réputation parmi 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 étendus, une documentation complète et plus encore. En fait, un rapide coup d'œil aux listes d'emplois LinkedIn révèle qu'Intel embauche des dizaines de développeurs Android, avec quelques nouvelles offres d'emploi ouvertes chaque mois.
Alors tout va bien, non? En fait ça dépend…
La semaine dernière, j’ai eu la chance 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, bien que faire tester certains appareils Intel soit un bon début. La bonne nouvelle: Intel fait de son mieux pour tout régler de son côté, vous n’avez donc 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 quad-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 l'année prochaine.
Pour conclure, voici ce à quoi les développeurs Android devraient s'attendre en termes de logiciels et de matériel à la fin de 2015 et 2016:
ascenseur vs uber part de marché