Le cycle d'horloge du processeur et le cycle machine
Unité hors système · grandeur : un intervalle de synchronisation et une mesure du travail de calcul
À l'automne 2004, Intel annula le développement d'un processeur qui devait tourner à dix gigahertz, et ce ne fut pas un échec technique mais l'aveu d'un mur physique : une puce poussée deux fois plus vite exigeait quatre fois plus de puissance et fondait tout simplement. La course aux fréquences, qui durait depuis trente ans, prit fin en un seul jour, et avec elle l'habitude de juger une machine au chiffre inscrit sur la boîte.
Le cycle lui-même est l'intervalle entre deux fronts du signal d'horloge, ce pas même par lequel tous les éléments synchrones de la puce basculent à la fois. Son inverse est la fréquence, et ainsi un cycle à cinq gigahertz dure deux dixièmes de nanoseconde, pendant lesquels la lumière parcourt six centimètres, et un signal sur une piste de cuivre moins encore — moins que la largeur de la puce.
01 · Définition
Le cycle est la période du signal d'horloge, c'est-à-dire l'intervalle entre deux fronts de même sens, où les éléments synchrones de la puce changent d'état ensemble. Le cycle machine est un nombre entier de cycles d'horloge pendant lequel le processeur accomplit une action achevée ; dans une machine à pipeline on le remplace par la mesure inverse — le nombre de cycles par instruction, dont l'inverse à son tour dit combien d'instructions sortent du pipeline en un cycle.
La longueur d'un cycle n'est pas fixée par la nature mais par le routage de la puce : elle ne doit pas être plus courte que le chemin le plus lent entre deux bascules, délai de la bascule elle-même et marge pour la dispersion des paramètres compris. D'où le geste habituel du concepteur — couper un long chemin logique en deux étages de pipeline : le cycle devient deux fois plus court, la fréquence deux fois plus haute, et l'instruction monte désormais tout l'escalier.
Ce qui borne la fréquence, cependant, n'est pas la logique mais la puissance : la consommation dynamique croît avec la fréquence et avec le carré de la tension, et la tension doit être relevée pour que le circuit suive à la fréquence accrue. La chaleur va donc à peu près comme le cube de la fréquence, et c'est sur cette dépendance cubique que la course aux gigahertz s'est arrêtée vers quatre.
Enfin, le cycle est une unité dont la longueur n'est pas constante. La gestion de l'alimentation change la fréquence des centaines de fois par seconde, selon la charge et la température ; on ne peut donc juger du temps écoulé au nombre de cycles, mais on peut juger du travail accompli : le compteur de cycles ne compte pas des secondes mais des pas de calcul, et c'est là sa vraie valeur.
Menez la fréquence avec le curseur et suivez deux courbes qui s'écartent en sens contraires. La verte est la distance que le signal parcourt en un cycle : plus la fréquence est haute, plus ce chemin est court, et à cinq gigahertz il se trouve plus petit que la puce elle-même. La cramoisie est ce que coûte en cycles un accès à la mémoire : sa latence en nanosecondes ne change presque pas, et en cycles elle ne fait donc que croître.
Ayant coupé le travail en étages, le concepteur raccourcit le cycle, mais une instruction monte désormais tout cet escalier, et sa propre latence ne diminue pas : elle augmente. Le gain n'apparaît que lorsque les étages sont remplis d'instructions différentes, et sur un branchement mal prédit il faut vider le pipeline en entier — d'autant plus cher qu'il est profond.
02 · Conversion
Fréquence, période, travail
Entrez une fréquence ou une longueur de cycle, et la fiche montrera l'inverse, le chemin du signal en un cycle et le coût des accès mémoire en cycles. La première famille est exacte par définition, la deuxième s'appuie sur les valeurs moyennes d'un cœur, la troisième sur les latences typiques de la hiérarchie mémoire actuelle.
La vitesse de propagation du signal sur une piste est prise à six dixièmes de la vitesse de la lumière ; dans les réglages fins de la fiche on peut la ramener à la moitié.
On ne peut comparer par la fréquence que des cœurs identiques, car le nombre de cycles par instruction diffère d'un facteur plusieurs entre architectures : une machine prend quatre instructions en un cycle, une autre à peine une. C'est précisément pour cela que le chiffre en gigahertz a quitté la publicité, et qu'à sa place sont venues des suites de tests qui mesurent non plus des cycles mais du travail accompli.
| Valeur | Remarque | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Ordres de grandeur
échelle logarithmique : du cycle au quantum de l'ordonnanceur04 · Instruments de mesure
Ce qui fixe le cycle et ce qui le compte
La source du cycle est une lamelle de quartz, oscillant d'ordinaire à quelques dizaines de mégahertz avec une exactitude d'environ dix millionièmes. Les gigahertz sur la puce ne viennent pas d'elle mais de la multiplication de cette fréquence de référence, de sorte que la stabilité de toute la machine est héritée d'un morceau de minéral de la taille d'un grain de riz.
La boucle à verrouillage de phase compare la fréquence divisée de l'oscillateur à la référence et l'ajuste jusqu'à ce que les phases coïncident ; en changeant le diviseur on change la fréquence à la volée. C'est elle justement qui permet à la gestion de l'alimentation d'abaisser le cycle à quelques centaines de mégahertz au repos et de le porter en turbo pour quelques secondes, tant qu'il reste de la marge thermique.
Dans le cœur siègent des registres qui comptent les cycles, les instructions achevées, les défauts de cache et les branchements mal prédits, et on peut les lire depuis le programme en marche. De ces nombres on tire le nombre de cycles par instruction — la seule mesure honnête de la façon dont le code s'est posé sur une puce donnée.
Pour voir le cycle lui-même il faut un appareil qui saisisse les fronts avec une résolution de quelques picosecondes, et c'est lui aussi qui montre les choses à cause desquelles la fréquence ne peut monter plus haut : la gigue de phase, le décalage d'arrivée du signal dans les différents coins de la puce et l'affaissement du front sur une longue ligne.
05 · Règles d’écriture
Cycles et hertz ne sont pas la même chose
La fréquence s'écrit en hertz, le préfixe en capitale pour méga et giga, tandis qu'un nombre de cycles s'écrit en entier, sans aucune unité, puisque le cycle n'est pas une unité SI. Les indices de performance s'écrivent en capitales sans points et avec la mention du cœur auquel ils se rapportent ; mêler fréquence et débit dans une même grandeur n'est pas permis.
La première écriture mêle deux grandeurs différentes : un nombre de cycles est sans dimension, tandis que le hertz mesure une fréquence. La deuxième enfreint la casse du préfixe, obligatoire pour méga et giga. La troisième compare par la fréquence des architectures dont les cycles par instruction diffèrent d'un facteur plusieurs, et rien ne s'ensuit d'une telle comparaison. La quatrième prend une grandeur variable pour une constante.
06 · Unités voisines
À côté se tiennent les unités qui mesurent le même travail par d'autres côtés : le hertz comme fréquence du signal lui-même, le nombre d'opérations en virgule flottante par seconde et le nombre d'instructions revenant à un cycle. Toutes se déduisent les unes des autres dès qu'on connaît la fréquence et le comportement du pipeline.
fréquence, unité SI
une mesure sans dimension
une mesure du travail de calcul
Parmi les fiches de Simetrium se trouvent à côté hertz, qui donne la fréquence, seconde et ses préfixes sous-multiples, unix time, où la limite est fixée elle aussi par le mot machine, et le bit s l'octet, par lesquels on mesure ce qu'un cycle transporte.
07 · Section historique
Trente ans de course et un jour d'annulation
Le premier processeur sur une seule puce tournait à une fréquence qu'une puce d'aujourd'hui traverse en une fraction de microseconde, et une instruction lui prenait huit cycles. Le cycle machine était alors une notion littérale : lire l'instruction, la décoder, chercher les données, calculer et écrire — chaque étape prenait son cycle, et toutes se suivaient strictement.
Dès que les étages apprirent à travailler en même temps sur des instructions différentes, la mesure habituelle se brisa : une instruction prenait toujours cinq cycles, mais sortait du pipeline à chaque cycle. Il fallut retourner le compte et parler de cycles par instruction, qui chez une bonne machine descendit sous l'unité — c'est-à-dire que plus d'une instruction s'achève en un seul cycle.
Une architecture au pipeline de trente et un étages fut bâtie pour la fréquence et se heurta à la chaleur : les dix gigahertz promis exigeaient un refroidissement impensable dans un boîtier de bureau. Le projet fut clos et l'industrie se tourna vers le multicœur — non parce qu'il vaut mieux, mais parce que la croissance cubique de la consommation ne laissait pas d'autre voie.
Un cœur d'aujourd'hui n'a pas une fréquence unique : au repos il descend à quelques centaines de mégahertz, en charge il monte vers cinq gigahertz et s'y tient tant que dure la marge thermique. Le chiffre de la fiche est devenu une promesse en conditions favorables, et comparer les machines par lui, constructeurs et critiques y ont renoncé.
Une unité dont la longueur change au cours de la mesure
Le cycle est mal arrangé pour le métrologue : sa longueur est fixée non par un étalon mais par le routage de la puce, et elle change chez un même processeur des centaines de fois par seconde, puisque la gestion de l'alimentation ajuste la fréquence à la charge et à la température. Aussi le compteur de cycles ne vaut-il rien pour mesurer le temps, bien qu'il ressemble de dehors à une horloge, et un programme qui s'y fie se trompe d'autant que la fréquence a bougé.
En revanche, pour la tâche qui lui a donné naissance, le cycle convient mieux que toute unité de temps. En comptant les cycles, nous mesurons non une durée mais le volume du travail de calcul, et c'est pourquoi le nombre de cycles par instruction reste comparable sous tout changement de fréquence — il dit combien bien le code s'est posé sur la puce, non combien de secondes ont passé.
Catalogue · unités de mesure
Une fiche pour chaque grandeur
Sept unités de base du SI, vingt-deux dérivées portant un nom propre, et des grandeurs hors système sans lesquelles ni la technique ni le calendrier ne fonctionneraient.