COMPTOIR
register

Processeurs multicœurs : vers un plafond de verre ?

Depuis Bulldozer, mais plus encore avec Zen - Zen 2 en étant l'apogée - AMD a prouvé que la puissance des processeurs pouvait passer par un nombre de cœurs en forte hausse. Alliée à la technologie des chiplets, les puces ainsi produites ont dévoilé un rapport performances / prix ahurissant, bien que les prestations restaient, aux débuts, encore inférieures en jeu. Tant bien que mal, Intel s'est joint à la danse en développant à une vitesse remarquable des dies plus volumineux de son architecture Skylake, d'où les multiples refreshs, si bien que les OS, jeux et logiciels actuels auraient bien du mal à revenir à des processeurs moins threadés.

 

amd bazooka intel zen2

Les cœurs, une arme redoutable

 

Pourtant, le multicœur était déjà présent sur un autre segment : l'informatique embarquée - comprenez ici les smartphones - dès 2011, avec le Cortex A7 pouvant monter à 8 cœurs big.LITTLE. L'idée ici était de disposer d'unités de calcul plus performantes mais aussi moins économes, et de les allumer / éteindre au besoin. Néanmoins, le choix d'intégration de clusters n'est pas anodin : multiplier les unités logiques permet d'augmenter linéairement la puissance de calcul et la consommation, là où la fréquence fait s'envoler le pompage de Watts quadratiquement. Pour autant, les octocœurs sont toujours majoritaires en notre chère année 2020 : tout n'est donc pas rose.

 

Hé oui, avoir de la puissance n'est rien sans la maîtrise qui lui est associée, et c'est bien ce qui pêche ici. À intégrer toujours plus de cœurs, beaucoup se retrouvent, finalement, vacants du fait de programmes qui peinent à se paralléliser suffisamment. Outre la limite théorique de la loi d'Amdahl - un programme ne pourra jamais être exécuté plus vite que sa partie séquentielle, avec comme corollaire une inutilité croissante du rajoute des cœurs sur une puce déjà bien testicouillue - les difficultés de programmation se font également sentir dans la pratique, les écosystèmes n'étant pas toujours adaptés à la parallélisation, en particulier quand les langages de programmation restent majoritairement orienté sur un paradigme n'explicitant pas ou pas suffisamment le flot de données.

 

Pourtant, la tendance - particulièrement sur les SoC mobiles - est à la multiplication des bouzins programmables, mais sous la forme d'accélérateurs dédiés. GPU, NPU (Neural Processsing Unit), IPU (Image Processing Unit), etc : nombreux sont les nouveaux composants utilisant l'espace proposé par la conjecture de Moore (doublement de la densité d'intégration des transistors tous les deux ans) pour proposer des fonctionnalités plus avancées. Qu'en sera-t-il pour notre bon vieux x86 ? Les communications sur Alder Lake et l'hétorogène tendent vers une réponse affirmative. À suivre ! (Source : SemiEngineering)

Un poil avant ?

FSP annonce de la grosse alimentation, avec ses Hydro PTM PRO 80 Plus Platinum !

Un peu plus tard ...

Comptoiroscope • Mafia et le jeu des 7 erreurs

Les 52 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par Un champion du monde embusqué, le Mardi 06 Octobre 2020 à 10h56  
par m du Grand Est le Mercredi 30 Septembre 2020 à 17h03
Bin quelque part, fatallement. Plus un proc est efficace en SMT, moins il est performant en mono-tâche.
Parce que si il arrive a faire avancer deux threads efficacement, quelque part c'est parce que le coeur à des tas de ressources disponibles qu'il ne parvient à à occuper avec un seul thread. Signe d'un ordonnanceur peut-être pas suffisamment efficace. Du coup en mono, la moitier du coeur se tournerait les pouces
Je parle d'un exemple facile à appréhender : un A64 X2 cadencé à 1800MHz et 900MHz. Le plus lent sera évidemment 1 coeur à 900MHz, mais le plus rapide ne sera pas 1 coeur à 1800MHz mais 2 à 900MHz, parfois dans des proportions qui ne peuvent que résulter d'un problème de conception logicielle.

Certes, avec 2 coeurs on peut gagner un peu avec les changements de contexte, mais si on en arrive à observer un temps de réponse (temps d'attente avant la reprise du main thread) en dizaines, centaines voire milliers de millisecondes pour expliquer l'avantage pris dans ces cas "pathologiques", le problème est toujours là avec plus de coeurs, juste masqué.

Au-delà de 2 coeurs on finit par retrouver la même problématique sous une autre forme, et en définitive ça impose de programmer de façon particulièrement abstraite et donc tout sauf optimale. Tous comptes faits, on se retrouve à mal utiliser un OS et des modèles logiciels parfaitement inadaptés, en réalité simplement car le plafond de verre était déjà atteint (il n'y a qu'à voir à quel point ça a piétiné en single thread hors instructions vectorielles/SIMD ajoutées et la retranscription par l'OS lui-même de code rendu obsolète) mais il fallait "innover" pour vendre.
par chambolle, le Vendredi 02 Octobre 2020 à 15h05  
par m du Grand Est le Mercredi 30 Septembre 2020 à 17h03
Bin quelque part, fatallement. Plus un proc est efficace en SMT, moins il est performant en mono-tâche.
Parce que si il arrive a faire avancer deux threads efficacement, quelque part c'est parce que le coeur à des tas de ressources disponibles qu'il ne parvient à à occuper avec un seul thread. Signe d'un ordonnanceur peut-être pas suffisamment efficace.
Intéressant comme remarque. Maintenant le SMT ca ne gagne pas un facteur 2. C'est quand meme 20% au mieux en général. Mais c'est assez juste de dire que si on arrive a placer du SMT c'est qu'il y a de la marge. faudrait tester avec un Power 9 qui a 4 thread par coeur je crois
par Nicolas D., le Mercredi 30 Septembre 2020 à 18h26  
par m du Grand Est le Mercredi 30 Septembre 2020 à 16h36
Par contre, désolé si c'est une question conne (ça fait très longtemps que je ne suis plus l'actualité hardware GPU de près), mais la physique, c'est pas géré par le GPU justement?

Il me semblait que lorsqu'Nvidia avait racheté la startup qui avait lancé les premières cartes d'extension dédiés aux calcul physique (PhysX? ) il y a une dizaine d'annéee, c'était dans le but d'intégré la techno et leurs brevets directement dans la carte graphique.
C'est pas déjà fait depuis longtemps, de le temps? Ca a fait un flop et ça a été abandonné?

En tout cas voilà une idée de coeurs co-processeur dédié, qui pourrait peut-être refaire son apparition dans nos cpu, à défaut de multiplier les coeurs x86 comme des petits pains.
Ça dépend des moteurs ; et comme un bon tas des jeux est issu de portages consoles, sur lesquelles PhysiX est absent, c'est le procco qui se charge de la physique.
par chambolle, le Mercredi 30 Septembre 2020 à 17h17  
par m du Grand Est le Mercredi 30 Septembre 2020 à 17h03
Bin quelque part, fatallement. Plus un proc est efficace en SMT, moins il est performant en mono-tâche.
Parce que si il arrive a faire avancer deux threads efficacement, quelque part c'est parce que le coeur à des tas de ressources disponibles qu'il ne parvient à à occuper avec un seul thread. Signe d'un ordonnanceur peut-être pas suffisamment efficace.
Intéressant comme remarque. Maintenant le SMT ca ne gagne pas un facteur 2. C'est quand meme 20% au mieux en général. Mais c'est assez juste de dire que si on arrive a placer du SMT c'est qu'il y a de la marge. faudrait tester avec un Power 9 qui a 4 thread par coeur je crois
par m du Grand Est, le Mercredi 30 Septembre 2020 à 17h03  
par Un champion du monde embusqué le Mercredi 30 Septembre 2020 à 14h00
Bin quelque part, fatallement. Plus un proc est efficace en SMT, moins il est performant en mono-tâche.
Parce que si il arrive a faire avancer deux threads efficacement, quelque part c'est parce que le coeur à des tas de ressources disponibles qu'il ne parvient à à occuper avec un seul thread. Signe d'un ordonnanceur peut-être pas suffisamment efficace. Du coup en mono, la moitier du coeur se tournerait les pouces
par m du Grand Est, le Mercredi 30 Septembre 2020 à 16h36  
par Nicolas D. le Mardi 29 Septembre 2020 à 19h51
... si tu prends un programme genre un jeu, avec 90% de charge graphique (parallélisable, on suppose pour l'exemple exécuté sur CPU) et 10% d'autre chose, genre de simulation physique (non parallélisable, sur CPU également).
Par contre, désolé si c'est une question conne (ça fait très longtemps que je ne suis plus l'actualité hardware GPU de près), mais la physique, c'est pas géré par le GPU justement?

Il me semblait que lorsqu'Nvidia avait racheté la startup qui avait lancé les premières cartes d'extension dédiés aux calcul physique (PhysX? ) il y a une dizaine d'annéee, c'était dans le but d'intégré la techno et leurs brevets directement dans la carte graphique.
C'est pas déjà fait depuis longtemps, de le temps? Ca a fait un flop et ça a été abandonné?

En tout cas voilà une idée de coeurs co-processeur dédié, qui pourrait peut-être refaire son apparition dans nos cpu, à défaut de multiplier les coeurs x86 comme des petits pains.
par Un champion du monde embusqué, le Mercredi 30 Septembre 2020 à 14h00  
Ça fait déjà un moment que l'optimisation pour le SMP saccage totalement l'efficacité, il suffit de remonter à la grande époque des A64 et P4 où on commençait déjà à voir qu'il était à l'occasion inexplicablement plus efficace d'avoir 2 threads 2x moins performants qu'un seul, ce qui constitue un non-sens.

C'est vraisemblablement encore pire maintenant, avec la gestion dynamique coeur par coeur (apparue avec le Phenom, de mémoire?) et un OS tenant toujours plus d'un ramassis de bidouilles.
par Un ragoteur sans nom de Bretagne, le Mercredi 30 Septembre 2020 à 11h39  
par Unragoteursansespace des Pays de la Loire le Mercredi 30 Septembre 2020 à 09h21
Je regrète la période où l'on pouvais gardé son 4 coeurs 6-7 ans, juste en faisant un oc. Aujourd'hui ce n'est plus possible... merci amd et sa course au nombre de coeurs !
ah oui parce qu'aujourd'hui tu dois changer ton processeur tous les 2 mois ... pour ? ....
par Unragoteursansespace des Pays de la Loire, le Mercredi 30 Septembre 2020 à 09h21  
Je regrète la période où l'on pouvais gardé son 4 coeurs 6-7 ans, juste en faisant un oc. Aujourd'hui ce n'est plus possible... merci amd et sa course au nombre de coeurs !
par Nicolas D., le Mercredi 30 Septembre 2020 à 09h02  
par chambolle le Mercredi 30 Septembre 2020 à 08h48
Ca se fait déjà. Les scheduler des OS ont bien progressé depuis le multicoeurs et il existe des algos pour mieux gérer pour certaines applis. Mais c'est pas vraiment grand public et ca marche plus ou moins bien. En fait ca depend des problemes.
C'est à justement ce genre d'algo que je fais référence : dans la recherche, il y a affectivement des langage macro dataflow (Intel CnC par exemple, ou l'OCR) qui sont proposées et scalent bien, mais ils sont destinés au calcul scientifique ; et c'est leur runtime qui s'occupe du scheduling, le kernel est trop haut niveau pour être compétent - notamment lorsque les mécanismes de work stealing sont présent.
Par contre, rien ne me dit que ce macro dataflow peut fonctionner sur des programmes orientés grand public (genre un navigateur web / un interpréteur JS). A mon avis, c'est bien plus difficile, d'où une stagnation possible de nombre de coeurs sur le segment desktop.
par chambolle, le Mercredi 30 Septembre 2020 à 08h51  
par une Cagoule noire en Auvergne-Rhône-Alpes le Mercredi 30 Septembre 2020 à 07h17
ba y le probleme des electrons, leur fuite, et leur folie quantique, avec la finesse de gravure, ils pourront pas descendre plus bas que du 5 ou 3nm,
Et encore ! En attendant tout le monde triche sur les finesses de gravure et pas qu'un peu
https://www.tomshardware.fr/le-7-nm-de-tsmc-compare-au-14-nm-dintel/
par chambolle, le Mercredi 30 Septembre 2020 à 08h48  
par Nicolas D. le Mardi 29 Septembre 2020 à 19h40
Il faudrait quelque chose de carrément dataflow, avec des données et des opérations, et c'est au runtime de scheduler dynamiquement les opérations en fonction des dépendances (en tout cas, c'est ce qui est fait au niveau recherche), mais je ne sais pas à quel point c'est efficace, et encore moins applicable sur des programmes typés mainstream.
Ca se fait déjà. Les scheduler des OS ont bien progressé depuis le multicoeurs et il existe des algos pour mieux gérer pour certaines applis. Mais c'est pas vraiment grand public et ca marche plus ou moins bien. En fait ca depend des problemes.