# AHCI

La interfaz de controlador host avanzada (AHCI, siglas de Advanced Host Controller Interface) es una norma técnica definida por Intel que especifica el funcionamiento de adaptadores Serial ATA (SATA) de bus host de una manera no específica de la implementación.
La especificación describe una estructura de memoria del sistema para los fabricantes de hardware de ordenador para intercambiar datos entre la memoria del sistema host y los dispositivos de almacenamiento conectados. AHCI proporciona 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 3Gb/s, si bien expone las capacidades avanzadas de SATA (como NCQ e intercambio en caliente) de tal manera que los sistemas de acogida pueda utilizarlos.
A partir de octubre de 2010, la versión actual de la especificación es la 1.3.

## Modos de funcionamiento

Muchos controladores SATA ofrecen modos de operación seleccionables: Emulación de compatibilidad de PATA, estándar el modo AHCI o RAID específica del proveedor (que por lo general permite AHCI para aprovechar sus funcionalidades). Intel recomienda seleccionar el modo de RAID en sus placas madre (que también permite AHCI) en lugar del modo AHCI/SATA para una máxima flexibilidad. El modo tradicional es un modo de compatibilidad por software con versiones anteriores; mecanismo destinado a permitir que el controlador SATA pueda funcionar en los sistemas operativos tradicionales, que no incorporan funcionalidad SATA directamente (non SATA-aware) o cuando no existe un driver para el sistema operativo que se quiere emplear, aunque si tenga esta funcionalidad (SATA-aware).

## Sistemas operativos compatibles

AHCI es compatible de forma nativa por los siguientes sistemas operativos: Windows Vista y las versiones más recientes de Windows, sistemas operativos basados en Linux (desde el kernel 2.6.19), OpenBSD (versión 4.1 y posterior), NetBSD, FreeBSD, OS X y Solaris 10 (8/07 y posteriores). La aplicación AHCI DragonflyBSD se basó en OpenBSD y añadió características extendidas, como el soporte de puerto multiplicador. Las versiones antiguas de sistemas operativos requieren controladores de hardware específicos para soportar AHCI. Windows XP no lo soporta de forma nativa.
Algunos sistemas operativos, especialmente Windows Vista y Windows 7, no se configura para cargar el controlador AHCI en el arranque si el controlador SATA de la unidad de disco no se configura en modo AHCI durante la instalación, lo que puede generar mensajes de error indicando que el controlador SATA se cambió a modo AHCI después de la instalación. Por esta razón, Intel recomienda que el variador de velocidad a AHCI o RAID se cambie antes de instalar el sistema operativo (También puede ser necesario cargar un chipset AHCI o controladores RAID específicos, por ejemplo, desde una unidad USB Flash durante la instalación).
En Windows Vista y Windows 7, esto se puede solucionar mediante la selección de un modo no AHCI en la BIOS, luego cambiar el registro, a continuación, cambiar la configuración del BIOS a AHCI.
Un problema similar puede ocurrir en los sistemas Linux, si el controlador AHCI está construido como un módulo, en lugar de incluirse en el núcleo, ya que no se pueden cargar en el initrd (initial RAM disk), creado en el modo de herencia, la solución es construir un nuevo initrd que contiene el módulo de AHCI.