Question

Peut-on utiliser l'incrément d'un registre (dans une boucle) pour déterminer la fréquence d'horloge (effective)? J'ai naturellement supposé que c'était possible, mais on m'a fait remarquer que Cpu peut implanter des techniques super-scalaires qui rendent ce type de calcul inutile. De plus, on m'a dit que l'incrémentation des registres sur la CPU peut être réalisée en moins d'un cycle d'horloge.

est-ce vrai?

Était-ce utile?

La solution

Non, pas de manière fiable. Le nombre de cycles requis pour incrémenter un registre peut varier entre différents types de processeurs, et vous devez également inclure le temps système nécessaire au bouclage. Dans n'importe quel système d'exploitation moderne, vous devrez gérer le multitâche préemptif. Vous n'avez donc aucune idée du temps processeur que le planificateur de processus va vous accorder. En fonction de la quantité de travail effectuée par les autres processus, vous pouvez obtenir beaucoup ou un peu de temps processeur. Le nombre d'incréments de registre que vous pouvez effectuer par seconde est donc très variable.

De plus, dans un environnement multicœur, les horloges peuvent ne pas fonctionner au même rythme. Si le planificateur déplace votre processus entre les cœurs pour une raison ou une autre, votre fréquence d'horloge peut changer de manière imprévisible.

Il existe de bien meilleurs moyens d’obtenir le taux d’horloge, par exemple en le demandant au système d’exploitation (bien sûr, la procédure varie en fonction du système d’exploitation).

Autres conseils

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top