Advanced Host Controller Interface
The Advanced Host Controller Interface (AHCI) is a technical standard defined by Intel that specifies the operation of Serial ATA (SATA) host bus adapters in a non-implementation-specific manner.
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 as hot swapping and native command queuing) such that host systems can utilize them.
As of March 2014, 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 (also known as native mode), or vendor-specific RAID (which generally enables AHCI in order to take advantage of its capabilities). Intel recommends choosing RAID mode on their motherboards (which also enables AHCI) rather than AHCI/SATA mode for maximum flexibility.[1] 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 (two IDE channels, primary and secondary, with up to two devices per channel), compared to the maximum of 32 devices/ports when configured in AHCI mode.[2][3]
Operating system support
AHCI is supported out of the box on Windows Vista and later, Linux-based operating systems (since version 2.6.19 of the kernel), OpenBSD (since version 4.1), NetBSD (since version 4.0), FreeBSD (since version 8.0), OS X, eComStation (since version 2.1), and Solaris 10 (since version 8/07).[4] 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 support out of the box.
Boot issues
Some operating systems, notably Windows Vista, Windows 7, Windows 8 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 of installation. This can cause failure to boot, with an error message, if the SATA controller is later switched to AHCI mode. For this reason, Intel recommends changing the drive controller to AHCI or RAID before installing an operating system.[1] (It may also be necessary to load chipset-specific AHCI or RAID drivers at installation time, for example from a USB flash drive.)
On Windows Vista and Windows 7, this can be fixed by configuring the msahci
device driver to start at boot time (rather than on-demand). Setting non-AHCI mode in the BIOS will allow the user to boot Windows, where the required registry change can be performed. The BIOS can then be changed to AHCI.[5]
On Windows 10, this can be fixed by forcing the correct drivers to reload during safe mode.[6]
On Windows 8 and Windows Server 2012, the name of the controller has changed from msahci
to storahci
,[7] and the procedure to upgrade to the new controller to it is similar to that of Windows 7.[8] On Windows 8 and Windows Server 2012, changing the SATA mode to AHCI without updating the registry will make the boot drive inaccessible.
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 (initial RAM disk) 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.[9]
Power management
Power management is handled by the Aggressive Link Power Management (ALPM) protocol.
See also
References
- 1 2 "Intel Matrix Storage Technology - Changing and/or choosing Serial ATA Modes". Intel. Retrieved 2007-09-30.
- ↑ "PCI IDE Controller Specification 1.0" (PDF). Berg Software Design. Retrieved 2015-05-03.
- ↑ "Serial ATA AHCI: Specification, Rev. 1.3.1". Intel Corp. Retrieved 2015-05-03.
- ↑ "What's New in the Solaris 10 8/07 Release - Driver Enhancements". Oracle. Retrieved 2010-10-20.
- ↑ "Error Message when you start a Windows 7 or Windows Vista-based computer after you change the SATA mode of the boot drive: "STOP 0x0000007B INACCESSABLE_BOOT_DEVICE"". Microsoft. Archived from the original on 24 May 2011. Retrieved 2011-04-20.
- ↑ "Enabling AHCI mode AFTER Windows 10 installation". tenforums.com user Toobad. Retrieved 2015-12-19.
- ↑ "StorAHCI replaces MSAHCI (Windows)". Microsoft.
- ↑ "Improving performance of SATA drives on Windows 2012".
- ↑ "Support | How to enable AHCI support after install". Novell.com. Retrieved 2014-05-11.
External links
- "AHCI Specification". Intel. Retrieved 2010-10-20.
- "AHCI". OSDev Wiki. Retrieved 2012-11-01.