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, je suis entré dans un argument "Mac contre PC" (qui n'est d'ailleurs pas l'objet de ce sujet ... qui était de retour au collège) avec une connaissance qui a insisté sur le fait que les Mac n'étaient annoncés que comme des machines 1 GHz parce qu'ils étaient des G4 biprocesseurs fonctionnant chacun à 500 MHz.
À l'époque, je savais que c'était du bain de lait pour des raisons qui, je pense, sont évidentes pour la plupart des gens, mais je viens de voir un commentaire sur ce site Web à l'effet de "6 cœurs x 0,2 GHz = 1,2 GHz" et cela m'a fait réfléchir à nouveau si il y a une vraie réponse à cela.
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 cœur fait en fait x calculs par seconde, donc le nombre total de calculs est x (cœurs).
- La vitesse d'horloge est plutôt un décompte du nombre de cycles que le processeur traverse en l'espace d'une seconde, de sorte que tant que tous les cœurs fonctionnent à la même vitesse, la vitesse de chaque cycle d'horloge reste la même quel que soit le nombre de cœurs. . En d'autres termes, Hz = (core1Hz + core2Hz + ...) / cores.
la source
Réponses:
La raison principale pour laquelle un processeur quad-core 3GHz n'est jamais aussi rapide qu'un simple core 12GHz est liée à la façon dont la tâche s'exécutant sur ce processeur, c'est-à-dire à un seul thread ou à plusieurs threads. La loi d'Amdahl est importante lorsque l'on considère les types de tâches que vous exécutez.
Si vous avez une tâche qui est intrinsèquement linéaire et doit être effectuée avec précision étape par étape, comme (un programme extrêmement simple)
Ensuite, la tâche dépend fortement du résultat de la passe précédente et ne peut pas exécuter plusieurs copies d'elle-même sans corrompre la valeur de
'a'
car chaque copie obtiendrait la valeur de'a'
à des moments différents et l'écrirait différemment. Cela limite la tâche à un seul thread et donc la tâche ne peut être exécutée que sur un seul cœur à un moment donné, si elle devait s'exécuter sur plusieurs cœurs, la corruption de synchronisation se produirait. Cela le limite à la moitié de la puissance cpu d'un système dual core, ou 1/4 dans un système quad core.Prenez maintenant une tâche telle que:
Toutes ces lignes sont indépendantes et pourraient être divisées en 4 programmes distincts comme le premier et s'exécuter en même temps, chacun étant capable d'utiliser efficacement la pleine puissance de l'un des cœurs sans aucun problème de synchronisation, c'est là que la loi d'Amdahl entre en elle.
Donc, si vous avez une application à thread unique effectuant des calculs de force brute, le processeur à 12 GHz gagnerait haut la main, si vous pouvez en quelque sorte diviser la tâche en parties distinctes et multithread, les 4 cœurs pourraient s'approcher, mais pas tout à fait, la même performance, selon la loi d'Amdahl.
La principale chose qu'un système multi-CPU vous donne est la réactivité. Sur une machine à cœur unique qui travaille dur, le système peut sembler lent car la plupart du temps peut être utilisé par une tâche et les autres tâches ne s'exécutent que par courtes rafales entre les tâches plus importantes, ce qui donne un système qui semble lent ou saccadé . Sur un système multicœur, la tâche lourde obtient un cœur et toutes les autres tâches jouent sur les autres cœurs, faisant leur travail rapidement et efficacement.
L'argument de «6 cœurs x 0,2 GHz = 1,2 GHz» est un déchet dans toutes les situations, sauf lorsque les tâches sont parfaitement parallèles et indépendantes. Il existe un bon nombre de tâches qui sont très parallèles, mais elles nécessitent encore une certaine forme de synchronisation. Handbrake est un trancodeur vidéo qui est très bon pour utiliser tous les processeurs disponibles, mais il nécessite un processus de base pour garder les autres threads remplis de données et collecter les données avec lesquelles ils sont effectués.
Chaque cœur est capable de faire x calculs par seconde, en supposant que la charge de travail est parallèle appropriée, sur un programme linéaire, tout ce que vous avez est 1 cœur.
Je pense que c'est une erreur de penser que 4 x 3GHz = 12GHz, à condition que les calculs fonctionnent, mais vous comparez des pommes avec 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.
la source
D'autres ont avancé un bon argument d'un point de vue technique. Je vais plutôt faire quelques analogies simples qui, je l'espère, expliqueront pourquoi 4 * 3GHz n'est pas équivalent à 1 * 12GHz.
Par exemple, une femme peut fabriquer un bébé en neuf mois. Est-ce que neuf femmes pourront fabriquer un bébé en un mois? Non, car la gestation ne peut pas être parallélisée (enfin, du moins à ce niveau technologique).
En voici une autre: dans une centrale hydroélectrique que j'ai récemment visitée, l'un des générateurs était en cours de modernisation. Ils ont dû transporter le stator du générateur par bateau. Un sixième du stator pouvait être transporté par camion, mais ils devaient transporter le stator entier; ils ont donc dû utiliser un navire, pas six camions.
Un autre cas pourrait être le moment précis des événements. Parfois, les processeurs informatiques sont utilisés comme temporisateurs précis (bien que la pratique ne soit plus recommandée, en raison de l'horloge variable sur la plupart des processeurs. Un temporisateur d'événements de haute précision doit être utilisé à la place). Si nous supposons que nous avons un processeur avec une horloge de 12 GHz relativement stable, nous pouvons l'utiliser pour mesurer le temps avec une résolution beaucoup plus élevée que sur un processeur avec une horloge de 3 GHz. Peu importe le nombre de cœurs 3GHz que nous avons, nous ne pourrons pas atteindre la résolution du cœur 12GHz. C'est comme avoir 4 horloges avec des affichages à 7 segments où chaque horloge affiche simplement l'heure correcte en heures. Peu importe la façon dont ils affichent correctement les heures, vous ne pouvez pas les utiliser pour mesurer des intervalles de temps dans une plage d'une seconde.
la source
Je ne suis pas un expert en la matière, mais j'ai un diplôme en génie informatique. En théorie (il s'agit d'une réponse hautement conceptuelle), un processeur quadricœur à 3 GHz peut être l'équivalent d'un processeur à 12 GHz si, par exemple, quatre ensembles de calculs étaient nécessaires pour un résultat final unique. C'est ce qu'on appelle le traitement parallèle.
Pour simplifier la logique, disons que nous parlons d'un processeur dual core. Si un ensemble de calculs était, dites:
ensuite, ces deux calculs pourraient être exécutés sur des cœurs séparés, et un processeur xGHz serait équivalent à un processeur 2 * xGHz monocœur. En effet, les deux calculs, bien que effectués à une vitesse x, seraient traités en même temps. Alors que le processeur simple cœur pouvait les faire à une vitesse 2 * x mais l'un après l'autre. Si les deux CPU exécutaient ce code en même temps, ils finiraient en même temps. Cependant, si le code était:
ensuite, le processeur dual-core prendrait deux fois plus de temps que le processeur single-core car dans la seconde instruction, la valeur de a dépend de la première instruction et ne peut donc pas être exécutée en parallèle. C'est ainsi que certains logiciels peuvent tirer parti des processeurs multithreads.
Ainsi, en théorie, un processeur monocœur à 12 GHz peut toujours fonctionner aussi rapidement (ou plus rapidement) qu'un processeur quadricœur à 3 GHz, mais pas l'inverse.
la source
C'est une question compliquée à répondre, mais la réponse courte est: Non
Dans les applications du monde réel, quatre processeurs 3Ghz ne seront pas aussi rapides qu'un seul processeur 12Ghz en raison d'inefficacités. Ils peuvent être très proches, mais ils n'égaleront PAS un seul processeur en termes de puissance de traitement.
La raison à cela réside dans les petites inefficacités lorsqu'il s'agit de programmes pouvant s'exécuter sur plusieurs processeurs. En supposant que le programme en question puisse fonctionner en parallèle, nous rencontrerons toujours des problèmes avec différents cœurs en concurrence les uns contre les autres pour d'autres ressources telles que la RAM ou même des problèmes de synchronisation de cache et de thread. En outre, il existe toujours des parties de programmes qui ne peuvent pas être parallélisées et doivent s'exécuter sur un seul cœur par lui-même.
Jetez un œil à cet article: http://en.wikipedia.org/wiki/Amdahl%27s_law
la source
Il semble que nous ne pouvons pas dire que 4 cœurs à 3 GHz peuvent être considérés comme 12 GHz.
Diverses contraintes comme la mémoire partagée, la contention du cache et d'autres ressources sont également communes à tous les cœurs, donc exécuter un morceau de code en parallèle sur ces cœurs ne sera pas aussi efficace que de l'exécuter sur des processeurs 12 Ghz (bien qu'il soit difficile de construire un tel processeur ).
J'ai également lu quelque part que si nous doublons les transistors intégrés à la puce (CMP), la vitesse que nous allons obtenir n'est que de 40%. Cela fournit également un indice significatif sur ce sujet.
la source
En ce qui concerne les cycles d'horloge exécutés, oui, un processeur multicœur effectue des
x * cores
cycles de travail par seconde. Classiquement, les vitesses d'horloge sont répertoriées sur une base par cœur pour une comparaison plus facile (sinon, comment compareriez-vous facilement une puce double cœur 4GHz fonctionnant à 2 GHz / cœur par rapport à une puce quadricœur 4 GHz fonctionnant à 1 GHz / cœur?).Malheureusement, le problème devient complexe lorsque vous essayez de comparer différents processeurs dans des applications réelles.
Premièrement, la plupart des processeurs multicœurs ont des ressources partagées entre les cœurs (par exemple, le cache du processeur). Ils doivent partager l'accès à ce cache, de sorte que les deux cœurs ne peuvent pas stocker ou lire des données à pleine vitesse. Ceci est souvent atténué dans les CPU à plusieurs cœurs en ayant plusieurs caches partagés (par exemple, la plupart des puces quadricœurs ont 2 caches, chacune partagée par une paire de cœurs), afin de mieux diviser les chances d'un goulot d'étranglement sur une ressource partagée.
Deuxièmement, et peut-être moins connu dans le monde non-technophile, la comparaison des vitesses d'horloge peut parfois être comme comparer des pommes et des oranges. Différents processeurs accomplissent une quantité de travail différente en un seul cycle d'horloge, donc dire que vous avez 1 GHz contre 1,2 GHz semble excellent, mais la puce 1 GHz peut en fait faire plus de travail dans un intervalle de temps donné. Le Pentium 4 a conduit ce point chez lui, conduisant au mythe Megahertz (dont je ne savais pas qu'il avait un nom inventé avant d'écrire ce post).
la source
Deux voitures qui parcourent chacune 50 miles par heure n'additionnent pas à 100 miles par heure. C'est aussi simple que ça. La vitesse d'horloge d'un processeur n'est pas une mesure de la vitesse à laquelle le travail est effectué, c'est une mesure de la vitesse à laquelle l'horloge tourne.
la source