Advanced Host Controller Interface

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску


Advanced Host Controller Interface (AHCI) — механизм, используемый для подключения накопителей информации стандарта Serial ATA, позволяющий пользоваться расширенными функциями, такими, как встроенная очерёдность команд (NCQ) и горячая замена. Также использовался в первых накопителях PCIe SSD (например Kingston HyperX Predator), но там он вскоре был заменен на NVMe.

AHCI, по сути, является стандартизацией дешёвых версий контроллеров[чего?], позволяющей обойтись без установки дополнительных драйверов. AHCI также позволяет использовать твердотельные накопители SSD; однако он был разработан для механических HDD и при работе с SSD не позволяет использовать все их преимущества, в отличие от более современной разработки, NVMe.[1]

Описание[править | править код]

Протокол AHCI появился в качестве замены устаревшего ATA, который поддерживает совместимость начиная от оригинальной IBM PC/AT. Так, контроллеры ATA поддерживают прямой доступ к памяти только как дополнение; другой недостаток ATA — отсутствие возможности горячей замены (при том, что оборудование eSATA её поддерживает) и очередей команд: на одном канале (в случае SATA каждое устройство есть один канал) может одновременно исполняться только одна команда. Таким образом, задействование возможности ATA NCQ невозможно на классическом контроллере ATA даже при поддержке её диском.

До появления AHCI для решения этой проблемы использовались отдельные платы/чипы контроллеров[чего?] (производимые фирмами Promise, HighPoint и другими), часто установленные в материнскую плату наряду с классическим ATA, встроенным в южный мост; зачастую эти контроллеры воспринимались операционной системой как контроллеры SCSI и поддерживали все богатые возможности протокола SCSI.

AHCI, по сути, является стандартизацией дешёвых версий контроллеров[каких?][уточнить] (и позволяющей обойтись без установки дополнительных драйверов для них).

AHCI может обрабатывать 32 одновременных запроса (NVMe — до 65536; однако, накопители, которые используют NVMe-контроллер, потребляют в 2—3 раза больше электроэнергии, чем аналогичные на базе AHCI).

Применение[править | править код]

Поддержка AHCI существует не во всех чипах южных мостов, но даже при её реализации в чипе производитель материнской платы может не реализовать её в BIOS, и она будет недоступна. Иногда проблема решается обновлением BIOS, существуют неофициальные версии BIOS для многих материнских плат.
В некоторых случаях (Asus P5KC) поддержку AHCI невозможно включить на южном мосту, но можно включить на отдельно стоящем чипе, работающем на устаревшем Parallel ATA разъёме внутри корпуса или через внешний eSATA-разъём (получается, что внутренние жёсткие диски не могут использовать AHCI, а подключённый по eSATA внешний — может).

Многие контроллеры SATA могут включать простой режим AHCI или с поддержкой RAID. Intel рекомендует на своих материнских платах выбирать режим с поддержкой RAID при включённом AHCI для большей гибкости[2].

Встроенная поддержка AHCI включена в Mac OS X начиная с версии 10.4.4 для Intel, Microsoft Windows Vista и последующих (существует также альтернативный драйвер UniATA[3] со свободной лицензией, реализующий поддержку AHCI для версий ОС Windows от Windows NT 3.51 до Windows 7[4]), Linux, начиная с ядра 2.6.19[5], NetBSD, OpenBSD с версии 4.1, FreeBSD с версии 8.0, Solaris 10 с версии 8/07. Для более старых операционных систем требуется драйвер производителя.

Проблемы использования AHCI в Microsoft Windows[править | править код]

При переключении в режим AHCI на уже установленной ОС Windows контроллера SATA, входящего в состав южного моста, произойдет задействование несовместимой логики работы контроллера ЖД — это действие эквивалентно установке в систему платы контроллера ATA, отличного от существующего, и физического переключения загрузочного диска на эту плату.

В этом случае Windows при загрузке не найдёт загрузочный диск и аварийно остановится с BSOD STOP 0x0000007B, INACCESSIBLE_BOOT_DEVICE. Для решения проблемы необходимо до переключения установить в Windows драйвер AHCI.

  • Самый простой способ — перед установкой операционной системы переключить в BIOS жёсткий диск с режима работы «AHCI» (стоит обычно по умолчанию) на «IDE». При этом не будет поддержки ATA NCQ в операционной системе и снизится производительность[источник не указан 3989 дней].
  • В Windows XP можно включить AHCI вручную (требует копирования msahci.sys и внесения его в реестр в двух местах — в список служб и в CriticalDeviceDatabase) либо при помощи утилит наподобие nLite драйвер AHCI можно заранее вмонтировать в дистрибутив Windows, что позволит ей сохранить работоспособность при переключении загрузочного диска на контроллер в режиме AHCI. При первой загрузке на новом контроллере диска операционная система определит его как «новое оборудование» и предложит установить драйвер, необходимо согласиться и перезагрузить машину после этого. Кроме того, такой же способ подходит для миграции загрузочного образа операционной системы на совершенно новый контроллер диска, в том числе SCSI — Promise, HighPoint, Adaptec и т. д. Операции необходимо произвести на образе, уже развёрнутом на новый будущий загрузочный диск, в редакторе реестра, используя функцию загрузки ветви реестра (англ. Load Hive). Многие программы создания/восстановления образов способны делать такое автоматически.
  • В Windows 8 и Windows 10 после включения режима AHCI в BIOS достаточно загрузиться в безопасном режиме, после чего Windows установит необходимые драйверы. В случае, если при загрузке ОС запустить безопасный режим не удается, можно сделать это стандартной программой bcdedit[6]. Если bcdedit не удалось запустить, можно также нажать WIN+R, запустить MSConfig и выбрать на вкладке «загрузка» запуск в безопасном режиме с минимальной конфигурацией.
  • В Windows 7 / Windows Vista перед включением режима AHCI в BIOS необходимо активировать драйвер AHCI (изменить значение в реестре или запустить бесплатную утилиту от Microsoft)[7].
  • В версиях OS Windows до Windows 7 (Windows XP и младше) до переключения установить драйвер контроллера AHCI], после чего переключить режим SATA в AHCI в BIOS[8].
  • В некоторых случаях можно установить плату расширения с внешним контроллером SATA, поддерживающим режим AHCI, или разрешить в BIOS дополнительный чип контроллера, обычно работающий на внешний eSATA разъем, после чего ОС установит драйвер такого контроллера, а при дальнейшем переключении загрузочного диска на такой же контроллер сохранит способность к загрузке.
  • Заменить стандартный драйвер контроллера жесткого диска на драйвер UniATA[4].

Аппаратная поддержка[править | править код]

AHCI встроен в чипсеты Intel начиная с некоторых версий ICH6 и во все чипсеты для платформ Core i3/i5/i7. Для платформ Core AHCI был реализован в следующих контроллерах концентраторов[9]:

  • PCHM Intel RAID/AHCI Контроллер-концентратор
  • Intel PCH SATA RAID/AHCI Контроллер-концентратор
  • Intel ICH10R /DO SATA RAID/AHCI Контроллер-концентратор
  • Intel ICH10D SATA AHCI Контроллер-концентратор
  • Intel ICH9M -E SATA RAID/AHCI Контроллер-концентратор
  • Intel ICH9M AHCI Контроллер-концентратор
  • Intel 82801IR/IO Контроллер-концентратор (ICH9R /DO) — RAID и AHCI
  • Intel 82801HEM Контроллер-концентратор ввода/вывода (ICH8M -E) — RAID и AHCI
  • Intel 82801HBM Контроллер-концентратор ввода/вывода (ICH8M) — только AHCI
  • Intel 82801HR/HH/HO Контроллер-концентратор ввода/вывода (ICH8R /DH/DO) — RAID и AHCI
  • Intel 631xESB/632xESB Контроллер-концентратор ввода/вывода — RAID и AHCI
  • Intel 82801GHM Контроллер-концентратор ввода/вывода (ICH7MDH) — только RAID
  • Intel 82801GBM Контроллер-концентратор ввода/вывода (ICH7M) — только AHCI
  • Intel 82801GR/GH Контроллер-концентратор ввода/вывода (ICH7R /DH) — RAID и AHCI
  • Intel 82801FR Контроллер-концентратор ввода/вывода (ICH6R) — RAID и AHCI
  • Intel 82801FBM Контроллер-концентратор ввода/вывода (ICH6M) — только AHCI

Примечания[править | править код]

  1. Обер, Михаил. Страница 3: В чем разница между AHCI и NVMe?. — В: Выбираем SSD : обзор технологий на рынке и сравнительные тесты : [арх. 27 апреля 2019] // XX hardware LUXX : журн.. — 2016. — 2 января. — Электр. изд..
  2. Intel Matrix Storage Technology — Changing and/or choosing Serial ATA Modes Архивная копия от 21 апреля 2008 на Wayback Machine // Intel, Inc.  (англ.)
  3. UniATA - Universal ATA driver for Windows. Дата обращения: 25 июля 2012. Архивировано 13 апреля 2020 года.
  4. 1 2 Alter (Александр А. Телятников). UniATA Universal ATA driver for Windows. Alter.Org.UA (3 апреля 2019). Дата обращения: 25 июля 2012. Архивировано 13 апреля 2020 года.
  5. Serial ATA (SATA) Linux hardware/driver status report (англ.). Serial ATA (SATA) for Linux. Dunvegan Media. Дата обращения: 27 апреля 2019. Архивировано 12 марта 2007 года.
  6. Changing the ATA Drive setting in System Bios causes reboot loop on Windows 8 : KB2751461 : [арх. 5 июня 2013] // Microsoft Knowlege Base. — 2012. — 2 ноября.
  7. KB922976, 2013.
  8. Praveen Veerapur. How do I change Windows XP to use AHCI disk mode rather than IDE mode for Dual boot? Replied on november 25, 2012. Microsoft Community. Дата обращения: 1 июля 2013. Архивировано 30 ноября 2020 года.
  9. Технология хранения Intel Rapid. Поддерживаемые Наборы микросхем для AHCI. Intel Corporation. Дата обращения: 5 января 2014. Архивировано 24 сентября 2015 года.

Ссылки[править | править код]