Advanced Host Controller Interface, or AHCI, is a technical standard for an interface that enables software to communicate with Serial ATA (SATA) devices. These peripheral component interconnect (PCI)-class devices move data between system memory and SATA storage media.
In 2004, Intel released the AHCI specification to define the functional behavior and software interface of AHCI. The specification also provides a standard way to program SATA-AHCI adapters.
The specification was developed by the AHCI Contributor Group, which was comprised of hardware, software and OEM vendors, and was chaired by Intel. Companies in the group included AMD, Dell, Marvell, Maxtor, Microsoft, Red Hat, Seagate and StorageGear.
AHCI was an important part of building momentum for SATA II technology, providing a standard controller interface that optimizes advanced SATA features that weren't available with the older Integrated Drive Electronics (IDE) standard interface. Version 1.3.1 is the most recent iteration of the AHCI specification.
How AHCI works
Most motherboards have AHCI enabled by default in the Unified Extensible Firmware Interface (UEFI) or BIOS. Older motherboards may have IDE mode enabled by default and would need to be switched to AHCI before the operating system (OS) is installed.
AHCI is supported on Windows Vista and later versions of Windows; Linux since version 2.6.19; OS X; and various open source operating systems, such as OpenBSD, NetBSD and FreeBSD. While Windows Vista and Windows 7 include the AHCI driver, those OSes won't install AHCI if it's not enabled on the boot drive's controller.
SATA hard drives and solid-state drives (SSDs) offer several modes of operation: IDE, AHCI or RAID, which usually has AHCI enabled. However, it isn't easy to switch the BIOS setting from IDE mode to AHCI once the OS is installed. Windows has a registry workaround that will allow AHCI to be enabled after the OS is installed. Older OS versions require hardware-specific drivers to support AHCI.
As a traditional storage protocol developed for hard drives and tape, AHCI was designed to manage a single storage request queue. For AHCI, this queue has a depth -- the number of I/O requests that can be kept waiting to be serviced in a port queue -- of 32 commands.
Benefits and drawbacks of AHCI
AHCI enables advanced SATA features, such as hot swapping and Native Command Queuing (NCQ). Hot swapping enables SATA drives to be switched out without having to shut down the computer.
NCQ optimizes the way SSDs and hard drives handle simultaneous requests for data, minimizing the movement of the read-write heads and speeding up access time on hard drives using AHCI. On SSDs, NCQ improves the performance of large file transfers.
One downside to AHCI is high latency when it is used with SSDs because the specification was developed for rotating storage media and not flash. Also, AHCI's limited queue depth means the number of I/O requests can easily become a bottleneck. Additional management is required to avoid having I/O requests fail because they exceed the queue depth.
AHCI vs. NVMe
Because it was specifically developed for SSDs, NVMe is much faster than AHCI, reduces latency and provides better IOPS. Specifically, NVMe significantly increases the number of I/O queues possible with queue depths of as much as 65,000.