IA-PC HPET (temporisateur d'événement de haute précision) est des spécifications qui ont été conjointement développées par Intel et Microsoft dans la partie précédente de cette décennie. La dernière version est datée d'octobre 2004. Elle a énoncé que le but est à
complétez au commencement et remplacez par la suite le rythmeur programmable du legs 8254 et les fonctions périodiques de génération d'interruption d'horloge temps réel qui sont actuellement employés comme matériel de temporisateur du `De-facto'pour des IA-PCs.
L'architecture de HPET définit un ensemble de temporisateurs qui peuvent être employés par le du système d'exploitation. Un bloc de temporisateur est une combinaison d'un compteur simple et jusqu'à 32 comparateurs et registres d'allumette. Le comparateur compare le contenu du registre d'allumette contre la valeur d'un vers le haut-compteur monotonique courant libre. Quand le rendement du vers le haut-compteur égale la valeur dans le registre d'allumette une interruption est produite. Chacun des comparateurs peut produire une interruption. Un maximum de 8 blocs de temporisateur sont soutenus pour un total de 256 temporisateurs. Chaque bloc de temporisateur peut avoir différents attributs de synchronisation. Les réalisations spécifiques peuvent inclure seulement un sous-ensemble de ces temporisateurs. Trois temporisateurs au minimum est prié.
Les spécifications contiennent le schéma fonctionnel suivant de l'architecture de HPET.

Certains des temporisateurs peuvent être permis de produire d'une interruption périodique. Si un temporisateur est placé pour être périodique, sa période est ajoutée au registre d'allumette chaque fois que une allumette se produit, de ce fait calculant la prochaine fois pour que ce temporisateur produise d'une interruption. Un vers le haut-compteur est habituellement 64 bits au loin mais des réalisations à 32 bits sont autorisées par les spécifications et des vers le haut-compteurs 64-bit peuvent également être conduits en mode à 32 bits. les Vers le haut-compteurs fonctionnent à 10 mégahertz au minimum. ce qui est beaucoup plus rapide que le RTC plus ancien (horloge temps réel) et peut produire ainsi des interruptions périodiques à une résolution beaucoup plus élevée. Les registres liés à ces temporisateurs sont tracés à l'espace mémoire.
La fonctionnalité des utilisations ACPI de BIOS (interface avancée de configuration et de puissance) pour informer le du système d'exploitation de l'endroit du HPET mémoire-a tracé l'espace de registre. Voici un exemple d'une table démontée d'ACPI HPET d'une carte mère d'Intel DX48BT2 (AKA BoneTrail).
$ cat /sys/firmware/acpi/tables/HPET > /var/tmp/hpet.out $ iasl -d /var/tmp/hpet.out $ cat /var/tmp/hpet.dsl /* * Intel ACPI Component Architecture * AML Disassembler version 20090123 * * Disassembly of /var/tmp/hpet.out, Sun Jul 5 19:34:47 2009 * * ACPI Data Table [HPET] * * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue */ [000h 000 4] Signature : "HPET" /* High Precision Event Timer table */ [004h 004 4] Table Length : 00000038 [008h 008 1] Revision : 01 [009h 009 1] Checksum : CE [00Ah 010 6] Oem ID : "INTEL " [010h 016 8] Oem Table ID : "DX48BT2 " [018h 024 4] Oem Revision : 0000076E [01Ch 028 4] Asl Compiler ID : "MSFT" [020h 032 4] Asl Compiler Revision : 01000013 [024h 036 4] Hardware Block ID : 8086A301 [028h 040 12] Timer Block Register :[028h 040 1] Space ID : 00 (SystemMemory) [029h 041 1] Bit Width : 00 [02Ah 042 1] Bit Offset : 00 [02Bh 043 1] Access Width : 00 [02Ch 044 8] Address : 00000000FED00000 [034h 052 1] Sequence Number : 00 [035h 053 2] Minimum Clock Ticks : 0001 [037h 055 1] Flags (decoded below) : 00 Page Protect : 0 4K Page Protect : 0 64K Page Protect : 0 Raw Table Data 0000: 48 50 45 54 38 00 00 00 01 CE 49 4E 54 45 4C 20 HPET8.....INTEL 0010: 44 58 34 38 42 54 32 20 6E 07 00 00 4D 53 46 54 DX48BT2 n...MSFT 0020: 13 00 00 01 01 A3 86 80 00 00 00 00 00 00 D0 FE ................ 0030: 00 00 00 00 00 01 00 00 ........ $
Voir la page 30 des spécifications de HPET v1.0a pour une panne détaillée du peu individuel en cas chronométrer le bloc (appelé Hardware Block par le disassember d'AML). Notez que seulement un bloc de temporisateur d'événement doit être décrit dans la table de HPET afin d'amorcer un du système d'exploitation. C'est le cas ici. Pour des plates-formes de non-legs, le bloc de temporisateur d'événement décrit dans le HPET est celui qui fournit la fonctionnalité pour remplacer la logique périodique de l'interruption 8254/RTC.
D'autres blocs de temps d'événement sont décrits dans le namespace d'ACPI. Voici la section appropriée de la table démontée d'ACPI DSDT.
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (_CRS, ResourceTemplate ()
{
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00004000, // Address Length
)
})
Method (_STA, 0, NotSerialized)
{
If (HPEE)
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
Notez le PNPID assigné (PNP0103) pour le HPET. Puisqu'aucun _UID n'est spécifié il signifie qu'il n'y a aucun autre bloc de temporisateur de HPET.
Voici une liste des messages HPET-connexes outputted quand cette carte mère particulière est initialisée sous Fedora 11.
$ dmesg | grep -i HPET ACPI: HPET CFBF2000, 0038 (r1 INTEL DX48BT2 76E MSFT 1000013) ACPI: HPET id: 0x8086a301 base: 0xfed00000 hpet clockevent registered HPET: 4 timers in total, 0 timers will be used for per-cpu timer hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 hpet0: 4 comparators, 64-bit 14.318180 MHz counter rtc0: alarms up to one month, 114 bytes nvram, hpet irqs $
La première ligne outputted quand la table d'ACPI HPET est lue. La deuxième ligne outputted quand la table d'ACPI HPET est tracée dans la mémoire par





















