ACPI (Advanced Configuration and Power Interface) es una especificación de interfaz abierta que define cómo el sistema operativo (OS) interactúa con el firmware de la plataforma para descubrir, configurar y gestionar los componentes de hardware, así como para controlar la gestión de energía. Proporciona un conjunto de tablas, métodos y registros que el OS puede leer y ejecutar para obtener información sobre el hardware y controlar su comportamiento. Esto incluye la enumeración de dispositivos, la gestión de interrupciones, el control de la energía de la CPU y los periféricos (estados C, P y S), y la implementación de funciones de Plug and Play. ACPI utiliza un lenguaje de máquina virtual llamado ACPI Machine Language (AML) para describir la configuración y la lógica de control del hardware, que es interpretado por el OS.
ACPI es fundamental en prácticamente todos los sistemas operativos modernos y hardware de PC. Es implementado por sistemas operativos como Windows, Linux (a través del subsistema ACPI del kernel), FreeBSD y macOS. En el hardware, cada placa base de PC moderna incluye un firmware (BIOS/UEFI) que implementa las tablas y métodos ACPI necesarios para que el OS pueda interactuar con el hardware subyacente. Por ejemplo, cuando un usuario pone su laptop en suspensión, es el OS, utilizando las interfaces ACPI, el que instruye al firmware para que coloque el sistema en un estado de bajo consumo (como el estado S3 o 'Suspend-to-RAM'). De manera similar, la detección de dispositivos USB al conectarlos o la regulación de la velocidad del ventilador de la CPU son gestionadas a través de ACPI.
Para un arquitecto de sistemas, ACPI es crucial porque define la interfaz estándar para la gestión de energía y la configuración de hardware, impactando directamente en la eficiencia energética, la estabilidad del sistema y la compatibilidad. Entender ACPI permite diseñar sistemas que aprovechen al máximo las capacidades de ahorro de energía, lo cual es vital en entornos de servidores y dispositivos edge donde el consumo es una métrica clave. Los trade-offs incluyen la complejidad de la implementación del firmware ACPI, que puede introducir bugs si no se adhiere estrictamente a la especificación, llevando a problemas de estabilidad o compatibilidad con ciertos sistemas operativos. Un diseño robusto de ACPI en el firmware es esencial para garantizar un comportamiento predecible del hardware, una gestión eficiente de la energía y una experiencia de usuario fluida, especialmente en escenarios de virtualización donde el hypervisor debe emular o pasar a través de las interfaces ACPI a las máquinas virtuales.