Comment calculer la vitesse du processeur sur les processeurs multicœurs?

Table des matières:

Comment calculer la vitesse du processeur sur les processeurs multicœurs?
Comment calculer la vitesse du processeur sur les processeurs multicœurs?

Vidéo: Comment calculer la vitesse du processeur sur les processeurs multicœurs?

Vidéo: Comment calculer la vitesse du processeur sur les processeurs multicœurs?
Vidéo: 📷 Choisir un TRÉPIED PHOTO : le guide complet - YouTube 2024, Avril
Anonim
L'avènement des processeurs multicœurs économiques destinés au grand public pose la question à 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.
L'avènement des processeurs multicœurs économiques destinés au grand public pose la question à 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 séance de questions et réponses d’aujourd’hui nous est offerte par 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:

Is it correct to say, for example, that a processor with four cores each running at 3GHz is in fact a processor running at 12GHz?

I once got into a “Mac vs. PC” argument (which by the way is NOT the focus of this topic… that was back in middle school) with an acquaintance who insisted that Macs were only being advertised as 1Ghz machines because they were dual-processor G4s each running at 500MHz.

At the time I knew this to be hogwash for reasons I think are apparent to most people, but I just saw a comment on this website to the effect of “6 cores x 0.2GHz = 1.2Ghz” and that got me thinking again about whether there’s a real answer to this.

So, this is a more-or-less philosophical/deep technical question about the semantics of clock speed calculation. I see two possibilities:

  1. Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
  2. Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.

Alors, quelle est la manière appropriée 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:

The main reason why a quad-core 3GHz processor is never as fast as a 12GHz single core is to do with how the task running on that processor works, i.e. single-threaded or multi-threaded. Amdahl’s Law is important when considering the types of tasks you are running.

If you have a task that is inherently linear and has to be done precisely step-by-step such as (a grossly simple program)

10: a = a + 1

20: goto 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

'a'

comme chaque copie serait d'obtenir la valeur de

'a'

à 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 de traitement d'un système à double cœur ou à 1/4 dans un système à quatre coeurs.

Maintenant, prenez une tâche telle que:

10: a = a + 1

20: b = b + 1

30: c = c + 1

40: d = d + 1

50: goto 10

Toutes ces lignes sont indépendantes et peuvent être scindées en 4 programmes distincts comme le premier et exécutés en même temps, chacun pouvant utiliser efficacement toute la puissance de l'un des cœurs sans aucun problème de synchronisation. C'est là que la loi d'Amdahl entre dedans.

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 une seule machine centrale qui travaille fort, 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 plus grandes, ce qui donne un système qui semble lent ou chaotique.. Sur un système multi-core, la tâche lourde prend un core et toutes les autres tâches sont exécutées sur les autres core, effectuant leur travail rapidement et efficacement.

L'argument de «6 cœurs x 0.2GHz = 1.2Ghz» est une foutaise 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 nécessitent toujours une forme de synchronisation. Handbrake est un trancoder vidéo qui sait très bien utiliser tous les processeurs disponibles, mais il 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 cœur 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 un cœur.

La vitesse d'horloge est plutôt un compte du nombre de cycles que le processeur effectue 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 que vous comparez des pommes à des oranges et que les sommes ne sont pas exactes, vous ne pouvez pas simplement additionner le GHz 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.

Conseillé: