Основы AS/400

Солтис Фрэнк

Глава 10

 

 

Система ввода-вывода

Ввод-вывод — это Родни Дэнжерфилд (Rodney Dangerfield) вычислительных систем: на него никто не обращает внимания. Всеобщий любимчик — процессор, а подсистема ввода-вывода рядом с ним — падчерица. Вот пример: когда надо охарактеризовать производительность компьютера чаще всего начинают считать мегагерцы. Создается впечатление, что сегодняшних разработчиков процессоров больше всего заботит максимум мегагерц, а не другие аспекты общей архитектуры. Между тем, пусть мегагерцы даже и показывают, как быстро «вертится» процессор, они все же мало что говорят о производительности вычислительной системы в целом.

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

Быстро приближается время, когда вычислительные системы, начиная от простейших ПК до самых быстрых суперкомпьютеров, будут использовать одну и ту же технологию микропроцессоров. Тогда единственным их отличием станут системы ввода-вывода.

Да и сам по себе ввод-вывод — важнейший компонент системы. В конце концов, без него Ваш мощнейший процессор будет просто бормотать что-то «внутри себя».

Что же такое подсистема ввода-вывода? Это группа аппаратных и программных компонентов, отвечающих за обработку ввода и доставку вывода на различные устройства, подключенные к системе. Всякий раз, когда Вам нужен некий системный ресурс, — например, требуется прочитать или записать файл, запросить выполнение программы, вызвать другой системный объект, создать или уничтожить объект, поработать с каким-либо устройством — и этого ресурса еще нет в памяти, компьютер должен обратиться к системе ввода-вывода, чтобы считать или записать, создать или удалить ресурс. Как я уже говорил, в компьютере мало что происходит без участия системы ввода-вывода.

В прошлом AS/400 не обладала очень уж быстрыми процессорами. Тем не менее, она прекрасно выглядела при сопоставлении с другими системами и, зачастую, могла посрамить систему с более быстрым процессором. Совершать такие подвиги ей позволяло и позволяет «секретное оружие» — одна из самых искусных и мощных систем ввода-вывода.

Упрощенно, есть два способа проектирования системы ввода-вывода.

Можно полностью положиться на процессор, и взвалить на него все вычисления и обработку ввода-вывода. Тогда в один момент времени процессор занят исполнением команд различных пользовательских и системных программ, в другой — занимается управлением вводом-выводом. Такой тип ввода-вывода пришел из мира ПК и Unix, где ввод-вывод очень прост. Беда лишь в том, что процессор в каждый момент времени может делать лишь что-то одно. Интенсивный ввод-вывод негативно влияет на остальные вычисления в системе.

При другом подходе для обработки ввода-вывода используются отдельные процессоры. Это позволяет выполнять множественные операции ввода-вывода параллельно, лишь незначительно или вообще не снижая производительность главных процессоров. Именно такой подход, с использованием множественных процессоров ввода-вывода (IOP), применяется в AS/400.

Немногие могут похвастаться, что знают что-либо о структуре ввода-вывода AS/400, помимо факта наличия множественных IOP, и буквально единицы понимают, как это работает. В этой главе мы рассмотрим некоторые аспекты системы ввода-вывода AS/ 400, как самые популярные, так и не очень известные. Начнем с эволюции системы ввода-вывода и причин, ее стимулировавших.

 

Время перемен

Система ввода-вывода AS/400 находится на переходном этапе. В начале устройства ввода-вывода подсоединялись к системе только посредством IOP, подключенных к особой шине ввода-вывода. Она называется шиной SPD и отлично служит на протяжении многих лет, включая серию AS/400е. Лишь сейчас мы начали использовать в AS/400е и другие шины ввода-вывода.

У нестандартной шины SPD крупный недостаток: почти вся поддержка для нее ограничена разработками IBM. Заказчики не могут использовать иные программы и драйверы устройств, напрямую обращающиеся к шинам, IOP или устройствам ввода-вывода, за исключением весьма ограниченных средств OS/400. Впрочем, есть несколько примеров сторонних разработок, наиболее значительные из них — IOP для факсов и беспроводных ЛВС. Сейчас мы начали использовать стандартные интерфейсы ввода-вывода, что позволит разнообразить выбор дешевых устройств.

 

Базовые концепции ввода-вывода

Пока мы еще не погрузились слишком глубоко в работу компонентов системы ввода-вывода, рассмотрим основополагающие понятия. Устройства ввода-вывода подключаются к компьютеру с помощью шины ввода-вывода. Шина — это просто электрическое соединение между двумя аппаратными компонентами. Часто, между компьютером и устройством располагается много шин. Обычно, шина ввода-вывода насчитывает примерно от 20 до 100 линий, некоторые из которых используются для передачи данных, а другие — для передачи управляющей информации на устройство и назад. Например, в шине SPD 32 линии (каждая соответствует биту) для передачи данных, 8 — для передачи команд и информации состояния, 8 — для идентификации точек отправления и назначения и несколько линий управления. Эти линии можно рассматривать как отдельные провода, но на самом деле там используются лишь несколько высокоскоростных оптических линий, и электрические сигналы посылаются по ним как цепочки разрядов, так что аналогия с отдельными проводами нарушается.

Устройство ввода-вывода состоит из двух частей. Одна содержит большую часть электроники и называется контроллером ввода-вывода, другая — само физическое устройство, например, диск. Задача контроллера состоит в управлении устройством и обслуживании доступа к шине. Например, когда программе нужны данные с диска, она посылает команду контроллеру диска, который затем выдает устройству команды позиционирования и другие.

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

Единственную шину ПК, соединяющую процессор и память, часто называют локальной шиной. Она работает на той же тактовой частоте, что и процессор (или на какой-либо части это частоты). До последнего времени адаптеры большинства ПК подключались к локальной шине непосредственно. Шина использовалась не только кот-роллерами ввода-вывода, но также и процессором для выборки команд и данных.

Если процессор и адаптер ввода-вывода пытаются использовать локальную шину в один и тот же момент времени, то выбор между ними делает микросхема, называемая арбитром шины. Обычно, предпочтение отдается адаптеру ввода-вывода, так как диски и другие устройства нельзя останавливать из-за угрозы потерять информацию. Когда устройство ввода-вывода не вмешивается, процессор использует все циклы локальной шины для своих нужд. Но если при этом будет работать устройство ввода-вывода, то оно будет запрашивать и получать управление шиной по мере необходимости. Это явление, называемое кражей циклов (cycle stealing), замедляет работу системы.

Новейшая тенденция состоит в установке на ПК отдельной шины, изолированной от процессора, но по-прежнему имеющей доступ к основной памяти. Для подключения этой отдельной шины к локальной шине и к памяти используется контроллер шины памяти. В этом случае контроллер также конкурирует за циклы локальной шины, но теперь множество устройств может быть подключено к отдельной шине. Преимущество отдельной шины в том, что у нее свой тактовый генератор, который работает с фиксированной скоростью и независим от процессора. Это удешевляет подключение устройств, работающих с процессорами любой частоты.

Вероятно, самая популярная из таких отдельных шин — шина PCI (Peripheral Component Interconnect). Частота шины PCI равна 33 МГц, и в будущем планируется ее повышение. Некоторые компоненты ЛВС и интерфейсы жестких дисков, такие как SCSI (Small Computer System Interface), иногда по-прежнему подключаются к локальной шине напрямую.

К шине PCI можно подключить до 16 плат адаптеров, обеспечивающих интерфейс устройства ввода-вывода к шине. Стандарт PCI определяет тип используемого разъема, а также размер и форму плат. Обычно, эти параметры называют фактором формы PCI (PCI form factor).

Только что описанная структура ввода-вывода ПК чаще всего неприемлема для более мощного компьютера, выполняющего много операций ввода-вывода. Большим системам требуется несколько шин, а также желателен некоторый способ разгрузки основного процессора. Один из таких способов — использование канала, иначе говоря, специализированного компьютера, устанавливаемого рядом с основным процессором. Шины ввода-вывода подключаются непосредственно к каналу, а не к основному процессору.

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

Есть два основных типа каналов — селекторные и мультиплексные. Селекторный канал предназначен для поддержки скоростных устройств, таких как диски, и может в каждый момент времени обмениваться данными только с одним устройством. Мультиплексный канал обменивается данными со многими медленными устройствами, такими как терминалы, поочередно передавая по шине данные для каждого из них. За один прием может передаваться один байт или блок байтов. В зависимости от этого мультиплексные каналы подразделяются на байт-мультиплексные и блок-мультиплексные. Оба типа каналов поддерживаются в System/370.

Многие характеристики канала в System/38 заставляли вспомнить System/370. Возврат к старому дизайну объяснялся иллюзией проектировщиков, думавших, что они делают System/370. Но в отличие от System/370, поддерживавшей несколько селекторных и мультиплексных каналов, на System/38 был только один канал. Для читателей, любящих точность, канал System/38 может быть описан как блок-мультиплексный канал, работающий в режиме фиксированной передачи (fixed-burst mode).

Адаптеры ввода-вывода, использовавшиеся в System/38 для фактического управления устройствами, были довольно примитивны, то есть большая часть логики выполнения операции ввода-вывода была возложена на канал. System/34 и System/36, не имевшие каналов, использовали для управления устройствами ввода-вывода интеллектуальные процессоры, причем System/34 — разные процессоры для разных устройств. Что касается System/36, то применявшийся в ней CSP (Control Storage Processor), о котором я говорил в главе 3, был принят в качестве стандарта для большинства процессоров ввода-вывода. Поэтому к System/36 могли быть подключены адаптер диска, адаптер рабочей станции и адаптер линий связи — каждый со своим отдельным CSP. В больших System/36 для ввода-вывода использовались несколько CSP. Может быть, читатели помнят, что такие адаптеры назывались в терминологии System/36 контроллерами. Но так как они располагались на платах внутри корпусов, современная терминология велит называть их адаптерами.

В AS/400 нет такого канала, как в System/38, а вместо него используются одна или несколько шин ввода-вывода, к которым подключены интеллектуальные процессоры. Большая часть обработки ввода-вывода выполняется этими IOP. Такая структура гораздо ближе к System/36, нежели к System/38. Впрочем, она отличается них обеих.

Шине SPD и архитектуре IOP также присущи определенные способности к изоляции ошибок, что позволяет AS/400 ограничить последствия сбоев устройств, IOP и шин ввода-вывода. В результате AS/400 может «пережить» такие сбои ввода-вывода, которые на других системах, — например, на ПК или рабочей станции Unix — приводят к краху.

 

Промышленные стандарты ввода-вывода

Стратегия развития AS/400 состоит в заимствовании новых структур ввода-вывода, соответствующих основным промышленным стандартам шин ввода-вывода и подключения устройств. Такой структурой быстро становится шина PCI, которую сегодня AS/ 400 непосредственно поддерживает наряду с SPD. Как мы увидим далее, в серии AS/ 400е сочетается надежность структуры шины SPD с легкодоступными компонентами PCI. С течением времени в AS/400 могут быть также включены новые стандартные шины, такие как ANSI Fiber Channel Standard.

Одна из причин перехода на PCI — ее цена. Платы адаптеров PCI дешевле, так как не требуют отдельного IOP для каждого адаптера, как SPD. Один из способов уменьшения стоимости адаптеров SPD — использование MFIOP (Multifunction IOP). MFIOP содержит один IOP и допускает подключение к этой многофункциональной плате различных «дочерних» плат, у которых нет своих IOP. Дочерние платы обычно называются адаптерами ввода-вывода или IOA (I/O Adapter). При такой схеме соединения несколько IOA могут использовать общий IOP, что сокращает общую стоимость системы.

Даже при использовании MFIOP платы адаптеров стандарта PCI, применяемые в обычном ПК, дешевле, чем SPD. Причина здесь — в конструктивных особенностях последней. Каждая плата адаптера SPD содержится в алюминиевом корпусе-книжке, а книжки — в специальной обойме. Такой способ размещения надежен, но дорог.

Переход на PCI происходит постепенно, начиная с младших моделей серии AS/ 400е. Все эти модели поддерживают только шину и адаптеры PCI, что дает им возможность очень агрессивно конкурировать с ПК-серверами. Средние модели используют адаптеры как PCI, так и SPD. Что касается старших моделей серии, то в них предусмотрена поддержка только шины и адаптеров SPD, PCI же отложена до следующих версий.

Давайте теперь подробней рассмотрим использование PCI в различных моделях.

Сервер начального уровня AS/400е (известный также как Eiger), впервые объявленный в V3R7 как Advanced Entry, имеет только шину PCI. Такие серверы используют новый вид IOP. Если обычный IOP поддерживает интерфейс к конкретному типу устройств, то новый IOP — интерфейс шины PCI (до 16 адаптеров), что сравнимо с SPD MFIOP, использующим один IOP и несколько IOA. Сам новый IOP интегрирован как компонент на планарной плате Eiger. Эта плата очень напоминает материнскую плату обычного ПК, и к ней могут подключаться непосредственно платы адаптеров PCI.

Новый IOP в качестве интерфейса между AS/400 и шиной PCI позволяет нам обеспечить тот же уровень надежности, что и шина SPD. IOP изолирует шину PCI от основного процессора. По сравнению с серверами ПК, которые вынуждены использовать для обработки ошибок и вспомогательных операций основной процессор, — это шаг вперед. Хочу обратить внимание на то, что для новых IOP используется процессор PowerPC. Прежние IOP, используемые адаптерами ввода-вывода SPD, были продукцией различных производителей, в основном, Motorola. Новая стратегия IBM заключается в использовании PowerPC для всех будущих IOP.

В моделях среднего уровня, выпускающихся в корпусах Millenium, применяется тот же IOP, что и в Eiger. Базовые устройства ввода-вывода (такие как внутренние диски, компакт-диск и лента) используют PCI. На младших моделях среднего класса, как и на Eiger, поддерживаются только такие адаптеры. Старшие модели среднего уровня имеют возможность установки отдельной обоймы плат SPD или отдельной платы адаптеров PCI внутри корпуса Millenium по выбору. Эти корпуса в зависимости от комплектации могут поддерживать или только адаптеры PCI, или сочетания базовых адаптеров PCI и адаптеров SPD.

Старшие модели серии AS/400е, устанавливаемые в высокие корпуса Mako, пока поддерживают только шину и адаптеры SPD. Поскольку большие системы, в основном, — модернизация существующих AS/400, то такое положение приемлемо. С течением времени потребность в адаптерах PCI для больших систем будет расти, и мы добавим соответствующую поддержку.

Рисунок 10.1. Аппаратная структура ввода-вывода

Для иллюстрации структуры ввода-вывода в новых корпусах Mako я использую 12-канальную конфигурацию SMP, описанную в главе 2. По сути, рисунок 10.1 — это рисунок 2.6 с 12-канальной конфигурацией SMP, добавлена лишь структура ввода-вывода. Для подключения всей системы ввода-вывода в корпусах Mako используется SAN (System Area Network). На рисунке показаны локальные шины 6хх адреса и данных, связанные интерфейсами шины ввода-вывода и распределенные с помощью

одного или нескольких соединений SAN по кольцевой топологии. В старших моделях AS/400е адаптеры шины SPD содержатся в отдельном корпусе и подключаются к Mako с помощью SAN. Соединение SAN может быть либо медным, либо оптоволоконным, в зависимости от расстояния между корпусами. На рисунке показано подключение шин SPD и PCI. В V4R1 поддерживается только подключение шины SPD. Подключение шины PCI будет добавлено позднее и проиллюстрировано здесь только для того, чтобы показать, как похожи подключения этих двух шин.

IBM SAN поддерживает протокол SCIL (Scalable Coherent Interface Link) основанный на стандарте IEEE 1596 SCI. Протокол модифицирован для обеспечения уровня целостности данных, необходимой коммерческим заказчикам. Посмотрите еще раз на рисунок 10.1. SAN AS/400 предоставляет два дуплексных порта соединения для каждого интерфейса шины ввода-вывода. Каждый из портов состоит из двух однонаправленных 1-байтовых линий данных, которые «гонят» данные в противоположных направлениях для обеспечения полного дуплекса. Эти две линии данных могут быть соединены по кольцевой топологии, которая используется для подключения плат ввода-вывода. На рисунке показано два таких кольца. На тактовой частоте 250 МГц каждый из них обеспечивает скорость передачи 250 МБ/с.

Еще одна интересная особенность SAN — способ, используемый для «прокачки» данных через соединение. Так как соединение SAN является асинхронным, то с передачей данных не связана какая-либо тактовая частота. В противоположность этому, при синхронном соединении среди управляющих линий есть линия тактового сигнала, а также применяется фиксированный протокол коммуникации, зависящий от тактовых импульсов. Синхронная связь требуется от каждого подключения работы на одной и той же частоте. Это обычно означает, что все такие подключения должны быть расположены достаточно близко. Асинхронные соединения отлично работают на больших расстояниях, но, как правило, требуют использования некоторого протокола: приемник и передатчик начинают следующую операцию только после того, как оба к этому готовы. Использование такого протокола может сократить производительность соединения, так как передатчику приходится ждать от приемника подтверждения получения данных.

При использовании в кольце SAN может обойти этот протокол, что позволяет передатчику непрерывно подавать на линию связи новые пакеты. Приемник добавляет в полученный им пакет информацию о получении, которая возвращается и извлекается приемником, когда пакет завершает круг. Данный подход позволяет множественным устройствам, подключенным к SAN, эффективней использовать пропускную способность линии.

Еще одно применение SAN — связь между системами. На рисунке 10.1 показаны два дополнительных порта SAN, выходящих из системы. Обратите внимание, что если вместо использования кольцевой топологии эти два порта напрямую связывают две системы, то общая скорость на каждый порт составляет 500 МБ/с (250 МБ/с в каждом направлении). Для повышенной надежности межсистемного соединения два порта обычно работают параллельно, что дает избыточную линию связи. Если одно из соединений по какой-то причине нарушено, то системы используют резервную линию. Новейшие реализации SAN работают со скоростью 1 ГБ/с даже в случае резервирования. Как мы увидим в главе 11, это идеально для соединения систем в кластер.

Платы ввода-вывода, показанные на рисунке 10.1, содержат IOP на базе процессора PowerPC, его память и вспомогательную аппаратуру, необходимую для предоставления интерфейса шины либо SPD, либо PCI. Затем платы адаптеров ввода-вывода (на рисунке не показаны) подключаются либо к обойме плат SPD, либо к плате адаптеров PCI, которая присоединяется к соответствующей шине. Обратите внимание, что адаптеры ввода-вывода SPD по-прежнему имеют собственные IOP. В данном случае мы имеем дело с двумя уровнями IOP: один — между соединением SAN и шиной SPD и второй — между шиной SPD и устройством.

Конструкция плат ввода-вывода серии AS/400е предназначена также для RS/6000 и, возможно, других систем IBM. Так как RS/6000 не использует IOP для ввода-вывода, а выполняет всю обработку основными процессорами (аналогично ПК), нужно было найти способ устранить IOP с платы ввода-вывода PCI. С этой целью IOP был замещен микросхемой моста, которая фактически подключает шину PCI непосредственно к кольцу SAN и, таким образом, к шинам 6хх. Это позволяет основным процессорам управлять шиной PCI непосредственно.

 

Шина SPD

Итак, компьютеры серии AS/400е могут поддерживать шины SPD, PCI или обе одновременно. Шина PCI — промышленный стандарт и известна лучше, чем шина SPD, так что мы не будем тратить время на ее детальное описание. К тому же для большинства пользователей основным способом подключения устройств ввода-вывода к системе по-прежнему остается шина SPD, особенно на старших моделях, где поддерживается только она. Поэтому, прежде чем перейти к операциям ввода-вывода на AS/ 400, давайте рассмотрим шину SPD несколько подробнее.

Работу шины SPD обеспечивают платы ввода-вывода, показанные на рисунке 10.1. В терминологии первых моделей AS/400, каждая плата ввода-вывода предоставляет эквивалент устройства управления шиной BCU (bus control unit) для одной шины SPD в системе. К каждой шине может быть подключено до 32 адаптеров ввода-вывода SPD (на рисунке не показаны). Плата адаптера ввода-вывода SPD содержит IOP, а также соответствующую аппаратуру для подключения к системе одного или нескольких устройств.

Каждый IOP на плате адаптера ввода-вывода SPD имеет собственную память и собственную ОС. Эти специализированные ОС реального времени предназначены, в основном, для управления устройствами ввода-вывода. Очевидно, что приложение, выполняющееся на IOP, настроено на поддерживаемый IOP интерфейс конкретного устройства, коммуникационный или ЛВС. С точки зрения функционирования ввода-вывода, IOP, включая все его ПО, является устройством ввода-вывода на шине и называется IOBU (I/O bus unit). Таким образом, к шинам SPD подключаются IOBU, которые предоставляют интерфейс к устройствам ввода-вывода.

Как мы уже говорили в главе 8, для уникальной идентификации шины, IOBU и устройства процессор использует адрес прямого сохранения. IOBU получает команду от процессора системы, заставляет устройство выполнить запрошенную операцию и управляет всей передачей данных в основную память и обратно. По завершении операции ввода-вывода, IOBU передает системному процессору информацию, позволяющую определить, успешна ли операция.

Мы обсудим эти операции подробнее в следующих разделах. Давайте сначала рассмотрим способ физического соединения и некоторые характеристики перечисленных компонентов.

 

Соединения аппаратуры ввода-вывода SPD

Шина SPD работает асинхронно. Чтобы понять, почему был выбран именно этот вариант, вспомните кольцо SAN. Как отмечалось выше, синхронная шина требует, чтобы все подключенные к ней устройства работали с одинаковой тактовой частотой, что предполагает достаточно близкое расположение таких устройств. PCI — именно такая синхронная шина с тактовой частотой 33 МГц. Шины такого типа быстры и их адаптеры обычно дешевле адаптеров асинхронной шины, которые должны поддерживать собственную синхронизацию. Однако, поскольку асинхронная шина не тактирована, она допускает использование разнообразных устройств, размещенных на большем расстоянии и без угрозы искажения сигнала. Именно эта гибкость послужила причиной первоначального выбора для AS/400 асинхронной шины SPD.

В отличие от SAN, шина SPD не закольцована и должна использовать протокол. Такой протокол требует, чтобы передатчик и приемник начинали следующую операцию только после того, как оба они к этому готовы. Для этого шина имеет отдельные линии управления. Например, отправитель может установить на линиях управления запрос на считывание, а на линиях данных — адрес. Управляющие сигналы не снимаются до тех пор, пока приемник не подтвердит их получение, поместив сигнал на управляющую линию подтверждения.

К каждой шине SPD подключено как минимум два IOBU. И основной процессор, и контроллер устройства работают как IOBU. Таким образом, на шине SPD никогда не бывает только одного IOBU; ведь основной процессор — это IOBU, так же как и контроллер любого устройства. К одной шине SPD может быть подключено максимально до 32 IOBU. При подключении к шине нескольких IOBU необходим арбитраж, если два или более устройств захотят использовать ее одновременно. Для арбитража используется механизм приоритетности. Каждому IOBU назначается приоритет, определяющий, какой IOBU может использовать шину, если на это претендуют несколько устройств.

Прежде чем закончить эту тему и продолжить обсуждение ввода-вывода, следует отметить, что IOP можно использовать не только для функций управления вводом-выводом. Совершенно ясно, что IOP — это полноценный процессор со своей собственной ОС и прикладными программами. Он также имеет непосредственный доступ к основной памяти и, посредством шины ввода-вывода, к дисковой системе AS/ 400. Таким образом, IOP годится и для выполнения пользовательских приложений, и такая возможность интенсивно реализуется в AS/400. Подробнее об этом — в следующей главе.

 

Работа шины ввода-вывода SPD

Каждая плата ввода-вывода SPD предоставляет BCU для одной шины SPD. BCU осуществляет основное управление работой шины. Обычно BCU выполняет восстановление после ошибки и повторное выполнение операции. Он также проводит арбитраж, если несколько IOBU пытаются использовать шину одновременно.

Кроме того, BCU инициализирует шину при каждой загрузке системы, назначая подключенным IOBU логические адреса. Это означает, что к AS/400 может быть подключен новый IOBU, возможно, вместе с новым устройством. При перезагрузке системы новый IOBU конфигурируется автоматически, никакого вмешательства со стороны пользователя не требуется. Эта технология аналогична plug-and-play, применяемой в ПК.

Еще одна функция BCU — назначать каждому устройству приоритет шины. BCU проверяет способность каждого IOBU работать по шине и загружает код в память IOP.

При нормальной работе все коммуникации осуществляются между IOBU. Как говорилось выше, и в качестве IOBU, и в качестве всех IOP на платах адаптеров ввода-вывода SPD функционируют системные процессоры. Обмен информацией всегда происходит между IOBU, начавшим операцию шины (ведущим), и другим IOBU, который был выбран (ведомым).

• Информация передается между IOBU в форме сообщений фиксированной длины или операций прямого доступа к памяти DMA (direct memory access) переменной длины. Во многих вычислительных системах аппаратура DMA позволяет IOBU осуществлять блочную передачу определенного числа слов в основную память и обратно напрямую, без вмешательства процессора.

• Операцию шины можно определить как кратковременное соединение между двумя IOBU. Каждая такая операция шины состоит из двух частей. Сначала ведущий выбирает ведомого, а также определяет тип и направление передачи данных. Вторая часть операции состоит из тактов данных (от 1 до 16), во время которых происходит пересылка данных (за один такт —32 бита).

Шина SPD поддерживает два типа операций: операции устройств и операции памяти. При операции устройств сообщение передается от ведущего к ведомому. Длина сообщения всегда равна 12 байтам. Формат сообщений мы рассмотрим в следующем разделе.

Операция памяти позволяет осуществлять пересылку DMA между памятью IOP на плате адаптера и основной памятью системы. Пересылка управляется ведущим, который устанавливает соединение и определяет направление пересылки. Максимальное число байтов, пересылаемое за одну операцию памяти — 64 (4 байта за такт Г16 тактов данных = 64).

В ходе операции и системный процессор, и IOP могут функционировать и как ведущий, и как ведомый. При выполнении операции памяти системный процессор может быть как ведущим, так и ведомым, а IOP — только ведущим. Последнее ограничение означает, что данные никогда не пересылаются из памяти одного IOP в память другого IOP, то есть, что по шине SPD невозможен ввод-вывод типа «точка-точка». Следовательно, чтобы переслать, например, данные непосредственно от дискового IOP к IOP ленты, надо обязательно использовать основную память. Это снижает общую гибкость структуры системы.

Хочу еще раз напомнить, что в этом разделе мы обсуждаем только шину SPD. IOP PCI также управляют платами адаптеров, подключенных к шине PCI. Но так как шина PCI синхронна, и адаптеры не требуют установки собственных отдельных процессоров, то управление и протоколирование гораздо проще.

 

Операции ввода-вывода в AS/400

Теперь от аппаратной архитектуры ввода-вывода AS/400 перейдем к совместной работе OS/400, SLIC и аппаратуры при выполнении операции ввода-вывода для прикладной программы. Сначала рассмотрим объекты, поддерживающие ввод-вывод, затем — многоуровневую структуру, включающую OS/400, SLIC и аппаратуру. А в заключение — проследим весь путь ввода-вывода от OS/400 до устройства и обратно.

 

Объекты поддержки ввода-вывода

Для поддержки ввода-вывода OS/400 и MI используют разные, но тесно взаимосвязанные объекты. В MI таких системных объектов три, в OS/400 — четыре. Проще всего рассмотреть эти объекты с точки зрения способов подключать устройства к AS/400.

Устройство можно подключить непосредственно к плате адаптера ввода-вывода. Чтобы предоставить системе характеристики этого устройства, используется системный объект. Как Вы помните, MI не зависит от нижележащей аппаратуры, включая аппаратуру устройств ввода-вывода, поэтому необходимо логическое, а не физическое описание устройства. Другими словами, нужна информация о том, что некоторое устройство — это принтер, но формат потока данных для этого устройства требуется только на нижнем уровне системы, но не MI. Соответственно, системный объект, используемый MI для описания устройства, называется описанием логического устройства LUD (logical unit description). Эквивалентный объект OS/400 — описание устройства DEVD (device description).

Устройства не обязательно подсоединяются к адаптеру непосредственно. Они могут быть подключены к внешнему контроллеру, а через него — к плате адаптера. Иногда к контроллеру можно подключать несколько устройств, одного или разного типа, но обычно он специализирован для некоторого класса устройств. Например, есть котроллеры коммуникаций, дисков, принтеров и т. д. Системный объект, используемый для описания контроллера на уровне MI, называется описанием котроллера CD (controller description), а эквивалентный объект OS/400 — также описанием котроллера, но обозначается аббревиатурой CTLD (controller description).

Устройства и контроллеры могут подключаться к системе не только локально, но и удаленно с помощью разных типов связи. Системный объект MI для описания линии или сети называется описанием сетиND (network description). OS/400 использует как объект описание линии LIND (line description), так и объект описание сетевого интерфейса NETINTD (interface description).

OS/400 также рассматривает весь ввод/вывод как набор устройств источников-стоков. Вспомните, что OS/400 ничего не «знает» о дисках, а все элементы поверх MI рассматривает как объекты с памятью внутри. С точки зрения OS/400 устройство ввода-вывода — либо источник информации, поступающей в систему извне, либо сток информации, передаваемой из системы. Устройство никогда не используется для хранения информации в системе. Таким образом, весь дисковый ввод-вывод выполняется в SLIC ниже MI.

 

Компоненты ввода-вывода

4 Денис! Эту сноску — на поля! Таблица по старому изданию, сравнить с новым. Для верстальщика: по-моему, стоит убрать рамку — будет красивее

Таблица 10.1. Язык ввода-вывода

AMQ Очередь свободных сообщений
BCT Таблица управления шиной
BCU Устройство управления шиной
BTM Механизм транспорта шины
BUB Блок устройства шины
BUM Сообщение устройства шины
CAT Управляющая адресная таблица
CCB Блок управления подключениями
CGCB Блок управления группой подключений
CID Идентификатор подключения
FBR Запись отклика
IOBU Устройство шины ввода-вывода (IOP)
IORM Сообщение запроса ввода-вывода
IPCF Средство связи между процессами
MIRQ Очередь ответов MI
RID Идентификатор запроса
RRCB Блок управления запросом-ответом
SSD Данные источника-стока
SSR Запрос источника-стока

Думаю, Вас уже не удивляет, что ввод-вывод, как и практически все остальные компоненты AS/400, оперирует собственной терминологией и набором аббревиатур. Чтобы рассуждать о вводе-выводе, с этими обозначениями4 необходимо познакомиться. Список сокращений, которые я собираюсь использовать в своем рассказе, приведен в таблице 10.1. Это язык ввода-вывода.

Как уже говорилось, сегодня в устройствах ввода-вывода AS/400 все еще преобладает шина SPD. Поэтому рассказ о вводе-выводе в следующих разделах я буду иллюстрировать примерами именно для этой шины, при необходимости, отмечая существенные отличия с вводом-выводом по шине PCI. Впрочем, везде, за исключением самих нижних уровней SLIC, эти различия незначительны. Архитектура ввода-вывода AS/400 предназначена для работы с самыми разными интерфейсами, так что добавление в будущем новых интерфейсов окажет минимальное влияние на существующее системное ПО. И конечно, с точки зрения приложений никаких различий вообще нет; это гарантируется архитектурой, не зависящей от технологии.

Структура ввода-вывода SPD для AS/400, от MI до средства связи между процессами (IPCF) в SLIC, представлена на рисунке 10-2. В верхней части рисунка показан процесс MI — пример пользовательской прикладной программы, выполняющейся в системе.

Рисунок 10.2. Структура ввода-вывода AS/400

В главе 8 для пояснения к рассказу об одноуровневой памяти мы использовали похожий простой пример. Теперь расширим этот пример для иллюстрации операций ввода-вывода. Если Вы помните, тогда прикладная программа выполняла последовательное чтение индексированного файла базы данных, которое, могло быть выполнено либо с помощью команды «Read» ЯВУ, либо с помощью команды: SQL «FETCH». Результатом в обоих случаях — запрос на выполнение операции ввода-вывода для считывания записи с диска. Чтобы сделать пример более интересным, предположим, что вместо считывания записи с диска, подключенного к локальной машине, нужно считать запись из удаленной системы на другом конце линии связи, используя для этого команду SQL.

В главе 6 мы говорили, что интерфейс SQL использует для доступа к удаленным данным DRDA (Distributed Relational Database Architecture). Прежде чем выполнить запрос SQL, нашей программе следует выполнить оператор SQL CONNECT, чтобы задать имя удаленной базы данных в каталоге реляционной базы. После установления связи между двумя системами на удаленную систему может быть послан запрос SQL. Менеджер базы данных удаленной системы выполняет этот запрос и возвращает полученные в результате записи запросившей их системе.

Мы также говорили, что для доступа к удаленной базе данных можно использовать архитектуру DDM (Distributed Data Management). В этом случае обработка файла выполняется на локальной системе. DDM возвращает локальной системе все записи файла, тогда как DRDA — только записи, соответствующие критерию выборки. Выбор для нашего примера интерфейса SQL предполагает использование DRDA. Обработка выполняется на удаленной системе, и мы увидим только ее результаты. Выполнение команды SQL «FETCH» требует четырех операций ввода-вывода: двух — на локальной машине (для отправки запроса SQL и для получения ответа) и двух соответствующих им — на удаленной.

Механизм коммуникаций в AS/400 разбит на слои между OS/400, SLIC и аппаратурой. В нашем примере четыре слоя обработки, а именно:

прикладная поддержка;

менеджер функций;

менеджер ввода-вывода (IOM) станции;

IOM линии.

Аппаратный уровень будет рассмотрен в следующем разделе.

В OS/400 может работать прикладная поддержка коммуникаций, предоставляемая как пользователем, так и IBM. Пользовательская поддержка коммуникаций подключается с помощью API, хотя, конечно, такой поддержкой обладает далеко не каждая прикладная программа. В нашем примере, прикладная поддержка предоставляется компонентом DRDA базы данных AS/400.

Менеджер функций (FM) — это компонент OS/400, предоставляющий интерфейс между приложениями и MI. Для каждого «транспорта» коммуникаций в SLIC обычно имеется соответствующий FM в OS/400. FM отвечает за верхние уровни протокола коммуникаций, например за то, чтобы данные были представлены приложению в той форме, в которой оно этого ожидает.

В нашем примере используется FM для механизма коммуникаций, называемого APPC (advanced program-to-program communications). Впервые АРРС был реализован в System/38, где поддерживал параллельные сессии между системами, позволяя таким образом взаимодействовать нескольким приложениям на разных системах. При этом применялся коммуникационный протокол LU 6.2 (logical unit type 6.2). Порт для посылки и приема данных от приложения на другой системе предоставляло прикладной программе логическое устройство (logical unit).

В AS/400 этот механизм был расширен до уровня APPN (advanced peer-to-peer networking), чтобы удовлетворить потребности распределенной обработки, как в ЛВС, так и в глобальных сетях. APPN, в частности, определяет по распределенному сетевому каталогу местонахождение любой удаленной системы, запрошенной локальным приложением. При наличии нескольких маршрутов между локальной и удаленной системами, APPN на основании выбранного пользователем класса обслуживания вычисляет наилучший. В последних нескольких версиях AS/400 в APPN были добавлены дополнительные функции, включая автоматическое конфигурирование при получении входящего запроса на соединение от неизвестной системы, непосредственно подключенной к ЛВС. Другое новое расширение APPN — поддержка работы по разным сетям, что позволяет приложениям, написанным для API APPC/LU 6.2 без модификации взаимодействовать с удаленным приложением, даже если сетевые сервисы предоставляются несколькими системами.

В нашем примере оператор SQL CONNECT задает устройства, которое должно использоваться в данном запросе ввода-вывода. Предположим, что это устройство — не сетевой адаптер, а модем. Поддержка DRDA в базе данных передает управление FM APPC. Задача FM — построение необходимых структур ввода-вывода и создание соответствующего запроса. FM выдает MI привилегированную команду запроса ввода-вывода («REQIO»), которая не может выполняться прикладной программой. С командой «REQIO» связан SSR (Source Sink Request), который содержит три указателя на:

очередь ответов MI (MIRQ), в которую будет помещено сообщение по завершении ввода-вывода;

описание устройства LUD;

данные приема-передачи (SSD), то есть пользовательский буфер для хранения данных, пересылаемых на устройство или наоборот (в нашем примере — запрос SQL, посылаемый на удаленную систему).

Затем запрос ввода-вывода посылается в виде сообщения в очередь, находящуюся ниже MI и принадлежащую IOM станции. IOM станции — это программа SLIC, которая принимает запросы от FM для установления соединений (иногда называемых сессиями) с удаленными системами, устройствами или приложениями. IOM станции отвечает за обработку средних уровней протокола коммуникаций. В состав функций среднего уровня входит, среди прочих, управление путями коммуникаций — каждому из них соответствует определенный IOM станции: например, поддерживающий коммуникации «точка-точка», или коммуникации с центральными системами, такими как System/390. Другой IOM станции обеспечивает подключение ПК, использующих протокол LU 6.2. В нашем примере необходимо соединение «точка-точка» с удаленной системой, заданной в операторе SQL CONNECT. Следовательно, мы будем использовать IOM станции для APPN. Этот IOM станции дополняет запрос управляющей информацией, необходимой для удаленной сессии. Он также обеспечивает интерфейс между FM и IOM линии.

IOM станции использует для данного соединения описание котроллера CTLD, в MI — CD. CD — это конфигурационный объект, содержащий информацию об удаленной системе (ее адрес, имя порта управления APPN и другие необходимые параметры). Руководствуясь информацией из CD, IOM станции добавляет к запросу ввода-вывода команды или необходимую управляющую информацию, а затем IOM станции посылает запрос ввода-вывода в очередь IOM линии.

IOM линии реализует протоколы канала. Он обеспечивает для IOM станции прозрачный интерфейс, не зависящий от нижележащего канального протокола и используемой сети. В нашем примере мы собираемся воспользоваться протоколом SDLC (synchronous data link communications).

IOM линии управляет передачей данных и определяет физические подключения к линии. Для этого он использует описание линии LIND, которому в MI соответствует описание сети ND, а для линии SDLC добавляет к запросу необходимые управляющие символы. IOM линии также обеспечивает интерфейс между верхними слоями коммуникационного протокола и аппаратным соединением.

Далее запрос передается средству связи между процессами IPCF, расположенному в SLIC. IPCF используется для всех устройств; оно взаимодействует с аппаратурой ввода-вывода для отправки запроса IOP на плате адаптера по шине SPD. С помощью LUD (DEVD указан в SSR) IPCF определяет, что в нашем примере используется модем, подсоединенный к плате адаптера, а та, в свою очередь, — к физической линии связи. Вскоре мы поговорим, как именно выполняется передача; но сначала нужно рассмотреть блоки управления вводом-выводом, позволяющие SLIC работать с аппаратурой.

Блоки управления ввода-вывода и связи между ними показаны на рисунке 10.3. Блоки содержат всю информацию, необходимую IPCF для поиска устройства. Эта информация в виде таблиц находится в памяти, где она доступна как аппаратуре, так и ПО, и обновляется во время загрузки системы, когда назначаются адреса IOBU. Обратите внимание, что стрелки на рисунке 10.3 соответствуют адресам, тогда как на рисунке 10.2 — передачам управления.

CAT

Рисунок 10.3. Блок управления вводом-выводом

Кроме того, на рисунке 10.3 показаны семь блоков управления. Давайте рассмотрим их подробней.

1. Управляющая адресная таблица (CAT) — эта общесистемная таблица, в которой содержатся адреса основных блоков управления, используемых SLIC.

Очередь свободных сообщений (AMQ) — это очередь незаполненных сообщений, на которую указывает один из адресов в CAT. Сообщения из этой очереди могут использоваться различными компонентами SLIC, включая IPCF.

Таблица управления шиной (BCT) содержит буферы, SRQ и указатели на другие блоки управления. На каждую шину SPD приходится по одной BCT.

Блок устройства шины (BUB) содержит информацию о различных подключенных к шине устройствах. На каждую шину SPD приходится по одному BUB. Здесь размещается очередь сообщений ввода-вывода, ожидающих завершения операции.

Обратите внимание, что этот BUB не то же самое, что BUB (Bring Up Bind), о котором говорилось в главе 3. Тот BUB использовался для оценки прогресса в разработке SLIC, и, возможно, мне не следовало его упоминать, чтобы не путать читателей.

Удаленный CCB ( или удаленный CGCB) — имеется по одному для каждой шины SPD в системе, а также для каждого идентификатора подключения, назначенного IOBU. Этот управляющий блок хранит для удаленных (находящихся вне процессора) IOBU идентификаторы устройств, состояния и адресов IOBU. Некоторые IOBU могут поддерживать несколько устройств и, соответственно, иметь несколько идентификаторов подключения.

Локальный CCB (или локальный CGCB) — один из этих блоков также имеется для каждой шины SPD в системе. Они очень похожи на удаленные блоки, но содержат информацию об IOBU, подключенных локально (внутри процессора).

7.Блок управления подключениями (CCB) — один для всей системы. Он содержит

идентификаторы подключений и маршруты для всех шин SPD, а также обеспечивает доступ к информации подключений для каждой отдельной шины.

 

Как все это работает

В этом разделе мы продолжим разговор о вводе-выводе на примере шины SPD. Мы рассмотрим подробности низкоуровневых операций, выполняемых ниже IPCF и очень специфичных для структуры шины SPD, используемой как в старых, так и в новых моделях AS/400. Чтобы представить себе операцию ввода-вывода по SPD в целом, проследим ее с самого начала, когда приложение запрашивает выполнение ввода-вывода, и до момента получения приложением уведомления о завершении операции.

Иллюстрировать наш рассказ будет рисунок 10.4, представляющий собой несколько упрощенную версию рисунка 9.2. На нем показаны действия, выполняющиеся до посылки сообщения о начале операции («Opstart») по шине SPD соответствующему

IOP.

На рисунке изображена команда MI «REQIO», а также SPD и пользовательский буфер. Для простоты показан только один IOM. Как и раньше, запрос посылается в очередь IOM. Когда IOM завершает свою обработку, запрос на передачу («SENDREQ») отправляется IPCF. Именно здесь мы ранее остановились, рассматривая пример.

Для операции ввода-вывода IPCF создает две структуры данных. Первая — это сообщение запроса ввода-вывода (IORM), позволяющее IPCF отслеживать выполнение этого запроса и хранить информацию о его отправителе. Вторая структура данных — это блок управления запросом-ответом (RRCB). С его помощью IOP на плате адаптера SPD определяет тип запрошенной операции, расположение в памяти данных, которые должны быть считаны или записаны, а также то, куда следует поместить состояние завершения. Эта структура данных получает информацию от семи блоков управления, изображенных на рисунке 10.3

Форматы IORM и RRCB показаны на рисунке 10.5. Здесь также представлен формат двух сообщений шины SPD, используемых для начала и завершения операции ввода-вывода.

Рисунок 10.5 Структуры данных IPCF

Рисунок 10.4. Операция ввода-вывода (начало)

IORM — это сообщение, указывающее, кто запросил данную операцию ввода-вывода, или, точнее, кого следует уведомить о ее завершении. Поля сообщения задают его тип и адрес блока устройства шины. Этот адрес показывает, где расположен BUB для шины SPD, а также IOP для устройства, которому послан запрос. Данное сообщение будет поставлено в очередь, связанную с указанным BUB, на все время ожидания завершения ввода-вывода. Постановка в очередь означает, что IPCF сохраняет в BUB адрес данного IORM. В очереди одного BUB одновременно может находиться более одного IORM, то есть на шине SPD может одновременно быть несколько ожидающих операций.

В IORM также указан адрес очереди, куда будет послано сообщение по завершении ввода-вывода. Эта очередь связана с IOM, отправившим запрос IPCF. Перед посылкой сообщения в очередь IOM, поле состояния в IORM будет заполнено информацией о том, завершилась ли операция нормально или нет.

Последние два поля IORM — это идентификатор подключения CID и адрес RRCB. CID инициализируется IPCF с использованием блоков управления подключениями, рассмотренных в предыдущем разделе. CID уникально идентифицирует устройство. IPCF получает CID из удаленного блока управления подключением, используя информацию IORM. Адрес RRCB задает место расположения в памяти данного блока управления. Обратите внимание, что в этих блоках используются реальные, а не виртуальные адреса.

RRCB — это блок управления, от которого IOP получает подробную информацию об отправляемом запросе ввода-вывода. В отличие от блоков управления, инициализируемых во время загрузки системы, RRCB — это временный блок управления, который создается для каждого запроса ввода-вывода. RRCB может иметь переменную длину, так что первое поле задает размер блока в памяти. После поля длины следуют два поля, задающие CID (тот же, что и в IORM) и идентификатор RID, позволяющий различать запросы. Далее следует поле расширенного состояния, нужное, если возвращаемая информация состояния не умещается в поле состояния в IORM.

Остальные поля RRCB содержат адреса основной памяти. Первым идет адрес самого запроса ввода-вывода, за ним — адреса одного или нескольких буферов данных. В нашем примере запрос ввода-вывода — это команда модему, а не запрос на получение находящейся в буферах данных информации от удаленной вычислительной системы. Запрос ввода-вывода не записывается в RRCB, так как имеет разную длину для разных устройств, а находится в памяти по адресу, заданному этим полем. Буферы данных, на которые указывают следующие поля, содержат данные, подлежащие передаче на устройство. В нашем примере здесь будет размещаться адрес пользовательского буфера — SSD, в котором хранится запрос SQL к удаленной системе.

На рисунке 10.5 приведены также форматы двух сообщений шины: «OPSTART» и «OPEND». Это примеры 12-байтовых сообщений, посылаемых по шине SPD во время операций устройства, о которых говорилось выше. Первое сообщение, «OPSTART», используется в нашем примере для запуска операции ввода-вывода.

Сообщение «OPSTART» содержит четыре поля. В первом находится длина RRCB в памяти. Второе поле идентифицирует это сообщение как сообщение «OPSTART». Третье — занято адресом RRCB в памяти. Последнее поле содержит идентификатор подключения сервера. Сервером здесь выступает IOP, так что нам необходимо задать сервер для сообщения шины. Идентификатор подключения сервера — часть CID. Полный CID в RRCB задает устройство.

Для запуска операции ввода-вывода IPCF, используя операцию устройства, посылает сообщение «OPSTART» по соответствующей шине SPD указанному IOP на плате адаптера (до модема дело еще не дошло). При получении сообщения IOP инициирует операцию памяти на шине и, используя DMA, считывает в свою память весь RRCB. После получения RRCB IOP снова запускает операцию памяти для считывания из основной памяти запроса. Наконец, поскольку данная операция требует пересылки данных (нашего запроса SQL удаленному компьютеру) на устройство, IOP выбирает данные из буферов, которые содержат наш запрос SQL FETCH.

Теперь IOP выдает модему команду на посылку нашего запроса по линии связи на удаленный компьютер. Данные пересылаются из указанных буферов основной памяти. Когда операция завершается получением от удаленной системы сигнала об окончании приема, IOP формирует сообщение шины «OPEND». Затем он запускает операцию устройства для отправки сообщения «OPEND» обратно IOBU, в роли которого выступает системный процессор. Как Вы помните, в качестве IOBU выступают и IOP, и системный процессор.

Сообщение шины «OPEND», показанное на рисунке 10.5, содержит четыре поля. В первом находятся различные биты флагов, предоставляющие информацию об операции и ее завершении. Второе — поле типа — идентифицирует это сообщение как «OPEND». Третье поле содержит идентификатор запроса RID, который был ранее помещен IPCF в RRCB. Наконец, четвертое поле содержит состояние завершения. В зависимости от состояния флагов, информация завершения может также находиться в поле расширенного состояния RRCB.

Рисунок 10.6 иллюстрирует конец операции ввода-вывода из нашего примера. Получение сообщения «OPEND» означает, что IOP закончил обработку запроса. Обработчик ввода-вывода (не показан на рисунке) выводит IORM из очереди BUB для шины SPD, по которой было получено сообщение «OPEND», обновляет поле состояния и посылает IORM в очередь маршрутизатора IPCF.

Рисунок 10.6 Операция ввода-вывода (завершение)

Маршрутизатор IPCF проверяет состояние завершения, и если все нормально, посылает ответное сообщение в очередь, указанную в поле адреса очереди возврата IORM. IOM, отправивший запрос ввода-вывода, выполняет необходимую очистку и, если операция завершилась нормально, посылает запись отклика (FBR) в очередь ответов MI (MIRQ), которая была указана в оригинальном запросе источника-стока. Эта запись уведомляет менеджера функций о завершении первой операции ввода-вывода. На этом FM заканчивает операцию и может выполнять следующие. Приложение, запросившее SQL FETCH, будет ждать, пока удаленная система не возвратит результаты обращения к базе данных.

В результате только что описанной операции ввода-вывода наш запрос SQL был отправлен на удаленную систему. Когда запрос прибыл на удаленную систему, удаленный модем сообщил локальной системе о его получении. Затем модем удаленной системы запустил операцию ввода-вывода для приема запроса. Некоторое время спустя, когда база данных удаленной системы завершит выполнение нашего запроса, удаленная система инициирует операцию ввода-вывода для отправки нам результатов. IOP на локальной системе, к которому подключен модем, получит данные с удаленной системы и запустит другую операцию ввода-вывода. На этот раз IOP пошлет сообщение «OPSTART» центральному процессору, который, как мы видели выше, также может выполнять все функции IOBU. Когда MIRQ получит сообщение «OPEND» о завершении второй операции ввода-вывода на локальном компьютере, менеджер функции уведомит прикладную программу, что обработка ее запроса ввода-вывода (SQL FETCH) завершена.

Прежде чем закончить рассмотрение примера, хочу отметить, что для выполнения ввода-вывода требуется гораздо меньше времени, если для соединения систем используется OptiConnect, а не линия связи. Во-первых, системы соединены высокоскоростным оптоволоконным кабелем. Во-вторых, протоколы связи APPC и APPN заменяются специальным драйвером устройства. Этому драйверу не требуются сложные проверки для отслеживания ошибок, которые возможны при обмене данными по обычной линии связи, где сигналы обязательно содержат электрические шумы. Для проверки и исправления ошибок требуется передача избыточной информации. Передача информации по оптоволокну осуществляется с помощью света и свободна от шумов. Таким образом, драйвер устройства, используемый OptiConnect, обеспечивает прямое соединение c меньшей избыточностью.

Хочу особо отметить: если запрос SQL направляется локальной базе данных, то никакие из только что описанных операций, задействующих APPC FM, IOM станции APPN, или IOM станции SDLC, выполняться не будут. Вместо этого, поддержка базы данных локальной системы будет обрабатывать запрос SQL FETCH с использованием одноуровневой памяти так, как было описано в главе 8. Страничные ошибки, которые приводят к обращениям на диск, обрабатываются компонентом управления памятью, работающим напрямую с IPCF.

 

Выводы

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

Благодаря использованию множественных шин и множественных IOP, AS/400 занимает уникальные позиции по ожидаемому в следующие несколько лет росту производительности. Использование программируемых процессоров ввода-вывода и, вследствие этого, возможность выполнять огромное число операций ввода-вывода, будут еще долгие годы выгодно отличать AS/400 от других систем.

Интересно, что первой системой, где применялись программируемые процессоры ввода-вывода, была CDC 6600. Там они назывались периферийными процессорами. Возможно, Вы помните, что CDC 6600, разработанная Сеймуром Креем, была первой машиной, использовавшей конвейерный процессор общего назначения архитектуры загрузка-сохранение. Развитие этой архитектуры привело к созданию RISC-процессоров. Похоже, этот первый суперкомпьютер понимал кое-что и во вводе-выводе. Современные высокопроизводительные AS/400, несомненно, усвоили его уроки.