0

L'incrémentation d'un registre (dans une boucle) peut-elle être utilisée pour déterminer le taux d'horloge (effectif)? J'ai naturellement supposé que c'était possible, mais on m'a dit que les processeurs pourraient implanter des techniques super-scalaires qui rendent ce type de calcul inutile. On m'a également dit que l'incrémentation des registres sur la CPU peut être effectuée en moins d'un cycle d'horloge.L'incrémentation d'un registre peut-elle être utilisée pour déterminer la fréquence d'horloge?

est-ce vrai?

Répondre

3

Non, pas de manière fiable. Le nombre de cycles qu'il faut pour incrémenter un registre peut varier entre différents types de processeurs, et vous devez également inclure le surcoût de la boucle. Dans n'importe quel système d'exploitation moderne, vous devrez faire face à un multitâche préemptif, vous n'avez donc aucune idée de la quantité de temps processeur que le planificateur de processus va vous donner. En fonction de la quantité de travail que les autres processus effectuent, vous pouvez obtenir beaucoup ou peu de temps CPU, de sorte que le nombre d'incréments de registre que vous pouvez effectuer par seconde est très variable.

En outre, dans un environnement multicœur, les horloges peuvent ne pas cocher au même rythme. Si votre processus est déplacé entre les cœurs par le planificateur pour une raison ou une autre, votre fréquence d'horloge peut changer de façon imprévisible.

Il existe de bien meilleurs moyens d'obtenir la fréquence d'horloge, par exemple demander au système d'exploitation (bien sûr, comment faire cela varie avec le système d'exploitation).

+0

Peut-être que Linux 'temps' me donnera une meilleure estimation du temps réellement consacré à un processus, mais je comprends votre point, merci. –

1

Non, vous ne pouvez pas l'utiliser pour déterminer la fréquence d'horloge. Il n'y a aucune garantie qu'un registre peut être incrémenté exactement une fois par horloge.

Quel processeur ciblez-vous? Il existe des moyens plus précis de déterminer le taux d'horloge, au moins sur x86.

+0

C'était une question générale, mais je suis vraiment intéressé par x86 ... –

Questions connexes