Перейти до вмісту

Advanced Host Controller Interface

Матеріал з Вікіпедії — вільної енциклопедії.

Advanced Host Controller Interface (AHCI) — механізм, який використовується для підключення накопичувачів даних стандарту Serial ATA, що дозволяє користуватися розширеними функціями, такими, як вбудована черговість команд (NCQ) і гаряча заміна.

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 в операційній системі і знизиться продуктивність.
  • У 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 : обзор технологий на рынке и сравнительные тесты. — XX hardware LUXX. — 2016. — 2 січня.
  2. Intel Matrix Storage Technology — Changing and/or choosing Serial ATA Modes [Архівовано 6 квітня 2010 у Wayback Machine.] // Intel, Inc. (англ.)
  3. UniATA — Universal ATA driver for Windows. Архів оригіналу за 13 квітня 2020. Процитовано 25 березня 2021.
  4. а б Alter (Александр А. Телятников) (3 квітня 2019). Universal ATA driver for Windows. Alter.Org.UA. Архів UniATA оригіналу за 13 квітня 2020. Процитовано 25 березня 2021.
  5. Serial ATA (SATA) Linux hardware/driver status report. Serial ATA (SATA) for Linux (англ.). Dunvegan Media. Архів оригіналу за 12 березня 2007. Процитовано 27 квітня 2019. {{cite web}}: Cite має пусті невідомі параметри: |description= та |accessyear= (довідка)
  6. Changing the ATA Drive setting in System Bios causes reboot loop on Windows 8. — 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?. Microsoft Community. Архів оригіналу за 30 листопада 2020. Процитовано 25 березня 2021. {{cite web}}: Проігноровано невідомий параметр |accessyear= (можливо, |access-date=?) (довідка)
  9. Технология хранения Intel Rapid. Поддерживаемые Наборы микросхем для AHCI. Intel Corporation. Архів оригіналу за 24 вересня 2015. Процитовано 25 березня 2021.

Посилання

[ред. | ред. код]
  • AHCI Specification for Serial ATA // Advanced Host Controller Interface Specification : [англ.]. — Intel Corporation.
  • Изменение режима диска ATA в BIOS системы вызывает постоянную перезагрузку Windows 8 = Error message occurs after you change the SATA mode of the boot drive. — Microsoft Knowlege Base. — 2013. — 11 листопада.