НЕ ПРОПУСТИТЬ ИНТЕРЕСНОЕ

Свежие обсуждения

Sorry. No data so far.

Функции AHCI и как включить его поддержку в Windows 7

Advanced Host Controller Interface (AHCI)  — это современный режим работы контроллеров жестких дисков, позволяющий устройствам SATA использовать ряд расширенных функции. Рассмотрим основные  и наиболее актуальные из них.

Основные функции AHCI

Горячее подключение SATA дисков — Hot Swap, Hot Plug

(Hot Swap — горячая замена, Hot Plug — горячее подключение), то есть, непосредственно в процессе работы без выключения или перезагрузки компьютера.

Применительно к настольным компьютерам эта опция будет крайне полезной тем, кто работает с накопителями, подключаемыми по интерфейсу eSATA, или SATA дисками, устанавливаемыми в мобилрек.

До установки AHCI драйверов Intel в Windows это может выглядеть так:

Горячее отключение дисков в Windows

 

 

 

 

Через значок «Безопасное извлечение устройств и дисков» можно отключать SATA диски.

 

 

 

 

 

 

После установки AHCI драйверов Intel для горячего отключения и подключения ранее отключенных дисков нужно будет воспользоваться диспетчером устройств в «Управление компьютером»:

HDD AHCI Hot Plug с драйверами Intel

В случае более распространенного подключения внешних накопителей — к портам USB через адаптер SATA-USB, горячее подключение/отключение доступно без AHCI.

NCQ (Native Command Queuing) – организация очереди команд

В двух словах можно сказать, что NCQ — это логистика перемещения головок диска. Если в конкретный момент времени к контроллеру жесткого диска поступило несколько запросов на чтение/запись данных, то очередность их обработки AHCI изменит так, чтобы за счет оптимизации последовательности перемещений головок обработать все запросы за минимальное количество оборотов пластин диска, то есть, за меньшее время.

Представим себе такую аналогию NCQ. Курьер (головки HDD) обслуживает некое офисное здание, на нескольких этажах которого размещаются различные организации. Каждый день курьер приносит и забирает корреспонденцию. Особенностью функционирования этих многочисленных организаций является то, что их канцелярии работают на прием и выдачу в строго определенные, причем разные, часы и прийти надо обязательно к самому началу, иначе окошко закроется. У курьера есть список организаций, которые он должен обслужить в ближайшее время.

Теперь представим себе, что курьер посещает организации строго по списку в порядке их очередности. Предположим, что первой в перечне числится организация, расположенная на n-ом этаже здания. Рано утром курьер поднимается на этот этаж, подходит к окну канцелярии и выясняет, что оно откроется ближе к вечеру (Этажи, в нашем случае, это треки, или цилиндры, жесткого диска, а часы работы – его сектора). Если курьер должен обходить организации строго по списку, то он прождет без дела до вечера, заберет документы и пойдет во вторую по списку организацию на другой этаж. Вероятность того, что приемные часы в этой организации уже закончились, достаточно высока и значит, в этот день курьер может уже ничего не забрать/передать, а будет ждать следующего дня (оборота диска HDD). Ну и так далее. Не слишком продуктивно.

Однако если изменить порядок обхода, то за один день (оборот диска) можно посетить значительно большее число организаций. Для этого надо расставить их по времени начала работы канцелярий но с учетом того, что лифт, перемещающий курьера в нашем гипотетическом здании, сам по себе не слишком быстрый (время перемещения головок на нужный трек). Если времена (сектора) близки, то начав движение на выбранный этаж к открытию окна можно и не успеть.

С другой стороны, очевидно, что если в списке на день будет всего одна организация, то никакого выигрыша не получится.

Еще в этой связи невольно вспоминается древняя синклерная игрушка, которая, если не ошибаюсь, называлась «Тапер». В ней официант пивного бара должен был не только наливать пиво посетителям, но и, перемещаясь от стола к столу, собирать пустые кружки, которые неумолимо двигались к краю. Правда, замешкаться было нельзя совсем – если кружка падала на пол, то игра тут же прекращалась. Очень похоже, логистика в чистом виде — выдать/собрать как можно больше в единицу времени за счет оптимизации перемещений.

NCQ по большей части актуальна для нагруженных серверов и систем хранения с SATA дисками. Ожидать некого драматического увеличения скорости работы обычного настольного компьютера или ноутбука от включения этой опции не стоит. Но хуже не будет точно.

Тема AHCI стала вновь актуальной в связи с широким распространением твердотельных накопителей (SSD-дисков). Режим работы Advanced Host Controller Interface включает в себя ряд функций, необходимых для быстрой и правильной работы SATA SSD-дисков. Очень важной является команда TRIM.

Команда TRIM

Команда TRIM была включена в AHCI после появления твердотельных накопителей и специально для них. Дело в том, что логика процесса записи в SSD-дисках значительно отличается от таковой в традиционных механических жестких дисках.

Наверняка многим знакомы утилиты, типа Undelete Plus, позволяющие восстановить недавно стертые файлы. Их работа основана на том, что файл только помечается в каталоге как удаленный, но физически с жесткого диска не стирается. Более того, сам накопитель ничего не знает о статусе записанной на нем информации. Помеченный как удаленный файл может оставаться на диске сколь угодно долго, до тех пор, пока он, или его части, не будут перезаписаны новыми данными.

Для обычных HDD такое положение вещей не несло в себе никакой опасности, в связи с тем, что стирание или перезапись по своей сути были одной и той же операцией и занимали одинаковое время.

В твердотельных накопителях это не так. Внутренняя логика их работы не допускает простой перезаписи данных в ячейке памяти. Для того чтобы в ранее уже задействованную ячейку памяти можно было бы что-то записать повторно, ее содержимое должно быть предварительно «обнулено». А эта операция требует дополнительного времени. Таким образом, по мере эксплуатации SSD-диска в составе компьютера с течением времени все больше и больше места на нем будет затронуто и потребуется все больше операций «обнуления» ячеек.

На самом деле все еще хуже, так как «обнулить можно» только блок памяти целиком. Чтобы не потерять записанную на нем информацию она предварительно считывается в кеш, выполняется стирание блока, данные в кеше модифицируются с учетом новых и только затем записываются на накопитель. В общем случае требуется четыре операции. Все это приводит к серьезной деградации скорости записи на твердотельный накопитель.

Команда TRIM служит связующим звеном между контроллером SSD-диска и операционной системой. Она сообщает контроллеру, какие блоки на диске действительно можно считать незанятыми, и помогает таким образом заранее физически стереть их в фоновом режиме и реально освободить место на диске. Это позволяет не допустить падения производительности операций записи на SSD.

В контексте команды TRIM уместным будет вспомнить о динамических виртуальных дисках. Такой диск представляет собой файл, который непосредственно после создания имеет небольшой физический размер, определяемый размещенной на нем системной и служебной информацией.

После первой операции записи данных на такой диск его размер увеличится ровно на столько, сколько занимают записанные данные. При каждой последующей записи физический размер виртуального жесткого диска будет увеличиваться до тех пор, пока не достигнет своего предельного значения, указанного при его создании.

Для SSD-диска этот момент будет означать начало деградации скорости.

Увеличение размера диска будет происходить даже в том случае, если перед записью часть данных с него удалить. Дело в том, что все новые блоки информации всегда записываются в конец диска.

Для того, чтобы привести размер динамического виртуального диска в соответствие с объемом записанных на него данных, системы виртуализации предусматривают процедуру сжатия. В разных системах виртуализации эти процедуры несколько отличаются, но суть при этом не меняется – если попытаться сжать динамический виртуальный диск без его предварительной подготовки, то ничего не произойдет. Физический размер диска не изменится.

Для того, чтобы процедура сжатия отработала корректно, незанятые на диске блоки должны быть предварительно обнулены. В Windows для этой цели можно использовать Precompact.iso или sdelete –c, в Linux – zerofree. Утилиты обнуления запускаются в среде виртуальной машины. Вот и аналогия с TRIM – та же пометка незанятых областей диска, без которой физическое удаление стертых блоков невозможно.

Так как TRIM полностью стирает содержимое ячеек диска, восстановление удаленных данных становится невозможным.

В Windows встроенная поддержка TRIM появилась в 2009 году начиная с Windows 7. В Linux чуть позднее – в начале 2010 года.

Проблема с AHCI в Windows 7

На самом деле никакой проблемы нет. Однако если операционная система была установлена на диск, который работал с контроллером в режиме классического IDE, то просто взять и переключить в BIOS режим работы контроллера дисков на AHCI, не получится. Если это сделать, то при следующей же загрузке работа Windows аварийно завершится с демонстрацией «синего экрана смерти» BSoD из-за того, что она не найдет загрузочный диск.

В Windows 8 эту ситуацию подправили. После включения AHCI в BIOS теперь достаточно один раз загрузить систему в безопасном режиме.

Как включить AHCI в Windows 7

Для того, чтобы включить AHCI в Windows 7, нужно сделать следующее:

  • Запустить из командной строки с правами администратора редактор реестра RegEdit и открыть ветку:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci
Найти на правой панели ключ Start. Если у вас не включен AHCI, то значение ключа будет равно 3. Его надо поменять на 0, как показано на рисунке:

Включить AHCI в Windows 7

  • Закрыть редактор реестра и перезапустить компьютер. Во время перезапуска зайти в BIOS и поменять режим работы контроллера жестких дисков на AHCI.

Windows 7 при старте найдет новое оборудование, установит драйверы и попросит еще раз перезапуститься. После перезагрузки компьютера жесткие диски будут работать в режиме AHCI.

Проверка включения режима AHCI в Windows 7

Открываем IDE ATA/ATAPI контроллеры в Диспетчер устройств. Убеждаемся, что там появился контроллер AHCI.

AHCI в диспетчере устройств Windows 7 

Установка драйверов AHCI

В зависимости от разновидности контроллера и материнской платы ищем и устанавливаем соответствующие драйверы для AHCI. Делать это не обязательно, но желательно.

Для владельцев материнских плат на чипсете от Intel самый свежий драйвер AHCI лучше всего поискать на официальном сайте по запросу “Intel Rapid Storage Technology”. Для моей материнской платы Intel на момент написания этой статьи наиболее подходящей оказалась версия 11.7.0 1013. Загрузить с сайта и установить нужно программу iata_cd.exe.

После инсталляции и двух перезагрузок компьютера информация о контроллерах IDE ATA/ATAPI  в диспетчере устройств стала такой >

ich10rsata

Для того, чтобы определить был ли в этом смысл, я воспользовался бесплатной утилитой AS SSD Benchmark. Полностью полагаться на ее объективность я бы не стал, но некоторое представление получить можно. Вот так выглядят полученные результаты для 60-гигабайтного твердотельного накопителя Intel 520-ой серии >

Влияние драйверов AHCI на скорость SSD

Наибольший выигрыш получился на операциях записи, а суммарный прирост скорости SSD-диска составил около 10%. Существенно.

Все должно получиться. Если по какой-то причине система загружаться отказалась, возвращаемся к исходной точке и разбираемся с материнской платой, вернее, с контроллером жестких дисков.

Если категорически что-то не получается, то еще один возможный вариант смены режима работы контроллера жестких дисков, правда, более длинный, это использование программы подготовки системы (Sysprep). Но об этом в другой раз.

Комментарии: 7. Присоединяйтесь к обсуждению!

  1. павел:

    а вы бы не хотели написать статью об использовании контроллеров sata 6 Gb -PCI-Ex1 применитльно к использованию ssd-дисков подключаемых через них.
    проблема актуальна для людей,не имеющих на материнских платах sata 3 -разъемов, но желающих приобрести и использовать в качестве системного ssd-диск .

  2. Отличное предложение! С удовольствием написал бы такую статью, но под рукой, к сожалению, нет подходящего контроллера и свободного ssd.
    Коль уж задан такой вопрос, то в чем тут может быть проблема в принципе?

  3. павел:

    оооййй…там куча проблем. коротко:
    1.стоит ли городить огород ?
    2.недорогие контроллеры (500-1000 рублей) -они вообще как ? нормальные ?
    3.есть ли ЗАМЕТНЫЙ выигрыш в скорости при поключении ssd таким путем (сравнение как с поключением ssd-6Gb через sata2, так и сравнение с поключением ssd-6Gb через sata3,которые распаяны на плате).
    4.использование такого ssd в качестве системного ? возможно ли ?
    в одной компьютерной конторе меня чуть ли не силой (конкретно-без красного словца говорю) отговаривали от такого использования-говорили,что при установки системы ось не распознает данный контроллер по причине отсутствия на него драйверов у нее. подсовывание драйверов в момент установки (как ранее делали-подсовывали необходимые драйвера на дискетах)якобы. эффекта никакого не дает !

    • Ну что же, все может быть. Попробую решить этот вопрос совместно со своими поставщиками оборудования. Попрошу при оказии собрать компьютер с таким контроллером и потестировать.
      А вообще, отсутствие драйверов контроллера непосредственно в дистрибутиве системы — не проблема совершенно.

  4. Evgen:

    Огромное спасибо!
    Кислород в мои мозги.

  5. Кирилл:

    Здравстуйте ещё раз!
    Вы писали:
    В Windows 8 эту ситуацию подправили. После включения AHCI в BIOS теперь достаточно один раз загрузить систему в безопасном режиме.
    А у меня следующая проблема.
    У меня есть настроенная в режиме аудита Windows 7 X64 SP1+ система, свёрнутая акронисом и разворачиваемая им же на другие системы. И вот при первом старте развёрнутой системы у меня всегда вылазит ошибка. Я случайно обнаружил что если перед этим 1 раз загрузиться в безопасном режиме, то потом всё идёт гладко.
    Я и раньше подозревал что проблема c AHCI или чем-то подобным, а почитав ваш материал только убедился в этом. Я подумал что нужно включить AHCI, но пройдя по нужной ветке реестра я обнаружен что он включён. Может быть вы подскажете в чём тут может быть дело?

    • Весьма активно использовал связку sysprep + Acronis для подготовки образов Windows 7, но, можно сказать, в упрощенном варианте. То есть система подготавливалась в режиме обычной загрузки (не в режиме аудита). Драйверы, корпоративный набор программ, обновления. Надо сказать, что основной задачей sysprep была смена SID. В ХР это делали программкой NewSid, в 7-ке она работать перестала. Дело в том, что вопреки расхожему мнению о том, что SID ни на что не влияет, это совершенно не так. Например, компьютеры с одинаковыми SID не видит WSUS и SQL сервер.
      Что касается AHCI, то не помню чтобы были какие-то проблемы — после разворота образов компьютеры всегда стартовали без приключений.
      Скорее всего есть какая-то хитрость с режимом аудита, но в чем она заключается, к сожалению, не скажу.

Написать комментарий

Subscribe without commenting