Открыть сервис

Каналы ввода-вывода

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

История развития

Ранние системы (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).

Принцип работы

  1. Инициализация: ЦП формирует канальную программу (последовательность команд) и помещает её в канальную память. Затем ЦП отправляет каналу команду «Start I/O» с указанием адреса программы.
  2. Выполнение: Канал самостоятельно выполняет команды: читает данные с устройства, записывает их в память или наоборот. Во время выполнения ЦП может продолжать вычисления.
  3. Завершение: После выполнения всех команд канал генерирует прерывание, сообщая ЦП о завершении операции. ЦП проверяет статус и обрабатывает результаты.

Пример: при чтении данных с диска канал посылает команду на контроллер диска, дожидается готовности, считывает блок данных в буфер, затем передаёт его в оперативную память через 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 →