Базовые концепции ввода-вывода
Базовые концепции ввода-вывода
Пока мы еще не погрузились слишком глубоко в работу компонентов системы ввода-вывода, рассмотрим основополагающие понятия. Устройства ввода-вывода подключаются к компьютеру с помощью шины ввода-вывода. Шина — это просто электрическое соединение между двумя аппаратными компонентами. Часто, между компьютером и устройством располагается много шин. Обычно, шина ввода-вывода насчитывает примерно от 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 — приводят к краху.