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