Comment calculer la vitesse du processeur sur les processeurs multicœurs?
L'avènement des processeurs multicœurs économiques destinés au grand public soulève la question pour de nombreux utilisateurs: comment calculer efficacement la vitesse réelle d'un système multicœur? Un système 3Ghz à 4 cœurs est-il vraiment 12Ghz? Continuez à lire pendant que nous enquêtons.
La session de questions et réponses d'aujourd'hui nous parvient avec la permission de SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses animé par la communauté..
La question
Le lecteur SuperUser, NReilingh, était curieux de savoir comment la vitesse du processeur pour un système multicœur est calculée:
Est-il exact de dire, par exemple, qu’un processeur à quatre cœurs fonctionnant chacun à 3 GHz est en fait un processeur fonctionnant à 12 GHz??
Une fois, j’ai eu l’argument «Mac contre PC» (ce n’est PAS l’objet principal de ce sujet… qui remonte au collège) avec une connaissance qui a insisté sur le fait que les Mac n’étaient annoncés que comme des machines 1Ghz parce qu’elles étaient doubles. processeurs G4 fonctionnant chacun à 500 MHz.
À l'époque, je savais qu'il s'agissait d'une foutaise pour des raisons qui, à mon avis, étaient évidentes pour la plupart des gens, mais je viens de voir un commentaire sur l'effet de «6 cœurs x 0.2GHz = 1.2Ghz» et cela m'a fait réfléchir à nouveau pour savoir si il y a une vraie réponse à cette.
Il s’agit donc d’une question technique plus ou moins philosophique / profonde sur la sémantique du calcul de la vitesse d’horloge. Je vois deux possibilités:
- Chaque noyau effectue en fait x calculs par seconde, le nombre total de calculs est donc x (cœurs).
- La vitesse d'horloge est plutôt un décompte du nombre de cycles parcourus par le processeur en l'espace d'une seconde. Par conséquent, tant que tous les cœurs fonctionnent à la même vitesse, la vitesse de chaque cycle reste la même quel que soit le nombre de cœurs. . En d'autres termes, Hz = (core1Hz + core2Hz +…) / cœurs.
Alors, quel est le moyen approprié de désigner la vitesse d'horloge totale et, plus important encore, est-il possible d'utiliser une nomenclature de vitesse monocœur sur un système multicœur?
La réponse
Superokers contributors Mokubai aide à clarifier les choses. Il écrit:
La raison principale pour laquelle un processeur quad-core 3GHz n’est jamais aussi rapide qu’un processeur simple à 12 GHz tient à la façon dont la tâche exécutée sur ce processeur fonctionne, c’est-à-dire mono-thread ou multi-thread. La loi d'Amdahl est importante pour le type de tâches que vous exécutez..
Si vous avez une tâche qui est intrinsèquement linéaire et qui doit être effectuée précisément, étape par étape, telle que (un programme extrêmement simple)
10: a = a + 1
20: passe à 10
La tâche dépend alors fortement du résultat de la passe précédente et ne peut pas exécuter plusieurs copies de elle-même sans altérer la valeur de
'une'
comme chaque copie serait d'obtenir la valeur de'une'
à des moments différents et l'écrire différemment. Cela limite la tâche à un seul thread et par conséquent, la tâche ne peut être exécutée que sur un seul cœur à la fois. Si elle était exécutée sur plusieurs cœurs, la corruption de synchronisation risquerait alors de se produire. Cela le limite à la moitié de la puissance du processeur d'un système dual core ou à 1/4 dans un système quad core.Maintenant, prenez une tâche telle que:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: passe à 10
Toutes ces lignes sont indépendantes et peuvent être scindées en 4 programmes distincts, comme le premier, et s'exécutent en même temps, chacun pouvant utiliser efficacement toute la puissance de l'un des cœurs sans problème de synchronisation. C'est là que la loi d'Amdahl y entre.
Donc, si vous avez une seule application filetée effectuant des calculs de force brute, le processeur unique à 12 GHz gagnerait haut la main, si vous pouviez en quelque sorte scinder la tâche en plusieurs parties et en multithread, les 4 cœurs pourraient se rapprocher, mais pas tout à fait, la même performance, selon la loi d'Amdahl.
La réactivité est l’essentiel d’un système multi-processeurs. Sur un seul ordinateur central qui fonctionne à fond, le système peut sembler léthargique, la plupart du temps pouvant être utilisé par une tâche et les autres tâches ne s'exécutant que par tranches minces entre les tâches les plus importantes, ce qui donne un système qui semble lent ou chaotique. . Sur un système multicœur, la tâche est lourde: un cœur et toutes les autres tâches s’exécutant sur les autres cœurs, exécutant leur travail rapidement et efficacement..
L'argument de "6 cœurs x 0.2GHz = 1.2Ghz" est nul dans toutes les situations, sauf lorsque les tâches sont parfaitement parallèles et indépendantes. Il existe un bon nombre de tâches hautement parallèles, mais elles requièrent encore une forme de synchronisation. Handbrake est un trancoder vidéo qui sait très bien utiliser tous les processeurs disponibles, mais qui nécessite un processus central pour que les autres threads soient remplis de données et collectent les données avec lesquelles ils sont terminés..
- Chaque noyau effectue en fait x calculs par seconde, le nombre total de calculs est donc x (cœurs).
Chaque noyau est capable de faire x calculs par seconde, en supposant que la charge de travail est parallèle, dans un programme linéaire, tout ce que vous avez est 1 noyau.
- La vitesse d'horloge est plutôt un décompte du nombre de cycles parcourus par le processeur en l'espace d'une seconde. Par conséquent, tant que tous les cœurs fonctionnent à la même vitesse, la vitesse de chaque cycle reste la même quel que soit le nombre de cœurs. . En d'autres termes, Hz = (core1Hz + core2Hz +…) / cœurs.
Je pense que c'est une erreur de penser que 4 x 3GHz = 12 GHz, bien que les calculs soient efficaces, mais vous comparez des pommes à des oranges et les sommes ne sont tout simplement pas correctes, le GHz ne peut pas simplement être additionné pour chaque situation. Je le changerais en 4 x 3GHz = 4 x 3GHz.
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.