L’Advanced Configuration and Power Interface (ACPI) (« interface avancée de configuration et de gestion de l’énergie » en anglais) est une norme co-dé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. La toute dernière spécification qui date du 16 juin 2009 porte la version 4.0.
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 ont aujourd’hui tous une gestion au moins partielle d’ACPI.
Ces tables sont utilisées par le système d’exploitation pour obtenir les informations sur le matériel qu’il contrôle.
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…
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.
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é).
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.