Россия, Привольная 1/2 |
Система ввода-вывода
Ввод-вывод — это Родни Дэнжерфилд1Родни Дэнжерфилд — очень популярный современный американский комический актер и автор. Зачастую его юмор "крутится" вокруг простой мысли: "Никто меня не любит, никто не уважает...". — Прим консультанта. (Rodney Dangerfield) вычислительных систем: на него никто не обращает внимания. Всеобщий любимчик — процессор, а подсистема ввода-вывода рядом с ним — падчерица. Вот пример: когда надо охарактеризовать производительность компьютера чаще всего начинают считать мегагерцы. Создается впечатление, что сегодняшних разработчиков процессоров больше всего заботит максимум мегагерц, а не другие аспекты общей архитектуры. Между тем, пусть мегагерцы даже и показывают, как быстро "вертится" процессор, они все же мало что говорят о производительности вычислительной системы в целом.
Вспомним "Технология PowerPC" , где обсуждалась подсистема памяти, и то, как важна ее роль в общей производительности вычислительной системы. Роль вводавывода не менее значима. Подсистема вводавывода определяет время отклика и производительность большинства компьютеров. Именно эти параметры больше всего волнуют заказчиков, даже если разработчикам процессоров нет до них дела.
Быстро приближается время, когда вычислительные системы, начиная от простейших ПК до самых быстрых суперкомпьютеров, будут использовать одну и ту же технологию микропроцессоров. Тогда единственным их отличием станут системы ввода-вывода.
Да и сам по себе вводвывод — важнейший компонент системы. В конце концов, без него Ваш мощнейший процессор будет просто бормотать чтото "внутри себя".
Что же такое подсистема вводавывода? Это группа аппаратных и программных компонентов, отвечающих за обработку ввода и доставку вывода на различные устройства, подключенные к системе. Всякий раз, когда Вам нужен некий системный ресурс, — например, требуется прочитать или записать файл, запросить выполнение программы, вызвать другой системный объект, создать или уничтожить объект, поработать с каким-либо устройством — и этого ресурса еще нет в памяти, компьютер должен обратиться к системе ввода-вывода, чтобы считать или записать, создать или удалить ресурс. Как я уже говорил, в компьютере мало что происходит без участия системы ввода-вывода.
В прошлом AS/400 не обладала очень уж быстрыми процессорами. Тем не менее, она прекрасно выглядела при сопоставлении с другими системами и, зачастую, могла посрамить систему с более быстрым процессором. Совершать такие подвиги ей позволяло и позволяет "секретное оружие" — одна из самых искусных и мощных систем ввода-вывода.
Упрощенно, есть два способа проектирования системы ввода-вывода.
Можно полностью положиться на процессор, и взвалить на него все вычисления и обработку ввода-вывода. Тогда в один момент времени процессор занят исполнением команд различных пользовательских и системных программ, в другой — занимается управлением вводомвыводом. Такой тип ввода-вывода пришел из мира ПК и Unix, где ввод-вывод очень прост. Беда лишь в том, что процессор в каждый момент времени может делать лишь что-то одно. Интенсивный ввод-вывод негативно влияет на остальные вычисления в системе.
При другом подходе для обработки вводавывода используются отдельные процессоры. Это позволяет выполнять множественные операции ввода-вывода параллельно, лишь незначительно или вообще не снижая производительность главных процессоров. Именно такой подход, с использованием множественных процессоров ввода-вывода (IOP), применяется в AS/400.
Немногие могут похвастаться, что знают чтолибо о структуре вводавывода AS/400, помимо факта наличия множественных IOP, и буквально единицы понимают, как это работает. В этой лекции мы рассмотрим некоторые аспекты системы вводавывода AS/400, как самые популярные, так и не очень известные. Начнем с эволюции системы ввода-вывода и причин, ее стимулировавших.
Время перемен
Система вводавывода AS/400 находится на переходном этапе. В начале устройства ввода-вывода подсоединялись к системе только посредством IOP, подключенных к особой шине ввода-вывода. Она называется шиной SPD2Шина SPD пришла из неудачного проекта Fort Knox, история которого рассказана в Приложении. Своим именем она обязана System Products Division — подразделению IBM, занимавшемуся созданием Fort Knox. и отлично служит на протяжении многих лет, включая серию 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), о котором я говорил в "System Licensed Internal Code (SLIC) — сердце AS/400" , был принят в качестве стандарта для большинства процессоров ввода-вывода. Поэтому к 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 для больших систем будет расти, и мы добавим соответствующую поддержку.
Для иллюстрации структуры вводавывода в новых корпусах Mako я использую 12-канальную конфигурацию SMP, описанную в "Технология PowerPC" . По сути, рисунок 10.1 — это рисунок 2.6 с 12-канальной конфигурацией SMP, добавлена лишь структура ввода-вывода. Для подключения всей системы ввода-вывода в корпусах Mako используется SAN (System Area Network3SAN — это сеть нового класса, предназначенная для высокоскоростных соединений систем и устройств на расстояниях в десятки и сотни метров. SAN занимает промежуточное положение между непосредственными соединениями внутри корпуса и ЛВС. ). На рисунке показаны локальные шины 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 ГБ/с даже в случае резервирования. Как мы увидим в "Версия 4" , это идеально для соединения систем в кластер.
Платы ввода-вывода, показанные на рисунке 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 непосредственно.