Qu'est-ce qu'un processeur multicœur ?

click fraud protection

Depuis le milieu des années 2000, les processeurs de bureau offrent plusieurs cœurs de processeur dans un seul package. Il s'agit d'un processeur multicœur. Alors que les premières conceptions étaient limitées à deux ou quatre cœurs de processeur, les processeurs modernes offrent jusqu'à 64 cœurs physiques sur un seul processeur. Un nombre de cœurs aussi élevé n'est pas standard pour les processeurs de bureau et est généralement réservé aux postes de travail ou aux serveurs haut de gamme. Le nombre de cœurs typique des processeurs de bureau modernes se situe entre 4 et 16. Mais qu'en est-il des processeurs multicœurs qui les rendent dominants dans les ordinateurs modernes ?

Noyau unique

Historiquement, un processeur à un seul cœur était limité à l'exécution d'une seule tâche à la fois. Cela vient avec toute une série de problèmes. Par exemple, sur un ordinateur moderne, il y a une énorme quantité de processus en arrière-plan en cours d'exécution. Si un processeur ne peut traiter qu'une seule chose à la fois, cela signifie que ces processus d'arrière-plan doivent prendre du temps de traitement par rapport au processus de premier plan. De plus, les échecs de cache signifient que les données doivent être récupérées à partir d'une RAM relativement lente. Pendant que les données sont extraites de la RAM, le processeur reste simplement inactif, car il ne peut rien faire tant qu'il n'a pas obtenu les données. Cela bloque le processus en cours ainsi que tous les autres processus qui attendent qu'il se termine.

Bien que les processeurs monocœurs modernes ne soient pas vraiment une chose grâce à la montée en puissance des processeurs multicœurs à petit budget, ils pourraient utiliser d'autres astuces modernes pour fonctionner plus rapidement. Un pipeline permettrait à chaque partie différente du traitement d'une instruction d'être utilisée simultanément, offrant une amélioration significative des performances par rapport à l'utilisation d'une seule étape du pipeline par horloge cycle. Un pipeline large verrait plusieurs instructions pouvant être traitées dans chaque étage du pipeline par cycle d'horloge. Le traitement Out Of Order permettrait aux instructions d'être planifiées de manière plus rapide. Un prédicteur de branchement serait capable de prédire le résultat d'une instruction de branchement et d'exécuter de manière préventive la réponse présumée.

Tous ces facteurs fonctionneraient bien et fourniraient des performances. L'ajout d'un ou plusieurs cœurs, cependant, permet tout cela, et d'un seul coup permet le traitement de deux fois les données à la fois.

Multicœur

L'ajout d'un deuxième cœur semble devoir doubler les performances brutes. Les choses sont malheureusement plus compliquées que cela. La logique du programme est souvent monothread, ce qui signifie qu'il n'y a qu'une seule chose qu'un programme essaie de faire à la fois. Ce qui peut arriver, cependant, c'est que d'autres processus peuvent utiliser l'autre noyau en même temps. Bien qu'il n'y ait pas d'augmentation de performance inhérente à la plupart des programmes individuels, la fourniture d'un ressource de traitement, réduit efficacement la concurrence pour une ressource limitée, qui fournit un amélioration des performances. Cette amélioration des performances, simplement due à la réduction de la concurrence pour le temps CPU, est plus perceptible lors du saut d'un seul à un processeur double cœur, il y a des rendements décroissants en augmentant davantage le nombre de cœurs, bien que plus soit généralement meilleur.

Pour tirer pleinement parti des systèmes multicœurs et bénéficier d'une solide amélioration des performances, les programmes doivent être programmés pour utiliser plusieurs threads de traitement. La logique multithread est notoirement difficile à faire de manière fiable car elle est souvent difficile à apprendre et il existe de nombreux pièges potentiels. Un exemple d'écueil est connu sous le nom de condition de concurrence. Dans une condition de concurrence, un processus suppose qu'un autre processus qu'il démarre fonctionnera correctement, il essaie ensuite de faire quelque chose qui repose sur le bon fonctionnement de cet autre processus. Par exemple, imaginez qu'un processus démarre un autre processus pour fermer un document et en ouvrir un autre. Si le processus d'origine ne vérifie pas correctement si le deuxième processus est terminé, cela peut entraîner des résultats inattendus. S'il y avait un problème lors de la fermeture du premier document, par exemple, il pourrait encore être ouvert lorsque le processus d'origine y écrit simplement plus de données.

Dans cette condition de concurrence, la valeur d'une variable est lue une deuxième fois avant que la nouvelle valeur ne lui soit écrite, ce qui conduit à une mauvaise réponse globale.

Problèmes thermiques

L'un des plus gros problèmes avec lesquels les processeurs multicœurs finissent par se débattre est la chaleur. Alors qu'un cœur de processeur ne produit pas autant de chaleur, deux en dégagent plus. Dans les processeurs à nombre de cœurs élevé, cette concentration de chaleur peut entraîner une horloge de suralimentation plus faible, car le processeur gère sa température. Une horloge de boost inférieure entraînera une baisse des performances dans les applications à un seul thread. Cela se voit souvent dans les benchmarks de performances de jeu. Les jeux vidéo dépendent souvent fortement d'un seul thread. En tant que telles, les performances à un seul thread sont souvent essentielles pour les jeux. Les processeurs à nombre élevé de cœurs comme les modèles à 16 cœurs proviennent souvent de bacs hautes performances. Malgré cela, ils peuvent régulièrement être surpassés par des processeurs "inférieurs" avec un nombre de cœurs inférieur dans les benchmarks à thread unique. Ce problème est encore plus évident dans les processeurs à très haut nombre de cœurs comme le Threadripper AMD à 64 cœurs, où la vitesse d'horloge est nettement inférieure à celle des processeurs de bureau haut de gamme.

Succès

De nombreuses applications sont capables d'utiliser correctement plusieurs cœurs de processeur. Par exemple, le rendu CPU est une tâche relativement facile à paralléliser. Des améliorations de performances peuvent être observées jusqu'à 64 cœurs et plus, bien qu'aucun processeur n'offre actuellement plus de 64 cœurs. De nombreuses applications ne peuvent tout simplement pas être multithread car elles dépendent de la logique séquentielle. Bien que ceux-ci ne voient nulle part près de la vitesse d'un programme multithread, le fait que les programmes multithread et d'autres programmes à thread unique peuvent utiliser d'autres cœurs de processeur libèrent du temps processeur, ce qui permet une meilleure performance.

Options architecturales

Dans les processeurs de bureau, chaque cœur de processeur dans un processeur multicœur est généralement identique. Cette homogénéité simplifie le travail d'ordonnancement sur les cœurs. L'utilisation de la même conception répétitive permet également de réduire les coûts de développement. Les processeurs mobiles, cependant, utilisent depuis longtemps des architectures de cœur hétérogènes. Dans cette conception, il existe deux ou même trois niveaux de cœur de processeur. Chaque niveau peut exécuter les mêmes processus, cependant, certains sont conçus pour l'efficacité énergétique et d'autres sont réglés pour les performances. Cela s'est avéré une recette de succès pour les appareils alimentés par batterie, car de nombreuses tâches peuvent utiliser le plus lent plus cœurs économes en énergie, augmentant la durée de vie de la batterie, tandis que les processus hautement prioritaires peuvent toujours être exécutés à grande vitesse si nécessaire.

L'architecture des processeurs de bureau évolue également dans le sens d'une conception de cœur hétérogène. Alder Lake 12 d'Intele génération Core CPU Line est le premier processeur de bureau à le faire. Dans ce cas, le principal facteur déterminant des petits cœurs n'est pas nécessairement l'efficacité énergétique mais l'efficacité thermique, bien que ce soient les deux faces d'une même pièce. Avoir plusieurs cœurs puissants offre des performances élevées, tandis que de nombreux cœurs efficaces peuvent gérer des tâches en arrière-plan sans trop affecter les cœurs principaux.

Conclusion

Un processeur multicœur est un processeur qui comporte plusieurs cœurs de traitement dans un seul package, souvent, mais pas exclusivement, sur le même dé. Les processeurs multicœurs n'offrent pas beaucoup d'amélioration directe des performances de nombreux programmes, cependant, en augmentant le nombre de cœurs, les programmes à un seul thread n'ont pas besoin de rivaliser autant pour le temps CPU. Certains programmes peuvent tirer pleinement parti de plusieurs cœurs, en utilisant directement tous ceux qui sont disponibles. Cela fournit une grande amélioration des performances, bien qu'en raison des contraintes thermiques et de puissance, cette amélioration ne soit pas nécessairement un doublement direct des performances avec un doublement des cœurs.