Les processeurs multicœurs souffrent-ils toujours de rendements décroissants dans le monde d'aujourd'hui?

8

Il a été démontré dans d' autres questions qu'en raison de l'état des applications informatiques, les processeurs multicœurs souffrent de rendements décroissants. Est-ce toujours le cas dans le monde d'aujourd'hui?

La plupart des nouvelles applications intègrent-elles le multithread et profitent-elles donc de plusieurs cœurs? Sinon, l'aide du système d'exploitation 64 bits plus récent tire-t-elle parti des cœurs en attribuant des tâches / processus à différents cœurs? Ou les processeurs multicœurs continuent-ils de souffrir des mêmes rendements décroissants (ou similaires)?

Veuillez sauvegarder toute réclamation avec des références.

rishimaharaj
la source
2
Être sur un système d'exploitation x64 ne ferait aucune différence lorsque vous avez un programme avec plusieurs threads. Les différences de paysage du compilateur entre 2008 et 2012 sont énormes. Jusqu'à ce qu'il y ait un moyen facile d'exécuter une action sur plusieurs threads, avoir un processeur avec la capacité d'effectuer plusieurs threads à la fois, est en quelque sorte inutile. Même aujourd'hui, ce n'est pas encore assez facile de le faire.
Ramhound

Réponses:

7

Cela dépend fortement de ce que vous faites.

Pour les anciens Word et Excel et dragueur de mines et tout ce que votre maman utilise, un cœur suffit encore et plus de deux sont une surpuissance. Ces types d'applications passent la plupart du temps au ralenti, en attendant les commentaires des utilisateurs.

Pour les jeux, vous bénéficierez d'au moins deux. Après cela, cela dépend du jeu. Théoriquement, vous pouvez exécuter chaque adversaire IA sur un thread séparé, mais la logique centrale du jeu ne peut pas être facilement parallélisée - vous avez besoin d'un endroit où tous les résultats sont rassemblés pour former un état de jeu cohérent. Il y a donc généralement un thread "principal" sur lequel tout le monde attend.

Pour le multimédia, le calcul des nombres réels et la science, chaque cœur compte. Ce sont des tâches qui sont soit intrinsèquement multithread, soit facilement réalisables, et les développeurs sont fortement incités à tirer parti de toute la puissance de traitement disponible.

Les utilisateurs expérimentés aiment effectuer plusieurs tâches. Torrent, VirtualBox, capture d'écran, vidéo, minecraft et navigation Web s'exécutent tous en même temps. Vous allez donc bénéficier de chaque application gourmande en CPU ayant son propre noyau. De nos jours, il est populaire de diffuser votre jeu en direct. Voilà donc deux cœurs pour le jeu, au moins un de plus pour le thread de l'encodeur, et au moins un de plus pour le reste du système. C'est au moins 4 cœurs.

Ansis Māliņš
la source
1
En général, une bonne IA de jeu est beaucoup plus difficile que de concilier plusieurs actions. C'est juste un ajout de fantaisie. Deuxièmement, vous présumez que les jeux ont un seul état de jeu central. Ce n'est pas nécessairement vrai non plus. Même si c'était le cas, ce n'est pas nécessairement un obstacle au filetage non plus. Par exemple, les calculs physiques sont généralement effectués en parallèle. Et enfin, les jeux ont également une grande partie de rendu graphique, ce qui conduit également au filetage.
MSalters
Je doute qu'un seul cœur soit toujours le bon choix (il suffit de mettre une formule très lente dans Excel ...) et je pense que vous simplifiez un peu trop. Qu'en est-il, par exemple, de la fonction Turbo Core (AMD) / Turbo Boost (Intel) sur les nouveaux processeurs? Il permet à mon AMD hex-core de garer la moitié de ses cœurs et d'exécuter l'autre moitié à une fréquence d'horloge plus rapide - et la version d'Intel est encore plus finement granulée, je crois - afin que le processeur puisse ré-optimiser à la volée pour le travail requis de il. Cela en fait-il un meilleur choix? Le problème ne peut être résolu avec précision que par des mesures et des repères réels.
DMA57361
Je suis entièrement d'accord avec @ DMA57361 Il y a quelques années, mon oncle a acheté plusieurs ordinateurs AMD monocœur pour ses enfants pré-adolescents. Les processus d'arrière-plan (Windows Update étant le délinquant le plus flagrant) les rendaient régulièrement pratiquement inutilisables pendant des minutes à la fois en maximisant le processeur.
Dan Is Fiddling By Firelight
N'oubliez pas l'hyperthreading. Des processeurs Intel plus avancés peuvent simuler un cœur de processeur supplémentaire en fournissant un ensemble supplémentaire de registres dans chaque cœur et en permettant aux threads d'utiliser différentes parties de chaque cœur de processeur en même temps pour augmenter encore les performances multitâches.
bwDraco
Le rendu 3D en est un autre qui montre un gros avantage. Si vous êtes animateur ou graphiste et faites beaucoup de rendus; tous les logiciels de niveau professionnel ont l'avantage de tirer parti de chaque cœur de votre machine (et plus encore dans le cas de clusters en réseau). Les performances évolueront linéairement avec le nombre de cœurs.
Jason C
5

Je crains que la réponse soit toujours, comme elle l'a toujours été, "cela dépend de ce que vous faites".

Oui, l'ajout de plus en plus de cœurs diminue, et il y en aura toujours si vous n'exécutez qu'une seule application à la fois .

Même dans une application multi-thread bien conçue, la plupart des tâches qui sont exécutées le sont afin d'attendre les composants les plus lents de la machine - disque dur, mise en réseau - sans affecter les performances apparentes pour l'utilisateur. Celles-ci ne peuvent pas être améliorées par une plus grande parallélisation, de sorte que toute limite d'accélération théorique est inaccessible à des fins pratiques.

Il convient de noter qu'il existe peu de "grandes" applications qui ne sont pas multithreads (il suffit de vérifier l'équivalent du gestionnaire de tâches de votre système d'exploitation, il devrait être en mesure de vous dire combien appartiennent à chaque processus - mon Firefox utilise actuellement 31, par exemple ).

Bien sûr, l'exécution de plusieurs applications non interdépendantes n'est pas aussi limitée par ces limites. Au fur et à mesure que vous ajoutez plus de cœurs, vous pouvez exécuter plus d'applications simultanément avec peu de baisse des performances de traitement (les performances du disque dur, de la mise en réseau, etc. ne sont toutefois pas aussi évolutives). En pratique, même cela est également sujet à des rendements décroissants car il y a des frais généraux inévitables pour gérer la répartition du travail entre les cœurs, les pipelines de communication, etc.

Par exemple, ce post de Tom's Hardware (de 2009) tente d'examiner les performances de quelques processeurs multicœurs sous des applications simultanées - en exécutant un jeu en même temps qu'un scan AVG (qui sont probablement tous deux multithreads). Les processeurs quadruple, triple et double cœur fonctionnent tous de manière similaire avec le jeu uniquement, mais ajoutent le scan AVG simultané et les performances (mesurées en FPS moyen) chutent respectivement de 22%, 40% et 59%.

Ainsi, alors qu'un quad core n'offrait aucune amélioration des performances par rapport à un dual core lors de l'exécution d'une application intensive, dès qu'une autre tâche intensive est apparue, elle a fini par être deux fois plus performante. Malheureusement, je ne trouve pas grand-chose d'autre qui étudie à quel point cela évolue avec plus de cœurs et des tâches plus intensives.


Et puis vous devez prendre note des caractéristiques modernes des processeurs tels que Turbo Boost d'Intel / Turbo Core d'AMD. Ces caractéristiques particulières permettent à un processeur multi-cœurs de garer les cœurs (les mettre dans un mode plus lent, à faible puissance) et d'utiliser l'énergie de rechange pour overclocker les cœurs qui restent actifs - permettant au processeur de s'optimiser pour fournir autant de puissance de traitement que possible pour le nombre de tâches qui lui sont présentées.

DMA57361
la source
2

Pour ajouter du carburant au feu, j'ai lu ici qu'Android est en fait ralenti en ayant plus d'un cœur:

L'utilisation de processeurs multicœurs peut en fait ralentir les appareils Android, a déclaré Mike Bell, directeur général du groupe mobile et de communication d'Intel, qui blâme la capacité multithread d'Android, ou son absence, pour la difficulté du système d'exploitation à gérer efficacement les processeurs puissants.

Plus un appareil a de cœurs, plus il a besoin de puissance - et, pour le moment, cette quantité d'énergie est tout simplement trop pour que les appareils Android puissent être équilibrés.

rishimaharaj
la source
Hmm, ne serait-ce pas mieux de modifier cela dans votre question d'origine?
Journeyman Geek
Je pense que tout ce fil sera converti en wiki / FAQ communautaire, et j'ai pensé qu'il serait préférable de laisser la question telle quelle et de l'ajouter séparément. @Moderators - cette réponse doit-elle être fusionnée avec la question ou laissée telle quelle?
rishimaharaj
0

Bien sûr, cela dépend de ce que vous faites, mais oui, il y a des rendements décroissants.

Les applications simples et courantes telles que le traitement de texte ou la navigation sur le Web ne tirent guère profit de la présence de plus de deux cœurs de processeur. Les applications de calcul scientifique et de jeu ont tendance à mieux utiliser quatre (ou plus) cœurs et / ou la capacité d'hyperthreading car elles ont tendance à être conçues pour tirer le meilleur parti du matériel moderne, mais l'avantage de plus de quatre cœurs est limité.

De plus, tout n'est pas lié au calcul. L'ajout de cœurs de processeur n'aidera pas si votre charge de travail est liée aux E / S. Si vous avez déjà installé un SSD pour remplacer un disque dur mécanique, vous savez probablement que les performances informatiques quotidiennes sont le plus souvent limitées par le stockage de votre ordinateur. Dans les environnements de serveurs occupés où un grand nombre de cœurs est utilisé pour permettre au système de gérer un grand nombre d'utilisateurs et de demandes simultanément, des baies de disques spécialisées, SSD et autres systèmes de stockage sont utilisés pour garantir des performances maximales sous charge.

bwDraco
la source