Advanced Configuration and Power Interface
L’Advanced Configuration and Power Interface (ACPI) (« interface avancée de configuration et de gestion de l’énergie » en anglais) est une norme codéveloppée par Hewlett Packard, Intel, Microsoft, Phoenix Technologies et Toshiba, très largement répandue dans les ordinateurs personnels.
Le but de cette norme est de réduire la consommation d’énergie d’un ordinateur en mettant hors tension certains éléments (tels que les lecteurs CD-ROM, les disques durs, l’écran…).
Pour cela, une interface a été spécifiée qui permet au système d’exploitation d’envoyer des signaux à ces différents périphériques matériels (il faut que ces périphériques prennent en charge également l’ACPI). Cette interface permet aussi au matériel d’envoyer des signaux au système d’exploitation, par exemple lorsque l’utilisateur appuie sur le bouton de mise en route sur le clavier ou que le modem reçoit un appel.
Cette norme est utilisée aussi bien sur les ordinateurs portables que sur les ordinateurs de bureau récents[Depuis quand ?]. La toute dernière spécification qui date du porte la version 4.0[1].
Présentation
Le point le plus important de cette spécification est que c’est le système d’exploitation qui est responsable de la gestion de l’alimentation des composants de l’ordinateur, c’est une évolution importante par rapport aux normes précédentes comme APM où le BIOS était responsable de la gestion d’alimentation.
Un autre élément important est que la gestion optimisée de l’alimentation (depuis toujours vitale pour l’autonomie des ordinateurs portables) est maintenant une norme qui est mise en œuvre dans d’autres matériels informatiques (jusqu’aux serveurs) et permet d’optimiser leur consommation électrique en fonction de la charge.
ACPI ne fonctionne qu’avec les matériels prévus pour et requiert de la part des constructeurs la gestion d’un langage informatique spécifique (AML, pour ACPI Machine Language) pour la gestion des événements.
La première version de Microsoft Windows à avoir géré ACPI était Windows 98. La première version de FreeBSD à avoir géré ACPI était la version 5.0. Linux, NetBSD et OpenBSD DragonFly BSD ont aujourd’hui tous une gestion au moins partielle d’ACPI.
Concepts
La norme définit les états du système tout entier (G0…G3 et S0…S5) et aussi des périphériques (D0…D3) et des processeurs (C0…C3). La règle étant que l’état x0 (G0/S0, D0 ou C0) correspond à un équipement en service et consommateur d’énergie et les états suivants à des équipements nécessitant de plus en plus d’opérations pour être remis en état x0.
La norme définit également la gestion des niveaux de performance (P0…), de la configuration des périphériques et de la découverte PnP, des événements du système, de l’énergie des batteries, des zones thermiques…
Global states / Sleep states (états du système et sommeil)
Ces états sont classés par la norme en partant de celui où l’ordinateur est totalement en service et allant vers des situations où l’ordinateur est autorisé à mettre de plus en plus longtemps à (re)devenir utilisable.
- G0/S0 en service : l’ordinateur est entièrement en service.
- G1 sommeil : aucun processeur n’exécute d’instruction, pourtant l’utilisateur n’a pas demandé un arrêt complet de l’ordinateur. Pour quitter cet état le système d’exploitation n’a pas à ré-exécuter toute la séquence d’amorçage mais reprend son fonctionnement à partir de l’état où il était avant cet arrêt. Cet état est subdivisé en plusieurs sous états:
- G1/S1 power on suspend: aucun processeur n’exécute d’instruction mais aucun contexte d’exécution n’est perdu et l’ordinateur pourra quitter cet état très rapidement. Dans cet état, l’alimentation est toujours en service mais les disques sont stoppés (comme dans tous les états suivants).
- G1/S2 : état de sommeil plus profond, les processeurs devront être réinitialisés au réveil, le système d’exploitation devra ensuite restaurer les différents contextes d’exécution. Cet état est documenté dans la spécification ACPI mais rarement mis en œuvre.
- G1/S3 standby ou suspend to ram : dans cet état l’ordinateur éteint l’alimentation principale, mais l’état de la mémoire centrale est maintenu en employant une alimentation permanente (appelé 5VSB) ainsi il restaurera son état plus rapidement qu’en G1/S4.
- G1/S4 hibernate ou suspend to disk : l’état du système (en particulier le contenu de la mémoire et les contextes d’exécution des processeurs) a été sauvegardé (le plus souvent dans un fichier d’hibernation sur un disque dur). L’ensemble des composants de l’ordinateur est sans alimentation. À sa remise en service le système d’exploitation devra recharger ce fichier d’hibernation et restaurera alors l’état de l’ordinateur.
- G2/S5 arrêt piloté (soft off) : la consommation électrique est la plus réduite possible et aucun état courant de l’ordinateur n’a été sauvegardé (l’utilisateur a demandé au système de s’arrêter complètement) cependant l’alimentation bien que stoppée est toujours connectée à une source électrique et fournit l’alimentation permanente 5VSB (d’ailleurs le clavier ainsi que la souris et la carte réseau peuvent rester alimentés, si le bios est configuré pour cela, leur usage permettra alors de démarrer à nouveau). Lors de la remise en service le système d’exploitation devra exécuter toute la séquence d’amorçage avant d’être disponible.
- G3 arrêt mécanique : dans cet état un interrupteur mécanique a été manœuvré et seule une manœuvre humaine peut permettre de démarrer l’ordinateur. On pourrait croire que dans cet état plus aucun composant n’est alimenté, mais c’est inexact : dans un PC par exemple une pile (le plus souvent au lithium) alimente encore un petit circuit CMOS et permet de maintenir quelques informations de configuration ainsi qu’une horloge.
Device states (états des périphériques)
Ces états sont classés du plus consommateur d’énergie (périphérique en cours d’utilisation ou D0) jusqu’au moins consommateur (périphérique éteint ou D3).
Un périphérique en état D3 aura besoin d’un cycle d’initialisation complète avant de redevenir utilisable (il peut par exemple nécessiter le chargement d’un micrologiciel effectué par son pilote avant d’être utilisé).
CPU states (états des processeurs)
La norme définit également quatre niveaux d’énergie pour les processeurs gradués selon la consommation énergétique. En état C0, le processeur est en service et exécute des instructions puis dans les états suivants il n’exécute plus d’instruction et voit sa consommation électrique réduite au prix d’un retour à l’état C0 de plus en plus long.
L’état C1 peut être obtenu sur un processeur de la famille x86 en lui faisant exécuter l’instruction HALT. À partir de l’état C2, l’horloge n’a même plus besoin de lui être fournie. Dans l’état C3, le processeur peut être éteint électriquement et devra être réinitialisé avant d’exécuter de nouveau des instructions.
Tableaux ACPI
Ces tableaux sont utilisées par le système d’exploitation pour obtenir les informations sur le matériel qu’il contrôle.
- RSDP (Root System Description Pointer)
- RSDT (Root System Description Table)
- DSDT (Differentiated System Description Table)
- XSDT (Extended System Description Table)
- FADT (Fixed ACPI Description Table)
- FACS (Firmware ACPI Control Structure)
- SBST (Smart Battery Table)
- ECDT (Embedded Controller Boot Resources Table)
- MADT (Multiple APIC Description Table)
- SRAT (System Resource Affinity Table)
- SLIT (System Locality Distance Information Table)
- SLIC (Software Licensing Description Table)
- SSDT (Secondary System Descriptor Tables)
- THRM (CPU Thermal)
Notes et références
- Développeur : Publication des spécifications de ACPI v4.0, sur linuxfr.org, publié le 23 juin 2009, modifié le 24 juin 2009.