Расширенный интерфейс хост-контроллера ( AHCI ) — это технический стандарт, разработанный корпорацией Intel , который определяет интерфейс на уровне регистров хост -контроллеров Serial ATA (SATA) в неспецифической для конкретной реализации манере в наборах микросхем материнских плат . [1]
Спецификация описывает структуру системной памяти для поставщиков компьютерного оборудования для обмена данными между памятью хост-системы и подключенными устройствами хранения данных . AHCI предоставляет разработчикам программного обеспечения и проектировщикам оборудования стандартный метод обнаружения, настройки и программирования адаптеров SATA/AHCI. AHCI отделен от стандарта SATA 3 Гбит/с, хотя он раскрывает расширенные возможности SATA (такие как горячая замена и собственная очередь команд ), так что хост-системы могут использовать их. Для современных твердотельных накопителей интерфейс был заменен на NVMe . [2]
Текущая версия спецификации — 1.3.1.
Многие контроллеры SATA предлагают выбираемые режимы работы: устаревшая эмуляция Parallel ATA (чаще называемая режимом IDE), стандартный режим AHCI (также известный как Native Mode) или RAID , специфичный для поставщика (который обычно включает AHCI, чтобы воспользоваться его возможностями). Intel рекомендует выбирать режим RAID на своих материнских платах (который также включает AHCI), а не режим AHCI/SATA для максимальной гибкости. [3] Устаревший режим — это программный механизм обратной совместимости , предназначенный для того, чтобы контроллер SATA мог работать в устаревших операционных системах, которые не поддерживают SATA или где не существует драйвера, чтобы сделать операционную систему поддерживающей SATA.
Когда контроллер SATA настроен на работу в режиме IDE, количество устройств хранения на контроллер обычно ограничено четырьмя (два канала IDE, главное устройство и подчиненное устройство, до двух устройств на канал), по сравнению с максимальным количеством в 32 устройства/порта при настройке в режиме AHCI. [4] [1] Однако интерфейсы SATA чипсета могут эмулировать более одного «контроллера IDE» при настройке в режиме IDE.
AHCI поддерживается из коробки в Windows Vista и более поздних версиях, операционных системах на базе Linux (начиная с версии ядра 2.6.19 ), OpenBSD (начиная с версии 4.1), NetBSD (начиная с версии 4.0), FreeBSD (начиная с версии 8.0), [5] macOS , GNU Mach , ArcaOS , [6] eComStation (начиная с версии 2.1) и Solaris 10 (начиная с версии 8/07). [7] DragonFlyBSD основывает свою реализацию AHCI на OpenBSD и добавляет расширенные функции, такие как поддержка умножителя портов. Более старые версии операционных систем требуют аппаратно-специфических драйверов для поддержки AHCI. Windows XP и более старые версии не обеспечивают поддержку AHCI из коробки.
Некоторые операционные системы, в частности Windows Vista , Windows 7 , Windows 8 , Windows 8.1 и Windows 10 , не настраиваются на загрузку драйвера AHCI при загрузке, если контроллер SATA не находился в режиме AHCI во время установки операционной системы. Хотя это легко устранимое состояние, оно остается постоянной проблемой стандарта AHCI.
Наиболее распространенным симптомом для операционной системы (или систем), установленных в режиме IDE (в некоторых реализациях прошивки BIOS иначе называемом «комбинированным режимом IDE»), является то, что системный диск обычно не загружается с последующим сообщением об ошибке, если контроллер SATA (в BIOS) случайно переключен в режим AHCI после установки ОС. В Microsoft Windows симптомом является цикл загрузки, который начинается с ошибки синего экрана, если ее не устранить.
Технически говоря, это ошибка реализации AHCI, которую можно избежать, но она пока не исправлена. В качестве временного решения Intel рекомендует изменить контроллер диска на AHCI или RAID перед установкой операционной системы. [3] (Также может потребоваться загрузить драйверы AHCI или RAID, специфичные для чипсета, во время установки, например, с USB-флешки).
В Windows Vista и Windows 7 это можно исправить, настроив msahci
драйвер устройства на запуск во время загрузки (а не по требованию). Установка не-AHCI режима (то есть IDE или комбинированного режима) в BIOS позволит пользователю загрузить Windows, и тем самым можно будет выполнить требуемое изменение реестра . Следовательно, у пользователя затем есть возможность продолжить использовать систему в комбинированном режиме или переключиться в режим AHCI. [8]
В частности, в Windows 10 и 8 это можно исправить, принудительно загрузив правильные драйверы во время безопасного режима . [9]
В Windows 8, Windows 8.1 и Windows Server 2012 драйвер контроллера был изменен с msahci
на storahci
, [10] а процедуры обновления до контроллера AHCI аналогичны процедурам в Windows 7. [11] В Windows 8, 8.1 и Windows Server 2012 переключение из режима IDE в режим AHCI без предварительного обновления реестра сделает загрузочный диск недоступным (т.е. приведет к повторяющемуся циклу загрузки, который начинается с ошибки синего экрана).
В Windows 10 после переключения контроллера в режим AHCI, если ОС разрешено перезагрузиться пару раз после начала цикла загрузки, который начинается с BSOD INACCESSIBLE_BOOT_DEVICE, Windows представляет варианты восстановления. Из дополнительных параметров, если выбран параметр Startup Repair, Windows пытается исправить проблему, и ПК начинает нормально работать.
Аналогичная проблема может возникнуть в системах Linux, если драйвер AHCI скомпилирован как модуль ядра , а не встроен в образ ядра , поскольку он может не быть включен в initrd (начальный RAM-диск), созданный при настройке контроллера для работы в режиме Legacy Mode. Решением является либо создание нового initrd, содержащего модуль AHCI, либо встраивание драйвера AHCI в образ ядра. [12]
Управление питанием осуществляется с помощью протокола Aggressive Link Power Management (ALPM).