- Введение
- Краткий обзор
- Модель связи I2O
- Уровень сообщений
- Модуль обслуживания операционной системы — OSM
- Аппаратный модуль устройства — HDM
- Системная среда
- Реализация архитектуры I2O
- Практика использования I2O
- Заключение
![I2O](i2o.gif)
I2O (Intelligent Input/Output) — спецификация, определяющая стандартную архитектуру интеллектуального ввода/вывода, не зависящую от специфических устройств и операционной системы. Спецификация I2O призвана решить две ключевые проблемы:
- Занятость процессора операциями ввода-вывода
- Необходимость в разработке драйверов для каждого устройства и для каждой операционной системы
Суть архитектуры I2O заключается в обработке низкоуровневых прерываний ввода-вывода, поступающих от устройств, не центральным процессором (CPU), а специализированным процессором ввода-вывода (IOP), разработанным специально для этой цели. В настоящий момент эта задача решается применением RISC-процессора i960, работающего на частоте 66 МГц со своей собственной памятью, объёмом до 64 МБ. При поддержке обмена сообщениями между несколькими процессорами, архитектура I2O разгружает центральный процессор и позволяет выполнение задач, требующих интенсивного ввода-вывода и широкой полосы пропускания, например видеоприложений или работы в среде клиент-сервер. Применения I2O не ограничены и она может быть использована как в однопроцессорных, так и многопроцессорных и кластерных системах.
Спецификация I2O определяет разбиение драйвера устройства на две части: ОС-зависимого и аппаратно-зависимого модуля, созданного для конкретного устройства. Эти модули работают автономно и могут выполнять задачи независимо. В настоящее время поддержка I2O обеспечивается в NetWare 4, Windows NT Server 5.0 и UnixWare. Таким образом, технология с разбиением драйвера, уменьшает общее число требуемых драйверов: производители операционных систем пишут по одному драйверу на каждый класс устройств, например дисковые контроллеры, а производители оборудования — по одному драйверу на каждое свое устройство, который может быть использован с любой операционной системой поддерживающий I2O.
Одна из целей создания открытой архитектуры I2O — обеспечение возможности легкого подключения устройств и написания драйверов, расширяющей возможности для создания новых систем.
![Модель драйверов I2O](i2o_1.gif)
Краткий обзор
Две части драйвера I2O устройства представляют собой Operating System Services Module (OSM), модуль обслуживания операционной системы, обеспечивающий интерфейс с ней и Hardware Device Module (HDM), модуль устройства, обеспечивающий управление оборудованием. OSM работает со внешним устройством посредством HDM. Общение между этими модулями происходит на двух уровнях — уровне сообщений, на котором происходит установление связи и транспортном уровне, определяющим способы разделения информации. Как и в большинстве протоколов связи, уровень сообщений базируется на транспортном уровне.
Модель связи I2O, в комбинации со средой выполнения и конфигурационным интерфейсом, обеспечивает независимый интерфейс с HDM. Модули способны связаться друг с другом без знания архитектуры шины или топологии системы. Передаваемые сообщения формируют некий метаязык, не зависящий от аппаратной реализации. Вся эта технология сильно напоминает сеть TCP/IP. Такая реализация I2O, кроме всего прочего, обеспечивает мобильность устройств ввода-вывода.
![Интерфейс сообщений I2O](i2o_2.gif)
Модель связи I2O
Модель связи для I2O — это система обмена сообщениями. Когда OSM получает запрос от операционной системы, он транслирует его в запрос I2O и передает его HDM для обработки. После обработки запроса, HDM возвращает результат обратно OSM, посылая сообщение посредством уровня сообщений I2O. Далее результат передается операционной системе, как от любого другого драйвера устройства.
![Архитектура программного обеспечения I2O](i2o_3.gif)
Уровень сообщений
Уровень сообщений определяет открытый, стандартный и абстрактный механизм для связи между сервисными модулями, обеспечивая основу для интеллектуального ввода — вывода. Этот уровень, управляя пересылкой всех запросов, а также обеспечивая функционирование API (Application Programming Interface), связывает модель драйверов I2O.
Уровень сообщений состоит из трех основных компонент: дескриптора сообщения, сервисной программы сообщения (Message Service Routine — MSR), и очереди сообщений. Дескриптор по существу является адресом ресурса, к которому идет обращение. Для каждого сообщения, проходящего на уровне сообщений создается свой дескриптор. Очередь сообщений организуется между передающим и приемным устройствами.
Когда драйвер формирует сообщение, оно помещается в очередь и для его обработки активизируется MSR. Сообщение содержит две части — заголовок и тело. Заголовок содержит тип сообщения и адрес его отправителя.
I2O базируется на очереди между MSR и отправителем. Инициатор запроса и сервисный модуль обслуживаются IOP. I2O определяет также формат памяти, необходимой для функционирования технологии, не зависящий от организации операционной системы.
Модуль обслуживания операционной системы — OSM
OSM обеспечивает интерфейс между операционной системой и уровнем сообщений I2O. В используемой модели драйверов, OSM представляет собой ту часть драйвера, которая обеспечивает интерфейс между системно-зависимым API и абстрактным форматом сообщений, посылаемых в HDM для обработки. OSM зависят от операционных систем и создаются их разработчиками.
OSM переводит сообщения операционной системы в формат, который может быть понят HDM. Передача информации обратно, от HDM к операционной системе реализуется также через OSM посредством уровня сообщений I2O.
Один OSM может обслуживать множественные HDM. Благодаря существованию дескрипторов на уровне сообщений, OSM обладает возможностью рассылать свои сообщения многим адресатам, а также организовывать пересылку информации между ними.
Аппаратный модуль устройства — HDM
HDM — низкоуровневый модуль в среде I2O. HDM представляет собой аппартно-зависимую часть драйвера, обеспечивающую взаимодействие с контроллером или непосредственно устройством. Можно провести аналогию между HDM и аппаратно зависимой частью драйвера сети или драйвером SCSI в том виде, в котором он существует сегодня. Каждый HDM уникален для каждого конкретного устройства и производителя. Он поддерживает все низкоуровневые операции устройства, такие как синхронные и асинхронные запросы, а также транзакции управляемые событиями.
HDM окружен средой I2O, которая изолирует его от общения с операционной системой и шинными протоколами. Таким образом, один HDM может быть использован не только с различными операционными системами, но даже с различными платформами. HDM пишется производителем устройства и обычно прошивается в адаптер.
Системная среда
Модель I2O может быть применена в любых условиях — как и в однопроцессорных, так и многопроцессорных системах.
Интерфейсы OSM и HDM входят в основной API I2O. Среда выполнения OSM зависит от операционной системы, что оказывает влияние на реализацию некоторых функций API. В задачи OSM входит реализация связи между API, используемого операционной системой, и HDM, управляющим устройством.
Кроме основных функций в API HDM может быть введен дополнительный набор команд. Этот набор необходим для прямого общения операционной системы с HDM и применяется при ее загрузке для инициализации ядра. Примерно это и реализуется в основных многозадачных средах. Однако этот дополнительный набор также является единым для всех устройств одного класса. Так что технология I2O не несет в себе никаких ограничений для области ее использования.
![Среда выполнения](i2o_4.gif)
Реализация архитектуры I2O
Гибкая, открытая архитектура I2O предоставляет разработчикам различные варианты для реализации. Основные три подхода следующие:
- Установка IOP на материнскую плату. IOP устанавливается на материнскую плату и используется при интеллектуальном вводе-выводе. В этом случае IOP используется в качестве стандартного PCI Bridge и добавляет "интеллектуальности" к шине PCI
- Установка IOP на дополнительной плате расширения. Интеллектуальный контроллер I2O инсталлируется как, например, обычная сетевая карта
- Установка опциональной платы расширения с IOP в специализированный слот на материнской плате. Этот процессор будет функционировать со всеми устройствами, требующими интеллектуальный ввод-вывод
Практика использования I2O
Устройства, совместимые с технологией I2O будут маркироваться производителями как "I2O ready". Однако в одной системе можно будет применять, как и I2O устройства, так и обычные, неинтеллектуальные устройства. Это позволит организовать легкий переход к новой архитектуре. Тем более стоимость материнской платы с IOP возрастет максимум на $10-15.
Можно ожидать, что в связи со введением дополнительных устройств (IOP) и разбиения драйвера на части, скорость обмена информацией может упасть. В принципе, это мнение оправдано. Однако, в связи с тем что во-первых упрощается задача написания драйверов, а во-вторых разгружается центральный процессор, общая эффективность системы должна возрасти. Пример подобного роста эффективности — применение IDE Bus Master драйверов.
Внедрение технологии интеллектуального ввода-вывода должно произойти в ближайшее время, тем более что ведущие производители материнских плат уже представили свои изделия с установленным на борту IOP i960, единственным на настоящее время процессором для реализации I2O. Первое время I2O будет использоваться в серверах, однако в ближайшем будущем может распространиться и на домашние системы.
Заключение
Таким образом, I2O предлагает новый подход к организации интеллектуального ввода-вывода, упрощая жизнь, как разработчиком устройств, так и производителям операционных систем благодаря разделению функций драйверов. Кроме того, I2O призвана реализовать новую высокопроизводительную концепцию высокопроизводительного и платформенно-независимого интеллектуального ввода-вывода. Открытость этого стандарта позволяет легко перейти от сегодняшних реалий в мир интеллектуального обмена информацией.