Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Железо » Накопители (SSD, HDD, USB Flash) » HDD - AHCI, или как использовать преимущества Serial ATA

Ответить
Настройки темы
HDD - AHCI, или как использовать преимущества Serial ATA

Ушел из жизни


Сообщения: 26925
Благодарности: 3924

Профиль | Сайт | Отправить PM | Цитировать


AHCI, или как использовать преимущества Serial ATA

Автор: Макс КУРМАЗ
Источник: http://www.kv.by/

Вы купили новый винчестер. Конечно, с интерфейсом Serial ATA. И, конечно, много слышали о новой интересной функции, реализованной в последних моделях - NCQ. Предвкушая заметный прирост скорости загрузки Windows и программ, а также снижение шума винчестера, вы подключаете винчестер, устанавливаете операционку и... Теперь вам потребуется проделать дополнительные манипуляции, чтобы включить поддержку AHCI и установить подходящие драйверы. Иначе технология NCQ, равно как и другие интересные функции, останется незадействованной.


Ради чего

Идея, лежащая в основе технологии NCQ (Native Command Queuing), уже не раз была реализована в жестких дисках и контроллерах, но не в тех, что применяются в обычных персоналках.

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

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

Собственно, некоторые минусы после приведения примера с лифтом вам стали очевидны. Не все запросы будут выполнены быстрее - некоторые могут "застрять" в очереди, пропуская другие запросы. А появление запроса на запись вообще осложняет обработку очереди команд, так как возможна ситуация нарушения целостности данных.

Кроме того, подобная технология даст выгоду только в том случае, если команды винчестеру поступают плотным потоком и намного быстрее, чем он успевает их выполнить. В условиях современных ПК такая ситуация происходит не очень часто - в основном в момент загрузки ОС и больших программных пакетов. Поэтому за реализацию технологии NCQ взялись только в последнее время, хотя в серверной среде интеллектуальное переупорядочивание команд применяется давно и успешно.

Следует заметить, что возможность изменения порядка команд и обработки очередей заложена и в протоколе интерфейса ATA (технология TCQ). И даже есть примеры вполне успешной ее реализации. Но сделано это не очень красиво и удобно. Дело в том, что протокол интерфейса ATA, по которому работают жесткие диски с обычным, "параллельным" интерфейсом, основан на протоколе работы шины ISA. Процедура инициализации и передачи команды, а также слежение за состоянием и ошибками - довольно длительная и сложная процедура, требующая анализа нескольких регистров. Поэтому разработчики решили реализовать поддержку данной технологии в винчестерах, использующих новый интерфейс - Serial ATA.


Протокол AHCI

Контроллер Serial ATA, согласно требованиям этого стандарта, должен поддерживать, как минимум, два режима работы. Первый - режим эмуляции стандартного контроллера ATA. В этом режиме контроллер полностью повторяет протокол обращения к жесткому диску ATA и, с точки зрения операционной системы и драйверов, не отличается от контроллера "параллельного" интерфейса. При этом подключенные к нему винчестеры эмулируются либо как устройства Master на отдельном канале, либо, если операционная система "не понимает" более двух каналов - как пары устройств Master и Slave. Этот режим включен по умолчанию, он полностью поддерживается всеми операционными системами и BIOS.

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

Протокол AHCI (Advanced Host Controller Interface) как раз описывает поведение контроллера в режиме Native с точки зрения системы. Он описывает, каким образом контроллер обрабатывает очередь команд, где и как они хранятся, как программист должен помещать команды в очередь и где получать результаты их выполнения. Все условности протокола ATA отброшены, все сложности с манипулированием регистрами и флагами упразднены за ненадобностью. Реализация всех дополнительных функций Serial ATA, включая NCQ, Hot Swap, Port Multiplier, Staggered Spin-Up и т.д., теперь ничем не ограничивается.

Данный протокол был разработан специальной инициативной группой во главе с Intel. Он является дополнением к стандарту Serial ATA, который, в общем-то, не описывает требования к хост-контроллерам (контроллерам со стороны вычислительной системы, к которой подключен винчестер). Вместе с AHCI стандарт Serial ATA является законченным решением для организации дисковой подсистемы в ПК нового поколения.

Вместе с тем теряется совместимость с программным обеспечением, не поддерживающим Serial ATA изначально. Работать в двух режимах одновременно контроллер не может. Переключаясь в режим Native, он теряет возможность принимать команды от программного обеспечения, не "понимающего" протокол AHCI.


Опять эта Windows

Таким программным обеспечением, как ни странно (или что неудивительно), является операционная система Windows. Как признаются разработчики этой операционной системы в специальном документе (http://www.microsoft.com/whdc/device...alATA_FAQ.mspx), дисковая подсистема всех версий Windows, вышедших до версии Vista, поддерживать AHCI не будет. Объясняют они это наличием особенностей в реализации AHCI производителями разных контроллеров. В будущем в ядре Windows будет реализован новый механизм подключения драйверов - Ataport, и в составе драйверов будет идти стандартный минипорт для Native-режима контроллера Serial ATA. А пока, увы, нужно устанавливать специальный драйвер или SCSI-минипорт непосредственно от производителя контроллера.

Эта проблема сложнее, чем кажется на первый взгляд. Операционная система Windows устроена таким образом, что при старте она должна обязательно "подхватить" правильный драйвер для контроллера жестких дисков. Иначе старт прерывается пресловутым "синим экраном", избавиться от которого можно только переустановкой системы. Мало того, процесс установки тоже прервется этим же "синим экраном", если вовремя не предоставить Windows дискету с нужным драйвером. Владельцам ноутбуков вообще не позавидуешь - им и дискету-то вставить некуда, а другие носители Windows в данном случае не принимает.


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

Способ первый, классический. Как и при создании RAID, вы используете установочную дискету, идущую в комплекте с материнской платой или созданную самостоятельно. Начинаете установку Windows, доходите до первой перезагрузки, а когда появляется надпись "Press F6..." внизу синего экрана, нажимаете F6 и предлагаете дискету. Следует выбрать правильный вариант драйвера и продолжить установку Windows. Впоследствии, когда установка успешно завершится, будет нелишним еще раз установить драйверы и утилиты - они позволят проделать некоторые настройки и убедиться, что NCQ включена.

Второй способ сложнее, но он позволяет обойтись и без дискеты, и без переустановки Windows. Для этого в BIOS вашего компьютера должна быть возможность отключения AHCI (или Native Mode, что в данном случае синонимы). При включенном режиме эмуляции вы проводите установку Windows, а потом устанавливаете драйверы от производителя контроллера (чипсета материнской платы). Если они не ставятся автоматически, делаете это вручную. Потом включаете AHCI в BIOS, и система начинает использовать преимущества NCQ.


На примере Intel

В чипсетах Intel поддержка AHCI появилась еще в серии 915. Правда, только в южных мостах с суффиксами "R", "M" и "DH":

* ICH6R, ICH6M - чипсеты серии 915/925;
* ICH7R, ICH7M, ICH7DH, ICH7MDH - чипсеты серии 945/955/975;
* ICH8R - чипсеты серии 965.

Такими мостами комплектуются только ноутбуки на платформе Centrino, начиная со второго поколения, и дорогие материнские платы на старших чипсетах серии - 925, 955, 975. Как правило, если AHCI поддерживается, то в BIOS будет соответствующая строчка. В крайнем случае, можно заглянуть в руководство к материнской плате.

Вам понадобятся драйверы Intel Matrix Storage, бывшие Intel Application Accelerator, а также установочная дискета к ним. Ее образ можно скачать с сайта Intel. Драйверы с этой дискеты пригодятся и для установки Windows, и для включения AHCI уже после установки. В последнем случае не забудьте обязательно установить Intel INF Update перед тем, как начинать манипуляции с другими драйверами. После того, как драйверы стандартного контроллера Serial ATA будут заменены на драйверы с установочной дискеты Intel, можно включать AHCI. Windows сможет загрузиться, и дальше можно продолжить установку комплекта Matrix Storage - без включения AHCI он запускаться откажется. Для контроллеров других производителей процедура аналогичная - сначала установка драйверов, потом включение AHCI.

Винчестер в данном случае не затрагивается - форматировать, перешивать и т.п. ничего не нужно.

-------
ВНИМАНИЕ ознакомьтесь, прежде чем создать тему! Процессор - мозг компьютера, блок питания - сердце и печень.


Отправлено: 09:21, 29-06-2007

 

Аватара для maik2

Старожил


Сообщения: 409
Благодарности: 4

Профиль | Отправить PM | Цитировать


Засада была, что не подключил дата кабель резака. Много винтов, ставил, снимал, систему переставлял. Включил и всё нормально. Даже в устройствах всё нормально показывает, тока диски почему-то SCSI показывает. Вопрос - без разницы к каким сата разъёмам подключать, или надо по порядку 1, 2, 3 итд?

Отправлено: 16:45, 23-12-2012 | #431



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ушел из жизни


Сообщения: 26925
Благодарности: 3924

Профиль | Сайт | Отправить PM | Цитировать


Цитата maik2:
тока диски почему-то SCSI показывает »
Нормально.
Цитата maik2:
без разницы к каким сата разъёмам подключать, или надо по порядку 1, 2, 3 итд? »
На ваше усмотрение. Но я бы системный подключил к первому или нулевому разъему

-------
ВНИМАНИЕ ознакомьтесь, прежде чем создать тему! Процессор - мозг компьютера, блок питания - сердце и печень.


Отправлено: 18:31, 23-12-2012 | #432


Забанен


Сообщения: 6158
Благодарности: 1300

Профиль | Цитировать


Цитата Ment69:
Но я бы системный подключил к первому или нулевому разъему »
Если материнка на чипсете интел 6 или 7 серии с SATA III 6Gbps на озвученных разъёмах и диски тоже SATA III. В остальном — без разницы, куда втыкать.

Отправлено: 18:52, 23-12-2012 | #433


Ветеран


Сообщения: 865
Благодарности: 129

Профиль | Цитировать


Цитата maik2:
Засада была, что не подключил дата кабель резака. »
Имел опыт вставить перевёрнутый иде шлейф. С утапливанием одной из ножек разъёма... После чего жёсткий на этом же шлейфе начинал почему-то клацать головками...

Отправлено: 19:20, 23-12-2012 | #434


Забанен


Сообщения: 6158
Благодарности: 1300

Профиль | Цитировать


Цитата rover_61eg:
Имел опыт вставить перевёрнутый иде шлейф. С утапливанием одной из ножек разъёма... »
Аналогично. В начале нулевых был плекстор писалка, перетыкать приходилось часто. Ну вот в один момент и поломал.

Отправлено: 19:28, 23-12-2012 | #435


Аватара для Tau_0

Ветеран


Сообщения: 6211
Благодарности: 1393

Профиль | Отправить PM | Цитировать


Цитата maik2:
Засада была, что не подключил дата кабель резака. »
Цитата maik2:
Дык я на нём не делал ничего. »
Угу...

Отправлено: 19:54, 23-12-2012 | #436


Аватара для maik2

Старожил


Сообщения: 409
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Tau_0:
Дык я на нём не делал ничего. »
Угу... »
Имелось ввиду, не пользовался им. типа не должен испортиться.
Цитата Ment69:
На ваше усмотрение. Но я бы системный подключил к первому или нулевому разъему »
Так навсяк и сделал оба с системами к 1 и 0, для файлов к 4.

Отправлено: 23:32, 23-12-2012 | #437


Аватара для maik2

Старожил


Сообщения: 409
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата vadblm:
Если материнка на чипсете интел 6 или 7 серии с SATA III 6Gbps »
Микросхема "Северный мост":AMD 770 Микросхема "Южный мост": AMD SB710

Отправлено: 23:58, 23-12-2012 | #438


Забанен


Сообщения: 6158
Благодарности: 1300

Профиль | Цитировать


Цитата maik2:
AMD SB710 »
Не в курсе, AMD брезгую.

Отправлено: 00:02, 24-12-2012 | #439


Новый участник


Сообщения: 11
Благодарности: 1

Профиль | Отправить PM | Цитировать


Включил AHCI на мамке GA-H61M-DS2 под Windows 2003 x64, поделюсь опытом, авось кому пригодится. Чипсет Intel H61M, известен также под именем Intel 6 Series/C200 Series Chipset.

Прошло не идеально гладко, но все-таки нормально заработало.
Как было дело, если кому интересно -
читать дальше »
Система изначально была поставлена в режиме IDE, драйверы поставлены с диска от матери. В диспетчере устройств было два контроллера -
1) Intel(R) 6 Series/C200 Series Chipset Family 2 port Serial ATA Storage Controller - 1C08
(ven_8086&dev_1C08)
2) Intel(R) 6 Series/C200 Series Chipset Family 4 port Serial ATA Storage Controller - 1C00
(ven_8086&dev_1C00)
Однако в разных вариантах интелской IRST (Intel Rapid Storage Technology, если кто не знает - утилита для управления дисками + комплект драйверов) в списках поддерживаемых контроллеров никакие "6 Series/C200 Series" нигде не фигурируют, и я не сразу нашелся, какой вариант IRST ставить, чтобы была и поддержка моего контроллера, с одной стороны, и w2k3 - с другой. Погуглив, выяснил, что эти контроллеры, когда используются в AHCI-режиме, в документации к IRST фигурируют под названием Intel(R) Desktop/Workstation/Server Express Chipset SATA AHCI Controller - в отличие от "5 series" и "7 series", которые прямо так и называются.
Нашел IRST 11.2.0.1006 (http://downloadcenter.intel.com/Deta...+storage+2003+) - там явно упомянут и этот контроллер (Desktop/Workstation/Server Express), и Windows 2003 x64. На опыты с более свежими вариантами IRST, про которые явно сказано, что w2k3 не поддерживается, решил время не тратить.
Драйверы в архиве для дискеты (f6flpy-x64.zip) - все те же самые, что и в основном комплекте, TXTSETUP.OEM в основном комплекте тоже есть, для дискеты добавлены только readme и лицензионное соглашение, так что этот архив можно не качать.

Не смог сообразить (или найти подсказку), какому из двух контроллеров подсовывать драйверы - забэкапился и попробовал первому, верхнему, 1C08. Прямо из диспетчера - правая кнопка, "обновить драйвер" - "не разрешать интернет" - "из указанного места" - указываем директорию с драйверами - "не выполнять поиск, я сам" - выключить "только совместимые" - и указываем "Intel(R) Desktop/Workstation/Server Express Chipset SATA AHCI Controller".
Нажимаем "далее" и получаем мгновенный BSOD.

После этого в режиме AHCI (при попытке включить его в биосе), как и до этого, не грузится, а в режиме IDE - нормально грузится. При ближайшем рассмотрении оказалось, что в системе мало что изменилось - только файл драйвера iaStor.sys скопировался в system32\drivers, в ветке CurrentControlSet\Services появилась запись о нем (с типом запуска 0) и в свойствах контроллера "...2 port ... 1C08" версия, дата, файл драйвера и id устройства стали соответствовать этому iaStor.sys (deviceid = pci\ven_8086&dev_1c02) и соответственно изменились поля в записи о нем в HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-...}\0000, при том, что DeviceDesc осталось прежним ("...2 port ... 1C08") (Странно как-то, однако...)

Вторая попытка - аналогичные действия по установке драйвера для второго контроллера, который "...4 port ... 1C00" - закончилась тем, что винда сказала, что ей все нравится, но надо теперь перезагрузиться. Перезагрузился, по пути в биосе включил AHCI, она нашла кучу новых устройств и снова предложила перезагрузиться. После повторной перезагрузки проинсталлировал iata_cd и все нормально заработало.

Нужно ли было подставлять драйверы первому контроллеру в диспетчере (2 port, 1С08) или можно (нужно) было сразу второму (4 port, 1С00) - я не знаю. Возможно, я был не прав.


К вопросу о том, стоит ли овчинка выделки - загрузка проходит немного быстрее, чем было раньше (примерно 25 с вместо обычных 30 - от начала загрузки винды до появления окон проводника). HDTune на SSD Plextor PX-64M2S показывает 222 МБ/с вместо обычных 205, время доступа 0,203 мс вместо 0,216, загрузка процессора - 2% вместо 4%. На WD10EARX ничего не изменилось, только загрузка процессора тоже чуть снизилась. В целом по быстродействию системы, времени запуска программ и т. п. - субъективно вроде чуть шустрее, но не сказать, чтоб радикально. Так что на более быстрых SSD, да при интенсивной нагрузке на винты, в этом, наверное, есть прямой смысл; на обычных винтах - вряд ли, а на не самых шустрых SSD - едва заметный эффект. В обычной жизни время, потраченное на возню с драйверами, вряд ли окупится за счет возросшего быстродействия. Для домашних машин я бы не стал советовать заморачиваться, если есть чем другим заняться.

Ну и по результатам есть вопросы, буду весьма признателен, если кто-нибудь вразумит. Если кто хочет попытаться -
читать дальше »

1) В реестре в HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E96A-...} теперь фигурируют 3 контроллера -
... 2 port ... 1C08 с pci\ven_8086&dev_1c02,
и два совершенно одинаковых
... Express Chipset SATA AHCI Controller с тем же pci\ven_8086&dev_1c02
и, кроме того, четыре канала иде.
Нужны ли они там? Если нет, какой из двух express-ahci удалить, а какой оставить? Как проверить - где хранятся ссылки на реально используемые устройства?

2) В CriticalDeviceDatabase есть упоминания о pci#ven_8086&dev_1c00 (со службой pciide) и pci#ven_8086&dev_1c08 (без службы), primary_ide_channel, secondary_ide_channel со службой atapi. То же самое - нужны? В каком месте используются?

3) В ветке Enum\PCI есть VEN_8086&DEV_1C00&SUBSYS_B0051458&REV_04 и VEN_8086&DEV_1C08&SUBSYS_B0021458&REV_04 со ссылками на контроллеры, упомянутые в 1-м вопросе, а в Enum\PCIIDE ссылки на каналы IDE. Нужны? Как это проверить?

4) Где-нибудь вообще есть толковое описание структуры этого раздела реестра - связей между записями, логики работы? Как система узнает, например, какой диск, контроллер и драйвер использовать для загрузки?

=======

5) Ну и в сторону немного. После замены драйвера стала вылезать ошибка 7026
про драйвер i8042prt (http://forum.oszone.net/thread-63852.html). Невелика беда, исправил (не очень красиво, да ладно), но хотелось бы понять, как связно одно с другим - почему ее раньше не было, а после замены драйвера запоявлялась.

-------
Конь старый, а участвую недавно, так как борозду порчу редко.


Последний раз редактировалось OldHorse, 07-01-2013 в 21:51. Причина: Перфекционизм

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:01, 07-01-2013 | #440



Компьютерный форум OSzone.net » Железо » Накопители (SSD, HDD, USB Flash) » HDD - AHCI, или как использовать преимущества Serial ATA

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - контролер PCI 2.1 - Serial-ATA + Parallel-ATA J7BXA Прочее железо 9 11-10-2009 11:56
Возможно ли сделать зеркало на дисках serial ATA? serpan Microsoft Windows NT/2000/2003 9 18-10-2006 03:17
ХР и Serial ATA ZhenKZ Microsoft Windows 2000/XP 10 12-03-2005 22:23
Serial ATA TheoS Непонятные проблемы с Железом 14 28-01-2005 23:09
Serial ATA ligv Непонятные проблемы с Железом 15 09-01-2005 20:14




 
Переход