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.

63voto

Guillermo Gomez Points 423

Comme vous l'avez déjà noté, la stratégie de combinaison big.LITTLE (techniquement, HMP, grappes de Heterogeneous Multi-Processing) est la raison principale de tant de coeurs (et parfois de manière écrasante). Un appareil mobile rencontre souvent plusieurs scénarios, incluant à la fois des charges lourdes et légères.

Un exemple extrême de classe de consommation est le Helio X20 de MediaTek, qui dispose de 2 cœurs A72 orientés performances, 4 cœurs A53 équilibrés, plus 4 cœurs A35 économes en énergie. C'est très flexible dans différents cas d'utilisation. Cependant, je pense que 8 cœurs 2 grappes sont généralement suffisantes.

Il existe également un autre exemple de type bureau, la série Snapdragon 800 de Qualcomm (S 800, S 801 et S 805). Il n'y a que 4 cœurs de la même microarchitecture dans chaque SoC, 2 avec une fréquence plus élevée et 2 avec une fréquence plus basse. Qualcomm a conçu ces SoC car ils avaient une grande confiance en leur propre microarchitecture (Krait 400 et Krait 450).

Pour les jeux, même s'ils semblent demander plus de performances GPU que de CPU, ils mettent quand même une charge importante sur le CPU. Un GPU ne peut pas fonctionner seul sans que quelque chose lui fournisse des données à traiter, et c'est l'une des principales tâches que le CPU effectue pendant que vous jouez. Dans la plupart des cas de jeu, le GPU se contente de rendre les graphiques, tandis que toutes les autres tâches comme le chargement des données, des ressources et des éléments, et le calcul des mécaniques de jeu comme le système, l'environnement et la physique sont effectuées par le CPU. Vous n'obtiendrez pas un taux de rafraîchissement plus élevé si vous mettez à niveau votre GPU tout en ayant un CPU d'entrée de gamme.

Une raison secondaire est la manière dont Android utilise les ressources CPU. Android crée essentiellement son propre environnement d'application. Il n'utilise que des codes (et des API) en Java, mais dispose de sa propre machine virtuelle nommée Dalvik, qui a ensuite été remplacée par ART (Niveau API 21). Les APK ont leurs codes exécutables dans un format "neutre", similaire aux fichiers .class en Java. Avant leur exécution, les codes sont compilés une nouvelle fois en instructions natives de la machine[1]. Le processus de compilation est multithreadé et peut utiliser plusieurs cœurs pour une amélioration des performances.
Et lorsqu'une application est en cours d'exécution, plusieurs autres processus et mécanismes (comme le collecteur d'ordures) s'exécutent à côté ou en parallèle de l'application. Plus de cœurs permettent aux processus de soutien de s'exécuter de manière plus efficace, tout comme l'application principale.
1. Si vous utilisez un identificateur de type de fichier, vous constaterez que les fichiers dex "optimisés" sont au format ELF, tandis que les fichiers dex "neutres" sont simplement dans un format propre à eux-mêmes.

Une autre raison moins importante est que les cœurs ARM ne peuvent pas fonctionner aussi rapidement qu'une puce Intel x86. La microarchitecture Intel x86 remonte à 1976, lorsque la puce Intel 8086 a commencé à être conçue, ce qui signifie que l'x86 s'est développé sur une longue période. Un seul cœur ARM Cortex-A73 haute performance moderne est seulement aussi puissant qu'un cœur Clarkdale d'Intel, prenant le Core i5-660 comme exemple (GeekBench, monocœur). Cela est dû au fait que x86 est une microarchitecture CISC tandis qu'ARM est une microarchitecture RISC. Vous ne voulez certainement pas d'un téléphone qui devient lent avec seulement deux applications actives. Plus de cœurs aideront à soulager la pression. C'est pourquoi les SoC dual-core sont relativement populaires uniquement sur les montres connectées. Qui a besoin de performances sur une montre connectée?

De manière intéressante, plus de cœurs résulteront en une consommation d'énergie moindre qu'un seul cœur à la même charge. La relation entre la fréquence du CPU et la consommation d'énergie est plus que linéaire, donc doubler la fréquence entraînera toujours une demande de plus de deux fois, voire 3 fois ou 4 fois plus d'énergie, tout en offrant moins de deux fois les performances (en raison d'autres limites de ressources comme le cache). Ainsi, 4 cœurs peuvent facilement surpasser un seul cœur à la même charge, offrant de meilleures performances et demandant simultanément moins d'énergie.

Lecture complémentaire:

0 votes

Les commentaires ne sont pas destinés à des discussions prolongées ; cette conversation a été déplacée vers le chat.

1 votes

Je me souviens avoir lu ou vu quelque part que le noyau Linux avait initialement travaillé sur un bon support multi-cœur avec un accent sur les supercalculateurs, il y a de nombreuses années, et ces efforts se sont révélés utiles "dans le futur" (maintenant) pour les smartphones, comme une sorte "d'accident"

3 votes

Cette réponse ne semble pas répondre véritablement à la question, malgré qu'elle ait été acceptée. Cette réponse semble répondre à la question "Pourquoi pourrais-je vouloir plus de cœurs dans mon téléphone ?", ce qui n'est pas la question posée. Elle n'explique pas la différence entre un PC et un téléphone. Les points donnés sur les raisons pour lesquelles un téléphone peut vouloir plus de cœurs s'appliquent également aux ordinateurs de bureau, en particulier les points concernant les jeux.

15voto

motoDrizzt Points 258

La raison est aussi simple que compliquée.

La réponse courte est "parce que le marché des téléphones mobiles n'a jamais été et n'est pas influencé par Intel".

La réponse longue est bien trop longue pour être résumée ici, mais le concept de base est qu'Intel a dominé le marché des PC pendant des années par tous les moyens possibles, au point de payer et corrompre (et être condamné pour cela) pour que ses CPU soient le premier et le seul choix des fabricants de PC.

Avec le contrôle total du marché, Intel a pu gonfler les prix des CPU en décidant artificiellement des fonctionnalités et de la puissance de traitement que les utilisateurs devraient vouloir, et si vous analysez un peu l'histoire d'Intel, vous remarquerez que sa principale force réside essentiellement dans l'augmentation de la fréquence des CPU, essayant rarement d'innover vraiment; et il n'avait pas besoin de le faire, car il pouvait simplement dire aux gens "vous n'avez pas besoin de plus de cœurs, mais j'ai ces nouveaux CPU plus performants". En même temps, il pouvait vendre des CPU multicœurs sur le marché des serveurs à des prix exorbitants (parce que les serveurs ont toujours <strong>eu besoin</strong> de beaucoup de puissance parallèle, au point qu'il existe actuellement une tendance à essayer de réaliser des serveurs qui utilisent..devinez quoi? Des centaines de CPU de téléphone bon marché travaillant en parallèle)

Cela s'est ensuite reflété dans la communauté des développeurs qui n'a jamais rattrapé l'importance de la programmation parallèle, de sorte que beaucoup, voire la plupart d'entre eux, ne se sont jamais souciés d'utiliser plus d'un thread à la fois - ou, pour le dire de manière non technique, de permettre à leur logiciel d'effectuer plusieurs tâches en même temps. Ce qui a conduit à la légende selon laquelle les algorithmes parallèles sont vraiment difficiles à implémenter et ne s'appliquent qu'à un petit sous-ensemble de problèmes.

En revanche, le marché des mobiles n'a jamais connu de succès avec Intel; au contraire, en fait, il arrive souvent qu'Intel essaie de faire quelque chose de différent de l'architecture X86 habituelle. Ainsi, ne disposant pas de son influence et de son contrôle sur le marché, les autres producteurs de CPU ont suivi la voie qui était la norme depuis longtemps en dehors du marché des PC : le calcul parallèle.

12 votes

Etes-vous sûr de répondre à la bonne question?

2 votes

@iBug Bien sûr, oui. Si quelqu'un choisit un mouton blanc et un mouton bleu et demande "pourquoi le mouton blanc n'est pas bleu comme tous les autres moutons?", le problème auquel l'OP est confronté est de penser qu'un mouton blanc est une exception, alors que la vérité est tout le contraire.

2 votes

Hmm? Je pense que vous avez besoin de plus d'intelligence pour créer un cœur rapide que pour créer un cœur lent puis Ctrl-C/Ctrl-V il. Je me souviens avoir lu une interview où ils discutaient de la difficulté d'Intel à accélérer encore davantage les CPU et un informaticien a dit "Je ne veux pas plus de cœurs, je veux des cœurs plus rapides", et le gars d'Intel a dit quelque chose comme "Des cœurs plus rapides, c'est ce que vous voulez, mais plus de cœurs, c'est ce que vous obtiendrez"

9voto

David Schwartz Points 354

Il y a deux facteurs en jeu, l'un très pratique et l'autre historique.

La raison pratique est l'utilisation d'architectures mixtes dans les téléphones. La consommation d'énergie est critique pour les téléphones et ces derniers passent beaucoup de temps en modes où ils ont besoin de très peu de performances. Il est logique d'avoir certains cœurs optimisés pour une consommation minimale d'énergie lorsque peu de performances sont nécessaires, tout en ayant certains cœurs optimisés pour fournir des performances maximales lorsqu'elles sont nécessaires.

L'autre raison est largement historique. Jusqu'en 2005 environ, les processeurs de bureau étaient tous à un seul cœur. Améliorer les performances des processeurs de bureau consistait presque exclusivement à faire en sorte qu'un cœur puisse exécuter le plus grand nombre d'instructions par seconde possible. Même aujourd'hui, de nombreux logiciels de bureau ne peuvent pas tirer pleinement parti de plusieurs cœurs, de sorte que beaucoup préféreraient un processeur avec 4 cœurs à un processeur avec 8 cœurs mais dont les cœurs sont 20% plus lents.

Obtenir autant de performances qu possible à partir d'un seul cœur nécessite de vastes étendues d'espace réel du processeur. Cet espace réel pourrait autrement être utilisé pour fournir plus de cœurs. C'est pourquoi les tout nouveaux processeurs Kaby Lake d'Intel ont 4 cœurs maximum et les gens les achètent parce que chaque cœur est plus rapide que les cœurs de leurs prédécesseurs. Pour beaucoup, il s'agit d'une amélioration même par rapport aux CPUs ayant un nombre supérieur de cœurs.

Au fil du temps, attendez-vous à voir beaucoup plus de logiciels de bureau entièrement optimisés pour prendre en charge plus de cœurs. À mesure que cela se produira, les compromis d'ingénierie commenceront à favoriser davantage de cœurs plutôt que des cœurs plus rapides sur les ordinateurs de bureau. Bien que les cœurs deviendront presque certainement plus rapides, vous commencerez à voir des gens préférant un CPU avec 8 cœurs à un CPU avec 4 cœurs même si chaque cœur est 20% plus lent. Les concepteurs de puces suivront le marché.

5voto

kibitzer Points 2015

Il est crucial pour un téléphone de pouvoir fournir de la puissance de calcul par intermittence (nous avons besoin que certaines applications soient rapides) mais aussi d'éviter la surchauffe (la dissipation de la chaleur est beaucoup plus difficile pour les téléphones que pour les ordinateurs portables ou de bureau). Pour y parvenir, les architectes conçoivent des téléphones pour utiliser un seul cœur lorsque la charge de travail est légère et fournir des cœurs supplémentaires pour augmenter les performances lorsque cela est nécessaire. Si les téléphones utilisaient moins de grands cœurs, la surchauffe deviendrait un problème même lorsque la charge de travail est assez légère.

Source: Un cours d'architecture informatique de niveau supérieur.

0 votes

En vérité, la capacité de fournir de la puissance de calcul (si c'est ce que vous entendez par énergie) en courtes rafales est cruciale pour les ordinateurs de bureau également. C'est pourquoi ils ont TurboBoost sur les puces Intel.

0 votes

Oui, la puissance de calcul est ce que je voulais dire. En effet, tous les appareils susceptibles de subir une charge de travail intensive à un moment donné (y compris les téléphones et les ordinateurs de bureau) doivent être en mesure de la gérer. La principale différence réside dans la dissipation de chaleur.

0 votes

Je suis d'accord avec ce que tu as dit, je voulais juste souligner que la charge de travail en rafales n'est pas spécifique aux téléphones.

2voto

Dmitry Grigoryev Points 565

Tout d'abord, la machine virtuelle Java peut bénéficier historiquement de manière plus importante des multi-cœurs que les logiciels de bureau classiques. Même si vous écrivez une application à thread unique en Java, elle s'exécutera plus rapidement sur un processeur multicœur car la plupart du code du ramasse-miettes s'exécutera aux côtés de votre application.

Deuxièmement, de nombreuses tâches se déroulent en arrière-plan sur votre téléphone : mises à jour automatiques, téléchargements de publicités, logiciels antivirus, gestion du module GSM, etc. Sur un ordinateur portable, toutes ces tâches occuperaient à peine un cœur, mais les cœurs ARM sont beaucoup moins puissants, donc vous voudrez en avoir au moins quelques-uns dédiés aux tâches en arrière-plan si vous souhaitez un système réactif.

Enfin, il y a le marketing. Peu d'utilisateurs sont capables de déterminer s'ils bénéficieraient de 8 cœurs, mais un smartphone à 8 cœurs sonne certainement plus cher qu'un smartphone à 2 ou 4 cœurs.

2 votes

Je ne cesse de voir des déclarations du genre "les cœurs ARM sont beaucoup moins puissants" - qu'est-ce que cela signifie exactement ? Ont-ils moins de vitesse d'horloge ?

2 votes

@Abdul moins d'opérations par seconde. Les puces x86 peuvent exécuter plusieurs opérations à la fois, elles surpassent donc ARM même pour la même vitesse d'horloge. Consultez cette comparaison : la meilleure puce ARM (GT-I9100) est environ 10 fois plus lente que la meilleure puce x86 (i7-2920XM).

0 votes

Est-ce que "opérations par seconde" est synonyme de FLOPS?

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