oldi

I2O — интеллектуальный ввод/вывод

Сергей Самохин

С начала 80-х производительность персональных компьютеров следовала закону Мура, то есть тактовая частота процессора удваивалась каждые полтора года. Однако рост тактовой частоты приводит к прямо пропорциональному росту производительности только тогда, когда все остальные элементы системы поспевают за процессором. Поэтому рост производительности процессора привел к эволюции систем ввода/вывода от шины IBM PC (8 бит, 4,77 МГц), ISA (16 бит, 8 МГц), EISA, MCI, VLB, PCI (64 бит, 33 МГц). Производительность интерфейса с жесткими дисками также многократно увеличилась — вначале за счет смены архитектуры и впоследствии за счет модификации стандарта IDE. Память решительно не поспевает за процессорами, что привело к введению в архитектуру кэш-памяти — вначале внутренней, а затем и внешней.

Однако повышение производительности периферийных устройств требует от процессора все больше времени на их обслуживание. Прерывания нарушают работу конвейера команд, что неблагоприятно сказывается на общей производительности. Даже если устройство работает с ПДП, оно все равно «ворует» циклы у процессора. Эта проблема известна еще со времен «больших ЭВМ», и тогда она решалась путем применения канальных процессоров, то есть дополнительных процессоров для управления периферийными устройствами. Попытки повысить производительность персональных компьютеров (и особенно серверов с архитектурой ПК) за счет применения «интеллектуальной» периферии предпринимаются уже довольно давно. Наиболее ярким тому примером являются RAID-контроллеры, берущие на себя значительную часть нагрузки по обработке и распределению данных. Такие интеллектуальные адаптеры выпускаются многими ведущими производителями периферийных устройств, однако процесс внедрения интеллектуальной периферии идет медленно и неупорядоченно. В январе 1996 года была образована I2O SIG (Intellectual Input/Output Special Interest Group, Специальная группа заинтересованных в интеллектуальном вводе/выводе). В число ее членов на начальном этапе вошли такие киты компьютерного бизнеса, как 3Com, Adaptec, Compaq, Hewlett-Packard, Intel, Mylex, Microsoft, Novell, NetFrame Systems, Symbios, Wind River Systems.

Группа была создана по инициативе Intel для того, чтобы возвести в ранг стандарта технические решения этой корпорации, базирующиеся на архитектуре старого доброго RISC-процессора i960. Этот процессор был создан более 10 лет назад и в различных модификациях может быть обнаружен в лазерных принтерах, RAID-контроллерах и других устройствах, требующих интенсивной обработки данных. Идея заключается в том, чтобы за счет применения отдельного процессора для управления рутинными операциями ввода/вывода разгрузить основной процессор. При этом предусматривается переносимость драйверов различных устройств между различными ОС, так как периферийный процессор остается тем же самым, работает под управлением той же операционной системы реального времени (ОС РВ) и взаимодействует с основной ОС через тот же интерфейс.

Спецификации I2O направлены на решение двух проблем: снижение производительности центрального процессора из-за обработки прерываний и необходимость разработки отдельных драйверов для каждой комбинации устройство/ОС. Они предусматривают стандартную архитектуру для системы ввода/вывода, независимую ни от основной ОС, ни от управляемых устройств, поскольку перемещают нагрузку по обработке прерываний и выполнению рутинных операций с центрального процессора на периферийные. Процессор i960 оптимизирован для работы в режиме реального времени, посредством аппаратно реализованного стека рабочих регистров и некоторых других особенностей. Это позволило уже нескольким разработчикам успешно реализовать архитектуру I2O с применением данного процессора. Обмен данными между основным и периферийным процессорами происходит при помощи механизма сообщений, назначение и формат которых оговорены стандартом.

В спецификации I2O также введена концепция «раздельных драйверов». Существует несколько основных сетевых ОС, и в настоящее время драйвер каждого устройства должен быть написан и протестирован для каждой из них. Разделение программных драйверов на две части (одна взаимодействует с аппаратурой, то есть с процессором ввода/вывода, а другая — с ОС), позволяет резко сократить затраты на разработку и тестирование драйверов. Одна часть драйвера работает на системе ввода/вывода, унифицированной для всех ОС. Ответственность за другую часть лежит на разработчиках ОС, которые включают в ее состав драйверы для всех типов устройств, таких как дисковые накопители, принтеры и т.д., взаимодействующие с аппаратурой при помощи I2O. Абстрагирование драйверов от конкретных деталей аппаратуры, с одной стороны, и наличие только одного драйвера для любого устройства — с другой, должно снизить стоимость и трудоемкость разработки и повысить качество (снижением числа ошибок).

Раздельный драйвер состоит из двух частей: OSM (Operating System Module, Модуль операционной системы) и HDM (Hardware Device Module, Модуль устройства). OSM находится в составе сетевой ОС и обеспечивает функционирование драйвера с ее стороны, а HDM работает на периферийном процессоре. Взаимодействие осуществляется при помощи протокола коммуникационной системы, имеющей два уровня: уровень сообщений и транспортный уровень, что напоминает о сетевых протоколах. Со стороны HDM обеспечивается независимость от основной ОС, топологии и архитектуры компьютера. Сообщения образуют мета-язык, подобный языкам программирования, что позволяет системе ввода/вывода полностью абстрагироваться от центральной части компьютера, подобно тому, как это происходит при соединении компьютеров совершенно разной архитектуры по протоколу TCP/IP. Протокол связи между OSM и HDM соответствует модели, ориентированной на установление соединения. Запрос центральной ОС поступает к OSM, который переводит его в соответствующее сообщение и передает соответствующему HDM для исполнения. После выполнения запроса HDM возвращает результат вызвавшему OSM. С точки зрения сетевой ОС OSM является обычным драйвером устройства, подобным всем остальным. OSM, как правило, должны разрабатываться поставщиком ОС.

HDM, напротив, разрабатывается поставщиком устройства ввода/вывода (или третьей фирмой — по его заказу) согласно спецификациям I2O при помощи стандартных программных средств, таких как пакет Tornado for I2O, поставляемый фирмой Wind River Systems.

Спецификации I2O также предусматривают такие программные единицы, как ISM (Intermediate Service Module, Промежуточный служебный модуль). Эти модули предусмотрены для задач обработки данных, выполняемых процессором ввода/вывода, но не имеющих к вводу/выводу непосредственного отношения. Например, алгоритм обработки информации для RAID-массива, работающий на процессоре ввода/вывода и предоставляющий данные HDM, которые непосредственно управляют конкретными дисковыми устройствами. Модули ISM обеспечивают также непосредственный обмен данными между периферийными устройствами (peer to peer, одноранговый). При таком обмене данные могут непосредственно передаваться от устройства к устройству, например, с сетевой карты на диск, полностью минуя основную ОС.

В стандарте I2O уровень сообщений определяется как протокол связи между служебными модулями и включает также набор API (Application Programming Interface, Интерфейс прикладных программ).

Программное обеспечение I2O со стороны процессора ввода/вывода реализовано на основе ОС РВ Ix Works. Система создана фирмой Wind River Systems, чем и объясняется ее присутствие в составе постоянных членов I2O SIG.

Система реального времени (в отличие от многозадачных и настольных) должна не только реагировать на события по мере возможности — она всегда должна обеспечивать гарантированное время реакции и отсутствие зависаний, сочетая, таким образом, высокую скорость с абсолютной надежностью. Это особенно важно для систем управления и встроенных систем, где от устойчивости работы зависит гораздо больше, чем просто результат труда одного пользователя.

ОС РВ Ix Works, разработанная на базе широко известной и распространенной ОС РВ Vx Works, обеспечивает многозадачную обработку с 256 уровнями приоритетов, несколькими типами семафоров и мощными средствами межзадачного обмена. Vx Works уже довольно давно используется в различных встроенных системах и системах реального времени; существуют версии для нескольких типов процессоров (i960, Strong Arm 68K и т.д.), что дает возможность применения в архитектуре I2O различных процессоров, снижая зависимость от единственного поставщика. В среде Ix Works обеспечивается безопасная совместная работа HDM и ISM от различных поставщиков. Устойчивая объектно-ориентированная структура ядра с отслеживанием и динамическим перераспределением ресурсов позволяет загружать и выгружать драйверы без останова и перезапуска всей системы, — на лету.

Именно благодаря этим и другим своим привлекательным свойствам ОС РВ Vx Works получила широкое распространение на рынке систем реального времени и встроенных систем, что, в свою очередь, и обусловило разработку именно на ее основе ОС РВ Ix Works для применения в архитектуре I2O.

Драйверы для I2O рекомендуется создавать при помощи системы разработки Tornado for I20. Это используемый при написании ПО в среде Vx Works адаптированный для данной цели пакет, который является самым продвинутым и обладающим наибольшими возможностями средством в отрасли для разработки ПО РВ. В него входят компилятор C для i960, редактор связей, построитель загрузочных модулей для архитектуры I2O и другие утилиты. Для отладки имеются динамический загрузчик, отладчик Cross-Wind, являющийся расширенной версией широко распространенного отладчика на уровне исходного текста GNU, интерактивное ядро WindSh и мощные средства для просмотра системных ресурсов. Дополнительное средство отладки WindView позволяет оценивать производительность системы, отслеживая с интервалом 1 мкс полную последовательность событий I2O, сообщений, времен исполнения драйверов, прерываний, активности DMA и другую необходимую для отладки информацию.

Для аппаратного воплощения в жизнь архитектуры I2O корпорацией Intel созданы специализированные устройства на основе процессора i960, включающие в себя помимо собственно процессора некоторые дополнительные узлы и устройства. В качестве примера рассмотрим процессор ввода/вывода i960 RP. Помимо ядра процессора i960 JF с тактовой частотой 33 МГц в него входят мост PCI—PCI, блоки трансляции адресов для непосредственного доступа к интерфейсу PCI, устройство декодирования сообщений, арбитр вторичного интерфейса PCI, контроллеры ПДП и памяти, контроллер прерываний, интерфейс I2C (Inter Integrated Circuit, Между интегральными схемами, двухпроводной последовательный интерфейс для связи микросхем между собой) и другие узлы.

Для повышения производительности в ядре процессора i960 имеется уникальный по архитектуре узел — аппаратный стек регистров общего назначения с глубиной, равной 8. По каждой команде Call содержимое рабочих регистров переписывается в стек, а по команде Ret извлекается из него. Благодаря тому что ширина внутренней шины процессора составляет 128 бит, шестнадцать 32-разрядных регистров записывается или извлекается за четыре периода тактовой частоты, то есть смена контекста происходит за 133 нс (при тактовой частоте 33 МГц). Таким образом может быть обслужено до 8 вложенных вызовов процедур. При увеличении степени вложения самый нижний набор регистров из аппаратного стека сбрасывается во внешнюю память, а при обработке соответствующей инструкции Ret — возвращается на место. Кроме того, один или несколько элементов внутреннего стека можно резервировать для обработки высокоприоритетных прерываний.

Помимо аппаратного кэширования регистров в процессоре i960 производится раздельное кэширование программ и данных. Размер внутренней кэш-памяти команд составляет 4 Кбайт. Имеется возможность перманентного размещения в кэш-памяти критичных участков кода, таких как процедуры обработки наиболее приоритетных прерываний. Кэш-память для хранения данных имеет размер 2 Кбайт и является, по сути, не чем иным, как ОЗУ со временем доступа, равным одному периоду тактовой частоты.

Процессор может непосредственно адресовать до 512 Мбайт памяти, при этом устройство управления памятью дает уникальную возможность разбивать адресное пространство на восемь участков, имеющих разную разрядность (8, 16 и 32 бит). При этом устройство управления организует адресацию и циклы доступа надлежащим образом — прозрачно с точки зрения выполняемой программы. Это дает возможность хранить программы начальной загрузки в недорогом ПЗУ, а ОС и драйверы устройств загружать в более быстродействующие (и более дорогие) микросхемы.

Практическая реализация архитектуры I2O возможна несколькими способами. Первый заключается в установке процессора ввода/вывода на материнской плате и подключения через него всех или некоторых слотов PCI. Такой подход имеет несколько недостатков: во-первых, абсолютно для всей периферии требуются полные драйверы I2O, то есть как OSM, так и HDM. Во-вторых, вычислительная мощность подсистемы ввода/вывода заранее ограничена наличием только одного процессора. Другой способ предусматривает установку процессора ввода/вывода на самих периферийных устройствах, то есть на каждой карте, как это делается сейчас в RAID-контроллерах. По данным Intel, это может привести к удорожанию карт примерно на 50 долл. США, но дает полную свободу конфигурирования серверов, включая возможность сочетания интеллектуальной периферии с дешевыми картами, управляемыми непосредственно центральным процессором. Третий способ предполагает наличие устройства, состоящего из дополнительной платы, на которой установлен процессор ввода/вывода и слоты PCI для I2O. Само устройство вставляется в слот PCI на материнской плате, а карты ввода/вывода — в слоты, имеющиеся на дополнительной плате. Не исключается при этом и установка как интеллектуальных, так и обычных карт в другие слоты, которые остаются свободными на материнской плате, что обеспечивает сочетание гибкости конфигурации с некоторой финансовой экономией за счет обслуживания нескольких карт одним процессором ввода/вывода.

Большинство ведущих производителей компьютеров уже не только присоединились к I2O SIG, но и объявили о выпуске I2O Ready (готовых к I2O) серверов. С другой стороны, такие компании, как Microsoft, Novell, SCO, объявили о том, что в состав ОС включены средства для поддержки I2O. Так что на ближайшие годы повышение производительности серверов будет обеспечиваться не только за счет повышения количества и тактовой частоты центральных процессоров, но и за счет интеллектуальной периферии.

 

Дополнительную информацию по архитектуре I2O можно получить на Web-страницах

http://developer.intel.com/design/IIO/ (Intel)

http://www.I2Osig.org (I2O SIG)

http://www.wrs.com/I2O/ (Wind River Systems)

 КомпьютерПресс 2'1999