Résumé
-
L'économie. Il est moins coûteux et plus facile de concevoir un processeur comportant plus de cœurs qu'une vitesse d'horloge plus élevée, car.. :
-
Augmentation significative de la consommation d'énergie. La consommation d'énergie du CPU augmente rapidement lorsque vous augmentez la vitesse d'horloge - vous pouvez doubler le nombre de cœurs fonctionnant à une vitesse inférieure dans l'espace thermique nécessaire pour augmenter la vitesse d'horloge de 25 %. Quadruple pour 50%.
-
Il existe d'autres moyens d'augmenter la vitesse de traitement séquentiel, et les fabricants de processeurs en font bon usage.
Je m'appuierai largement sur les excellentes réponses données à cette question sur l'un de nos sites SE frères. Alors allez les upvoter !
Limitations de la vitesse d'horloge
Il existe quelques limites physiques connues à la vitesse d'horloge :
-
Temps de transmission
Le temps que met un signal électrique à traverser un circuit est limité par la vitesse de la lumière. Il s'agit d'une limite stricte, et il n'existe aucun moyen connu de la contourner. 1 . Avec les horloges gigahertz, nous approchons de cette limite.
Cependant, nous n'en sommes pas encore là. 1 GHz signifie une nanoseconde par tic d'horloge. Pendant ce temps, la lumière peut parcourir 30 cm. À 10 GHz, la lumière peut parcourir 3 cm. Un seul cœur de processeur fait environ 5 mm de large, ce qui signifie que nous rencontrerons ces problèmes quelque part après 10 GHz. 2
-
Retard de commutation
Il ne suffit pas de considérer le temps que met un signal pour aller d'un bout à l'autre. Il faut également tenir compte du temps nécessaire à une porte logique de l'unité centrale pour passer d'un état à un autre ! Lorsque nous augmentons la vitesse d'horloge, cela peut devenir un problème.
Malheureusement, je ne suis pas sûr des détails et je ne peux pas fournir de chiffres.
Apparemment, le fait d'augmenter la puissance peut accélérer la commutation, mais cela entraîne des problèmes de consommation d'énergie et de dissipation de la chaleur. De plus, plus de puissance signifie que vous avez besoin de conduits plus volumineux capables de la supporter sans dommage.
-
Dissipation de la chaleur/consommation d'énergie
C'est le gros morceau. Citation de Réponse de fuzzyhair2 :
Les processeurs récents sont fabriqués en utilisant la technologie CMOS. Chaque fois qu'il y a un cycle d'horloge, de l'énergie est dissipée. Par conséquent, plus la vitesse du processeur est élevée, plus la dissipation de chaleur est importante.
Il y a de belles mesures à ce fil de discussion du forum AnandTech Ils ont même établi une formule pour la consommation d'énergie (qui va de pair avec la chaleur générée) :
Crédit à Idontcare
Nous pouvons visualiser cela dans le graphique suivant :
Crédit à Idontcare
Comme vous pouvez le constater, la consommation d'énergie (et la chaleur générée) augmente très rapidement lorsque la vitesse d'horloge dépasse un certain seuil. Il n'est donc pas possible d'augmenter la vitesse d'horloge de façon illimitée.
La raison de l'augmentation rapide de la consommation d'énergie est probablement liée au délai de commutation - il ne suffit pas d'augmenter la puissance proportionnellement à la fréquence d'horloge ; la tension doit également être augmentée pour maintenir la stabilité à des horloges plus élevées. Il se peut que cette réponse ne soit pas tout à fait correcte ; n'hésitez pas à signaler les corrections dans un commentaire ou à modifier cette réponse.
Plus de cœurs ?
Alors pourquoi plus de cœurs ? Eh bien, je ne peux pas répondre à cette question de manière définitive. Vous devriez demander aux gens d'Intel et d'AMD. Mais vous pouvez voir ci-dessus que, avec les processeurs modernes, à un certain point, il devient peu pratique d'augmenter la vitesse d'horloge.
Oui, le multicœur augmente également la puissance requise et la dissipation de chaleur. Mais il permet d'éviter les problèmes de temps de transmission et de délai de commutation. Et, comme vous pouvez le voir sur le graphique, vous pouvez facilement doubler le nombre de cœurs dans un CPU moderne avec la même surcharge thermique qu'une augmentation de 25 % de la vitesse d'horloge.
Certaines personnes l'ont fait - l'actuel record du monde d'overclocking est juste à côté de 9 GHz. Mais c'est un défi d'ingénierie important que d'y parvenir tout en maintenant la consommation d'énergie dans des limites acceptables. Les concepteurs ont décidé à un moment donné qu'ajouter plus de cœurs pour effectuer plus de travail en parallèle permettrait d'améliorer plus efficacement les performances dans la plupart des cas.
C'est là que l'aspect économique entre en jeu : il était probablement moins coûteux (moins de temps de conception, moins compliqué à fabriquer) de choisir la voie multicore. Et c'est facile à commercialiser - qui n'aime pas la toute nouvelle version de l'ordinateur ? octa-core puce ? (Bien sûr, nous savons que le multicore est plutôt inutile lorsque le logiciel ne l'utilise pas...)
Il y a でございます Un inconvénient du multicœur : il faut plus d'espace physique pour placer le cœur supplémentaire. Toutefois, la taille des processeurs ne cesse de diminuer, de sorte qu'il y a suffisamment d'espace pour placer deux copies d'une conception antérieure. Le véritable inconvénient est de ne pas pouvoir créer des cœurs uniques plus grands et plus complexes. Mais là encore, l'augmentation de la complexité des cœurs est une mauvaise chose du point de vue de la conception - plus de complexité = plus d'erreurs/bugs et d'erreurs de fabrication. Nous semblons avoir trouvé un juste milieu avec des cœurs efficaces qui sont suffisamment simples pour ne pas prendre trop de place.
Nous avons déjà atteint une limite en ce qui concerne le nombre de cœurs que l'on peut faire tenir sur une seule puce avec les tailles de processus actuelles. Nous pourrions bientôt atteindre la limite du rétrécissement des choses. Alors, quelle sera la prochaine étape ? Avons-nous besoin de plus ? Il est difficile de répondre à cette question, malheureusement. Quelqu'un ici est un clairvoyant ?
Autres moyens d'améliorer les performances
Donc, on ne peut pas augmenter la vitesse d'horloge. Et un plus grand nombre de cœurs présente un inconvénient supplémentaire, à savoir qu'ils ne sont utiles que si le logiciel qui tourne dessus peut les utiliser.
Alors, que pouvons-nous faire d'autre ? Comment se fait-il que les processeurs modernes soient tellement plus rapides que les anciens à la même vitesse d'horloge ?
La vitesse d'horloge n'est qu'une approximation très grossière du fonctionnement interne d'un processeur. Tous les composants d'une unité centrale ne fonctionnent pas à cette vitesse - certains peuvent fonctionner une fois tous les deux ticks, etc.
Ce qui est plus significatif, c'est le nombre de instructions que vous pouvez exécuter par unité de temps. Il s'agit d'une bien meilleure mesure de ce qu'un seul cœur de processeur peut accomplir. Certaines instructions ; certaines prendront un cycle d'horloge, d'autres trois. La division, par exemple, est considérablement plus lente que l'addition.
Nous pourrions donc améliorer les performances d'un processeur en augmentant le nombre d'instructions qu'il peut exécuter par seconde. Comment ? Eh bien, on peut rendre une instruction plus efficace - la division ne prend peut-être plus que deux cycles. Ensuite, il y a pipelining d'instructions . En décomposant chaque instruction en plusieurs étapes, il est possible d'exécuter des instructions "en parallèle" - mais chaque instruction conserve un ordre séquentiel bien défini par rapport aux instructions qui la précèdent et la suivent, de sorte qu'il n'est pas nécessaire de recourir à un support logiciel comme c'est le cas pour le multicœur.
Il y a un autre manière : des instructions plus spécialisées. Nous avons vu des choses comme SSE, qui fournit des instructions pour traiter de grandes quantités de données en une seule fois. De nouveaux jeux d'instructions sont constamment introduits avec des objectifs similaires. Là encore, ils requièrent un support logiciel et augmentent la complexité du matériel, mais ils offrent une belle amélioration des performances. Récemment, il y a eu AES-NI, qui fournit un cryptage et un décryptage AES accéléré par le matériel, bien plus rapide qu'un tas d'arithmétique implémenté dans le logiciel.
1 Pas sans se plonger dans la physique quantique théorique, en tout cas.
2 Elle pourrait en fait être inférieure, car la propagation du champ électrique n'est pas aussi rapide que la vitesse de la lumière dans le vide. De plus, il ne s'agit que de la distance en ligne droite - il est probable qu'il existe au moins un chemin considérablement plus long qu'une ligne droite.