113 votes

Pourquoi "ajouter plus de cœurs" n'est-il pas confronté aux mêmes limites physiques que "rendre le CPU plus rapide" ?

En 2014, j'entends beaucoup de langages de programmation vantés pour leur compétitivité. de la concurrence. On dit que la concurrence est cruciale pour les gains de performance.

En faisant cette déclaration, de nombreuses personnes renvoient à un article de 2005 intitulé Le site Free Lunch Is Over : Un virage fondamental vers la simultanéité dans logiciels . L'argument de base l'argument de base est qu'il est de plus en plus difficile d'augmenter la vitesse d'horloge des processeurs. processeurs, mais nous pouvons toujours mettre plus de cœurs sur une puce, et que pour obtenir des des gains de performances, il faudra écrire des logiciels pour tirer parti des plusieurs cœurs.

Quelques citations clés :

Nous sommes habitués à voir des processeurs à 500 MHz céder la place à des processeurs à 1 GHz, puis à des processeurs à 1 GHz. 2GHz, et ainsi de suite. Aujourd'hui, nous sommes dans la gamme des 3 GHz sur les principaux ordinateurs.

La question clé est la suivante : quand cela prendra-t-il fin ? Après tout, la loi de Moore prédit une croissance exponentielle, et il est clair qu'une croissance exponentielle ne peut pas continuer éternellement éternellement avant d'atteindre des limites physiques dures ; la lumière ne devient pas plus plus vite. La lumière ne va pas plus vite. La croissance doit finir par ralentir, voire s'arrêter.

... Il est devenu de plus en plus difficile d'exploiter des vitesses d'horloge plus élevées en raison non pas d'un mais de plusieurs problèmes physiques, notamment la chaleur (trop importante trop importante et trop difficile à dissiper), la consommation d'énergie (trop élevée), et problèmes de fuites de courant.

... L'avenir d'Intel et de la plupart des fournisseurs de processeurs est ailleurs. car les fabricants de puces poursuivent agressivement les mêmes nouvelles orientations multicœurs.

...Le multicore consiste à faire fonctionner deux ou plusieurs processeurs réels sur une seule puce.

Les prédictions de cet article semblent se confirmer, mais je ne comprends pas pourquoi. I n'ai que des idées très vagues sur le fonctionnement du matériel.

Mon point de vue simplifié est le suivant : "il est de plus en plus difficile de faire tenir plus de puissance de traitement dans le même espace" (à cause des problèmes de chaleur, de consommation d'énergie, etc). I Je m'attendrais à ce que la conclusion soit "donc, nous devrons avoir de plus gros ordinateurs ou exécuter nos programmes sur plusieurs ordinateurs". (Et en effet, l'informatique distribuée l'informatique en nuage distribuée est une chose dont nous entendons de plus en plus parler).

Mais une partie de la solution semble être les architectures multi-cœurs. A moins que les ordinateurs ne grandissent pas en taille (ce qui n'est pas le cas), cela semble juste être une autre façon de dire "mettre plus de puissance de calcul dans le même espace".

Pourquoi "ajouter plus de cœurs" n'est-il pas confronté aux mêmes limites physiques que "rendre le CPU plus rapide" ?

Veuillez expliquer dans les termes les plus simples que vous pouvez. :)

144voto

Bob Points 58080

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) :

    Formula
    Crédit à Idontcare

    Nous pouvons visualiser cela dans le graphique suivant :

    Graph
    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.

15voto

Chochos Points 3364

La physique, c'est la physique. Nous ne pouvons pas continuer à mettre toujours plus de transistors dans des espaces toujours plus petits. À un moment donné, l'espace devient si petit que l'on a affaire à une merde quantique bizarre. A un moment donné, on ne peut plus mettre deux fois autant de transistors en un an qu'auparavant (ce qui est l'objet de la loi de Moore).

Les vitesses d'horloge brutes ne veulent rien dire. Mon vieux Pentium M avait une vitesse d'horloge deux fois moins élevée que celle d'un processeur de bureau contemporain (et pourtant, à bien des égards plus rapide ) - et les systèmes modernes sont à peine se rapprochent des vitesses des systèmes d'il y a 10 ans (et sont clairement plus rapides). En fait, le simple fait d'augmenter la vitesse d'horloge n'apporte pas de réels gains de performance dans de nombreux cas. Cela peut aider dans un peu de des opérations monofilaires, mais il est préférable de consacrer le budget de conception à une meilleure efficacité pour tout le reste.

Les cœurs multiples vous permettent de faire dos ou plusieurs choses à la fois, de sorte que vous n'avez pas besoin d'attendre qu'une chose soit terminée pour passer à la suivante. À plus court terme, vous pouvez simplement insérer deux noyaux existants dans le même paquet (par exemple avec la fonction Pentium D et leur MCM, qui était une conception transitoire) et vous obtenez un système deux fois plus rapide. La plupart des implémentations modernes partagent des éléments comme un contrôleur de mémoire, bien sûr.

Vous pouvez également construire plus intelligemment de différentes manières. ARM fait du Big-Little : 4 cœurs " faibles " et de faible puissance travaillent aux côtés de 4 cœurs plus puissants, ce qui permet d'obtenir le meilleur des deux mondes. Intel vous permet de réduire la puissance (pour une meilleure efficacité énergétique) ou de l'overclocker. spécifique cœurs (pour de meilleures performances dans un seul fil). Je me souviens qu'AMD fait quelque chose avec des modules.

Vous pouvez également déplacer des éléments tels que les contrôleurs de mémoire (afin de réduire la latence) et les fonctions liées aux E/S (le CPU moderne n'a pas de pont nord) ainsi que la vidéo (qui est plus importante avec les ordinateurs portables et la conception AIW). Il est plus logique de faire ces choses que de "simplement" augmenter la vitesse d'horloge.

À un moment donné, il se peut que "plus" de cœurs ne suffise pas - bien que les GPU aient des centaines de cœurs.

Le multicore en tant que tel permet aux ordinateurs de fonctionner plus intelligente de toutes ces manières.

9voto

TTT Points 172

Réponse simple

La réponse la plus simple à la question

Pourquoi "ajouter plus de cœurs" n'est-il pas confronté aux mêmes limites physiques que "rendre le CPU plus rapide" ?

se trouve en fait dans une autre partie de votre question :

Je m'attendrais à ce que la conclusion soit "par conséquent, nous devrons avoir de plus gros ordinateurs ou exécuter nos programmes sur plusieurs ordinateurs".

En substance, les cœurs multiples reviennent à avoir plusieurs "ordinateurs" sur le même appareil.

Réponse complexe

Un "noyau" est la partie de l'ordinateur qui traite réellement les instructions (addition, multiplication, "et", etc.). Un noyau ne peut exécuter qu'une seule instruction à la fois. Si vous voulez que votre ordinateur soit "plus puissant", il y a deux choses fondamentales que vous pouvez faire :

  1. Augmenter le débit (augmenter la fréquence d'horloge, diminuer la taille physique, etc.)
  2. Utiliser plus de cœurs dans le même ordinateur

Les limites physiques du numéro 1 sont principalement la nécessité d'évacuer la chaleur causée par le traitement et la vitesse d'un électron dans le circuit. Une fois que vous avez réparti certains de ces transistors dans un noyau séparé, vous atténuez le problème de la chaleur dans une large mesure.

Il y a une limitation importante au n°2 : vous devez être capable de diviser votre problème en de multiples indépendant les problèmes, puis combinez la réponse. Sur un ordinateur personnel moderne, ce n'est pas vraiment un problème, car il y a de toute façon beaucoup de problèmes indépendants qui se disputent le temps de calcul du ou des cœurs. Mais pour les problèmes de calcul intensif, les cœurs multiples ne sont vraiment utiles que si le problème se prête à la concurrence.

6voto

gronostaj Points 50460

Pourquoi "ajouter plus de cœurs" n'est-il pas confronté aux mêmes limites physiques que "rendre le CPU plus rapide" ?

Ils sont confrontés aux mêmes limites physiques, mais le passage à la conception multicœur nous donne un peu de répit avant de nous heurter à certaines d'entre elles. Dans le même temps, d'autres problèmes dus à ces limites apparaissent, mais ils sont plus faciles à surmonter.

Fait 1 : La consommation d'énergie et la chaleur émise augmentent plus rapidement que la puissance de calcul. Faire passer un processeur de 1 GHz à 2 GHZ fera passer la consommation d'énergie de 20 W à 80 W, de même que la chaleur dissipée. (Je viens d'inventer ces chiffres, mais c'est tout à fait comme ça que ça marche)

Fait 2 : L'achat d'une deuxième unité centrale et son fonctionnement à 1 GHz doublerait votre puissance de calcul. Deux CPU à 1 GHz peuvent traiter la même quantité de données qu'un CPU à 2 GHz, mais chacun d'eux ne consomme que 20 W d'énergie, soit 40 W au total.

Profit : En doublant le nombre de processeurs au lieu de la fréquence d'horloge, nous économisons de l'énergie et nous ne sommes pas aussi proches de la "barrière de fréquence" qu'auparavant.

Problème : Vous devez répartir le travail entre deux unités centrales et combiner les résultats plus tard.

Si vous pouvez résoudre ce problème en un temps acceptable et en utilisant moins d'énergie que ce que vous venez d'économiser, alors vous venez de profiter de l'utilisation de plusieurs CPU.

Il ne reste plus qu'à fusionner deux processeurs en un seul à double cœur et le tour est joué. Ceci est bénéfique car les cœurs peuvent partager certaines parties du CPU, par exemple le cache ( réponse correspondante ).

5voto

gilgwath Points 616

En résumé, l'augmentation de la vitesse des cœurs uniques a atteint ses limites. Nous continuons donc à les réduire et à en ajouter d'autres, jusqu'à ce qu'ils atteignent leurs limites ou que nous puissions utiliser de meilleurs matériaux (ou réaliser une percée fondamentale qui bouleverse la technologie établie, comme l'informatique quantique à domicile, qui fonctionne réellement).

Je pense que ce problème est multidimensionnel et qu'il faudra écrire un certain nombre d'articles pour dresser un tableau plus complet :

  1. Limitations physiques (imposées par la physique réelle) : Comme la vitesse de la lumière, la mécanique quantique, tout ça.
  2. Problèmes de fabrication : Comment fabriquer des structures de plus en plus petites avec la précision nécessaire ? Problèmes liés aux matières premières, aux matériaux utilisés pour construire les circuits, à la durabilité.
  3. Problèmes architecturaux : Chaleur, inférence, consommation d'énergie, etc.
  4. Problèmes économiques : Quel est le moyen le moins cher d'obtenir plus de performances pour l'utilisateur ?
  5. Cas d'utilisation et perception des performances par les utilisateurs.

Il peut y en avoir beaucoup d'autres. Une unité centrale polyvalente tente de trouver une solution pour regrouper tous ces facteurs (et bien d'autres encore) en une seule puce pouvant être produite en masse et s'adaptant à 93 % des sujets sur le marché. Comme vous le voyez, le dernier point est le plus crucial, la perception du client, qui découle directement de la façon dont le client utilise l'unité centrale.

Demandez-vous quelle est votre application habituelle ? Peut-être : 25 onglets Firefox, chacun diffusant des publicités en arrière-plan, pendant que vous écoutez de la musique, tout en attendant que le travail de construction que vous avez commencé il y a environ 2 heures soit terminé. C'est beaucoup de travail à faire, et vous voulez quand même une expérience fluide. Mais votre CPU ne peut gérer qu'UNE seule tâche à la fois ! Une seule chose. Alors ce que vous faites, c'est que vous divisez les choses et faites une longue file d'attente et chacun obtient sa propre part et tout le monde est content. Sauf vous, parce que tout devient lent et pas fluide du tout.

Vous accélérez donc votre CPU, afin d'effectuer plus d'opérations dans le même laps de temps. Mais comme vous l'avez dit : chaleur et consommation d'énergie. Et c'est là que nous arrivons à la partie matière première. Le silicium devient plus conducteur lorsqu'il est plus chaud, ce qui signifie que plus de courant circule à travers le matériau lorsque vous le chauffez. Les transistors consomment plus d'énergie car ils commutent plus rapidement. De plus, les hautes fréquences aggravent la diaphonie entre les fils courts. Vous voyez donc que l'approche consistant à accélérer les choses conduira à un "effondrement". Tant que nous n'aurons pas de meilleures matières premières que le silicium ou de meilleurs transistors, nous resterons coincés là où nous sommes avec la vitesse d'un seul noyau.

Cela nous ramène au point de départ. Faire des choses, en parallèle. Ajoutons un autre noyau. Maintenant nous pouvons faire deux choses en même temps. Alors calmons un peu les choses et écrivons simplement un logiciel qui peut répartir son travail sur deux cœurs, moins puissants mais plus fonctionnels. Cette approche présente deux problèmes principaux (outre le fait qu'il faut du temps pour que le monde du logiciel s'y adapte) : 1. Augmenter la taille de la puce ou réduire la taille de chaque cœur. 2. Certaines tâches ne peuvent tout simplement pas être divisées en deux parties qui s'exécutent simultanément. Continuez à ajouter des cœurs tant que vous pouvez les réduire, ou agrandissez la puce et gardez le problème de chaleur à distance. Oh et n'oublions pas le client. Si nous changeons nos cas d'utilisation, les industries doivent s'adapter. Voyez toutes les "nouvelles" choses brillantes que le secteur de la téléphonie mobile a inventées. C'est pourquoi le secteur mobile est considéré comme si crucial et tout le monde veut mettre la main dessus.

Oui, cette stratégie VA atteindre ses limites ! Et Intel le sait, c'est pourquoi ils disent que l'avenir est ailleurs. Mais ils continueront à le faire tant que ce sera bon marché, efficace et faisable.

Dernier point, mais non le moindre : la physique. La mécanique quantique limitera le rétrécissement des puces. La vitesse de la lumière n'est pas encore une limite, car les électrons ne peuvent pas se déplacer à la vitesse de la lumière dans le silicium, elle est même beaucoup plus lente que cela. De plus, c'est la vitesse d'impulsion qui fixe le plafond de la vitesse offerte par un matériau. Tout comme le son voyage plus vite dans l'eau que dans l'air, les impulsions électriques voyagent plus vite dans, par exemple, le graphène que dans le silicium. Cela nous ramène aux matières premières. Le graphène est excellent du point de vue de ses propriétés électriques. Il ferait un bien meilleur matériau pour construire des unités centrales, mais il est malheureusement très difficile à produire en grande quantité.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X