Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Advanced Host Controller Interface
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Computer standard for SATA host controllers}} {{redirect-distinguish|AHCI|Arts and Humanities Citation Index}} {{Infobox technology standard | title = AHCI | long_name = Advanced Host Controller Interface | native_name = <!-- Name in local language. If more than one, separate using {{plain list}} --> | native_name_lang = <!-- ISO 639-2 code e.g. "fr" for French. If more than one, use {{lang}} inside native_name items instead --> | image = | caption = | status = | year_started = <!-- {{Start date|YYYY|MM|DD|df=y}} --> | first_published = <!-- {{Start date|YYYY|MM|DD|df=y}} --> | version = 1.3.1 | version_date = {{Start date|2011|11|11}} | preview = | preview_date = | organization = [[Intel]] | committee = | editors = | authors = | base_standards = | related_standards = | abbreviation = | domain = | license = | website = {{URL|https://www.intel.com/content/www/us/en/io/serial-ata/ahci.html}} }} The '''Advanced Host Controller Interface''' ('''AHCI''') is a technical standard defined by [[Intel]] that specifies the [[Hardware register|register-level interface]] of [[Serial ATA]] (SATA) [[host controller]]s in a non-implementation-specific manner in its [[Intel chips|motherboard chipsets]].<ref name=":0" /> The specification describes a system memory structure for computer hardware vendors to exchange data between host system [[computer memory|memory]] and attached [[computer storage device|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|native command queuing]]) such that host systems can utilize them. For modern [[Solid-state drive|solid state drives]], the interface has been superseded by [[NVM Express|NVMe]].<ref>{{Cite web|title=NVMe vs. SATA: Which SSD Technology Is Faster?|url=https://www.howtogeek.com/657972/nvme-vs.-sata-which-ssd-technology-is-faster/|access-date=2020-10-10|website=www.howtogeek.com}}</ref> The current version of the specification is 1.3.1. == Operating modes == Many SATA controllers offer selectable modes of operation: legacy [[AT Attachment|Parallel ATA]] emulation (more commonly called IDE Mode), 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 [[motherboard]]s (which also enables AHCI) rather than AHCI/SATA mode for maximum flexibility.<ref name="intel">{{cite web |url=http://www.intel.com/support/chipsets/imsm/sb/CS-015988.htm |title=Intel Matrix Storage Technology - Changing and/or choosing Serial ATA Modes |publisher=Intel |access-date=2007-09-30}}</ref> Legacy mode is a software [[Backward compatibility|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 IDE Mode, the number of storage devices per controller is usually limited to four (two IDE channels, master device and slave device with up to two devices per channel), compared to the maximum of 32 devices/ports when configured in AHCI mode.<ref>{{cite web |url=http://www.bswd.com/pciide.pdf |title=PCI IDE Controller Specification 1.0 |publisher=Berg Software Design |access-date=2015-05-03 |archive-date=2015-08-14 |archive-url=https://web.archive.org/web/20150814174048/http://www.bswd.com/pciide.pdf |url-status=dead }}</ref><ref name=":0">{{cite web |url=http://www.intel.com/content/www/us/en/io/serial-ata/serial-ata-ahci-spec-rev1-3-1.html |title=Serial ATA AHCI: Specification, Rev. 1.3.1 |publisher=Intel Corp. |access-date=2015-05-03}}</ref> But the [[chipset]] SATA interfaces may emulate more than one "IDE controller" when configured in IDE Mode. == 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 [[Linux kernel|kernel]]), [[OpenBSD]] (since version 4.1), [[NetBSD]] (since version 4.0), [[FreeBSD]] (since version 8.0),<ref>{{Cite web|url=https://www.freebsd.org/cgi/man.cgi?ahci(4)|title = Ahci(4)}}</ref> [[macOS]], [[GNU Mach]], [[ArcaOS]],<ref>{{cite web|url=https://www.arcanoae.com/wp-content/uploads/wiki/ArcaOS-changes.txt|title=ArcaOS Changelog|access-date=2020-08-24}}</ref> [[eComStation]] (since version 2.1), and [[Solaris 10]] (since version 8/07).<ref>{{cite web|url=http://docs.sun.com/app/docs/doc/817-0547/gevhg |title=What's New in the Solaris 10 8/07 Release - Driver Enhancements |publisher=Oracle |access-date=2010-10-20 |archive-url=https://web.archive.org/web/20071025053159/http://docs.sun.com/app/docs/doc/817-0547/gevhg |archive-date=2007-10-25}}</ref> [[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. The Windows inbox AHCI driver (StorAHCI.sys) does not offer [[hardware acceleration]]. === 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 (or systems) that are installed in IDE mode (in some BIOS firmware implementations otherwise called 'Combined IDE mode'), is that the system drive typically fails to boot, with an ensuing error message, if the SATA controller (in BIOS) 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. 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.<ref name="intel"/> (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 <code>msahci</code> device driver to start at boot time (rather than on-demand). Setting non-AHCI mode (i.e. IDE or Combined mode) in the [[BIOS]] will allow the user to boot into Windows, and thereby the required [[Windows registry|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.<ref>{{cite web |url=http://support.microsoft.com/kb/922976 |title=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" |publisher=Microsoft |access-date=2011-04-20 |archive-url=https://web.archive.org/web/20110524021238/http://support.microsoft.com/kb/922976 |archive-date=24 May 2011 |url-status=live}}</ref> Inter alia with Windows 10 and 8, this can be fixed by forcing the correct drivers to reload during [[Safe Mode]].<ref>{{cite news |url=http://www.tenforums.com/performance-maintenance/15006-attn-ssd-owners-enabling-ahci-mode-after-windows-10-installation.html |title=Enabling AHCI mode AFTER Windows 10 installation |publisher=tenforums.com user Toobad |access-date=2015-12-19}}</ref> In Windows 8, Windows 8.1 and [[Windows Server 2012]], the controller driver has changed from <code>msahci</code> to <code>storahci</code>,<ref>{{cite web |url=http://msdn.microsoft.com/en-us/library/windows/desktop/hh848066%28v=vs.85%29.aspx |title=StorAHCI replaces MSAHCI (Windows) |publisher=Microsoft}}</ref> and the procedures to upgrade to the AHCI controller is similar to that of Windows 7.<ref>{{cite web |url=http://www.happysysadm.com/2012/12/intel-g530-nas-performance-part-3.html |title=Improving performance of SATA drives on Windows 2012}}</ref> On Windows 8, 8.1 and Windows Server 2012, changing from IDE mode to AHCI mode without first updating the registry will make the boot drive inaccessible (i.e. resulting in a recurring boot loop, which begins with a Blue Screen error). 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]] (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.<ref>{{cite web|url=http://www.novell.com/support/kb/doc.php?id=3744228 |title=Support | How to enable AHCI support after install |publisher=Novell.com |access-date=2014-05-11}}</ref> == Power management == Power management is handled by the [[Aggressive Link Power Management]] (ALPM) protocol. == See also == {{Div col|colwidth=25em}} * [[Open Host Controller Interface]] (OHCI) * [[Universal Host Controller Interface]] (UHCI) * [[Enhanced Host Controller Interface]] (EHCI) * [[Extensible Host Controller Interface]] (XHCI) * [[Wireless Host Controller Interface]] (WHCI) * [[Host controller interface (USB, Firewire)]] {{div col end}} == References == {{Reflist}} == External links == *[http://www.intel.com/technology/serialata/ahci.htm "AHCI Specification"]. Intel. *[http://wiki.osdev.org/AHCI#Introduction "AHCI"]. OSDev Wiki [[Category:Serial ATA]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:Infobox technology standard
(
edit
)
Template:Redirect-distinguish
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)