stringtranslate.com

ACPI

La interfaz avanzada de configuración y energía ( ACPI ) es un estándar abierto que los sistemas operativos pueden usar para descubrir y configurar componentes de hardware de la computadora , para realizar administración de energía (por ejemplo, poner en reposo componentes de hardware no utilizados), configuración automática (por ejemplo, Plug and Play e intercambio en caliente ) y monitoreo de estado. Fue lanzado por primera vez en diciembre de 1996. ACPI tiene como objetivo reemplazar la administración avanzada de energía (APM), la especificación de multiprocesador y la especificación de BIOS Plug and Play (PnP). [1] ACPI pone la administración de energía bajo el control del sistema operativo, a diferencia del sistema anterior centrado en BIOS que dependía del firmware específico de la plataforma para determinar las políticas de administración y configuración de energía. [2] La especificación es fundamental para el sistema de administración de energía y configuración dirigida por el sistema operativo ( OSPM ). ACPI define interfaces de abstracción de hardware entre el firmware del dispositivo (por ejemplo, BIOS , UEFI ), los componentes de hardware de la computadora y los sistemas operativos . [3] [4]

Internamente, ACPI anuncia los componentes disponibles y sus funciones al núcleo del sistema operativo mediante listas de instrucciones (" métodos ") proporcionadas a través del firmware del sistema ( UEFI o BIOS ), que el núcleo analiza. ACPI luego ejecuta las operaciones deseadas escritas en lenguaje de máquina ACPI (como la inicialización de componentes de hardware) utilizando una máquina virtual mínima incorporada .

Intel , Microsoft y Toshiba desarrollaron originalmente el estándar, mientras que HP , Huawei y Phoenix también participaron más tarde. En octubre de 2013, ACPI Special Interest Group (ACPI SIG), los desarrolladores originales del estándar ACPI, acordaron transferir todos los activos al Foro UEFI , en el que se llevará a cabo todo el desarrollo futuro. [5] La última versión del estándar 6.5 se lanzó en agosto de 2022. [6]

Arquitectura

El ACPI a nivel de firmware tiene tres componentes principales: las tablas ACPI, el BIOS ACPI y los registros ACPI. El BIOS ACPI genera tablas ACPI y carga tablas ACPI en la memoria principal . Gran parte de la funcionalidad ACPI del firmware se proporciona en código de bytes del lenguaje de máquina ACPI (AML), un lenguaje de bajo nivel específico de dominio y Turing-completo , almacenado en las tablas ACPI. [7] Para utilizar las tablas ACPI, el sistema operativo debe tener un intérprete para el código de bytes AML. La Arquitectura de componentes ACPI (ACPICA) proporciona una implementación de intérprete AML de referencia. En el momento del desarrollo del BIOS, el código de bytes AML se compila a partir del código ASL (lenguaje fuente ACPI). [8] [9]

Arquitectura de componentes ACPI (ACPICA)

La arquitectura de componentes ACPI ( ACPICA ), escrita principalmente por ingenieros de Intel, proporciona una implementación de referencia independiente de la plataforma de código abierto del código ACPI relacionado con el sistema operativo. [10] El código ACPICA es utilizado por Linux, Haiku , ArcaOS [11] y FreeBSD [8] , que lo complementan con su código específico del sistema operativo.

Historia

La primera revisión de la especificación ACPI se publicó en diciembre de 1996 y admitía espacios de direcciones de 16, 24 y 32 bits . No fue hasta agosto de 2000 que ACPI recibió compatibilidad con direcciones de 64 bits, así como con estaciones de trabajo y servidores multiprocesadores con la revisión 2.0.

En 1999, el entonces CEO de Microsoft, Bill Gates, afirmó en un correo electrónico que Linux se beneficiaría de ACPI sin que ellos tuvieran que hacer ningún trabajo y sugirió que fuera exclusivo de Windows. [12] [13] [14]

En septiembre de 2004, se lanzó la revisión 3.0, que trajo a la especificación ACPI soporte para interfaces SATA , bus PCI Express , soporte multiprocesador para más de 256 procesadores, sensores de luz ambiental y dispositivos de presencia del usuario, además de extender el modelo térmico más allá del soporte anterior centrado en el procesador.

Lanzada en junio de 2009, la revisión 4.0 de la especificación ACPI agregó varias características nuevas al diseño; las más notables son la compatibilidad con USB 3.0 , la compatibilidad con inactividad del procesador lógico y la compatibilidad con x2APIC .

Inicialmente, ACPI era exclusivo de la arquitectura x86 ; la revisión 5.0 de la especificación ACPI se publicó en diciembre de 2011, [15] que agregó soporte para la arquitectura ARM . La revisión 5.1 se publicó en julio de 2014. [16]

La última revisión de la especificación es la 6.5, que se publicó en agosto de 2022. [6]

Sistemas operativos

La pantalla "Ahora es seguro apagar el equipo" en Windows 9x. La mayoría de los periféricos del equipo están desconectados y las únicas formas de salir de esta pantalla son apagar o reiniciar el equipo.
La pantalla "Ahora es seguro apagar el equipo" en Windows NT 4.0. A diferencia de Windows 9x y versiones posteriores de NT, la mayoría de los periféricos esenciales del equipo funcionan con normalidad, por lo que el usuario puede optar por reiniciar en lugar de apagar el equipo.
La pantalla "Ahora es seguro apagar el sistema" en Windows 10 y 11.

Windows 98 de Microsoft fue el primer sistema operativo en implementar ACPI, [17] [18] pero su implementación fue algo defectuosa o incompleta, [19] [20] aunque algunos de los problemas asociados con él fueron causados ​​por el hardware ACPI de primera generación. [21] Otros sistemas operativos, incluidas versiones posteriores de Windows , macOS (solo macOS x86), eComStation , ArcaOS , [22] FreeBSD (desde FreeBSD 5.0 ​​[23] ), NetBSD (desde NetBSD 1.6 [24] ), OpenBSD (desde OpenBSD 3.8 [25] ), HP-UX , OpenVMS , Linux , GNU/Hurd y versiones para PC de Solaris , tienen al menos algún soporte para ACPI. [26] Algunos sistemas operativos más nuevos, como Windows Vista , requieren que la computadora tenga un BIOS compatible con ACPI y, desde Windows 8 , se implementó el estado S0ix/Modern Standby . [27]

Los sistemas operativos Windows utilizan acpi.sys [28] para acceder a los eventos ACPI.

La serie 2.4 del núcleo Linux tenía un soporte mínimo para ACPI, con un mejor soporte implementado (y habilitado por defecto) a partir de la versión 2.6.0 del núcleo. [29] Las antiguas implementaciones de BIOS ACPI tienden a tener muchos errores y, en consecuencia, no son compatibles con los sistemas operativos posteriores. Por ejemplo, Windows 2000 , Windows XP y Windows Server 2003 solo usan ACPI si la fecha de BIOS es posterior al 1 de enero de 1999. [30] De manera similar, el núcleo Linux 2.6 puede no usar ACPI si la fecha de BIOS es anterior al 1 de enero de 2001. [29]

Los sistemas operativos basados ​​en Linux pueden proporcionar manejo de eventos ACPI a través de acpid. [31]

Responsabilidades de la OSPM

Una vez que un sistema operativo compatible con OSPM activa ACPI, asume el control exclusivo de todos los aspectos de la administración de energía y la configuración de dispositivos. La implementación de OSPM debe exponer un entorno compatible con ACPI a los controladores de dispositivos, lo que expone ciertos estados del sistema, del dispositivo y del procesador.

Estados de poder

Estados globales

La especificación ACPI define los siguientes cuatro estados globales "Gx" y seis estados de suspensión "Sx" para un sistema informático compatible con ACPI: [32] [33]

La especificación también define un estado Legacy : el estado de un sistema operativo que no es compatible con ACPI. En este estado, el hardware y la energía no se administran a través de ACPI, lo que efectivamente desactiva ACPI.

Estados del dispositivo

Los estados del dispositivo D0D3 dependen del dispositivo:

Estados del procesador

Los estados de energía de la CPU C0C3 se definen de la siguiente manera:

Estado de rendimiento

Mientras un dispositivo o procesador está en funcionamiento (D0 y C0, respectivamente), puede estar en uno de varios estados de rendimiento energético . Estos estados dependen de la implementación. P0 es siempre el estado de mayor rendimiento, y P1 a Pn son estados de menor rendimiento sucesivos. El número total de estados depende del dispositivo o procesador, pero no puede ser mayor que 16. [41]

Los estados P se conocen como SpeedStep en los procesadores Intel , como PowerNow! o Cool'n'Quiet en los procesadores AMD y como PowerSaver en los procesadores VIA .

Interfaces

Hardware

Los sistemas compatibles con ACPI interactúan con el hardware a través de una "Interfaz de Hardware de Función Fija (FFH)" o un modelo de programación de hardware independiente de la plataforma que se basa en el Lenguaje de Máquina ACPI (AML) específico de la plataforma proporcionado por el fabricante del equipo original (OEM).

Las interfaces de hardware de función fija son características específicas de la plataforma, proporcionadas por los fabricantes de la plataforma con el fin de mejorar el rendimiento y la recuperación ante fallos. Las PC basadas en Intel estándar tienen una interfaz de función fija definida por Intel, [43] que proporciona un conjunto de funciones básicas que reducen la necesidad de un sistema compatible con ACPI de contar con pilas de controladores completas para proporcionar una funcionalidad básica durante el arranque o en caso de un fallo importante del sistema.

La interfaz de error de plataforma ACPI (APEI) es una especificación para informar errores de hardware, por ejemplo, chipset o RAM al sistema operativo.

Firmware

ACPI define muchas tablas que proporcionan la interfaz entre un sistema operativo compatible con ACPI y el firmware del sistema ( BIOS o UEFI ). Esto incluye RSDP, RSDT, XSDT, FADT, FACS, DSDT, SSDT, MADT y MCFG, por ejemplo. [44] [45]

Las tablas permiten la descripción del hardware del sistema de una manera independiente de la plataforma y se presentan como estructuras de datos con formato fijo o en AML. La tabla AML principal es la DSDT (tabla de descripción de sistema diferenciada). La AML se puede descompilar con herramientas como iASL de Intel (código abierto, parte de ACPICA) para fines como aplicar parches a las tablas para ampliar la compatibilidad con sistemas operativos. [46] [47]

El puntero de descripción del sistema raíz (RSDP) se ubica de manera dependiente de la plataforma y describe el resto de las tablas.

Microsoft utiliza una tabla ACPI personalizada denominada Windows Platform Binary Table (WPBT) para permitir a los proveedores agregar software al sistema operativo Windows automáticamente. Algunos proveedores, como Lenovo , han sido descubiertos utilizando esta función para instalar software dañino como Superfish . [48] Samsung envió PC con Windows Update deshabilitado. [48] Las versiones de Windows anteriores a Windows 7 no admiten esta función, pero se pueden utilizar técnicas alternativas. Este comportamiento se ha comparado con los rootkits . [49] [50]

Tablas

Fantástico
Tabla de evaluación del estado de salud de la plataforma
DESLIZAR
Tabla de descripción de licencias de software

Crítica

El fundador de Ubuntu, Mark Shuttleworth , afirma que la ACPI es un riesgo para la seguridad. [51] Afirma que "abogar por la ACPI en su dispositivo de próxima generación es como abogar por la instalación de un caballo de Troya de proporciones monumentales en su sala de estar y en su centro de datos" y que "el firmware de su dispositivo es el mejor amigo de la NSA ". Continúa diciendo: "Su mayor error es asumir que la NSA es la única institución que abusa de esta posición de confianza; de hecho, es razonable asumir que todo el firmware es un pozo negro de inseguridad, cortesía de la incompetencia del más alto grado de los fabricantes y la competencia del más alto grado de una amplia gama de tales agencias". Sugiere un firmware declarativo de código abierto ( ACPI o no ACPI) como solución. [52]

La decisión de diseño en general no estuvo exenta de críticas. En noviembre de 2003, Linus Torvalds —autor del núcleo Linux— describió a ACPI como "un completo desastre de diseño en todos los sentidos". [52] [53]

Véase también

Lectura adicional

Referencias

  1. ^ "Descripción general de la ACPI" (PDF) . www.acpi.info . Archivado desde el original ( presentación de diapositivas en PDF) el 25 de mayo de 2019.
  2. ^ "Especificación de BIOS APM". Intel Corporation , Microsoft Corporation . Febrero de 1996. Archivado desde el original (RTF) el 6 de febrero de 2012. Consultado el 2 de julio de 2010 .
  3. ^ "¿Qué es ACPI (Interfaz avanzada de configuración y energía)? - Definición de WhatIs.com". SearchWindowsServer . Consultado el 18 de septiembre de 2020 .
  4. ^ "Árbol de dispositivos ACPI: representación del espacio de nombres ACPI: documentación del kernel de Linux" www.kernel.org . Consultado el 18 de septiembre de 2020 .
  5. ^ "La página web de Interfaz de energía y configuración avanzada tiene una nota destacada que enlaza a la página de Especificaciones ACPI preexistentes en el sitio web de UEFI". acpi.org . 23 de julio de 2014. Archivado desde el original el 22 de junio de 2011 . Consultado el 25 de enero de 2016 .
  6. ^ ab "Especificación de interfaz de energía y configuración avanzada, versión 6.5" (PDF) . UEFI.org/specifications . Agosto de 2022 . Consultado el 4 de octubre de 2022 .
  7. ^ Bernhard Kauer (agosto de 2009). "ATARE: Tablas ACPI y expresiones regulares" (PDF) . Consultado el 18 de febrero de 2019 .
  8. ^ Implementación de ACPI en FreeBSD - Usenix
  9. ^ ACPI en Linux, 2005
  10. ^ ACPICA: Arquitectura de componentes ACPI
  11. ^ "Léame del paquete del controlador ACPI". arcanoae.com . Consultado el 6 de septiembre de 2020 .
  12. ^ "Microsoft no utiliza ACPI para Windows". Der Standard (en alemán austriaco) . Consultado el 6 de noviembre de 2022 .
  13. ^ "Microsoft: ACPI solo funciona con funciones de Windows". Golem.de . Consultado el 6 de noviembre de 2022 .
  14. ^ Gates, Bill (24 de enero de 1999). «Extensiones ACPI» (PDF) . Archivado desde el original (PDF) el 2 de febrero de 2007.
  15. ^ Hewlett-Packard ; Intel Corporation ; Microsoft ; Phoenix Technologies ; Toshiba (6 de diciembre de 2011). «Especificación de interfaz de alimentación y configuración avanzada (revisión 5.0)» (PDF) . acpi.info . Archivado desde el original (PDF) el 14 de septiembre de 2012 . Consultado el 17 de noviembre de 2013 .
  16. ^ "Especificación de interfaz de energía y configuración avanzada (revisión 5.1)" (PDF) . uefi.org . 23 de julio de 2014 . Consultado el 24 de mayo de 2015 .
  17. ^ "Limitaciones al utilizar Microsoft Windows 98 en portátiles Compaq Armada" (PDF) . physik.hu-berlin.de. Octubre de 1998. p. 3 . Consultado el 27 de enero de 2014 .[ enlace muerto permanente ]
  18. ^ "Windows 98 en sistemas ThinkPad - ThinkPad General". Support.lenovo.com. Archivado desde el original el 3 de febrero de 2014. Consultado el 27 de enero de 2014 .
  19. ^ Robert Cowart; Brian Knittel (2000). Uso de Microsoft Windows 2000 Professional . Que Publishing. pág. 30. ISBN 978-0-7897-2125-9.
  20. ^ Windows 98 no admite el modo de refrigeración pasiva ACPI
  21. ^ "Artículo de portada: Errores y correcciones de Win98 - Diciembre de 1998". winmag.com . Archivado desde el original el 13 de octubre de 1999.
  22. ^ "Registro de cambios de ArcaOS" . Consultado el 24 de agosto de 2020 .
  23. ^ "Anuncio de lanzamiento de FreeBSD 5.0" www.freebsd.org . Consultado el 3 de diciembre de 2020 .
  24. ^ "acpi(4) - Páginas del manual de NetBSD". man.netbsd.org . Consultado el 3 de diciembre de 2020 .
  25. ^ "acpi(4) - Páginas del manual de OpenBSD". man.openbsd.org . Consultado el 3 de diciembre de 2020 .
  26. ^ Therien, Guy (6 de enero de 2000). «Revisión técnica de la especificación ACPI 2.0, Intel Developer Forum» (PPT) . Intel Corporation. Archivado desde el original el 21 de julio de 2011. Consultado el 21 de agosto de 2011 .
  27. ^ Marshall, Allen. "ACPI en Windows Vista" (PPT) . Microsoft Corporation . Consultado el 2 de julio de 2010 .
  28. ^ "Acpi.sys: el controlador ACPI de Windows". Microsoft Corporation . 15 de junio de 2017 . Consultado el 20 de septiembre de 2019 .
  29. ^ ab El estado de ACPI en el kernel de Linux
  30. ^ BIOS ACPI.msdn.microsoft.com .
  31. ^ Siever, Ellen; Weber, Aaron; Figgins, Stephen; Love, Robert; Robbins, Arnold (2005). Linux en pocas palabras (5.ª ed.). Sebastopol, California: O'Reilly. pág. 36. ISBN 978-0-596-52949-9.OCLC 773210086  .
  32. ^ ACPI Spec Rev 5.0 - fechada el 6 de diciembre de 2011
  33. ^ Anand Lal Shimpi (5 de octubre de 2012). "Análisis de la arquitectura Haswell de Intel". AnandTech . Consultado el 20 de octubre de 2013 .
  34. ^ windows-driver-content. "Modern Standby". docs.microsoft.com . Consultado el 20 de marzo de 2020 .
  35. ^ "S0ix States". software.intel.com . 9 de marzo de 2020.
  36. ^ Wang, Wendy (17 de octubre de 2018). "Cómo lograr estados S0ix en Linux*". 01.org .
  37. ^ "Estados D0ix". software.intel.com . 9 de marzo de 2020.
  38. ^ "Athlon II X2: Hardware C1E y regreso del error CnQ". AnandTech . Consultado el 26 de octubre de 2020 .
  39. ^ Wasson, Scott (21 de febrero de 2005). "Procesadores de la serie Pentium 4 600 de Intel". The Tech Report . p. 2.
  40. ^ "Paquete de procesador y estados C del núcleo". AnandTech . 9 de junio de 2013 . Consultado el 20 de octubre de 2013 .
  41. ^ "Especificación de interfaz de energía y configuración avanzada, revisión 3.0, sección 2.6 Definiciones de estado de rendimiento de procesador y dispositivo" (PDF) . ACPI.info . 2 de septiembre de 2004. p. 23. Archivado desde el original (PDF) el 28 de noviembre de 2015 . Consultado el 19 de agosto de 2015 .
  42. ^ Agregación de enlaces
  43. ^ Intel Corporation (septiembre de 2006). «Intel Processor Vendor-Specific ACPI» (PDF) . Archivado desde el original (PDF) el 25 de diciembre de 2012. Consultado el 5 de octubre de 2014 .
  44. ^ Brown, Len (20 de julio de 2005). "ACPI en Linux". Simposio Linux de Ottawa : 3. CiteSeerX 10.1.1.173.2206 . 
  45. ^ "Tablas ACPI: la documentación del núcleo de Linux". www.kernel.org . Archivado desde el original el 20 de octubre de 2020 . Consultado el 8 de noviembre de 2020 .
  46. ^ "DSDT". ArchWiki .
  47. ^ "Introducción a ACPI". GitBook .
  48. ^ ab Hoffman, Chris (19 de agosto de 2015). "Crapware zombi: cómo funciona la tabla binaria de la plataforma Windows". How-To Geek .
  49. ^ "El 'rootkit' de los proveedores: 'Windows Platform Binary Table' (WPBT)". Born's Tech and Windows World . 6 de diciembre de 2017.
  50. ^ Mayank Sharma (27 de septiembre de 2021). "Millones de PC con Windows 10 expuestas por una desagradable vulnerabilidad de seguridad". TechRadar . Consultado el 10 de noviembre de 2022 .
  51. ^ Blog de Mark Shuttleworth (17 de marzo de 2014), "ACPI, firmware y su seguridad"
  52. ^ ab Linux Magazine número 162, mayo de 2014, página 9
  53. ^ Searls, Doc (25 de noviembre de 2003). "Linus & the Lunatics, Part II". Linux Journal . Consultado el 13 de enero de 2010 .

Enlaces externos