Quand les secondes durent plus longtemps à cause d’un CPU

Je vais vous parler aujourd’hui d’un petit problème amusant, lié à la bidouille d’un ordinateur Apple et à la durée du temps.

J’ai récupéré un Mac mini de 2006, une machine équipée au départ d’un Core Solo à 1,5 GHz (un processeur doté d’un FSB à 667 MHz). Pour diminuer sa consommation (et parce que c’était le seul processeur compatible que j’avais sous la main), je l’ai remplacé par un Core 2 Duo U7700, un modèle basse consommation cadencé à 1,33 GHz, avec un bus à 533 MHz. Jusque là, rien de spécial : la machine a accepté la puce et Mac OS X semble afficher correctement la fréquence.

Puis je me suis rendu compte d’une chose bizarre : l’heure de la machine dérivait, et de façon importante. Après quelques recherches, j’ai découvert que le TSC (Time Stamp Counter) n’affichait pas la bonne fréquence. En simplifiant, il s’agit d’un compteur présent dans les puces Intel depuis des années et qui sert à mesurer le temps. Mac OS X utilise le TSC pour calculer le temps qui passe (et donc la durée de la seconde). Ce qui pose un gros souci avec ma machine.

Après 90 secondes, la dérive est bien visible

Dans la pratique, le TSC annonce une fréquence de 1,66 GHz (il est a priori calibré sur le FSB standard de la machine, c’est-à-dire 667 MHz) alors que le processeur fonctionne à 1,33 GHz. Étant donné que Mac OS X calcule le nombre de cycles nécessaires en supposant une fréquence de 1,66 GHz, la seconde dure donc plus longtemps sur le Mac mini : il faut en réalité 1/4 de seconde (réel) de plus pour que le compteur atteigne la valeur attendue. C’est très visible en utilisant un timer, j’ai fait une capture d’écran en vidéo pour bien montrer le problème. Quand la machine de droite (le Mac mini) affiche 1:30 (90 secondes), 112 secondes se sont en fait écoulées dans la réalité. La vidéo montre bien que le timer de gauche, lancé sur un autre Mac, n’affiche pas la même durée pour la seconde.

Je n’ai pas trouvé de solution simple pour régler ce problème, qui pose quand même pas mal de soucis dans la pratique, et la dérive est trop importante pour que la synchronisation avec un serveur NTP masque le problème. La prochaine étape va donc être d’installer un CPU plus standard (un Core 2 Duo T7200 en bus 667 MHz) dans la machine.

About the Author

Dandu
Espion de Cupertino dans la rédac' de Canard PC Hardware. Aime beaucoup les formats totalement obsolètes ainsi que les technologies bizarres et oubliées. Possède un chien robot, des lapins Wi-Fi et un vrai perroquet.