Добавление RAID-возможностей к платам с контроллером HPT370



ВНИМАНИЕ! Автор статьи не несет никакой ответственности за любой вред, нанесенный компьютеру вследствие применения описанных здесь действий.

Часть первая: методика доработки

В последнее время все чаще и чаще на различных материнских платах появляется поддержка интерфейса ATA100 (UDMA/100). Появились уже и накопители с таким интерфейсом (например, IBM DTLA). И хотя новые чипсеты уже оснащены встроенным ATA100, (как, например, Intel i815e) производители плат не забывают и о старом добром Intel BX или не таком уж старом VIA KX133. Достаточно вспомнить относительно "свежие" платы от Abit: BE6-II rev.1.2 и KA7-100. На них обеих установлена дополнительная микросхема контроллера ATA100 HPT370, производимая фирмой HighPoint.

На изыскания, результат которых приведен ниже, меня подвигли три основных мотива. Во-первых, я в качестве хобби иногда занимаюсь несложным домашним видеомонтажом, а для оцифровки видеопотока от дисковой подсистемы требуется максимально возможная стабильная скорость записи/чтения, что сразу заставляет обратить внимание на недорогие IDE RAID решения. Во-вторых — на сайте фирмы HighPoint микросхема HPT370 поименована как "ATA-100 RAID". И, в-третьих, на последних хитах от Abit BX133-RAID и KT7-RAID для реализации интегрированного RAID0/1/0+1 контроллера использована именно эта микросхема. Последние два момента, а также известный факт простой переделки ATA66 контроллера Promise Ultra66 (той же ценовой категории) в RAID контроллер FastTrack66 и навели меня на мысль попытаться получить бесплатный IDE RAID на платах BE6-II rev. 1.2 и KA7-100.

Сразу порадую владельцев этих плат: мои предположения полностью подтвердились — RAID включается и работает, переделка достаточно проста, не требует применения паяльника и полностью обратима (то есть вы не лишаетесь гарантии и в любой момент можете быстро и безболезненно вернуть плату в исходное состояние). Также у меня есть веские основания полагать, что этот фокус пройдет не только с платами от Abit, но и с практически любыми платами с Award BIOS и интегрированным контроллером HPT370, за исключением разве что плат, подобных ASUS (инженеры этой фирмы сильно модифицируют Award BIOS, что не позволяет специальным технологическим утилитам, о которых будет рассказано ниже, корректно вносить в него необходимые изменения). Впрочем, ASUS контроллеров от HighPoint все равно не использует. Возможно, тоже самое можно утверждать и в случае отдельных PCI ATA100 контроллеров, реализованных на том же чипе.

Итак, в чем же суть доработки? Она крайне проста. Дело в том, что набор функций, реализуемых микросхемой HPT370 на конкретной плате в данном случае определяется ее BIOS. В случае отдельной PCI платы BIOS контроллера находится в отдельной микросхеме Flash-ROM, расположенной на самой плате. Здесь все просто и ясно — берем с сайта HighPoint соответствующую прошивку (там они присутствуют в двух вариантах: с RAID и без) и заливаем ее во Flash-ROM утилитой, поставляемой вместе с платой. Хотя мне и не представилось пока возможности проверить такой вариант на практике, никаких проблем возникнуть не должно (возможно, правда, не все так просто — в случае Promise платы отличались одним резистором, с которым нужно было что-то делать).

В случае же интегрированного контроллера все несколько сложнее. Дело в том, что в этом случае BIOS контроллера обычно хранится в основной микросхеме Flash-ROM материнской платы и является частью основного BIOS. Тем не менее замена его возможна благодаря модульной структуре Award BIOS. Вы, возможно, обращали внимание на появляющуюся при старте компьютера строку на начальном экране загрузки: Award modular bios v.x.xx — об этом речь и идет. Благодаря этой особенности, существует возможность манипулировать дополнительными модулями в составе BIOS, не затрагивая его основную часть, рассчитанную на работу на данной конкретной материнской плате с определенным чипсетом, определенной микросхемой ввода/вывода и определенной архитектурой. Так, например, производители плат часто добавляют в BIOS дополнительный модуль BIOS SCSI-контроллера: чтобы можно было загружаться с устройств, подключенных к дешевой (без своего BIOS) SCSI-карте этого же производителя. Точно так же поступила фирма Gigabyte со своей серией видеоадаптеров на основе чипа G400 от Matrox: видеокарта не имеет ПЗУ и ее BIOS хранится в виде модуля в составе BIOS некоторых материнских плат производства Gigabyte. Кстати, разумеется, хотя Gigabyte и декларирует работоспособность этих видеоадаптеров только на определенных моделях своих материнских плат, никто не мешает встроить этот модуль в BIOS почти любой другой платы и использовать видеоадаптер GA-MG400 с ней, что я и проделывал неоднократно.

Собственно методика доработки BIOS

Прежде всего, нам понадобится технологическая утилита CBROM. Что это за утилита и как ею пользоваться, вкратце написано здесь. Но я все же изложу процесс подробно на примере Abit KA7-100.

Эта утилита от Award Software предоставляется производителям материнских плат и предназначена именно для манипуляций с модулями внутри BIOS. Она работает в режиме командной строки (желательно из-под "голого" DOS) и при запуске без параметров выдает достаточно подробную для наших целей инструкцию и список ключей:

Внимание! Если Вы ничего из выданного сообщения не поняли, не знаете что такое DOS и командная строка, не видели никаких ОС кроме Windows 9X и не представляете себе, как можно общаться с компьютером без помощи мышки — не пытайтесь делать ничего из нижеизложенного, последствия для Вашего компьютера, вполне вероятно, будут весьма плачевными!

Итак, из всего разнообразия ключей нас интересуют, прежде всего, /D и /PCI.

Берем файл образа BIOS (можно взять с сайта Abit) и набираем следующую строку:
CBROM.EXE KA7_TY.BIN /d

Модуль, нас интересующий, фигурирует под номером 5.

Сначала нам нужно удалить его:
CBROM.EXE KA7_TY.BIN /pci release

Для контроля опять набираем:
CBROM.EXE KA7_TY.BIN /d

И видим список модулей:

BIOS HPT370 успешно удален.

Следующий этап — внедрение нужной нам версии BIOS HPT370. Я использовал взятый с сайта HighPoint BIOS версии 1.0.0622. Хотя там есть и более свежая версия, но в последние на данный момент официальные версии BIOS для плат BX133-RAID и KT7-RAID включена именно эта, исходя из чего я предположил, что последняя версия еще не прошла полное тестирование в Abit и не стал рисковать. Но вам никто не запрещает попробовать:
CBROM.EXE KA7_TY.BIN /pci 370raid.bin
(название модуля никакого значения не имеет, поэтому я для пущей наглядности переименовал скачанный BIOS с безликим названием bios в 370raid.bin)

Проверяем:
CBROM.EXE KA7_TY.BIN /d

Все. Нужный нам модуль стоит на своем месте.

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

После обновления прошивки в процессе загрузки вместо старого синего аляповатого экрана BIOS ATA100 контроллера мы с глубочайшим удовлетворением можем созерцать простое строгое текстовое сообщение RAID-BIOS на черном фоне:

По <Ctrl><H> заходим в установки контроллера — и, пожалуйста: все должные опции присутствуют: и Stripe, и Mirror, и их сочетание, и Span, и регулировка размера блока от 8Кб до 64Кб и т.д. и т.п.

Теперь немного дегтя в эту бочку меда. К сожалению, описанная методика не сработала у меня с последней версией BIOS для Abit BE6-II ver1.2 . Дело в том, что Award/Phoenix постоянно дорабатывает как базовые версии BIOS (которые потом, в свою очередь, производители плат "подгоняют" "под себя"), так и соответствующие им версии технологических утилит. Поскольку последние кому попало не раздаются, поиск необходимой версии cbrom (которая корректно будет работать именно с той версией BIOS, которая Вам нужна) может стать весьма нетривиальной задачей. Так, например, версию 2.05, которая корректно может работать с большинством разновидностей Award BIOS 6, лично я искал около месяца и в интернете так и не нашел. Спасибо одному доброму ФИДОшнику, поделившемуся ею со мной (уж и не знаю, где он ее взял). Более новой версии у меня нет (кстати, если у кого-то из читателей она есть — я был бы очень рад, если бы Вы со мной поделились), а эта не смогла корректно работать с последней на момент написания версией (RW) BIOS для BE6-II v1.2. Тем не менее, с предыдущей версией (RP) процедура проходит, что называется, "на ура".

Что же делать — неужто смириться с такой вопиющей несправедливостью? И тогда мои мысли слегка изменили направление. К сожалению, платы BX133-RAID пока до нашей глубинки пока не добрались (а в свете выше- и нижеизложенного, вполне возможно, и не доберутся вовсе), так что положить рядом и сравнить ее с BE6-II v1.2 возможности не было.

Но я внимательно прочитал описание этой платы на сайте Abit. Затем увидел, что на ее фотографии никаких кардинальных отличий в количестве слотов и расположении микросхем и других основных компонент не наблюдается. Результатом этого стала гипотеза, что, фактически, главные отличия этих плат друг от друга — это собственно RAID и FC-PGA Socket370 на BX133 вместо Slot1 на BE6-II v1.2 (что с точки зрения BIOS не имеет значения). Кроме того, в голове крутилась мысль, что, зачастую, разработчики следуют простому и логичному принципу: "если сложная система нормально функционирует — лучше ничего не менять или хотя бы не менять ничего принципиального". В общем, после всех этих тяжелых размышлений, я решил опробовать бредовую на первый взгляд идею: просто прошить в Flash-ROM платы BE6-II v1.2 последнюю версию BIOS от платы BX133-RAID.

Попытка увенчалась полным успехом. Эта статья как раз и пишется на Abit BE6-II v1.2, которая теперь абсолютно уверена в том, что она отнюдь не то, чем ее нарекли на заводе-изготовителе, а совсем даже BX133-RAID. А на такую мелочь, как наличие Slot1 вместо FC-PGA Socket370 данный BIOS (ver. TT) внимания просто не обращает. Плата нормально функционирует, никаких проблем в течение недели с момента "чудесного превращения" замечено не было.

Так что, как выяснилось, все владельцы BE6-II v1.2, страстно желающие сменить ее на BX133-RAID, могут не спешить с апгрейдом и просто попробовать предложенный вариант.

Примечания:

  1. Все вышеизложенное по поводу BE6-II ОТНОСИТСЯ ТОЛЬКО К ВЕРСИИ ПЛАТЫ 1.2! Владельцы более ранних версий, к сожалению, не могут воспользоваться данными рекомендациями. Определить версию платы можно следующими способами: внимательно посмотрите на одну из бумажных наклеек на единственном слоте ISA — там есть надпись вида: BE6-II-OK Vx.x. Это x.x как раз и означает версию Вашей платы. И другой способ: просто посмотрите внимательно на многоногую квадратную микросхему рядом с разъемами IDE3 и IDE4 (если расположить плату слотом ISA к себе и разъемами портов LPT/COM/USB и т.д. влево, эта микросхема находится несколько ближе к Вам и левее коннекторов IDE3/IDE4) — если на ней написано HPT370, тогда это v1.2 и вам повезло. Если же на ней написано HPT366 — у Вас не та версия платы.
  2. Естественно, для RAID-контроллера нужен несколько другой драйвер, чем тот, который был установлен для не-RAID варианта. Я использовал драйвер с сайта HighPoint с номером версии, совпадающим с номером версии BIOS (1.0.0622).
  3. Во время работы над статьей, буквально в день окончания первой части, фирма Abit объявила о выпуске новой версии платы BE6-II (BE6-II V2.0 Pentium®III ATX Mainboard Supports Ultra DMA 66/100 & RAID Technology). Естественно, тут же с FTP-сервера компании был скачан BIOS для этого варианта платы и опробован на BE6-II v1.2 — как и следовало ожидать, все так же заработало. Единственная тонкость: awdflash сначала отказался прошивать эту версию BIOS. Проблема была решена при помощи ключа /F (я использовал awdflash 7.53 с командной строкой вида: awdflash /CD /CP /CC /F). Данный ключ способен помочь и в других случаях, когда прошивка кажется утилите "незнакомой". Тесты второй части проводились уже именно на этой конфигурации.

Часть вторая: тестирование

Сначала — о грустном. То есть, о режиме RAID1 (Mirror). К сожалению, ничего хорошего о нем я сказать не могу. Все, что можно, уже сказано в обзоре RAID-контроллера Iwill. И хотя этот контроллер сделан на предыдущей микросхеме HighPoint (HPT368), в HPT370 ситуация в плане RAID1 абсолютно не изменилась, как ни прискорбно констатировать сей факт. По-прежнему отсутствует какая-либо индикация выхода из строя одного из накопителей массива, как оставшейся прежней утилитой от HighPoint (в которой производители устройств в лучшем случае меняют логотип), так и при помощи BIOS контроллера при загрузке. В связи со всем этим полезность режима RAID1 в исполнении HighPoint, на мой взгляд, стремится к абсолютному нулю и не заслуживает подробного рассмотрения (кому нужен RAID1, скромно умалчивающий о полном выходе из строя одного за другим накопителей массива и застенчиво дожидающийся полной потери данных с поломкой последнего?). Интересующиеся могут перечитать указанный обзор — повторюсь, в плане RAID1 эти устройства ведут себя практически идентично. Что, однако, отнюдь не исключает возможность изменения ситуации к лучшему в будущем — с выходом новых версий BIOS, утилит и драйверов. Надеюсь, что сама конструкция HPT370 не исключает таковое улучшение, о чем, к сожалению, не могу сказать ничего конкретного, так как фирма HighPoint не сочла нужным разместить на своем сайте datasheet на свою продукцию (как, например, делает Intel и многие другие). Вот когда будут внесены необходимые изменения, тогда и можно будет всерьез поговорить о полезности и характеристиках этого режима.

Но пока, на мой взгляд, в НРТ370 представляют интерес только возможности RAID0. Тем более что, как вы помните, отчасти именно любительские занятия домашним видеомонтажем подвигли меня на изыскания — ведь именно для оцифровки видеосигнала как нельзя лучше подходят скоростные характеристики RAID0. Вот их-то тестированием и займемся в первую очередь.

Тестирование производилось на компьютере следующей конфигурации:

  • Motherboard: Abit BE6-II v1.2 (доработанная по методике, описанной в первой части, посредством замены BIOS на версию UK от новой платы Abit BE6-II v2.0, RAID-BIOS — v1.0.0622)
  • CPU: Pentium III 650E FC-PGA
  • CPU converter card (Socket370-Slot1): MSI 6905 Master
  • RAM: 128Mb Hyndai PC100-3-2-2
  • VGA: Matrox G400 DualHead 16Mb OEM
  • TV-Tuner: Genius Video Wonder Pro II V2 FM (PCI, Bt878)
  • Системный HDD: Seagate Barracuda ATA ST313620A 13.6Gb — primary master на южном мосте чипсета BX (UDMA/33)
  • ОS: Windows 2000 Professional (build 2195)

Для построения RAID-массива использовались четыре винчестера Fujitsu MPF3102AT 10.2 Гбайт с интерфейсом UDMA/66 (к сожалению, в пределах досягаемости не удалось найти четырех ATA100 накопителей).

Тестирование производилось при помощи Winbench99 v1.1. Использовался следующий набор тестов:

  • Disk Access Time
  • Disk CPU Utilization (transfer rate normalize to 4000000bytes/s, 16384byte blocks)
  • Disk Playback/Bus (Business Disk Winmark)
  • Disk Playback/HE (HighEnd Disk Winmark) Disk Transfer Rate

Тесты запускались трижды, результаты усреднялись.

Накопители были закреплены в изготовленной специально для тестирования из частей двух ATX-корпусов стойке и принудительно охлаждались двумя 12-вольтовыми вентиляторами (от AT блоков питания) для сохранения неизменного температурного режима на протяжении всего тестирования. Дело в том, что современные высокопроизводительные HDD относительно сильно нагреваются во время работы и весьма чувствительны к температурному режиму. Так, для накопителей Fujitsu MPF температура в центре верхней крышки никогда не должна превышать 60°C — иначе HDD может выйти из строя задолго до срока его естественного износа. Более того, при температуре выше 30-35°C многие накопители начинают производить частые терморекалибровки, существенно снижающие их быстродействие

Недавний случай из практики: свежесобранная система домашнего нелинейного монтажа на основе Matrox Marvel G400 работала идеально… первые 30-40 минут. После чего оцифрованный без потери кадров на еще холодной машине видеофрагмент в формате 720x576 24bit 25fps с аппаратным сжатием MJPEG 6:1 начинал воспроизводиться с неприятными рывками и подтормаживанием. Причиной оказался именно чрезмерный нагрев HDD в корпусе ATX MiniTower стандартной компоновки, но с массой щедро разбросанных в совершенно ненужных местах вентиляционных отверстий, в результате чего циркулирующие внутри корпуса компьютера воздушные потоки практически не затрагивали накопитель. Проблема решилась чрезвычайно просто — элементарной герметизацией изнутри простым скотчем лишних отверстий.

Итак, сначала результаты одного винчестера:

Ничего особенного — именно такой график и должен быть у всех моделей Fujitsu семейства MPF3xxxAT.

Далее — RAID0 из двух накопителей (HDD были подключены на разные каналы контроллера, каждый — master, slave отсутствовал):

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

Теперь — более интересный случай: три накопителя, подключенных как primary master, secondary master, secondary slave:

Мы видим здесь "кардиограмму инфарктника" на первой половине графика (чего в теории вроде бы быть не должно) и "идеологически верную" вторую половину, скорость считывания в каждой точке которой равна утроенной скорости считывания одного диска.

Попробуем-ка совместить теорию с практикой, то есть наложить на этот график в соответствующем масштабе график тестирования одного накопителя (он выделен красным цветом):

Здесь (да и на предыдущем графике, но здесь это, как мне кажется, несколько более наглядно) мы видим, что расхождение теории с практикой начинается приблизительно в районе ограничения пропускной способности интерфейса UDMA/66.

И, наконец, массив RAID0 из четырех дисков:

Не правда ли, интересная картина? Это уже гораздо меньше похоже на пресловутую "кардиограмму", но, тем не менее, мы наблюдаем явное ограничение скорости вблизи границы пропускной способности ATA66 (не стоит забывать, что теоретические 66.6 Mбайт/с — т.н. "пиковая" пропускная способность, в реальности она, как правило, несколько ниже — как раз на уровне 58 — 63 Mбайт/с).

А теперь попробуем применить нехитрый прием, именуемый чередованием. Те, кто когда-то имел дело с MFM-накопителями с шаговым приводом головок, должны помнить параметр iterleaving, подобрав оптимальное значение которого при низкоуровневом форматировании винчестера можно было заставить его работать быстрее. Такой же прием — чередование банков — иногда применяется в подсистеме оперативной памяти некоторых материнских плат. Какое это имеет отношение к нашей ситуации? Дело в том, что при задании конфигурации RAID-массива в HighPoint bios setting utility есть возможность "рассортировать" порядок обращения к накопителям. Вышеприведенный график является результатом тестирования конфигурации, получаемой в результате расстановки дисков "по умолчанию", то есть когда вы нажатием Enter помечаете для использования первый диск (primary master), курсор автоматически перескакивает на следующий за ним primary slave, затем — secondary master и secondary slave. Иными словами, распределение данных по дискам в массиве будет идти последовательно — сначала по блоку с дисков первого канала, затем — с дисков второго:
(1) primary master
(2) primary slave
(3) secondary master
(4) secondary slave.

Можно распределить диски несколько иначе:
(1) primary master
(3) primary slave
(2) secondary master
(4) secondary slave.

В данном случае мы получим следующую картину:

Около 20 Mбайт/с прироста на первой половине объема массива! Неплохо, не правда ли?

Однако теоретически должно быть еще лучше, причем в обоих случаях (красным выделен "учетверенный" график одного диска):

С одной стороны, нам еще явно далеко до границы пропускной способности PCI. С другой — мы видим явное влияние некоего фактора, ограничивающего скорость передачи данных. На мой взгляд, этим фактором является недостаточное разделение каналов контроллера, то есть невозможность их строго одновременной работы. Тем не менее, при более оптимальном распределении порядка работы накопителей наблюдается некоторое увеличение пропускной способности, вероятно, вызванное влиянием присутствующего в каждом из каналов 256-байтного буфера FIFO.

К сожалению, в связи с отсутствием на сайте HighPoint подробного datasheet'а HPT370, сложно сказать что-либо более определенное — остается только гадать.

Наконец, после графиков — сводная таблица результатов тестов Winbench99:

1 HDD 2 HDD 3 HDD 4 HDD non-
interleave
4 HDD interleave
Business Disk WinMark 99 (TB/S) 5733,33 6716,67 6866,67 6900 7223,33
High-End Disk WinMark 99 (TB/S) 13833,33 17133,33 19833,33 20900 22066,67
Disk Transfer Rate:Beginning (TB/S) 23800 47600 61400 60000 79000
Disk Transfer Rate:End (TB/S) 14300 28600 43000 56400 57200
Disk Access Time (Milliseconds) 14,73 15,1 14,67 15,07 14,73
Disk CPU Utilization (Percent Used) 1,92 2,34 2,29 2,14 2,07
Disk Playback/Bus:Overall (TB/S) 5733,33 6716,67 6866,67 6900 7223,33
Disk Playback/HE: AVS/Express 3.4 (TB/S) 14833,33 15633,33 15700 16266,67 17233,33
Disk Playback/HE: FrontPage 98 (TB/S) 95766,67 109000 112000 112000 112666,67
Disk Playback/HE: MicroStation SE (TB/S) 24433,33 23966,67 21833,33 20366,67 21500
Disk Playback/HE:Overall (TB/S) 13833,33 17133,33 19833,33 20900 22066,67
Disk Playback/HE: Photoshop 4.0 (TB/S) 7163,33 10266,67 11300 12300 13000
Disk Playback/HE: Premiere 4.2 (TB/S) 12166,67 14866,67 18200 19133,33 20466,67
Disk Playback/HE: Sound Forge 4.0 (TB/S) 11400 14566,67 22133,33 26133,33 27700
Disk Playback/HE: Visual C++ 5.0 (TB/S) 13000 16700 22033,33 23066,67 24333,33

И диаграмма прироста производительности в процентах по отношению к производительности одного диска:

Ну и, наконец, то, ради чего все и затевалось — реальное приложение на stripe из 4-х дисков (с чередованием):

Здесь Вы видите результаты оцифровки видеосигнала PAL в формате 720x576x32bit 25fps без какого-либо real-time сжатия. Поток данных — около 40 Mбайт/с, чего ни один из ныне выпускаемых IDE накопителей обеспечить не способен.

Конечно, никому в здравом уме и в голову не придет осуществлять захват видео с таким потоком, да еще и платой ТВ-тюнера нижнего ценового диапазона, но, тем не менее, сам факт осуществимости этой возможности лишний раз подтверждает, что наш "абсолютно бесплатный" RAID0 работает нормально (тесты — тестами, знаете ли, а реальность — реальностью).

Заключение

Учитывая практическую бесполезность режима RAID1 в исполнении HighPoint, вряд ли целесообразно гнаться за платами с интегрированным IDE-RAID на основе HPT370, если в первую очередь интересует именно надежность. Вероятно, в этом случае стоит обратить внимание на отдельные платы IDE-RAID контроллеров от Promise.

С другой стороны, если уже есть в наличии плата с HPT370 на борту и хотя бы два HDD, то вы наверняка Вы не сочтете лишним совершенно бесплатный RAID0, тем более что доработка не фатальна и легкообратима.

 

Оборудование для тестирования предоставлено фирмой Flash Computers, г. Липецк




Дополнительно

Добавление RAID-возможностей к платам с контроллером HPT370

Добавление RAID-возможностей к платам с контроллером HPT370


ВНИМАНИЕ! Автор статьи не несет никакой ответственности за любой вред, нанесенный компьютеру вследствие применения описанных здесь действий.

Часть первая: методика доработки

В последнее время все чаще и чаще на различных материнских платах появляется поддержка интерфейса ATA100 (UDMA/100). Появились уже и накопители с таким интерфейсом (например, IBM DTLA). И хотя новые чипсеты уже оснащены встроенным ATA100, (как, например, Intel i815e) производители плат не забывают и о старом добром Intel BX или не таком уж старом VIA KX133. Достаточно вспомнить относительно "свежие" платы от Abit: BE6-II rev.1.2 и KA7-100. На них обеих установлена дополнительная микросхема контроллера ATA100 HPT370, производимая фирмой HighPoint.

На изыскания, результат которых приведен ниже, меня подвигли три основных мотива. Во-первых, я в качестве хобби иногда занимаюсь несложным домашним видеомонтажом, а для оцифровки видеопотока от дисковой подсистемы требуется максимально возможная стабильная скорость записи/чтения, что сразу заставляет обратить внимание на недорогие IDE RAID решения. Во-вторых — на сайте фирмы HighPoint микросхема HPT370 поименована как "ATA-100 RAID". И, в-третьих, на последних хитах от Abit BX133-RAID и KT7-RAID для реализации интегрированного RAID0/1/0+1 контроллера использована именно эта микросхема. Последние два момента, а также известный факт простой переделки ATA66 контроллера Promise Ultra66 (той же ценовой категории) в RAID контроллер FastTrack66 и навели меня на мысль попытаться получить бесплатный IDE RAID на платах BE6-II rev. 1.2 и KA7-100.

Сразу порадую владельцев этих плат: мои предположения полностью подтвердились — RAID включается и работает, переделка достаточно проста, не требует применения паяльника и полностью обратима (то есть вы не лишаетесь гарантии и в любой момент можете быстро и безболезненно вернуть плату в исходное состояние). Также у меня есть веские основания полагать, что этот фокус пройдет не только с платами от Abit, но и с практически любыми платами с Award BIOS и интегрированным контроллером HPT370, за исключением разве что плат, подобных ASUS (инженеры этой фирмы сильно модифицируют Award BIOS, что не позволяет специальным технологическим утилитам, о которых будет рассказано ниже, корректно вносить в него необходимые изменения). Впрочем, ASUS контроллеров от HighPoint все равно не использует. Возможно, тоже самое можно утверждать и в случае отдельных PCI ATA100 контроллеров, реализованных на том же чипе.

Итак, в чем же суть доработки? Она крайне проста. Дело в том, что набор функций, реализуемых микросхемой HPT370 на конкретной плате в данном случае определяется ее BIOS. В случае отдельной PCI платы BIOS контроллера находится в отдельной микросхеме Flash-ROM, расположенной на самой плате. Здесь все просто и ясно — берем с сайта HighPoint соответствующую прошивку (там они присутствуют в двух вариантах: с RAID и без) и заливаем ее во Flash-ROM утилитой, поставляемой вместе с платой. Хотя мне и не представилось пока возможности проверить такой вариант на практике, никаких проблем возникнуть не должно (возможно, правда, не все так просто — в случае Promise платы отличались одним резистором, с которым нужно было что-то делать).

В случае же интегрированного контроллера все несколько сложнее. Дело в том, что в этом случае BIOS контроллера обычно хранится в основной микросхеме Flash-ROM материнской платы и является частью основного BIOS. Тем не менее замена его возможна благодаря модульной структуре Award BIOS. Вы, возможно, обращали внимание на появляющуюся при старте компьютера строку на начальном экране загрузки: Award modular bios v.x.xx — об этом речь и идет. Благодаря этой особенности, существует возможность манипулировать дополнительными модулями в составе BIOS, не затрагивая его основную часть, рассчитанную на работу на данной конкретной материнской плате с определенным чипсетом, определенной микросхемой ввода/вывода и определенной архитектурой. Так, например, производители плат часто добавляют в BIOS дополнительный модуль BIOS SCSI-контроллера: чтобы можно было загружаться с устройств, подключенных к дешевой (без своего BIOS) SCSI-карте этого же производителя. Точно так же поступила фирма Gigabyte со своей серией видеоадаптеров на основе чипа G400 от Matrox: видеокарта не имеет ПЗУ и ее BIOS хранится в виде модуля в составе BIOS некоторых материнских плат производства Gigabyte. Кстати, разумеется, хотя Gigabyte и декларирует работоспособность этих видеоадаптеров только на определенных моделях своих материнских плат, никто не мешает встроить этот модуль в BIOS почти любой другой платы и использовать видеоадаптер GA-MG400 с ней, что я и проделывал неоднократно.

Собственно методика доработки BIOS

Прежде всего, нам понадобится технологическая утилита CBROM. Что это за утилита и как ею пользоваться, вкратце написано здесь. Но я все же изложу процесс подробно на примере Abit KA7-100.

Эта утилита от Award Software предоставляется производителям материнских плат и предназначена именно для манипуляций с модулями внутри BIOS. Она работает в режиме командной строки (желательно из-под "голого" DOS) и при запуске без параметров выдает достаточно подробную для наших целей инструкцию и список ключей:

Внимание! Если Вы ничего из выданного сообщения не поняли, не знаете что такое DOS и командная строка, не видели никаких ОС кроме Windows 9X и не представляете себе, как можно общаться с компьютером без помощи мышки — не пытайтесь делать ничего из нижеизложенного, последствия для Вашего компьютера, вполне вероятно, будут весьма плачевными!

Итак, из всего разнообразия ключей нас интересуют, прежде всего, /D и /PCI.

Берем файл образа BIOS (можно взять с сайта Abit) и набираем следующую строку:
CBROM.EXE KA7_TY.BIN /d

Модуль, нас интересующий, фигурирует под номером 5.

Сначала нам нужно удалить его:
CBROM.EXE KA7_TY.BIN /pci release

Для контроля опять набираем:
CBROM.EXE KA7_TY.BIN /d

И видим список модулей:

BIOS HPT370 успешно удален.

Следующий этап — внедрение нужной нам версии BIOS HPT370. Я использовал взятый с сайта HighPoint BIOS версии 1.0.0622. Хотя там есть и более свежая версия, но в последние на данный момент официальные версии BIOS для плат BX133-RAID и KT7-RAID включена именно эта, исходя из чего я предположил, что последняя версия еще не прошла полное тестирование в Abit и не стал рисковать. Но вам никто не запрещает попробовать:
CBROM.EXE KA7_TY.BIN /pci 370raid.bin
(название модуля никакого значения не имеет, поэтому я для пущей наглядности переименовал скачанный BIOS с безликим названием bios в 370raid.bin)

Проверяем:
CBROM.EXE KA7_TY.BIN /d

Все. Нужный нам модуль стоит на своем месте.

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

После обновления прошивки в процессе загрузки вместо старого синего аляповатого экрана BIOS ATA100 контроллера мы с глубочайшим удовлетворением можем созерцать простое строгое текстовое сообщение RAID-BIOS на черном фоне:

По <Ctrl><H> заходим в установки контроллера — и, пожалуйста: все должные опции присутствуют: и Stripe, и Mirror, и их сочетание, и Span, и регулировка размера блока от 8Кб до 64Кб и т.д. и т.п.

Теперь немного дегтя в эту бочку меда. К сожалению, описанная методика не сработала у меня с последней версией BIOS для Abit BE6-II ver1.2 . Дело в том, что Award/Phoenix постоянно дорабатывает как базовые версии BIOS (которые потом, в свою очередь, производители плат "подгоняют" "под себя"), так и соответствующие им версии технологических утилит. Поскольку последние кому попало не раздаются, поиск необходимой версии cbrom (которая корректно будет работать именно с той версией BIOS, которая Вам нужна) может стать весьма нетривиальной задачей. Так, например, версию 2.05, которая корректно может работать с большинством разновидностей Award BIOS 6, лично я искал около месяца и в интернете так и не нашел. Спасибо одному доброму ФИДОшнику, поделившемуся ею со мной (уж и не знаю, где он ее взял). Более новой версии у меня нет (кстати, если у кого-то из читателей она есть — я был бы очень рад, если бы Вы со мной поделились), а эта не смогла корректно работать с последней на момент написания версией (RW) BIOS для BE6-II v1.2. Тем не менее, с предыдущей версией (RP) процедура проходит, что называется, "на ура".

Что же делать — неужто смириться с такой вопиющей несправедливостью? И тогда мои мысли слегка изменили направление. К сожалению, платы BX133-RAID пока до нашей глубинки пока не добрались (а в свете выше- и нижеизложенного, вполне возможно, и не доберутся вовсе), так что положить рядом и сравнить ее с BE6-II v1.2 возможности не было.

Но я внимательно прочитал описание этой платы на сайте Abit. Затем увидел, что на ее фотографии никаких кардинальных отличий в количестве слотов и расположении микросхем и других основных компонент не наблюдается. Результатом этого стала гипотеза, что, фактически, главные отличия этих плат друг от друга — это собственно RAID и FC-PGA Socket370 на BX133 вместо Slot1 на BE6-II v1.2 (что с точки зрения BIOS не имеет значения). Кроме того, в голове крутилась мысль, что, зачастую, разработчики следуют простому и логичному принципу: "если сложная система нормально функционирует — лучше ничего не менять или хотя бы не менять ничего принципиального". В общем, после всех этих тяжелых размышлений, я решил опробовать бредовую на первый взгляд идею: просто прошить в Flash-ROM платы BE6-II v1.2 последнюю версию BIOS от платы BX133-RAID.

Попытка увенчалась полным успехом. Эта статья как раз и пишется на Abit BE6-II v1.2, которая теперь абсолютно уверена в том, что она отнюдь не то, чем ее нарекли на заводе-изготовителе, а совсем даже BX133-RAID. А на такую мелочь, как наличие Slot1 вместо FC-PGA Socket370 данный BIOS (ver. TT) внимания просто не обращает. Плата нормально функционирует, никаких проблем в течение недели с момента "чудесного превращения" замечено не было.

Так что, как выяснилось, все владельцы BE6-II v1.2, страстно желающие сменить ее на BX133-RAID, могут не спешить с апгрейдом и просто попробовать предложенный вариант.

Примечания:

  1. Все вышеизложенное по поводу BE6-II ОТНОСИТСЯ ТОЛЬКО К ВЕРСИИ ПЛАТЫ 1.2! Владельцы более ранних версий, к сожалению, не могут воспользоваться данными рекомендациями. Определить версию платы можно следующими способами: внимательно посмотрите на одну из бумажных наклеек на единственном слоте ISA — там есть надпись вида: BE6-II-OK Vx.x. Это x.x как раз и означает версию Вашей платы. И другой способ: просто посмотрите внимательно на многоногую квадратную микросхему рядом с разъемами IDE3 и IDE4 (если расположить плату слотом ISA к себе и разъемами портов LPT/COM/USB и т.д. влево, эта микросхема находится несколько ближе к Вам и левее коннекторов IDE3/IDE4) — если на ней написано HPT370, тогда это v1.2 и вам повезло. Если же на ней написано HPT366 — у Вас не та версия платы.
  2. Естественно, для RAID-контроллера нужен несколько другой драйвер, чем тот, который был установлен для не-RAID варианта. Я использовал драйвер с сайта HighPoint с номером версии, совпадающим с номером версии BIOS (1.0.0622).
  3. Во время работы над статьей, буквально в день окончания первой части, фирма Abit объявила о выпуске новой версии платы BE6-II (BE6-II V2.0 Pentium®III ATX Mainboard Supports Ultra DMA 66/100 & RAID Technology). Естественно, тут же с FTP-сервера компании был скачан BIOS для этого варианта платы и опробован на BE6-II v1.2 — как и следовало ожидать, все так же заработало. Единственная тонкость: awdflash сначала отказался прошивать эту версию BIOS. Проблема была решена при помощи ключа /F (я использовал awdflash 7.53 с командной строкой вида: awdflash /CD /CP /CC /F). Данный ключ способен помочь и в других случаях, когда прошивка кажется утилите "незнакомой". Тесты второй части проводились уже именно на этой конфигурации.

Часть вторая: тестирование

Сначала — о грустном. То есть, о режиме RAID1 (Mirror). К сожалению, ничего хорошего о нем я сказать не могу. Все, что можно, уже сказано в обзоре RAID-контроллера Iwill. И хотя этот контроллер сделан на предыдущей микросхеме HighPoint (HPT368), в HPT370 ситуация в плане RAID1 абсолютно не изменилась, как ни прискорбно констатировать сей факт. По-прежнему отсутствует какая-либо индикация выхода из строя одного из накопителей массива, как оставшейся прежней утилитой от HighPoint (в которой производители устройств в лучшем случае меняют логотип), так и при помощи BIOS контроллера при загрузке. В связи со всем этим полезность режима RAID1 в исполнении HighPoint, на мой взгляд, стремится к абсолютному нулю и не заслуживает подробного рассмотрения (кому нужен RAID1, скромно умалчивающий о полном выходе из строя одного за другим накопителей массива и застенчиво дожидающийся полной потери данных с поломкой последнего?). Интересующиеся могут перечитать указанный обзор — повторюсь, в плане RAID1 эти устройства ведут себя практически идентично. Что, однако, отнюдь не исключает возможность изменения ситуации к лучшему в будущем — с выходом новых версий BIOS, утилит и драйверов. Надеюсь, что сама конструкция HPT370 не исключает таковое улучшение, о чем, к сожалению, не могу сказать ничего конкретного, так как фирма HighPoint не сочла нужным разместить на своем сайте datasheet на свою продукцию (как, например, делает Intel и многие другие). Вот когда будут внесены необходимые изменения, тогда и можно будет всерьез поговорить о полезности и характеристиках этого режима.

Но пока, на мой взгляд, в НРТ370 представляют интерес только возможности RAID0. Тем более что, как вы помните, отчасти именно любительские занятия домашним видеомонтажем подвигли меня на изыскания — ведь именно для оцифровки видеосигнала как нельзя лучше подходят скоростные характеристики RAID0. Вот их-то тестированием и займемся в первую очередь.

Тестирование производилось на компьютере следующей конфигурации:

  • Motherboard: Abit BE6-II v1.2 (доработанная по методике, описанной в первой части, посредством замены BIOS на версию UK от новой платы Abit BE6-II v2.0, RAID-BIOS — v1.0.0622)
  • CPU: Pentium III 650E FC-PGA
  • CPU converter card (Socket370-Slot1): MSI 6905 Master
  • RAM: 128Mb Hyndai PC100-3-2-2
  • VGA: Matrox G400 DualHead 16Mb OEM
  • TV-Tuner: Genius Video Wonder Pro II V2 FM (PCI, Bt878)
  • Системный HDD: Seagate Barracuda ATA ST313620A 13.6Gb — primary master на южном мосте чипсета BX (UDMA/33)
  • ОS: Windows 2000 Professional (build 2195)

Для построения RAID-массива использовались четыре винчестера Fujitsu MPF3102AT 10.2 Гбайт с интерфейсом UDMA/66 (к сожалению, в пределах досягаемости не удалось найти четырех ATA100 накопителей).

Тестирование производилось при помощи Winbench99 v1.1. Использовался следующий набор тестов:

  • Disk Access Time
  • Disk CPU Utilization (transfer rate normalize to 4000000bytes/s, 16384byte blocks)
  • Disk Playback/Bus (Business Disk Winmark)
  • Disk Playback/HE (HighEnd Disk Winmark) Disk Transfer Rate

Тесты запускались трижды, результаты усреднялись.

Накопители были закреплены в изготовленной специально для тестирования из частей двух ATX-корпусов стойке и принудительно охлаждались двумя 12-вольтовыми вентиляторами (от AT блоков питания) для сохранения неизменного температурного режима на протяжении всего тестирования. Дело в том, что современные высокопроизводительные HDD относительно сильно нагреваются во время работы и весьма чувствительны к температурному режиму. Так, для накопителей Fujitsu MPF температура в центре верхней крышки никогда не должна превышать 60°C — иначе HDD может выйти из строя задолго до срока его естественного износа. Более того, при температуре выше 30-35°C многие накопители начинают производить частые терморекалибровки, существенно снижающие их быстродействие

Недавний случай из практики: свежесобранная система домашнего нелинейного монтажа на основе Matrox Marvel G400 работала идеально… первые 30-40 минут. После чего оцифрованный без потери кадров на еще холодной машине видеофрагмент в формате 720x576 24bit 25fps с аппаратным сжатием MJPEG 6:1 начинал воспроизводиться с неприятными рывками и подтормаживанием. Причиной оказался именно чрезмерный нагрев HDD в корпусе ATX MiniTower стандартной компоновки, но с массой щедро разбросанных в совершенно ненужных местах вентиляционных отверстий, в результате чего циркулирующие внутри корпуса компьютера воздушные потоки практически не затрагивали накопитель. Проблема решилась чрезвычайно просто — элементарной герметизацией изнутри простым скотчем лишних отверстий.

Итак, сначала результаты одного винчестера:

Ничего особенного — именно такой график и должен быть у всех моделей Fujitsu семейства MPF3xxxAT.

Далее — RAID0 из двух накопителей (HDD были подключены на разные каналы контроллера, каждый — master, slave отсутствовал):

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

Теперь — более интересный случай: три накопителя, подключенных как primary master, secondary master, secondary slave:

Мы видим здесь "кардиограмму инфарктника" на первой половине графика (чего в теории вроде бы быть не должно) и "идеологически верную" вторую половину, скорость считывания в каждой точке которой равна утроенной скорости считывания одного диска.

Попробуем-ка совместить теорию с практикой, то есть наложить на этот график в соответствующем масштабе график тестирования одного накопителя (он выделен красным цветом):

Здесь (да и на предыдущем графике, но здесь это, как мне кажется, несколько более наглядно) мы видим, что расхождение теории с практикой начинается приблизительно в районе ограничения пропускной способности интерфейса UDMA/66.

И, наконец, массив RAID0 из четырех дисков:

Не правда ли, интересная картина? Это уже гораздо меньше похоже на пресловутую "кардиограмму", но, тем не менее, мы наблюдаем явное ограничение скорости вблизи границы пропускной способности ATA66 (не стоит забывать, что теоретические 66.6 Mбайт/с — т.н. "пиковая" пропускная способность, в реальности она, как правило, несколько ниже — как раз на уровне 58 — 63 Mбайт/с).

А теперь попробуем применить нехитрый прием, именуемый чередованием. Те, кто когда-то имел дело с MFM-накопителями с шаговым приводом головок, должны помнить параметр iterleaving, подобрав оптимальное значение которого при низкоуровневом форматировании винчестера можно было заставить его работать быстрее. Такой же прием — чередование банков — иногда применяется в подсистеме оперативной памяти некоторых материнских плат. Какое это имеет отношение к нашей ситуации? Дело в том, что при задании конфигурации RAID-массива в HighPoint bios setting utility есть возможность "рассортировать" порядок обращения к накопителям. Вышеприведенный график является результатом тестирования конфигурации, получаемой в результате расстановки дисков "по умолчанию", то есть когда вы нажатием Enter помечаете для использования первый диск (primary master), курсор автоматически перескакивает на следующий за ним primary slave, затем — secondary master и secondary slave. Иными словами, распределение данных по дискам в массиве будет идти последовательно — сначала по блоку с дисков первого канала, затем — с дисков второго:
(1) primary master
(2) primary slave
(3) secondary master
(4) secondary slave.

Можно распределить диски несколько иначе:
(1) primary master
(3) primary slave
(2) secondary master
(4) secondary slave.

В данном случае мы получим следующую картину:

Около 20 Mбайт/с прироста на первой половине объема массива! Неплохо, не правда ли?

Однако теоретически должно быть еще лучше, причем в обоих случаях (красным выделен "учетверенный" график одного диска):

С одной стороны, нам еще явно далеко до границы пропускной способности PCI. С другой — мы видим явное влияние некоего фактора, ограничивающего скорость передачи данных. На мой взгляд, этим фактором является недостаточное разделение каналов контроллера, то есть невозможность их строго одновременной работы. Тем не менее, при более оптимальном распределении порядка работы накопителей наблюдается некоторое увеличение пропускной способности, вероятно, вызванное влиянием присутствующего в каждом из каналов 256-байтного буфера FIFO.

К сожалению, в связи с отсутствием на сайте HighPoint подробного datasheet'а HPT370, сложно сказать что-либо более определенное — остается только гадать.

Наконец, после графиков — сводная таблица результатов тестов Winbench99:

1 HDD 2 HDD 3 HDD 4 HDD non-
interleave
4 HDD interleave
Business Disk WinMark 99 (TB/S) 5733,33 6716,67 6866,67 6900 7223,33
High-End Disk WinMark 99 (TB/S) 13833,33 17133,33 19833,33 20900 22066,67
Disk Transfer Rate:Beginning (TB/S) 23800 47600 61400 60000 79000
Disk Transfer Rate:End (TB/S) 14300 28600 43000 56400 57200
Disk Access Time (Milliseconds) 14,73 15,1 14,67 15,07 14,73
Disk CPU Utilization (Percent Used) 1,92 2,34 2,29 2,14 2,07
Disk Playback/Bus:Overall (TB/S) 5733,33 6716,67 6866,67 6900 7223,33
Disk Playback/HE: AVS/Express 3.4 (TB/S) 14833,33 15633,33 15700 16266,67 17233,33
Disk Playback/HE: FrontPage 98 (TB/S) 95766,67 109000 112000 112000 112666,67
Disk Playback/HE: MicroStation SE (TB/S) 24433,33 23966,67 21833,33 20366,67 21500
Disk Playback/HE:Overall (TB/S) 13833,33 17133,33 19833,33 20900 22066,67
Disk Playback/HE: Photoshop 4.0 (TB/S) 7163,33 10266,67 11300 12300 13000
Disk Playback/HE: Premiere 4.2 (TB/S) 12166,67 14866,67 18200 19133,33 20466,67
Disk Playback/HE: Sound Forge 4.0 (TB/S) 11400 14566,67 22133,33 26133,33 27700
Disk Playback/HE: Visual C++ 5.0 (TB/S) 13000 16700 22033,33 23066,67 24333,33

И диаграмма прироста производительности в процентах по отношению к производительности одного диска:

Ну и, наконец, то, ради чего все и затевалось — реальное приложение на stripe из 4-х дисков (с чередованием):

Здесь Вы видите результаты оцифровки видеосигнала PAL в формате 720x576x32bit 25fps без какого-либо real-time сжатия. Поток данных — около 40 Mбайт/с, чего ни один из ныне выпускаемых IDE накопителей обеспечить не способен.

Конечно, никому в здравом уме и в голову не придет осуществлять захват видео с таким потоком, да еще и платой ТВ-тюнера нижнего ценового диапазона, но, тем не менее, сам факт осуществимости этой возможности лишний раз подтверждает, что наш "абсолютно бесплатный" RAID0 работает нормально (тесты — тестами, знаете ли, а реальность — реальностью).

Заключение

Учитывая практическую бесполезность режима RAID1 в исполнении HighPoint, вряд ли целесообразно гнаться за платами с интегрированным IDE-RAID на основе HPT370, если в первую очередь интересует именно надежность. Вероятно, в этом случае стоит обратить внимание на отдельные платы IDE-RAID контроллеров от Promise.

С другой стороны, если уже есть в наличии плата с HPT370 на борту и хотя бы два HDD, то вы наверняка Вы не сочтете лишним совершенно бесплатный RAID0, тем более что доработка не фатальна и легкообратима.

 

Оборудование для тестирования предоставлено фирмой Flash Computers, г. Липецк