Si la vitesse de charge électrique n'a pas changé, comment les ordinateurs sont-ils devenus plus rapides?

48

Tout le monde sait que la vitesse de calcul a considérablement augmenté depuis leur invention, et elle devrait continuer. Mais une chose me laisse perplexe: si vous faisiez passer un courant électrique dans un matériau, celui-ci voyagerait à la même vitesse que si vous le faisiez avec le même matériau il y a 50 ans.

Dans cet esprit, comment les ordinateurs sont-ils devenus plus rapides? Quel est le domaine principal de la conception du processeur qui a donné ces incroyables augmentations de vitesse?

Je pensais que cela pourrait être un ou plusieurs des éléments suivants:

  • Processeurs plus petits (moins de distance parcourue par le courant, mais il me semble que vous ne pourriez faire que des gains marginaux ici).
  • Meilleurs matériaux
leylandski
la source
4
C'est une bonne question. Bien sûr, le matériau lui-même n’est pas si important que cela: au cours des 100 dernières années, les voitures sont devenues plus rapides, mais l’essence est toujours la même essence (plus ou moins), seul le moteur est devenu plus efficace. La réponse initiale peut être trouvée ici , mais j'espère qu'une réponse plus détaillée suivra.
couru G.
La taille est un gros problème ici. Mais autant que je sache, nous avons atteint (ou sommes proches) d'une barrière physique dans la conception des puces. (Je ne suis pas un expert ici, les autres en sauront plus à ce sujet). Bien entendu, la taille du processeur n'est pas le seul paramètre.
A.Schulz
La fréquence de contact du processeur est limitée par la vitesse des électrons dans les matériaux utilisés, mais d’autres facteurs la dominent.
Raphaël
Parce qu'ils n'étaient pas très rapides au départ et qu'ils ne le sont toujours pas. La vitesse de la lumière n'est pas l'étape déterminante.
user207421
1
Prise
éhontée

Réponses:

54

Si vous traversiez aujourd'hui un matériau avec un courant électrique, celui-ci voyagerait à la même vitesse que si vous le faisiez avec le même matériau il y a 50 ans.

Dans cet esprit, comment les ordinateurs sont-ils devenus plus rapides? Quel est le domaine principal de la conception du processeur qui a donné ces incroyables augmentations de vitesse?

Vous obtenez des conclusions erronées car votre hypothèse de départ est fausse: vous pensez que la vitesse du processeur équivaut à la vitesse des électrons dans le processeur.

En fait, le processeur est une logique numérique synchrone. La vitesse limite est que la sortie d'une équation logique doit être stable pendant une période d'horloge. Avec la logique mise en œuvre avec des transistors, la limite est principalement liée au temps nécessaire pour faire basculer les transistors. En réduisant la taille de leurs canaux, nous pouvons les faire basculer plus rapidement. C’est la principale raison de l’amélioration de la fréquence maximale des processeurs depuis 50 ans. Aujourd'hui, nous modifions également la forme des transistors pour augmenter leur vitesse de commutation, mais pour autant que je sache , seuls Intel, Global Foundries et TSMC sont capables de créer des FinFET aujourd'hui.

Cependant, il existe d'autres moyens d'améliorer la vitesse d'horloge maximale d'un processeur: si vous divisez votre équation logique en plusieurs équations plus petites, vous pouvez accélérer chaque étape et obtenir une vitesse d'horloge supérieure. Vous avez également besoin de plus de périodes d'horloge pour effectuer la même action, mais, à l'aide de techniques de pipeline , vous pouvez faire en sorte que le taux d'instructions par seconde suive votre fréquence d'horloge.

Aujourd'hui, la vitesse des électrons est devenue une limite: à 10 GHz, un signal électrique ne peut se propager sur plus de 3 cm. C'est à peu près la taille des processeurs actuels. Pour éviter ce problème, vous pouvez avoir plusieurs domaines synchrones indépendants dans votre puce, réduisant ainsi les contraintes liées à la propagation du signal. Mais ce n’est qu’un facteur limitant, parmi la vitesse de commutation des transistors, la dissipation thermique, la compatibilité électromagnétique, et probablement d’autres (mais je ne suis pas dans l’industrie de la fonderie de silicium).

Jacen
la source
C'est une bonne information. Je n'avais jamais envisagé auparavant une limite supérieure pour la vitesse d'horloge.
Nick
3
Ce 3cm à 10GHz est optimiste. Les électrons dans les fils ont tendance à être un peu plus lent que les photons dans le vide.
8bittree
6
@ 8bittree: la vitesse des électrons n'est pas pertinente, n'est-ce pas? Ce qui compte, c'est la vitesse du signal, qui est beaucoup plus rapide.
Harry Johnston
1
@HarryJohnston Hmm ... semble que vous ayez raison selon Wikipedia . Mais les signaux eux-mêmes sont encore plus lents que la lumière. Et 3cm à 10GHz est basé sur la lumière dans le vide
8bittree
1
En plus des transistors plus petits étant plus rapides, vous pouvez en ajouter plus sur une puce. Il y a un compromis temps / espace pour les circuits, donc plus de transistors signifie des circuits plus rapides. c'est à dire. vous pouvez créer un additionneur 32 bits avec seulement quelques douzaines de transistors, mais il faudrait beaucoup de temps d'horloge pour calculer un seul ajout. Les derniers processeurs Intel peuvent le faire en une seule horloge, ce qui, je suppose, nécessite 100 000 transistors.
BlueRaja - Danny Pflughoeft
15

De nombreuses variables complexes affectent la vitesse globale du processeur, mais la principale est la vitesse d'horloge, qui a augmenté au milieu des années 2000 puis a été réduite à zéro en raison de contraintes physiques. La consommation d'énergie par puce a également augmenté au cours de cette période pour compenser les pertes / fuites de la puce. Les puces du processeur sont devenues trop chaudes et la technologie de refroidissement est devenue plus importante, et plus de puissance en watts ne pouvait pas être appliquée (sans les faire fondre littéralement!).

Extremetech.com donne un bon sondage qui montre que la loi de Moore est principalement alimentée par la mise à l’échelle de Dennard . Ce dernier s’est effondré au milieu des années 2000. Il existe de nombreux autres facteurs de conception / améliorations impliqués dans la "vitesse" de la puce (où la "vitesse" est mesurée en tant que temps d'exécution de code global et pas simplement en vitesse d'horloge) qui tendait à masquer le point d'inflexion dans les capacités matérielles telles que les caches, le parallélisme de la CPU / multicœur , prédiction de branche, etc., qui ont été ajoutés avec des largeurs de porte plus petites (et donc beaucoup plus de portes par puce pour une fonctionnalité supplémentaire). La largeur des portes a également eu tendance à cesser de diminuer ou du moins à diminuer moins rapidement à chaque génération.

Pourquoi ces tendances limitantes ne sont-elles pas très connues? Certaines des entités qui connaissent le mieux ces tendances "ont le plus à perdre" et sont en réalité les moins susceptibles de les publier. Par exemple, Intel, d’une valeur de plusieurs milliards de dollars, ne publiera probablement pas de données internes propriétaires indiquant des limites ou une diminution des performances futures.

De nouvelles possibilités se profilent à l’horizon, qui pourraient déboucher sur de nouvelles tendances (mais certaines impliquent des technologies / techniques de fabrication presque totalement différentes), notamment les puces photoniques, les puces 3D dans lesquelles les puces sont déposées en plusieurs couches, l’informatique quantique, les nanotechnologies telles que les nanotubes. transistors, etc.

vzn
la source
Une chose que je souhaitais depuis longtemps serait de développer un support de système d'exploitation et de langage pour le concept de groupes de cœurs, chaque groupe possédant un système de mémoire uniforme et tous les cœurs ayant également accès à un système de mémoire commune. Il devrait être possible à un morceau de code de dire "Je veux créer un thread qui voit exactement la même mémoire que moi à tout moment" et de laisser le système s'assurer que tous les threads censés voir la même mémoire s'exécuter sur le disque. mêmes noyaux. Certains algorithmes peuvent être rendus beaucoup plus efficaces lorsque de telles garanties sont disponibles, mais sur de nombreux systèmes, le seul ...
supercat
... une solution consiste à faire en sorte qu'une application choisisse un cœur de processeur et n'autorise pas les threads à s'exécuter sur une autre, approche vraiment horrible.
Supercat
2
Les vitesses d'horloge n'ont pas augmenté de manière significative au cours des 10 dernières années. Ajouter des cœurs, faire des ensembles d’instructions en une seule instruction, etc. en réduisant les goulots d’étranglement ailleurs, par exemple. la bande passante mémoire ont tous été les principaux contributeurs à la «vitesse» des processeurs modernes.
JamesRyan
5

Délégation à des processeurs supplémentaires

Une autre considération (en plus des autres bonnes réponses) est la délégation de tâches à d'autres processeurs. Au début de l'informatique, il n'y avait qu'un seul processeur. Pour les graphiques, le calcul a été partagé avec d’autres calculs dans la même CPU. Nous disposons maintenant de processeurs distincts pour le traitement graphique.

Plusieurs noyaux

Beaucoup de processeurs modernes ont plusieurs cœurs, dans le même morceau de silicium. Parce qu'ils partagent le même morceau de silicium, ils ne sont pas affectés autant par le ralentissement du passage de la puce à un autre cœur / processeur. Exemple: Processeurs graphiques.

Extension de mémoire et d'adresse

Les premiers microprocesseurs à 8 bits avaient une plage d'adressage inférieure à celle des processeurs actuels à 32 et 64 bits. Les processeurs modernes ont une plage de mémoire accrue, ce qui signifie que davantage de calculs peuvent être effectués en mémoire plutôt que d'avoir à accéder à une mémoire externe.

Cela s'applique également à la mémoire intégrée. Le plus grand espace d'adressage permet de plus grandes mémoires plus près du noyau central, tout en laissant un grand espace d'adressage à l'extérieur du silicium.

Pipelines et Caches

Alors que la mémoire devient moins chère, les ordinateurs modernes mettent en œuvre des pipelines de données et d'instructions plus sophistiqués, ainsi que des caches de données et d'instructions. Cela accélère l'exécution en réduisant le besoin de récupérer de la mémoire plus lente (en dehors du silicium) vers le cache interne. Certains processeurs peuvent contenir des forboucles dans leurs caches d'instructions.

Sommaire

Les ordinateurs actuels sont beaucoup plus rapides, non seulement en raison des progrès des technologies des transistors et du silicium, mais également en raison de la délégation de tâches à d'autres processeurs / cœurs. La mémoire devenant plus rapide et moins chère, elle permet aux processeurs d’avoir beaucoup de mémoire à proximité du processeur. Les plages d’adressage permettent plus de mémoire, ce qui signifie moins d’attaques vers la mémoire de stockage externe. Des tailles de registre plus grandes permettent de récupérer plus de données par cycle (4 octets avec un système 32 bits, 1 octet avec un système 8 bits). Plusieurs cœurs permettent de mettre en parallèle des opérations plutôt que de les sérialiser.

Thomas Matthews
la source
4

Presque toutes les avancées en matière de vitesse informatique proviennent de l’un de ces domaines:

Petits transistors

La réduction de la taille des transistors a deux conséquences:

  1. Ils sont physiquement plus proches les uns des autres, de sorte que le temps nécessaire pour qu'un signal électrique se rende de la source à la destination est plus court. Ainsi, bien que les signaux électriques ne voyagent pas plus vite qu’il ya 50 ans, ils parcourent souvent de plus courtes distances maintenant .
  2. Plus de transistors peuvent être inclus sur une puce, ce qui signifie plus de "travail" peut être fait en même temps. Plus on ajoute de transistors, plus il est difficile de leur trouver du travail utile, mais de nombreuses astuces astucieuses sont utilisées (voir ci-dessous).

Plus de "travail utile" par instruction

Par exemple, certains processeurs manquent d'instructions pour multiplier ou diviser des entiers; à la place, cette tâche doit être effectuée avec des routines logicielles lentes. Ajouter des instructions multiplier et diviser accélère considérablement les choses. L'ajout d' instructions à virgule flottante peut accélérer les logiciels nécessitant des nombres à virgule flottante.

Augmenter la taille des mots est un moyen important de faire plus de "travail utile" par instruction . Les CPU capables d'effectuer des opérations sur des nombres 32 bits nécessitent souvent beaucoup moins d'instructions pour exécuter la même tâche que les CPU 16 bits ou 8 bits.

Certains processeurs prennent en charge les instructions qui effectuent plusieurs opérations à la fois, notamment celles qui exécutent la même opération sur plusieurs éléments de données ( SIMD ).

Plus d'instructions par cycle

Le "cycle d'horloge" indique comment le processeur passe de son état actuel à l'état suivant. En un sens, il s’agit de la plus petite unité de travail que le processeur puisse effectuer à la fois. Cependant, le nombre de cycles d'horloge d'une instruction particulière dépend de la conception du processeur.

Avec l’avènement des processeurs en pipeline , il est devenu possible de "superposer" des instructions distinctes, c’est-à-dire que l’on commencerait avant la fin de la précédente. Cependant, certaines instructions peuvent invalider la prochaine instruction, qui ne sera pas connue avant que l'instruction suivante ne soit partiellement exécutée, ce qui peut compliquer les choses. (Les processeurs en pipeline incluent une logique pour que tout fonctionne correctement, mais les caractéristiques de performances sont plus complexes.)

Les processeurs Superscalar prennent ce niveau au prochain niveau, permettant littéralement à deux instructions de s'exécuter en même temps, et une exécution dans le désordre avance encore plus loin, permettant à des instructions d'être exécutées dans le désordre. Ces fonctionnalités nécessitent une analyse du flux d'instructions, afin de déterminer quelles instructions n'entrent pas en conflit.

Bien qu'il existe d'autres astuces de ce type ( prédiction de branche , exécution spéculative , par exemple ), le plus important est le tableau général:

  • chaque instruction prend un certain nombre de cycles d'horloge (pas nécessairement constante)
  • mais plusieurs instructions peuvent être en cours à la fois
  • il y a donc une " instruction par cycle " mesurable qui est> 1 pour les processeurs haut de gamme
  • mais cela dépend très fortement de la charge de travail

Plus de cycles par seconde

En d'autres termes, une vitesse d'horloge plus élevée . L'augmentation de la vitesse d'horloge augmente non seulement la chaleur générée, mais nécessite également une conception de puce plus rigoureuse, car le délai de stabilisation du circuit est plus court. Nous avons parcouru pas mal de temps là-bas jusqu'aux années 2000, lorsque nous avons atteint certaines limites pratiques.

Les données au bon endroit au bon moment

Bien que les composants du processeur se rapprochent de plus en plus en raison du rétrécissement des transistors, le processeur et la RAM restent espacés de 5 à 10 cm. Si une instruction nécessite quelque chose de la RAM, elle ne prendra pas 5 à 6 cycles, mais environ 200. Il s’agit du problème de goulot d’étranglement de von Neumann .

Notre arme principale contre ceci est la cache . Les données récemment consultées sont plus susceptibles d'être consultées à nouveau. Elles sont donc conservées dans une mémoire spéciale (appelée cache) située dans la puce du processeur, ce qui le rend beaucoup plus rapide d'accès.

Cependant, d'autres techniques (telles que la planification en pipeline et la prédiction de branche ) permettent au processeur d'effectuer un travail utile en attendant l'arrivée des données et de prévoir celles qui seront bientôt nécessaires.

Processeurs multiples et / ou spécialisés

Il est beaucoup plus facile d'écrire un logiciel pour un seul processeur que pour plusieurs processeurs. Cependant, les avantages performance / coût / consommation d’énergie en valent parfois la peine.

De plus, certains processeurs sont particulièrement bien adaptés à certaines tâches. Par exemple, les GPU sont spécialement conçus pour les calculs nécessaires au rendu des graphiques et des effets 2D et 3D.

Les processeurs multicœurs sont essentiellement des processeurs multiples sur une seule puce.

Artelius
la source
3

Lorsque les ordinateurs peuvent effectuer plus de calculs par unité de temps, ils sont considérés comme plus rapides. Chaque calcul ne peut pas être fait plus rapidement qu'auparavant, mais il y a plus de calculs en cours. Une bonne analogie serait le nombre de pas qu'un coureur prend. Si un coureur se comportait conformément à la loi de Moore, il pourrait faire deux fois plus de pas tous les deux ans. Essentiellement, le coureur couvrirait deux fois la distance dans le même temps que le coureur il y a deux ans. La distance divisée par le temps est égale à la vitesse. 2 X Distance équivaut à 2 X Vitesse.

utilisateur24719
la source
3

La puissance de traitement d’un ordinateur / d’un processeur tient à la rapidité avec laquelle l’électricité se déplace, mais plutôt à la rapidité avec laquelle elle peut être activée et désactivée. Plus vous pouvez basculer rapidement entre le courant et non le courant, plus vous pouvez traiter d'informations au sein d'un processeur ou transmettre en aval.

Dan
la source
2

Pour les processeurs typiques utilisés dans les PC, la dissipation de chaleur est un facteur limitant depuis plus de dix ans, alors que les processeurs à refroidissement par air dans les PC ont été limités à environ 4 GHz. Le refroidissement par eau élève ce niveau à environ 5 GHz, et le refroidissement à l'azote a été utilisé pour pousser les fréquences d'horloge à environ 6 GHz et 6,5 GHz.

La fréquence d'horloge est fondamentalement fonction de la tension en fonction de la taille de la logique du circuit (le temps nécessaire pour changer d'état). Plus la tension est élevée ou plus la logique du circuit est petite, plus la cadence est rapide, mais cela pose un problème de dissipation de chaleur car les densités augmentent généralement avec la réduction de la taille de la logique du circuit. Avec la densité élevée, il ne reste plus beaucoup de place pour que les matériaux conducteurs de chaleur dissipent la chaleur. Réduire la densité augmente les coûts et augmente également les délais de propagation en raison de la longueur accrue des circuits.

Les processeurs n'ont pas été beaucoup plus rapides ces dernières années, l'actuel Intel i7 4790K (4,0 GHz, 4,4 Ghz turbo) n'est pas beaucoup plus rapide que le deuxième génération d'Intel i7 2700K (3,5 GHz, 3,9 GHz turbo), autre que sa fréquence d'horloge plus rapide (environ 14,3% plus rapide). D'autre part, les graphiques 3D pouvant tirer parti des opérations parallèles, les performances des cartes vidéo ont été multipliées par 3 au cours des 4 ou 5 dernières années, certaines ayant l'équivalent de plus de 3 000 sous-cœurs.

rcgldr
la source
2

Bien que les réponses déjà données soient bonnes, elles semblent toutes très compliquées!

La réponse rapide "TLDR" est "nombre de portes logiques" et "à quelle vitesse ces portes logiques peuvent-elles se déclencher". Pensez aux portes logiques comme les 1 et les 0. Ceci est juste un transistor / tube à vide / quoi allumer ou éteindre. 1 est allumé 0 est éteint.

L'électricité ne se déplace pas plus vite ni plus lentement, mais vous pouvez en empaqueter plus et des zéros sur votre puce car ceux-ci et les zéros eux-mêmes sont plus petits. Et vous pouvez les faire basculer plus rapidement avec le temps. Est-ce que cela rend la réponse un peu plus simple?

DigitalGalaxy
la source
2

Les deux facteurs les plus importants sont, de loin, le fait que les transistors ont rétréci de manière ridicule. Nous disposons donc désormais de smartphones dotés de plus d'un milliard de transistors et le fait que le passage d'un transistor à un autre est devenu beaucoup plus rapide. La commutation plus rapide se traduit directement par plus de vitesse. Le nombre plus élevé de transistors augmente la vitesse indirectement, car il permet de nombreuses autres améliorations: nous avons des caches car nous avons plus de transistors. Nous avons des registres plus nombreux et plus grands parce que nous avons plus de transistors. Nous avons des instructions vectorielles car nous avons plus de transistors. Nous avons des processeurs à deux, quatre ou dix cœurs parce que nous avons plus de transistors.

Dans une moindre mesure, la vitesse a été améliorée grâce à une meilleure conception. Par exemple, un multiplicateur n'est pas simplement plus rapide parce que nous avons plus de transistors, mais parce que nous utilisons de meilleures méthodes. La prévision de branche s'est améliorée au-delà du nombre de transistors disponibles. Mais dans l’ensemble, il s’agit d’un faible effet par rapport à la puissance brute d’un milliard de transistors.

(Le processeur du premier Mac s'appelait un processeur Motorola 68000 car il comportait 68 000 transistors. Un nouvel iPad en contient environ 20 000 fois plus).

gnasher729
la source
0

Je suis un ingénieur en mécanique. Je ne sais donc pas à quel point cela affecte la vitesse d'un processeur ni si cela est devenu un facteur limitant ou non, mais la physique qui le sous-tend est solide. L'inductance et la capacité du circuit affecteront la rapidité avec laquelle les signaux de tension numériques peuvent monter et descendre, affectant ainsi la vitesse de commutation. Idéalement, les signaux de commutation seraient de belles ondes carrées. En réalité, ils sont légèrement déformés et inclinés sur les bords. Les signaux doivent être hauts et suffisamment hauts pour pouvoir être lus avant le prochain cycle d'horloge. Essentiellement, l'onde de signal a besoin d'un "point plat" au sommet. Si vous changez de vitesse trop rapidement, vous obtiendrez un signal d'onde plus pointu. Ceux d’entre vous qui sont plus familiarisés avec les signaux numériques peuvent apporter des éclaircissements au besoin, mais l’idée est bonne.

Jeff
la source
2
Bienvenue! Autant que je sache, tout ce que vous dites est vrai. Mais je ne vois pas en quoi cela répond à la question de savoir comment les ordinateurs ont pu être plus rapides au fil des ans.
David Richerby