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)
10: a = a + 1
20: goto 10
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:
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 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 fait en fait x calculs par seconde, donc le nombre total de calculs est x (cœurs).
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.
- 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.
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.