Интересное это занятие — изучать историю техники, отыскивая моменты, где развитие идет по спирали. В какой-то момент времени появляются необычные технические решения, расширяется разнообразие подходов, а потом в один момент схлопывается после нахождения оптимального пути. Но спустя какое-то время, отброшенный на задворки развития подход вновь опробуется, но в этот раз развивается и становится общепринятым. Давайте в очередной раз окунемся в глубины прошлого и посмотрим, откуда растут ноги у аппаратного ускорения операций ввода-вывода, знакомого нам сегодня по высокопроизводительным сетевым картами и RAID контроллерам. Приятного чтения!
Итак, на дворе 1996 год. Появившийся совсем недавно процессор Intel Pentium Pro впервые довел IBM PC совместимые компьютеры до уровня производительности, позволяющего конкурировать с RISC системами. Но конкурировать — не значит сравниться и, тем более, не значит — быть действительно быстрым. Большинство компьютеров того времени страдали от высоких нагрузок при выполнении операций ввода-вывода: в первую очередь работу с дисками и сетью. Производительность последних также росла и требовала еще больших затрат ресурсов системы для реализации их возможностей.
Еще недавно 10 мбит сети Ethernet справлялись с большинством клиентских задач, и только серверы использовали агрегированные подключения (например, 4-портовые адаптеры Cogent). Но приход 100VG-AnyLAN и Fast Ethernet с десятикратным ростом пропускной способности и появившиеся тут же многопортовые серверные адаптеры потребовали соответствующих затрат времени CPU на работу с ними: в то время сетевые контроллеры ещё не умели забирать на себя часть нагрузки, связанной с обработкой сетевых протоколов (например, TCP Offloading). О важности разгрузки процессора при работе с сетью говорит тот факт, что даже в начале 2000-х годов много более мощные машины с процессорами Intel Pentium III заметно просаживались при активной сетевой работе, если они были укомплектованы простыми карточками с чипом Realtek RTL8139, которые не умели в Offloading, но совершенно не замечали нагрузки, если установить “умную” карту от Intel или 3Com.
Процессоры Intel Pentium Pro
Не менее серьезно обстоит ситуация и с дисковыми операциями: скорости SCSI уже достигают 40 Мбайт/с на канал, на носу обновление стандарта для поддержки вдвое больших скоростей. Набирают популярность и дисковые массивы.
С другой стороны, нарастает проблема создания драйверов под растущий зоопарк операционных систем (Windows NT, OS/2, UnixWare итд) и… (барабанная дробь)… архитектур процессоров! Середина 90х — время больших надежд на скорую смерть х86 и приход RISCового будущего (спойлер — оно не пришло, и только сейчас пока еще робко, но все увереннее, снова стучится в дверь). Windows NT выпускается для четырех (!) процессорных архитектур, поддерживаемые ею RISC-машины относительно стандартизованы и уверенно развиваются.
В такой обстановке, недавно образованная Intelligent I/O Special Interest Group (I2O SIG) публикует стандарт I2O — интеллектуального ввода-вывода. Стандарт предполагает выполнение всех операций I/O с использованием поддерживаемых устройств — сетевых карт и контроллеров SCSI — на выделенном процессоре (IOP), в качестве оного подразумевался интеловский не сбывшийся (в очередной раз) RISC общего назначения i960 в специально доработанной версии (суффиксы RD/RP/RM/RN). Процессор выпускался с частотой от 33 до 66 МГц (позднее ее подняли до 100 МГц), снабжался собственной памятью, и работал под управлением операционной системы IxWorks от компании Wind River Systems, автора известной RTOS VxWorks. На материнских платах, как правило, устанавливали два выделенных слота SIMM с поддержкой до 64 Мбайт (позднее — 256 Мбайт) оперативной памяти — этого было более чем достаточно для ОС, всех возможных программных модулей и кэширования. Существовала возможность отключения интеллектуальных функций процессора и использование его в качестве обычного PCI моста.
Модель драйверов I2O. Источник — www.ixbt.com/mainboard/i2o.html
Фактически, взаимодействие с реальным железом ложилось на плечи этой ОС, для нее создатели устройств и должны были создавать собственные драйвера (в терминах I2O — HDM, Hardware Device Module). В свою очередь IxWorks предоставляла интерфейс для взаимодействия с драйверами основной операционной системы, в данной концепции именуемыми OSM — Operating System Module. При этом появлялась унификация драйверов для всех устройств одного типа. В случае повсеместного внедрения I2O производители железа должны были разработать драйвера только для IxWorks, а WindRiver совместно с производителями ОС разрабатывала бы драйвера OSM для поддерживаемых операционных систем.
Чуть позже появилась третья абстракция — модуль обслуживания интерфейса, Interface Service Modules (ISM). ISM — выполняемая под управлением VxWorks программа, позволяющая разгрузить центральный процессор от выполнения тех или иных задач, связанных с операциями ввода-вывода. Например, столь востребованная по сей день аппаратная обработка стека протоколов IP (TCP Offloading). Помимо разгрузки ЦП от сопутствующих вводу-выводу вычислений, ISM способна обеспечивать взаимодействие нескольких процессоров ввода-вывода в одной системе.
Итак — задумка чудесная. Но раз вы узнаете о технологии из ретроспективной статьи, значит что-то пошло не так! А не так пошло почти все, что только можно. Во-первых, не было представлено особо заметного ассортимента оборудования с поддержкой I2O. Внезапно, первой выпустила материнскую плату и сервер на ее основе Supermicro. Ее модели P6DNH и P6DNH2 на основе чипсета Intel 440FX поддерживали процессоры Pentium Pro (socket 8) и соответствовали форм-фактору Full AT с дополнительными слотами PCI, обслуживаемыми IOP, расположенными в верхней части платы. Платы располагали 10 слотами памяти SIMM, 8 из которых обслуживал контроллер памяти чипсета и 2 принадлежали IOP.
SuperMicro SuperServer P6DNH. Источник — www.itweek.ru/infrastructure/article/detail.php?ID=42074
На основе этих плат выпускались серверные платформы SuperServer, рассчитанные в первую очередь на поставку ОЕМ сборщикам и крупным системным интеграторам. В дальнейшем были выпущены еще две платы, уже для процессоров Intel Pentium II в конструктиве Slot1. Одна, модель 1997 года — на чипсете Intel 440LX, с поддержкой шины 66 МГц, другая, появившаяся уже в 1998 году, использовала чипсет Intel 440GX и, помимо поддержки 100 МГц и до 2 Гбайт ОЗУ, получила слот шины AGP (ее поддерживал и Intel 440LX, но на ранней модели платы поддержка не была реализована), что позволяло использовать ее не только в серверах, но в и мощных графических станциях. Эти платы использовали по 4 слота DIMM для системной ОЗУ и по 2 слота SIMM для памяти IOP.
SuperMicro P6DGH. Источник — theretroweb.com/motherboards/s/supermicro-p6dgh
Слоты памяти при этом были размещены рядом друг с другом. Когда я впервые увидел фото P6DGH, я был удивлен — зачем кому-то пришла в голову реализовывать поддержку SIMM EDO (чипсеты серии Intel 440 поддерживали как SDRAM, так и EDO) на топовой серверной плате, пока не увидел прикрытый радиатором процессора чип i960. Забавно, что встроенный контроллер SCSI Adaptec подключен напрямую к шине PCI, а не через IOP и для реализации RAID функций требует установки отдельной карты с процессором в выделенный слот.
При этом решений для 4-процессорных систем или систем на базе процессоров Intel Xeon в конструктиве Slot2 с поддержкой I2O компанией выпущено не было.
Как ни странно, вообще не отметилась в этом ряду сама Intel. Помимо SuperMicro, лишь Asus выпустила материнскую плату с I2O как отдельный продукт — модель Asus P2B-D2. Эта плата формата E-ATX поддерживала пару процессоров Intel Pentium II (Slot1) с частотой системной шины до 100 МГц и использовала чипсет Intel 440BX. В отличие от решений SuperMicro, здесь присутствует встроенная видеокарта и сетевой адаптер на основе чипа Интел. И снова встроенные устройства — и сеть, и SCSI — не подключены к IOP. Сам IOP может в свою очередь переключаться в режим PCI моста, в таком режиме установленные в управляемые им слоты PCI будут работать как обычные устройства.
Asus P2B-D2. Источник — руководство пользователя платы.
Изначально считалось, что недорогой (10-15 долларов США) процессор ввода-вывода будет интегрироваться на материнские платы или даже непосредственно на устройства для установки в PCI слот. Если в случае с первым подходом практика показала, что интеграция стоит куда дороже: процессор потребовал довольно сложной разводки, подключения к основной PCI шине и управляемым слотам PCI, и выделенных слотов памяти — то второй подход завоевал куда большую популярность и следы ее прослеживаются до сих пор.
Начнем с сетевых карт — их было выпущено… целая одна модель! Intel PRO/100 Intelligent Server Adapter, также известная как PILA8480 (две ревизии — 1997 и 1998 года).
Intel PRO/100 Intelligent Server Adapter
Как вы можете видеть, здесь присутствует IOP i960, но для память выполнена в виде двух чипов общей емкостью 1 Мбайт, расположенных на сетевой карте и расширение ее не предусмотрено. Впрочем, здесь оно уже и не требуется — HDM здесь будет выполняться только один и в отличие от обслуживания дисковых накопителей, задачи здесь не так требовательны к памяти.
Мне удалось приобрести две New Old Stock карты этой модели выпущенных в начале 1998 и конце 1999 годов. Сейчас эти карты заняли свое место в двух любимых сборках — "Dreamstation" и "Millennium Dream". В Windows 2000 уже есть драйверы для карты, для NT 4.0 пришлось потратить изрядно времени на поиск.
Контроллер RAID серии Mylex DAC960
Другое дело RAID контроллеры: на процессорах i960 их было выпущено огромное множество от разных производителей. Часть из них использовали собственные прошивки, иногда даже предоставлявшие интерфейс для операционной системы, совместимый с I2O OSM. Но несколько компаний пошли дальше — в первую очередь это была Intel, выпустившая набор для разработки RAID контроллеров под управлением IxWorks (Intel SMU22R), а также последователи — Symbios Logic (позднее LSI), AMI и DPT (позднее была приобретена Adaptec), а также использовавшие их наработки под собственным именем производители серверов, включая, например, Hewlett-Packard. Такие контроллеры часто имели на борту разъемы для установки и расширения памяти, обладали серьезной производительностью и поддерживали множество вариантов уровней RAID-массивов. Будучи включенными в режиме I2O (как правило, он выключен по умолчанию), могли использовать для работы стандартные I2O совместимые драйвера (OSM).
Одним же из выдающихся примеров реализации I2O стал контроллер HP NetRAID Integrated Controller, который поставлялся в составе серверов HP NetServer LH3 (Dual Slot1) и LH6000 (Quad Slot2). К счастью, младшая модель уже давно нашла свое место в коллекции Digital Vintage — получится более подробно познакомиться с ней.
Сервер HP NetServer LH3 — в процессе реставрации, виден неоригинальный DVD-привод
LH3 и LH6000 делят между собой общее шасси и младшая модель сравнительно легко может быть обновлена до старшей — требуется заменить основную системную плату, установить дополнительное охлаждение и приклеить новый шильдик из комплекта поставки. Само шасси — огромная по нынешним меркам “тумбочка” двойной ширины с прочными колесиками. Проверено — выдерживают более 100 кг дополнительной нагрузки — пару серверов Sun и HP сходного размера.
Форм-фактор — реализация стандарта NLX в версии для мощных серверов. В настольном варианте в объединительную плату устанавливалась лишь материнка, основные слоты расширения располагались на самой объединительной плате. Здесь же она играет лишь роль распределителя питания — к ней подключаются блоки питания и система охлаждения. В два слота на ней устанавливаются материнская плата и плата ввода-вывода. Отсек блоков питания расположен сзади, в нижней части шасси. Базовой конфигурации установлен лишь один блок питания, всего же их можно установить два.
Сервер HP NetServer LH3 — материнская плата и процессоры
Материнская плата выполнена на основе популярнейшего чипсета Intel 440BX, занявшего место практически во всех сегментах рынка — от ноутбуков и настольных компьютеров среднего уровня до мощных рабочих станций и серверов. На ней расположено два разъема Slot1 для установки процессоров Intel Pentium II и Intel Pentium III с частотой шины 66 или 100 МГц. Наш экземпляр укомплектован парой Intel Pentium III 500 МГц на ядре Katmai. Процессоры оснащены пассивными системами охлаждения — как и в современных серверах поток воздуха создается вентиляторами, установленными в шасси. Также присутствует 4 слота памяти DIMM, несмотря на то что чипсет поддерживает как регистровые, так и обычные модули памяти, в данном сервере необходимо использование исключительно регистровых модулей Registered ECC SDRAM. Установлено 4 оригинальных модуля общим объемом 512 Мбайт. На задней панели платы расположены стандартные порты.
Сервер HP NetServer LH3 — плата ввода-вывода
Сама же плата при снятых крышках шасси легко извлекается из слота и достается из сервера. Бок о бок с ней находится плата ввода-вывода, несущая разъемы расширения PCI64, PCI и ISA. На этой плате расположен мост для реализации дополнительной шины PCI64. Помимо него расположен процессор ввода-вывода i960, к которому подключены два контроллера SCSI Symbios и слот памяти, несущий 16 Мбайт модуль памяти типа SIMM. Также к нему подключен выделенный RTC Dallas с памятью для хранения настроек IxWorks и настроек работы с дисковыми массивами. Набор этих элементов формирует интегрированный контроллер HP NetRAID. Казалось бы, тут уже несложно было бы подключить к IOP хотя бы пару слотов PCI для работы с сетевыми адаптерами в режиме I2O, но нет, к сожалению, этого сделано не было, хотя все возможности для этого есть.
На переднем краю платы расположена пара SCSI разъемов для подключения расположенных во фронтальной части шасси двух дисковых корзин (в нашем экземпляре установлена одна) Hot Swap. Есть возможность подключения стримера. А вот привод оптических дисков уже обычный IDE, причем прогрессивный на то время DVD-ROM, заводская опция.
Сервер HP NetServer LH3 — кнопки управления и диагностический экран
Кнопки включения и перезагрузки сервера расположены под небольшой крышкой, защищающей их от случайного нажатия. Ниже расположен небольшой информационный экран и набор кнопок для управлениям им. Внизу передней части шасси расположены уже упомянутые дисковые корзины, запираемые на ключ. Также ключом фиксируется и пластиковая лицевая панель, открывающая доступ к демонтажу крышек шасси.
Сервер попал в коллекцию два года назад благодаря коллеге Артему Кашканову radiolok. Год спустя он прошел реставрацию и был доукомплектован. Лишь сейчас пришла очередь рассказа о нем — мне хотелось сделать не просто обзор сервера, но и более подробно рассказать о его особенностях, главной из которых оказалась поддержка технологии I2O. Постепенно именно сама технология стала главной темой статьи, но сервер стал единственным пока примером ее реализации, который можно было бы показать общественности. Других устройств с поддержкой I2O в коллекции Digital Vintage пока нет.
К сожалению, как часто бывает с вещами, опередившими свое время, век I2O был недолог. Немногие выпускавшиеся платы с полноценной реализацией технологии сейчас являются коллекционной редкостью класса “анобтаниум”, а немногие серверы с интегрированными дисковыми I2O контроллерами сошли с арены к концу 2002 года вместе с платформой Slot2. Куда более долог оказался век у RAID контроллеров — IxWorks переехала на архитектуру ARM и продолжила применяться в более новых SCSI и SAS устройствах. Со временем производители отказались от поддержки унифицированных интерфейсов OSM, но логика работы по сей день остается прежней — RAID контроллер полностью берет на себя выполнение операций ввода-вывода и отдает ОС уже сформированные блочные устройства. И только с приходом NVMe накопителей процессор ввода-вывода начал становится узким местом в серверных системах.
А вот в производительных сетевых картах во всю применяется разгрузка CPU от выполнения ключевых задач работы с стеком TCP/IP (тот самый TCP Offloading) и, иногда, протоколом iSCSI.
Сыграла свою роль из закрытость “клуба” I2O — благодаря усилиям Microsoft и SCO, доступ разработчиков открытых систем к спецификациям технологии был открыт уже под закат ее развития и драйверы для Linux и BSD появились с большой задержкой, а ведь эти системы тогда как раз очень сильно набирали популярность в серверном сегменте. Когда же поддержка появилась — актуальность ее была уже мала, но тем не менее, технология поддерживалась вплоть до 6 релиза RHEL, примерно в то же время, произошел отказ от поддержки и в других дистрибутивах открытых ОС.
Так замкнулся очередной виток истории ИТ. До новых встреч и до новых интересных историй, уважаемые читатели!
P.S. Пожалуйста, если вам интересна история техники и интересные экземпляры компьютерного железа, не забывайте подписываться:
- телеграм-канал: t.me/digitalvintage_ru
- зеркало в VK: vk.com/digitalvintage_ru