La Interfaz de controlador de host avanzada ( AHCI ) es un estándar técnico definido por Intel que especifica la interfaz a nivel de registro de los controladores de host Serial ATA (SATA) de una manera no específica de implementación en sus chipsets de placa base . [1]
La especificación describe una estructura de memoria del sistema para que los proveedores de hardware informático intercambien datos entre la memoria del sistema host y los dispositivos de almacenamiento conectados . AHCI ofrece a los desarrolladores de software y diseñadores de hardware un método estándar para detectar, configurar y programar adaptadores SATA/AHCI. AHCI es independiente del estándar SATA 3 Gbit/s, aunque expone las capacidades avanzadas de SATA (como el intercambio en caliente y la cola de comandos nativa ) de modo que los sistemas host puedan utilizarlas. Para las unidades de estado sólido modernas , la interfaz ha sido reemplazada por NVMe . [2]
La versión actual de la especificación es 1.3.1.
Muchos controladores SATA ofrecen modos de funcionamiento seleccionables: emulación ATA paralela heredada (más comúnmente llamada modo IDE), modo AHCI estándar (también conocido como modo nativo) o RAID específico del proveedor (que generalmente habilita AHCI para aprovechar sus capacidades). Intel recomienda elegir el modo RAID en sus placas base (que también habilita AHCI) en lugar del modo AHCI/SATA para una máxima flexibilidad. [3] El modo heredado es un mecanismo de compatibilidad con versiones anteriores de software destinado a permitir que el controlador SATA se ejecute en sistemas operativos heredados que no son compatibles con SATA o donde no existe un controlador para que el sistema operativo sea compatible con SATA.
Cuando un controlador SATA está configurado para funcionar en modo IDE, la cantidad de dispositivos de almacenamiento por controlador generalmente está limitada a cuatro (dos canales IDE, dispositivo maestro y dispositivo esclavo con hasta dos dispositivos por canal), en comparación con el máximo de 32 dispositivos/puertos cuando se configura en modo AHCI. [4] [1] Pero las interfaces SATA del chipset pueden emular más de un "controlador IDE" cuando se configura en modo IDE.
AHCI es compatible de fábrica con Windows Vista y versiones posteriores, sistemas operativos basados en Linux (desde la versión 2.6.19 del kernel ), OpenBSD (desde la versión 4.1), NetBSD (desde la versión 4.0), FreeBSD (desde la versión 8.0), [5] macOS , GNU Mach , ArcaOS , [6] eComStation (desde la versión 2.1) y Solaris 10 (desde la versión 8/07). [7] DragonFlyBSD basó su implementación de AHCI en OpenBSD y agregó características extendidas como compatibilidad con multiplicadores de puertos. Las versiones anteriores de los sistemas operativos requieren controladores específicos del hardware para admitir AHCI. Windows XP y versiones anteriores no brindan compatibilidad con AHCI de fábrica.
Algunos sistemas operativos, en particular Windows Vista , Windows 7 , Windows 8 , Windows 8.1 y Windows 10 , no se configuran para cargar el controlador AHCI al iniciarse si el controlador SATA no estaba en modo AHCI en el momento en que se instaló el sistema operativo. Si bien se trata de una condición que se puede corregir fácilmente, sigue siendo un problema constante con el estándar AHCI.
El síntoma más frecuente de un sistema operativo (o sistemas) que se instalan en modo IDE (en algunas implementaciones de firmware BIOS, también llamado "modo IDE combinado") es que la unidad del sistema generalmente no arranca, con un mensaje de error resultante, si el controlador SATA (en BIOS) se cambia inadvertidamente al modo AHCI después de la instalación del sistema operativo. En Microsoft Windows, el síntoma es un bucle de arranque que comienza con un error de pantalla azul, si no se corrige.
Técnicamente hablando, se trata de un error de implementación de AHCI que se puede evitar, pero que aún no se ha solucionado. Como solución provisional, Intel recomienda cambiar el controlador de la unidad a AHCI o RAID antes de instalar un sistema operativo. [3] (También puede ser necesario cargar controladores AHCI o RAID específicos del chipset en el momento de la instalación, por ejemplo desde una unidad flash USB).
En Windows Vista y Windows 7, esto se puede solucionar configurando el msahci
controlador del dispositivo para que se inicie en el momento del arranque (en lugar de cuando se lo solicite). Configurar el modo no AHCI (es decir, el modo IDE o combinado) en el BIOS permitirá al usuario iniciar Windows y, por lo tanto, se puede realizar el cambio de registro requerido . En consecuencia, el usuario tiene la opción de continuar usando el sistema en modo combinado o cambiar al modo AHCI. [8]
Entre otros, con Windows 10 y 8, esto se puede solucionar forzando la recarga de los controladores correctos durante el modo seguro . [9]
En Windows 8, Windows 8.1 y Windows Server 2012 , el controlador ha cambiado de msahci
a storahci
, [10] y los procedimientos para actualizar al controlador AHCI son similares a los de Windows 7. [11] En Windows 8, 8.1 y Windows Server 2012, cambiar del modo IDE al modo AHCI sin actualizar primero el registro hará que la unidad de arranque sea inaccesible (es decir, lo que dará como resultado un bucle de arranque recurrente, que comienza con un error de pantalla azul).
En Windows 10, después de cambiar el controlador al modo AHCI, si se permite que el sistema operativo se reinicie un par de veces después del inicio del bucle de arranque, que comienza con un BSOD INACCESSIBLE_BOOT_DEVICE, Windows presenta opciones de recuperación. De las opciones avanzadas, si se selecciona la opción Reparación de inicio, Windows intenta solucionar el problema y la PC comienza a funcionar con normalidad.
Un problema similar puede ocurrir en sistemas Linux si el controlador AHCI se compila como un módulo del núcleo en lugar de estar integrado en la imagen del núcleo , ya que puede no estar incluido en el initrd (disco RAM inicial) creado cuando el controlador se configura para ejecutarse en modo Legacy. La solución es crear un nuevo initrd que contenga el módulo AHCI o crear el controlador AHCI en la imagen del núcleo. [12]
La gestión de energía se gestiona mediante el protocolo Aggressive Link Power Management (ALPM).