Advanced Host Controller Interface
Encyclopedia
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 3Gb/s standard, although it exposes SATA's advanced capabilities (such as hot swapping
and native command queuing
) such that host systems can utilize them.
, the current version of the specification is v. 1.3.
emulation, standard AHCI mode, or vendor-specific RAID
(which generally enables AHCI in order to take advantage of its capabilities). Intel recommends choosing RAID mode on their motherboard
s (which also enables AHCI) 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.
and newer versions of Windows, Linux
-based operating systems (from kernel
2.6.19 onwards), OpenBSD
(version 4.1 onwards), NetBSD
, FreeBSD
, OS X, and Solaris 10 (8/07 and onwards). 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 does not provide support out of the box.
Some operating systems, notably Windows Vista and Windows 7, do not configure themselves to load the AHCI driver upon boot if the drive 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.
On Windows Vista and Windows 7, this can be fixed by setting non-AHCI mode in the BIOS then booting and changing the registry, then changing the BIOS setting to AHCI.
Registry instructions:1. Startup "Regedit"
2. Open HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlset / Services
3. Open msahci
4. In the right field left click on "start" and go to Modify
5. In the value Data field enter "0" and click "ok"
A similar problem can occur on Linux systems if the AHCI driver is built as a module, rather than included in the kernel, as it may not be loaded into the initrd (initial RAM disk) created when in legacy mode; the workaround is to build a new initrd containing the AHCI module.
Serial ATA
Serial ATA is a computer bus interface for connecting host bus adapters to mass storage devices such as hard disk drives and optical drives...
(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 3Gb/s standard, although it exposes SATA's advanced capabilities (such as hot swapping
Hot swapping
Hot swapping and hot plugging are terms used to describe the functions of replacing computer system components without shutting down the system...
and native command queuing
Native Command Queuing
Native Command Queuing is a technology designed to increase performance of SATA hard disks under certain conditions by allowing the individual hard disk to internally optimize the order in which received read and write commands are executed...
) such that host systems can utilize them.
, the current version of the specification is v. 1.3.
Operating modes
Many SATA controllers offer selectable modes of operation: legacy Parallel ATAAT Attachment
Parallel ATA , originally ATA, is an interface standard for the connection of storage devices such as hard disks, solid-state drives, floppy drives, and optical disc drives in computers. The standard is maintained by X3/INCITS committee...
emulation, standard AHCI mode, or vendor-specific RAID
RAID
RAID is a storage technology that combines multiple disk drive components into a logical unit...
(which generally enables AHCI in order to take advantage of its capabilities). Intel recommends choosing RAID mode on their motherboard
Motherboard
In personal computers, a motherboard is the central printed circuit board in many modern computers and holds many of the crucial components of the system, providing connectors for other peripherals. The motherboard is sometimes alternatively known as the mainboard, system board, or, on Apple...
s (which also enables AHCI) 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.
Operating system support
AHCI is supported out of the box on Windows VistaWindows Vista
Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...
and newer versions of Windows, Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
-based operating systems (from kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....
2.6.19 onwards), OpenBSD
OpenBSD
OpenBSD is a Unix-like computer operating system descended from Berkeley Software Distribution , a Unix derivative developed at the University of California, Berkeley. It was forked from NetBSD by project leader Theo de Raadt in late 1995...
(version 4.1 onwards), NetBSD
NetBSD
NetBSD is a freely available open source version of the Berkeley Software Distribution Unix operating system. It was the second open source BSD descendant to be formally released, after 386BSD, and continues to be actively developed. The NetBSD project is primarily focused on high quality design,...
, FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...
, OS X, and Solaris 10 (8/07 and onwards). 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 does not provide support out of the box.
Some operating systems, notably Windows Vista and Windows 7, do not configure themselves to load the AHCI driver upon boot if the drive 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.
On Windows Vista and Windows 7, this can be fixed by setting non-AHCI mode in the BIOS then booting and changing the registry, then changing the BIOS setting to AHCI.
Registry instructions:1. Startup "Regedit"
2. Open HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlset / Services
3. Open msahci
4. In the right field left click on "start" and go to Modify
5. In the value Data field enter "0" and click "ok"
A similar problem can occur on Linux systems if the AHCI driver is built as a module, rather than included in the kernel, as it may not be loaded into the initrd (initial RAM disk) created when in legacy mode; the workaround is to build a new initrd containing the AHCI module.