Advanced Host Controller Interface


The Advanced Host Controller Interface is a technical standard defined by Intel that specifies the operation of Serial ATA host controllers in a non-implementation-specific manner in its motherboard chipsets.
The specification describes a system memory structure for computer hardware vendors to exchange data between host system memory and attached storage devices. AHCI gives software developers and hardware designers a standard method for detecting, configuring, and programming SATA/AHCI adapters. AHCI is separate from the SATA 3 Gbit/s standard, although it exposes SATA's advanced capabilities such that host systems can utilize them. For modern solid state drives, the interface has been superseded by NVMe.
, the current version of the specification is 1.3.1.

Operating modes

Many SATA controllers offer selectable modes of operation: legacy Parallel ATA emulation, standard AHCI mode, or vendor-specific RAID. Intel recommends choosing RAID mode on their motherboards rather than AHCI/SATA mode for maximum flexibility. Legacy mode is a software backward-compatibility mechanism intended to allow the SATA controller to run in legacy operating systems which are not SATA-aware or where a driver does not exist to make the operating system SATA-aware.
When a SATA controller is configured to operate in Legacy Mode, the number of storage devices per controller is usually limited to four, compared to the maximum of 32 devices/ports when configured in AHCI mode.

Operating system support

AHCI is supported out of the box on Windows Vista and later, Linux-based operating systems, OpenBSD, NetBSD, FreeBSD, macOS, eComStation, and Solaris 10. DragonFlyBSD based its AHCI implementation on OpenBSD's and added extended features such as port multiplier support. Older versions of operating systems require hardware-specific drivers in order to support AHCI. Windows XP and older do not provide AHCI support out of the box.

System drive boot issues

Some operating systems, notably Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10, do not configure themselves to load the AHCI driver upon boot if the SATA controller was not in AHCI mode at the time the operating system was installed. Although this is an easily rectifiable condition, it remains an ongoing issue with the AHCI standard.
The most prevalent symptom for an operating system that are installed in IDE mode, is that the system drive typically fails to boot, with an ensuing error message, if the SATA controller is inadvertently switched to AHCI mode after OS installation. In Microsoft Windows the symptom is a boot loop which begins with a Blue Screen error, if not rectified - and through no fault of Microsoft Windows.
Technically speaking, this is an implementation bug with AHCI that can be avoided, but it has not been fixed yet. As an interim resolution, Intel recommends changing the drive controller to AHCI or RAID before installing an operating system..
On Windows Vista and Windows 7, this can be fixed by configuring the msahci device driver to start at boot time. Setting non-AHCI mode in the BIOS will allow the user to boot into Windows, and thereby the required registry change can be performed. Consequently, the user then has the option of continuing to use the system in Combined mode or switching to AHCI mode.
With Windows 10, this can be fixed by forcing the correct drivers to reload during Safe Mode.
In Windows 8, Windows 8.1 and Windows Server 2012, the controller driver has changed from msahci to storahci, and the procedures to upgrade to the AHCI controller is similar to that of Windows 7. On Windows 8, 8.1 and Windows Server 2012, changing from SATA mode to AHCI mode without first updating the registry will make the boot drive inaccessible.
In Windows 10, after changing the controller to AHCI mode, if the OS is allowed to reboot a couple of times after the start of the boot loop, which starts with an INACCESSIBLE_BOOT_DEVICE BSOD, Windows presents recovery options. Out of the Advanced options, if Startup Repair option is selected, Windows attempts to fix the issue and the PC begins to function normally.
A similar problem can occur on Linux systems if the AHCI driver is compiled as a kernel module rather than built into the kernel image, as it may not be included in the initrd created when the controller is configured to run in Legacy Mode. The solution is either to build a new initrd containing the AHCI module, or to build the AHCI driver into the kernel image.

Power management

Power management is handled by the Aggressive Link Power Management protocol.