High Precision Event Timer

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le HPET (High Precision Event Timer, qu'on pourrait traduire en « Timer événementiel de haute précision »), anciennement Multimedia Timer[1], est un timer (minuterie, métronome, chronomètre, horloge, ...) sous forme de composant électronique, présent sur les ordinateurs à architecture Intel. Ses spécifications ont été écrites conjointement par Intel et Microsoft.

Les anciens systèmes d'exploitation ne savent pas utiliser le HPET et peuvent uniquement tourner sur des machines qui ont les anciens systèmes de timer. Certaines machines ont les deux, par exemple HPET + RTC.

Fonctionnalités[modifier | modifier le code]

Un bloc HPET est constitué d'un compteur et de 3 à 32 timers indépendants. Chaque timer est constitué d'un comparateur et d'un registre pour stocker la valeur à laquelle le timer doit se déclencher. Il peut y avoir au plus 8 blocs HPET. Chaque comparateur peut générer une interruption quand le compteur atteint la valeur préprogrammée, et c'est de cette façon que le timer informera le processeur que le temps donné est écoulé.

Tous les timers peuvent être placés en mode one-shot (littéralement un tir) et certains peuvent être placés en mode périodique. En mode one-shot le timer déclenche une interruption une seule fois lorsque le compteur principal atteint la valeur stockée dans le registre du comparateur. En mode périodique les interruptions sont générées à l'intervalle de temps spécifié.

Applications[modifier | modifier le code]

Le HPET peut produire des interruptions périodiques à une résolution beaucoup plus haute que le RTC. Le HPET est souvent utilisé pour synchroniser les flux multimédia, ce qui fournit un rendu fluide et réduit la nécessité d'utiliser les autres méthodes de calcul de temps tels que l'instruction RDTSC des processeurs x86.

Comparaison avec les prédécesseurs[modifier | modifier le code]

Le HPET fut conçu pour remplacer le PIT 8254 et la fonction d'interruption périodique des RTC. Comparé à ces anciens circuits, le HPET fonctionne à une plus haute fréquence (au moins 10 MHz) et possède un compteur sur 64 bits (bien qu'ils puissent être manipulés en 32 bits)[1].

Le 8254 et le RTC peuvent, tout comme le HPET, être utilisés en mode one-shot, mais le processus de mise en place est tellement lent que leur mode one-shot n'est dans la pratique, jamais utilisé pour les tâches qui requièrent une certaine précision[2]. À la place du mode one-shot les puces 8254 et RTC sont typiquement utilisées en mode périodique avec un très petit intervalle. Par exemple, si une application a besoin d'effectuer plusieurs attentes courtes, il sera plus économique en temps d'utiliser le mode périodique qui tourne constamment avec un intervalle d'1 ms plutôt que de placer un one-shot chaque fois qu'il est nécessaire. Ceci à cause du coût élevé de la mise en place d'un one-shot sur les puces 8254 et RTC. Ceci va faire qu'une interruption sera déclenchée toutes les millisecondes même si l'application a besoin de travailler moins fréquemment. Il y aura donc des interruptions déclenchés pour rien. Avec le HPET les interruptions supplémentaires peuvent être évitées grâce au coût de la mise en place des one-shot considérablement réduit.

Compatibilité[modifier | modifier le code]

Les systèmes d'exploitation conçus avant le HPET ne peuvent pas l'utiliser, ils peuvent donc tourner uniquement sur les machines disposant d'un ancien système de timer. Les nouveaux systèmes d'exploitation essayent d'utiliser les deux. Quelques machines possèdent les deux systèmes de timer.

Les systèmes d'exploitation suivants sont connus pour ne pas être compatible avec le HPET : Windows XP, Windows Server 2003, et les précédentes versions de Windows. Les anciens Linux contiennent un driver pour le HPET, mais celui-ci n'est pas fonctionnel.

Les systèmes d'exploitation suivants sont connus pour être capables d'utiliser le HPET : Windows Vista, Windows 2008, Windows 7, les versions de Mac OS X basées les processeurs x86, Linux 2.6 et FreeBSD.

Avec un noyau Linux, le pilote d'horloge matérielle "rtc-cmos" doit être utilisé à la place du driver "rtc" d'origine.

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Crédit d'auteurs[modifier | modifier le code]