Принципы работы жестких дисков - Функция Bus Master

ОГЛАВЛЕНИЕ

 

Функция Bus Master

         Функция Bus Master (дословно Хозяин Шины, ранее по ГОСТ в нашей стране - задатчик на шине) введена в контроллеры EIDE с приходом процессоров Pentium. Что это такое? Классический способ приема данных от какого-либо устройства следующий - процессор выполняет команду чтения порта, считывает байт или слово данных в свой регистр, после чего переписывает этот байт или слово в память, затем повторяет эту процедуру до тех пор, пока вся необходимая информация не будет считана из устройства в память. Если бы процессору больше нечего было делать, то этот способ всех бы устраивал. Но с появлением многозадачных операционных систем стало слишком накладно использовать процессор для операций ввода/вывода. Поэтому контроллеры внешних устройств (EIDE в частности) стали оборудоваться как бы собственными процессорами ввода/вывода. С появлением шины PCI, первой реально многопользовательской шины в архитектуре IBM PC реализация этой идеи стала совсем простой.
        Что происходит в этом случае? Процессор программирует контроллер EIDE на шине PCI, указывая ему, откуда он должен взять данные и куда в память их положить. После получения этих указаний контроллер захватывает управление шиной PCI, а драйвер Bus Master управляет шиной доступа к памяти и совместно с контроллером выполняет операции по считыванию данных с жесткого диска или CD-ROM непосредственно в память с помощью контроллера прямого доступа в память (DMA - Direct Memory Access). При таком способе обмена данных процессор свободен после выдачи команд контроллеру EIDE и может заниматься любыми другими делами. Надо только понимать, что процессор может в это время не получить доступ к шине PCI и основной памяти.
        Функция Bus Master делает интерфейс EIDE SCSI-подобным (хотя это только подобие - современные контроллеры SCSI на шине PCI также могут работать в режиме Bus Master и, кроме этого, "интеллектуально" управлять своей периферией). Если доступ к диску выполняет только одна, запущенная в данный момент программа, то значительного выигрыша в производительности не будет. Но достаточно запустить несколько приложений, работающих с диском, как заметное повышение производительности будет очевидным. Это легко проверить, запустив одновременно, например, два Winbench 99 с тестом диска с Bus Master драйверами или без оных. В контроллерах IDE из наборов микросхем фирмы Intel, ранее называемых Triton, встроена функция Bus Master. Intel называет эти контроллеры PIIX (Pci Isa Ide aXcelerator). Пока Intel выпустил 4 таких контроллера 80371FB (PIIX), 82371SB (PIIX3), 82371AB и 82371EB (PIIX4). Предпоследний из них входит в набор Intel 430TX - это первый Intel контроллер IDE с поддержкой режима Ultra DMA/33. Сейчас, в основном, используется 82371AB&EB, включая и материнские платы на Pentium II/III. На платах с набором 80440BX применяется микросхема 82371EB, функционально ничем не отличающаяся от 82371AB, но допускающая обращение к ней со стороны процессора с частотой 100 MHz. В наборах i810, i810e, i820, i840 поддерживается стандарт UltraDMA/66, а в наборах i815E, i815EP и далее поддерживается UltraATA100.
        Следует заметить, что Windows 95 OSR2 не совсем корректно работала с парой "UltraDMA жесткий диск - UltraDMA контроллер". Фирма Western Digital отмечает высокую вероятность ошибок при работе в этом случае и настоятельно рекомендует использовать драйвера Bus Master от Intel, поскольку в их работе ошибок нет. Сама Microsoft также подтверждает существование проблемы.
        В Windows 98 драйвера IDE работают корректно. Intel прекратила разработку отдельных драйверов Bus Master для Windows 98 до выхода наборов i8xx. В Windows NT функция Bus Master может быть включена с как с помощью специальной программы, так и драйверов от Intel.

Драйвера поддержки Bus Master

     Функция Bus Master включается только специальными драйверами под соответствующую операционную систему. Для примера мы предлагаем ссылки на драйверы для Windows 95, OS/2 и Windows NT. Windows 98 не требует установки драйверов Bus Master от третьих фирм, так встроенные в систему драйвера работают вполне удовлетворительно. С нашей точки зрения, наилучшими драйверами Bus Master являлись в свое время драйверы, разработанные фирмой Triones (последняя версия 3.70). Эти драйверы разработаны не только для Windows 95/NT и OS/2, но и для Novell, SCO Unix, MS-DOS. К сожалению, продукт Triones не является freeware или shareware. Комплект драйверов Triones поставлялся вместе с некоторыми материнскими платами, например, фирм Gigabyte, DataExpert, Acer.
В OEM service release 2 Windows 95 подобный драйвер встроен в систему (у него осталось старое имя ESDI_506.pdr). Режим перекачки данных, использующий DMA, может быть отключен в System Manager из Control Panel/System. К своим последним драйверам Intel стал прилагать диагностическую программу Intel Companion, которая сообщает подробную информацию обо всех устройствах, подключенных к IDE интерфейсу и о режимах их работы.

Проблемы, возникающие при работе с драйверами Bus Master

           Проблемы, описанные ниже, возникали в таком виде не так давно, сейчас большинство этих проблем устранено, но тем не менее, они представляют некий исторический интерес.
           Большинство проблем возникает с накопителями CD-ROM и старыми жесткими дисками. Поэтому после установки драйверов проверьте функционирование системы (сохраните в какой-либо программе файлы, перепишите файлы с диска на диск и т.д.). Рекомендуется также проверить CD-ROM на чтение CD-ROM дисков и воспроизведение аудио дисков. CD-ROM рекомендуется всегда устанавливать как master на втором IDE канале.
        Мы столкнулись с тем, что в случае использования материнской платы на наборе 430TX и установкой под Windows NT 4.0 соответствующих драйверов происходил crash системы при использовании CD-ROM приводов Samsung (12-24x), неустойчивая работа с CD-ROM Panasonic модели CR-583 (8-ми скоростной) и т.д. Мы не можем утверждать, что виноваты накопители - может быть, виноваты драйверы (мы тестировали на драйверах от Intel и Triones - результаты были одинаковы), мы просто констатируем факт. 24-х скоростные и выше CD-ROM уже не имеют проблем с драйверами Bus Master. 
        Если вы обнаружили неприятные эффекты, например "зависание" компьютера при попытке сохранить файл, невозможность проигрывания аудио дисков и т.п., то следует удалить драйвера Bus Master или, что то же самое, очистить поле DMA в свойствах IDE контроллера. В Windows 95 это также делается повторным запуском программы Setup установки драйверов Bus Master и последующего выбора Uninstall.
Из известных нам общих проблем - невозможно проиграть аудио диск в Windows NT 4.0, невозможность просмотра некоторых видов видеодисков в Windows 95 (с драйверами от Triones все в порядке), несколько неустойчивая работа с диском у драйверов Intel.
        Множество проблем обсуждаются на сайте BMdrivers.com. Особенно актуальны эти проблемы для пользователей Windows 95 OSR2, в которую Microsoft встроила поддержку Bus Master, но как это часто бывает, с многочисленными ошибками. Ссылки на "заплатки" к Windows 95 OSR2 также есть на этом сайте.
        Надо также понимать, что нормальное функционирование режима Bus Master и DMA возможно ТОЛЬКО на правильно спроектированных материнских платах и IDE кабелях. В противном случае операционная система снимет режим DMA, не уведомляя при этом пользователя. Производительность жесткого диска, CD-ROM и других IDE устройств существенно понизится, не говоря уже о возрастании в несколько раз нагрузки на центральный процессор.