84 votes

Pourquoi les téléphones Android ont-ils plus de cœurs que les ordinateurs?

Les ordinateurs portables ont généralement au plus quatre cœurs, et les dualcores sont probablement plus communs. J'ai récemment changé de quadcore à dualcore et je peux confirmer qu'il y a un nombre limité de cas d'utilisation pour le quadcore, même avec des tâches intensives en CPU.

D'un autre côté, sur les téléphones mobiles, les quadcores, hexacores et octacores semblent être courants. Pourquoi? Quelles tâches peuvent les utiliser?

Je comprends que big.LITTLE peut faire partie de la réponse. C'est-à-dire que le principal avantage de tant de cœurs n'est pas la capacité à les utiliser tous simultanément, mais plutôt à utiliser un cœur avec une consommation d'énergie appropriée pour la charge de travail actuelle. Cependant, par exemple, le Snapdragon 625 a huit cœurs Cortex-A53, ce qui ne semble pas être le cas du big.LITTLE.

Peut-être que l'architecture ARM a un point de performance par watt optimal plus bas. C'est-à-dire qu'avoir un seul cœur optimisé pour la performance par watt aboutit à une performance inférieure sur ARM que sur Intel. Ainsi, plus de cœurs sont utilisés pour offrir la performance. C'est juste une hypothèse.

Mais même dans ce cas, je ne vois pas quelle charge de travail peut utiliser efficacement, disons, huit cœurs sur un téléphone portable. Sur les ordinateurs portables, je peux imaginer quelques cas comme une compilation complète (non incrémentielle) d'un projet. Mais sur les téléphones?

  • Les jeux peuvent être gourmands en performances, mais ils demandent généralement des performances GPU plutôt que CPU, n'est-ce pas?
  • Théoriquement, plusieurs cœurs pourraient accélérer la compilation AOT d'Android Lollipop/Marshmallow lors de l'installation ou de la mise à jour (c'est-à-dire la phase "Optimisation des applications 3/121"). Je ne suis cependant pas certain que cela puisse utiliser plusieurs cœurs. Autant que je me souvienne du code, une seule application est compilée à la fois, mais peut-être qu'il y a un certain parallélisme au sein du processus de compilation lui-même.
  • Aussi Android 7+ pourrait utiliser plusieurs cœurs lors de la compilation. Mais comme il serait censé compiler lorsque le téléphone est inactif et en charge, le bénéfice semble plutôt minime. Du moins quand on charge le téléphone pendant la nuit - je m'en fiche vraiment si cela prend 30 minutes ou deux heures dans un tel scénario.

0 votes

Comme je l'ai souligné dans ma réponse, gardez à l'esprit que vous semblez regarder les choses à l'envers. De nombreuses exécutions en parallèle sont la norme, ce n'est pas votre téléphone qui est une anomalie pour avoir de nombreux cœurs, c'est le CPU du PC qui est une anomalie.

4 votes

Votre question est erronée, les PC peuvent avoir plus de cœurs que les téléphones. intel.com/content/www/us/fr/products/processors/core/x-serie‌​s/… Et cela sans même parler des machines de classe serveur, qui peuvent avoir des dizaines, voire des centaines de cœurs. (Et certains supercalculateurs atteignent même la gamme des milliers de cœurs.)

3 votes

@JAB Bien sûr, mais je ne parle pas du nombre maximal de cœurs, mais plutôt du nombre typique. Pour les ordinateurs portables, plus de quadcores sont assez rares, mais vous pourriez trouver quelques exceptions, peut-être avec Xeon. Pour les téléphones portables, même les octacores semblent relativement courants.

1voto

Paghillect Points 119

Les réponses fournies expliquent certains aspects du problème conduisant à ce nombre impressionnant de cœurs de CPU sur les téléphones Android. Relisez cela; les téléphones Android. L'iPhone a réussi à se contenter de seulement quelques cœurs depuis des années et reste toujours beaucoup plus performant que n'importe quel fleuron Android.

Les concepteurs d'Android ont pris un énorme risque en choisissant le langage de programmation Java et par conséquent la JVM comme exécuteur des applications. Java, en raison de ses principes de conception, résout le problème de devoir compiler et construire du code pour chaque architecture de processeur avant de pouvoir l'exécuter en sacrifiant les performances. Java introduit une machine virtuelle lourde et encombrante généralement appelée JVM. La JVM émule en fait un CPU au niveau logiciel pour éviter le besoin de compiler séparément le code pour chaque appareil. Pensez à la JVM comme un CPU virtuel qui a les mêmes propriétés indépendamment de l'appareil sur lequel il s'exécute, de sorte que le code doit être compilé une seule fois pour la JVM et pourrait ensuite s'exécuter sur n'importe quel appareil. Cela permet aux fabricants de jeter n'importe quel matériel avant de se soucier de la compatibilité des applications. Cela permet également aux appareils de remplir le marché avec à la fois des appareils bas de gamme médiocres et des appareils haut de gamme de qualité et de finir par le dominer.

La JVM elle-même n'est qu'une spécification et les gens sont libres de développer leur propre JVM tant qu'elle respecte cette spécification. La JVM d'origine pour Android s'appelait Dalvik. De nos jours, Google l'a remplacé par ART.

Maintenant, quel est le problème avec la JVM? C'est une pièce logicielle lourde qui consomme énormément de ressources informatiques. Ajoutez à cela certaines autres propriétés du langage Java telles que la collecte des ordures et la consommation de ressources de la JVM devient simplement trop importante pour un appareil doté de matériel informatique modeste. Chaque application et service système ouvert sur votre appareil est lui-même une instance de la JVM ART et maintenant vous pourriez conclure que les gérer tous nécessite un matériel informatique vraiment performant. Les choses vont devenir encore pires lorsqu'il y a besoin de dessiner des interfaces utilisateur.

Chaque application s'exécute sur un certain nombre de threads. Chaque cœur de CPU ne peut exécuter qu'un thread à la fois. Chaque application a un thread principal sur lequel elle effectue les opérations liées à l'interface utilisateur. Il peut y avoir beaucoup plus de threads par application pour effectuer l'accès aux fichiers, au réseau, etc. En général, il y a plus d'applications (et de services système) ouverts qu'il n'y a de cœurs de CPU et par conséquent il y a généralement beaucoup plus de threads qu'il n'y a de cœurs de CPU. Ainsi, chaque cœur doit basculer entre le traitement de différents threads en permanence, en effectuant un peu de chaque et en passant au suivant. Ce changement prend beaucoup de temps pour le CPU et dans le cas des applications étant essentiellement des JVM, cette tâche devient encore plus exhaustive. En augmentant le nombre de cœurs, vous réduisez simplement le nombre d'applications (et donc de threads) dont chaque cœur doit se préoccuper, ce qui augmente les performances globales.

Sur la base de cette explication, on pourrait déduire qu'Android a besoin d'un matériel puissant pour fonctionner en douceur. Les premières générations d'appareils Android étaient célèbres pour leurs retards, plantages et bien d'autres problèmes malheureux. Mais au fil des ans, ces problèmes ont été en grande partie résolus en s'appuyant sur un matériel puissant.

En revanche, les applications iOS sont compilées en code machine natif et n'ont donc pas besoin de la virtualisation. Le langage utilisé et le système d'exploitation sont également plus efficaces et permettent donc à ces appareils de rester fluides sans avoir besoin de chipset surdimensionné.

0 votes

Il s'agit d'une bonne explication pourquoi les téléphones mobiles sont beaucoup plus puissants que les ordinateurs de bureau. Ou ne le sont-ils pas?

0 votes

"Cela permet aux fabricants de jeter n'importe quel matériel qu'ils veulent avant de devoir se soucier de la compatibilité de l'application." - bon point, mais je ne suis pas sûr que ce fût l'intention pour un système initialement destiné aux caméras.

0 votes

"Il pourrait y avoir beaucoup plus de fils par application pour effectuer l'accès aux fichiers, réseau, etc. - ceux-ci sont plutôt liés à l'E/S, ne consommant pas beaucoup de CPU. Parfois, l'E/S est gérée par un seul fil, car le CPU est beaucoup plus rapide que les périphériques d'E/S."

0voto

Flippy Points 11

En résumé, je peux dire que les cas d'utilisation du PC et du téléphone sont assez différents. Le PC est le plus souvent utilisé dans une seule ou quelques applications (bien sûr, un navigateur avec de nombreux onglets nécessite de nombreux cœurs de processeur, peut même être lent sur un i-3 haut de gamme), les téléphones sont utilisés pour multitâche. Au moins la connexion réseau, le dessin de l'interface utilisateur, les déclencheurs système, les notifications. Si vous ouvrez le gestionnaire de tâches sur un PC, il y a également de nombreux processus, mais ils utilisent moins de quelques % de la puissance du processeur même sur un ancien Core 2 Duo. 4 cœurs sont assez bon marché (MTK 65x2 coûtait 1$ au début pour les OEM). C'est également le RISC vs CISC, le dernier manquant de performance par cœur. Économe en énergie != puissant, comme nous pouvons le voir ici. Le multi-cœur est parfait pour les mobiles, car il n'y a pas de charge de travail importante encaissée par un seul thread, et l'expérience est axée sur le multi-tâche (mais nous pouvons constater que les iPhone ont besoin de moins de cœurs et de RAM en raison d'un bon logiciel comme dans cette vidéo ou d'autres)

0 votes

Beaucoup de ces activités sont souvent réalisées sur un ordinateur portable également. Et le multitâche ne doit pas nécessairement être gourmand en CPU. Les différences de coûts de fabrication peuvent entraîner quelques variations et pourraient être une raison pour laquelle certains processeurs d'entrée de gamme ont moins de cœurs, mais je doute que les coûts de fabrication soient la seule raison pour laquelle tous les i7 n'ont pas au moins quatre cœurs. Je pense que les coûts de fabrication ne représentent qu'une toute petite fraction du prix de ces processeurs.

0 votes

@v6ak, le problème est que les cœurs x86 sont plus gros et plus compliqués, les processeurs d'Intell (ou AMD) ne sont tout simplement pas assez performants pour être des modèles haut de gamme. En fait, la plupart d'entre eux sont bloqués sur certaines parties et deviennent des processeurs i7 ou Pentium junior. Les cœurs ARM semblent moins complexes, donc moins de modèles arrivent chaque année. Cependant, un vrai processeur octa-core était Samsung Exynos Octa 7xxx, MTK Helio X10, le dernier (X30) propose même un peu (4), moyen (4), gros (2), nous pouvons entendre dans les publicités que c'est un processeur 10 cœurs, le marketing bon marché fait son effet.

-1voto

Lothar Points 99

Je pense qu'un des principaux facteurs de motivation derrière un 4 ou 8 (pour les configurations grand : petit) est juste le marketing pour le moment.

Un énorme problème du grand nombre de cœurs est quand on considère la taille de la mémoire. Normalement, dans les applications de bureau, lorsque vous souhaitez améliorer l'utilisation de plusieurs cœurs, vous devez dupliquer les structures et utiliser beaucoup plus de mémoire que dans une application à thread unique.

Cela ne se produit pas parce que la RAM est très chère (surtout dans la situation de crise de la RAM en 2017/2018). Le marketing veut des nombres élevés mais le contrôle veut réduire les prix des composants. Si vous voyez un équilibre qui est inférieur à 1 gigaoctet de RAM par cœur, alors vous voyez un compromis raté.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X