Каналы ввода-вывода¶
Каналы ввода-вывода — это специализированные аппаратные или программно-аппаратные средства, предназначенные для организации обмена данными между центральным процессором (ЦП) и периферийными устройствами (внешними накопителями, принтерами, сетевыми адаптерами, устройствами ввода) без прямого участия процессора в каждой операции передачи. Каналы ввода-вывода обеспечивают разгрузку ЦП от задач управления вводом-выводом, повышая общую производительность вычислительной системы за счёт параллельной работы процессора и периферии.
¶История развития
¶Ранние системы (1950–1960-е годы)
В первых компьютерах (например, ENIAC, UNIVAC I) ввод-вывод выполнялся напрямую процессором: каждая операция чтения или записи требовала выполнения серии команд ЦП. Это приводило к простою процессора на время передачи данных. С появлением мейнфреймов в 1960-х годах возникла необходимость в более эффективных механизмах. Компания IBM в 1964 году представила систему IBM System/360, в которой впервые была реализована концепция каналов ввода-вывода (I/O channels). Они представляли собой отдельные процессоры, управляющие обменом с периферией по собственным программам — так называемым канальным программам.
¶Развитие в 1970–1980-е годы
В 1970-х годах каналы ввода-вывода стали стандартом для мейнфреймов и мини-компьютеров. Например, в советских ЭВМ серии «ЕС ЭВМ» (аналог IBM System/360) использовались каналы-мультиплексоры и каналы-селекторы. В 1980-х годах с распространением персональных компьютеров (ПК) архитектура каналов была упрощена: в IBM PC/AT применялся контроллер прямого доступа к памяти (DMA), который выполнял функции, аналогичные каналу, но с меньшей автономностью.
¶Современный этап (1990-е — настоящее время)
В современных системах каналы ввода-вывода реализованы в виде высокоскоростных интерфейсов (PCI Express, SATA, NVMe) и специализированных контроллеров (например, в серверных платформах Intel Xeon используются контроллеры ввода-вывода (I/O Hub), которые объединяют функции каналов и мостов). В мейнфреймах (IBM z/Architecture) каналы ввода-вывода остаются ключевым элементом, обеспечивая работу тысяч периферийных устройств.
¶Классификация каналов ввода-вывода
Каналы ввода-вывода делятся по способу управления и типу передаваемых данных.
¶По способу управления
- Селекторные каналы — обслуживают только одно устройство за раз, передавая данные блоками. Используются для высокоскоростных устройств (например, дисковых накопителей). После завершения передачи канал переключается на другое устройство.
- Мультиплексорные каналы — могут обслуживать несколько устройств одновременно, чередуя передачу данных (мультиплексирование). Делятся на байт-мультиплексорные (передача по одному байту) и блок-мультиплексорные (передача блоками). Применяются для медленных устройств (терминалы, принтеры) или для смешанных нагрузок.
¶По типу передаваемых данных
- Каналы для блочных устройств — работают с устройствами, где данные организованы в блоки (жёсткие диски, SSD). Поддерживают адресацию блоков и буферизацию.
- Каналы для символьных устройств — обслуживают устройства, передающие данные по одному символу (клавиатуры, последовательные порты). Часто реализуются через прерывания.
¶По архитектурной реализации
- Аппаратные каналы — реализованы в виде отдельного процессора (канального процессора) с собственной памятью и системой команд. Примеры: каналы IBM System/360, каналы в мейнфреймах Fujitsu.
- Программно-аппаратные каналы — используют контроллеры DMA и прерывания, управляемые драйверами операционной системы. Примеры: контроллеры IDE, SATA, NVMe в современных ПК.
¶Устройство и принцип работы
Канал ввода-вывода состоит из следующих компонентов:
- Канальный процессор — специализированный микропроцессор, выполняющий канальные программы. Имеет собственный набор команд (чтение, запись, проверка статуса, переходы).
- Канальная память — хранит канальные программы и буферы данных. В современных системах используется часть оперативной памяти.
- Интерфейс с ЦП — шина или мост, через который канал получает команды от процессора и передаёт статус.
- Интерфейс с периферией — контроллеры устройств (адаптеры, хост-адаптеры), подключаемые через стандартные интерфейсы (SCSI, Fibre Channel, SAS).
¶Принцип работы
- Инициализация: ЦП формирует канальную программу (последовательность команд) и помещает её в канальную память. Затем ЦП отправляет каналу команду «Start I/O» с указанием адреса программы.
- Выполнение: Канал самостоятельно выполняет команды: читает данные с устройства, записывает их в память или наоборот. Во время выполнения ЦП может продолжать вычисления.
- Завершение: После выполнения всех команд канал генерирует прерывание, сообщая ЦП о завершении операции. ЦП проверяет статус и обрабатывает результаты.
Пример: при чтении данных с диска канал посылает команду на контроллер диска, дожидается готовности, считывает блок данных в буфер, затем передаёт его в оперативную память через DMA. Всё это происходит без участия ЦП.
¶Применение
¶Мейнфреймы и серверы
В крупных вычислительных системах (IBM z/Architecture, Fujitsu GS21) каналы ввода-вывода обеспечивают:
- Поддержку тысяч устройств (дисковые массивы, ленточные библиотеки, сетевые адаптеры).
- Высокую пропускную способность (до 100 Гбит/с и более).
- Надёжность: каналы могут дублироваться и переключаться при сбоях.
¶Персональные компьютеры
В современных ПК функции каналов выполняют контроллеры DMA (например, в чипсетах Intel или AMD). Они обеспечивают:
- Передачу данных между памятью и устройствами (SSD, видеокарты, звуковые карты) без загрузки ЦП.
- Поддержку стандартов PCI Express, SATA, NVMe.
¶Встраиваемые системы
В микроконтроллерах (например, ARM Cortex-M) каналы ввода-вывода реализованы как модули DMA, которые используются для работы с датчиками, АЦП, дисплеями.
¶Примеры
¶IBM System/360
В этой системе использовались три типа каналов:
- Селекторные каналы — для дисков и лент.
- Байт-мультиплексорные каналы — для терминалов и принтеров.
- Блок-мультиплексорные каналы — для высокоскоростных устройств с блочной передачей.
¶Советские ЭВМ «ЕС ЭВМ»
В моделях ЕС-1020, ЕС-1030 применялись каналы-мультиплексоры (КМ) и каналы-селекторы (КС). КМ обслуживали до 256 устройств, КС — одно устройство с высокой скоростью.
¶Современные серверы
В серверах на базе Intel Xeon Scalable используется контроллер I/O Hub (например, Intel C620), который объединяет функции каналов: управляет шинами PCI Express, SATA, USB, обеспечивает DMA и поддержку виртуализации ввода-вывода (SR-IOV).
¶Интересные факты
- Концепция каналов ввода-вывода была разработана Джином Амдалом (Gene Amdahl) и его командой в IBM для System/360.
- В мейнфреймах IBM z/Architecture каналы могут работать в режиме «канальная подсистема» (Channel Subsystem), что позволяет подключать до 256 каналов, каждый из которых обслуживает до 256 устройств.
- В современных ПК контроллер DMA может выполнять до 8 каналов одновременно, передавая данные между памятью и устройствами со скоростью до 32 Гбит/с (PCIe 4.0 x16).
¶Критика
- Сложность реализации: аппаратные каналы требуют дополнительных процессоров и памяти, что увеличивает стоимость системы.
- Ограниченная гибкость: канальные программы жёстко заданы, что затрудняет адаптацию к новым типам устройств без обновления микрокода.
- Конкуренция с другими технологиями: в ПК функции каналов частично взяли на себя контроллеры DMA и прерывания, что снизило потребность в выделенных каналах. Однако в мейнфреймах каналы остаются незаменимыми.
¶Источники
- IBM Corporation. «IBM System/360 Principles of Operation». 1964.
- Танейбаум Э., Остин Т. «Архитектура компьютера». 6-е издание. — СПб.: Питер, 2013.
- Гук М. «Аппаратные средства IBM PC». 3-е издание. — СПб.: Питер, 2006.
- Паттерсон Д., Хеннесси Дж. «Архитектура компьютера и проектирование компьютерных систем». 5-е издание. — М.: ДМК Пресс, 2019.
- Документация Intel: «Intel® C620 Series Chipset Platform Controller Hub (PCH)». 2020.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

