Канал ввода / вывода - Channel I/O

В вычислении , канал ввода / вывода является высокая производительность ввода / вывода (I / O) архитектура , которая реализована в различных формах на ряде компьютерных архитектур, особенно на больших ЭВМ . В прошлом, как правило , каналы были реализованы с пользовательскими устройствами, по- разному названный канал , O процессор ввода / , Контроллер ввода / вывода , I / O синхронизатора , или контроллер DMA .

Обзор

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

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

ЦП обычно назначает блок памяти или отправляет каналу относительно небольшую программу для обработки задач ввода-вывода, которые канал и контроллер во многих случаях могут выполнять без дальнейшего вмешательства со стороны ЦП (исключение: эти каналы программы, которые используют «прерывания, управляемые программой», PCI, для облегчения загрузки программ, подкачки по запросу и других важных системных задач).

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

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

История

Впервые канальный ввод-вывод был использован в мэйнфрейме на электронных лампах IBM 709 , чья модель 766 Data Synchronizer была первым контроллером канала, в 1957 году. Его транзисторный преемник, IBM 7090 , имел от двух до восьми 6-битных каналов (7607 ) и мультиплексор каналов (7606), который может контролировать до восьми каналов. 7090 и 7094 также могут иметь до восьми 8-битных каналов с 7909.

В то время как IBM использовала команды каналов данных на некоторых своих компьютерах и разрешала объединение команд, например, на 7090, большинство других поставщиков использовали каналы, которые имели дело с отдельными записями. Однако некоторые системы, например серия GE-600 , имели более сложные архитектуры ввода-вывода.

Позже для более крупных компьютеров IBM System / 360 и даже для ранних моделей System / 370 каналы селектора и каналы мультиплексора все еще были громоздкими и дорогими отдельными процессорами, такими как канал IBM 2860 Selector (от одного до трех каналов селектора в одном блок), канал мультиплексора IBM 2870 Byte (один канал мультиплексора и, необязательно, один подканал селектора в одном блоке) и канал блочного мультиплексора IBM 2880 (один или два канала блочного мультиплексора в одном блоке).

Аппаратная реализация каналов, совместимых с System / 370, корпорацией Amdahl была совершенно иной. Один внутренний блок, называемый «C-Unit», поддерживал до шестнадцати каналов, используя одно и то же оборудование для всех поддерживаемых каналов. Возможны два внутренних блока C, поддерживающих до 32 каналов. Каждый «C-Unit» независимо выполнял процесс, обычно называемый «процессором смещения состояния канала» (тип цилиндрического процессора ), который реализовал специализированный конечный автомат (FSM). Каждый цикл ЦП, каждые 32 наносекунды в 470V / 6 и / 5 и каждые 26 наносекунд в 470V / 7 и / 8 "C-unit" считывает полное состояние следующего канала в приоритетной последовательности и его канала ввода-вывода. в тегах . Были выполнены необходимые действия, определенные последним состоянием этого канала и его входящими тегами : данные были прочитаны или записаны в оперативную память, программа операционной системы была прервана, если такое прерывание было указано с помощью флага Program Control Interrupt программы канала, и " C-Unit "наконец запомнил следующее состояние этого канала и установил его выходные теги канала ввода-вывода , а затем перешел к следующему каналу с более низким приоритетом. В некоторых случаях упреждение было возможно. В «C-модуле» было предусмотрено достаточное хранилище FIFO для всех каналов, которые эмулировались этим автоматом. Каналы можно легко перенастроить в соответствии с выбором заказчика: эмуляция IBM 2860 (селектор), IBM 2870 (байтовый мультиплексор) или IBM 2880 (блочный мультиплексор) без каких-либо значительных ограничений с помощью команд консоли обслуживания. Также поддерживался «двухбайтовый интерфейс», «вход / выход данных» и другие высокопроизводительные параметры канала IBM. Также предлагались встроенные межканальные адаптеры, которые на языке Амдала назывались CCA, а на языке IBM назывались CTC. По-настоящему изменил правила игры, и это вынудило IBM переработать свои мэйнфреймы, чтобы обеспечить аналогичные возможности и гибкость каналов. Первоначальный ответ IBM заключался в том, чтобы включить урезанные модели 158, работающие только в «канальном режиме», в качестве канальных модулей модели 303x. В «C-модуле» Amdahl любой канал может быть любого типа, 2860, 2870 или 2880, без резервирования каналов 0 и 4 для 2870, как в некоторых моделях IBM.

Для компьютеров IBM меньшего размера, моделей System / 360 моделей 50 и ниже и System / 370 моделей 158 и ниже, каналы были реализованы в микрокоде ЦП , а сам ЦП работал в одном из двух режимов: «Режим ЦП» или «Режим канала». », при этом режим канала« блокировал »режим ЦП (каналы IBM 2860, 2870 и 2880, а также каналы Amdahl были« неблокирующими »).

Намного позже каналы были реализованы в виде встроенного процессора, находящегося в том же корпусе, что и ЦП, обычно называемого «канальным процессором», и который обычно был процессором RISC , но мог быть микропроцессором System / 390 с специальный микрокод, как в мэйнфреймах IBM CMOS .

Некоторые из первых коммерческих канальных систем сторонних производителей были на UNIVAC 490 , CDC 1604 , Burroughs B5000 , UNIVAC 1107 и GE 635 . С тех пор контроллеры каналов стали стандартной частью большинства конструкций мэйнфреймов, и у мэйнфреймов есть основное преимущество перед меньшими, более быстрыми персональными компьютерами и сетевыми вычислениями.

Суперкомпьютер CDC 6600 1965 года использовал для этой роли 10 логически независимых компьютеров, называемых периферийными процессорами (PP), и 12 простых каналов ввода-вывода. PP были современной версией первых персональных компьютеров CDC , CDC 160 и 160A. Изначально операционная система находилась и выполнялась в PP0.

Контроллеры каналов также были сделаны в виде однокристальных конструкций с несколькими каналами на них, например, используемых в компьютерах NeXT .

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

Описание

Эталонная реализация канального ввода-вывода - это реализация семейства мэйнфреймов IBM System / 360 и его преемников, но аналогичные реализации были приняты IBM на других линиях, например, 1410 и 7010 , 7030 , и другими поставщиками мэйнфреймов, такими как as Control Data , Bull ( General Electric / Honeywell ) и Unisys .

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

Канал - это независимый аппаратный компонент, который координирует все операции ввода-вывода с набором контроллеров или устройств. Несмотря на название, это не просто средство общения; это программируемое устройство, которое обрабатывает все детали ввода / вывода после получения списка операций ввода / вывода, которые необходимо выполнить (программа канала).

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

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

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

В терминологии IBM ESA / 390 канал - это параллельное соединение данных внутри древовидной или иерархически организованной подсистемы ввода-вывода. В отсеках ввода-вывода System / 390 каналы либо напрямую подключаются к устройствам, установленным внутри отсека (коммуникационный адаптер, такой как ESCON , FICON , адаптер открытых систем ), либо проходят за пределами отсека под фальшполом в виде кабелей толщиной в большой палец и напрямую подключайтесь к интерфейсам каналов на более крупных устройствах, таких как ленточные подсистемы, устройства хранения с прямым доступом (DASD), терминальные концентраторы и другие системы ESA / 390.

Типы каналов

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

Программа канала

Программа канала представляет собой последовательность команд каналов () , что система водяного охлаждения оборудования выполняется с помощью подсистемы каналов ввода / вывода в IBM System / 360 и последующих архитектурах. Канальная программа состоит из одного или нескольких командных слов канала. Операционная система сигнализирует подсистеме канала ввода-вывода, чтобы начать выполнение программы канала, с помощью инструкции SSCH (запуск подканала). После этого центральный процессор может продолжить выполнение инструкций, не связанных с вводом-выводом, до прерывания. Когда операции канала завершены, канал прерывает центральный процессор прерыванием ввода-вывода. В более ранних моделях линейки мэйнфреймов IBM модуль канала был идентифицируемым компонентом, по одному на каждый канал. В современных мэйнфреймах каналы реализованы с помощью независимого RISC-процессора, процессора каналов, одного на все каналы. IBM System / 370 Extended Architecture и ее преемники заменили более ранние машинные инструкции SIO ( запуск ввода-вывода ) и SIOF ( запуск быстрого выпуска ввода-вывода ) (System / 360 и ранняя System / 370) на SSCH ( запуск подканала ) инструкция (ESA / 370 и последующие).

Канальный ввод / вывод обеспечивает значительную экономию на вводе / выводе. Например, в Linux от IBM на IBM Z для форматирования всей дорожки DASD требуется только одна канальная программа (и, следовательно, только одна инструкция ввода-вывода), но несколько командных слов канала (по одному на блок). Программа выполняется выделенным процессором ввода-вывода, в то время как процессор приложений (ЦП) свободен для другой работы.

Командные слова канала

Команда слово канала ( CCW ) является инструкцией к специализированным I / O процессор канала , который, по сути, конечный автомат. Он используется для инициирования операции ввода-вывода, такой как «чтение», «запись» или «определение», на устройстве, подключенном к каналу. В системных архитектурах, реализующих канальный ввод-вывод, обычно все устройства соединяются по каналам, поэтому для всех операций ввода-вывода требуется использование CCW.

CCW организованы в канальные программы операционной системой и подпрограммой ввода-вывода, служебной программой или автономным программным обеспечением (например, тестовыми и диагностическими программами). Ограниченная возможность «разветвления», следовательно, возможность динамического программирования, доступна в таких программах канала за счет использования флага канала «модификатор состояния» и CCW «передача в канале».

Цепочка

IBM системы водяного охлаждение оборудование является приковано , чтобы сформировать программу канала. Биты в CCW указывают, что следующее место в памяти содержит CCW, который является частью той же программы канала. Канальная программа обычно выполняет последовательные CCW до тех пор, пока не возникнет исключительная ситуация, CCW передачи в канале (TIC) или CCW не будет указана цепочка. Цепочка команд сообщает каналу, что следующая против часовой стрелки содержит новую команду. Объединение данных в цепочку указывает, что следующий CCW содержит адрес дополнительных данных для той же команды, что позволяет, например, записывать или считывать части одной записи из нескольких областей данных в хранилище (запись со сборкой и чтение с разбросом).

Самомодифицирующиеся программы каналов

Канальные программы могут изменять свои собственные операции во время выполнения на основе считанных данных. Например, самомодификация широко используется в OS / 360 ISAM .

Пример программы канала

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

  SEEK             <cylinder/head number>
  SEARCH KEY EQUAL <key value>
  TIC              *-8 Back to search if not equal
  READ DATA        <buffer> 

TIC (передача в канале) заставит программу канала переходить к команде SEARCH до тех пор, пока не встретится запись с совпадающим ключом (или конец дорожки). Когда будет найдена запись с совпадающим ключом, контроллер DASD включит модификатор состояния в статус канала, заставляя канал пропускать TIC CCW; таким образом, программа канала не будет разветвляться, и канал выполнит команду READ.

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

  SEEK                     <cylinder/head number>
  SEARCH KEY HIGH OR EQUAL <key value>
  TIC                      *-8 Back to search if not high or equal
  READ DATA                <buffer> 

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

Канальные программы в виртуальных системах хранения

В большинстве систем каналы работают с использованием реальных (или физических) адресов , в то время как программы каналов построены с использованием виртуальных адресов . Операционная система отвечает за перевод этих программ каналов перед их выполнением, и для этой конкретной цели диспетчер ввода / вывода (IOS) имеет специальную функцию быстрого исправления, которая была встроена в диспетчер ОС только для тех «исправлений», которые относительно короткая продолжительность (т.е. значительно короче, чем «время настенных часов»). Страницы, содержащие данные, которые будут использоваться операцией ввода-вывода, заблокированы в реальной памяти или зафиксированы на странице . Программа канала копируется, и все виртуальные адреса заменяются реальными адресами перед запуском операции ввода-вывода. После завершения операции страницы становятся незафиксированными.

Поскольку исправление и открепление страниц является дорогостоящим для ЦП процессом, иногда для снижения затрат на ЦП используется долгосрочное исправление страниц. Здесь виртуальная память фиксируется по страницам в течение всего срока службы приложения, а не фиксируется и освобождается при каждой операции ввода-вывода. Примером программы, которая может использовать долгосрочное исправление страниц, является DB2 .

Альтернативой долгосрочному исправлению страниц является перемещение всего приложения, включая все его буферы данных, в предпочтительную область основного хранилища. Это достигается за счет специальной SYSEVENT в MVS / 370 через Z / OS операционных систем, в котором приложение является, во- первых, swapped- из оттуда , где он может быть, предположительно , из не-предпочтительной области, чтобы подкачки и страницы внешнего запоминающего устройства, а также это, во- вторых, swapped- в к предпочтительной области (SYSEVENT TRANSWAP). После этого приложение может быть помечено как не подлежащее замене другим специальным SYSEVENT (SYSEVENT DONTSWAP). Каждый раз, когда такое приложение завершается, нормально или ненормально, операционная система неявно выдает еще один специальный SYSEVENT от имени приложения, если это еще не было сделано (SYSEVENT OKSWAP).

Загрузка с канальным вводом / выводом

Даже самонастройки системы или Initial Program Load (IPL) в IBM номенклатурой, осуществляется по каналам, хотя этот процесс частично имитируется CPU через подразумеваемой / O (SIO) инструкции Start I подразумеваемое Channel Address Word ( CAW) в ячейке 0 и подразумеваемое командное слово канала (CCW) с кодом операции Read IPL, также в ячейке 0. Предполагается цепочка команд, поэтому подразумеваемая CCW в ячейке 0 переходит в продолжение канальной программы в ячейках 8. и 16, и, возможно, в другом месте, если одна из этих CCW будет канальной передачей (TIC).

Для загрузки системы подразумеваемая Чтение IPL CCW считывает первый блок выбранного IPL-устройства в 24-байтовую область данных в местоположении 0, канал продолжается вторым и третьим двойными словами, которые являются CCW, и эта программа канала загружает первая часть программного обеспечения системы загружается в другое место в оперативной памяти. Первое двойное слово содержит PSW, который при получении в конце IPL заставляет ЦП выполнять текст IPL (загрузчик начальной загрузки), считанный CCW в местоположении 8. Затем текст IPL определяет местонахождение, загружает и передает управление на ядро операционной системы. Nucleus выполняет или инициирует любую необходимую инициализацию, а затем начинает обычные операции ОС.

Эта концепция IPL не зависит от устройства. Он может выполнять IPL-запись с колоды карт, с магнитной ленты или с устройства хранения с прямым доступом (DASD), например диска, барабана. Команда чтения IPL (X'02 '), которая моделируется ЦП, представляет собой команду чтения чтения EBCDIC Select Stacker 1 на устройстве чтения карт и команду чтения на ленточном носителе (которые по своей природе являются последовательным доступом), но специальная команда Read-IPL на DASD.

Контроллеры DASD принимают команду X'02 ', ищут цилиндр X'0000' head X'0000 ', переходят к индексной точке (т. Е. Сразу после записи дескриптора дорожки (R0)), а затем обрабатывают команду Read IPL как если это была команда чтения данных (X'06 '). Без этого особого поведения контроллера DASD независимая от устройства IPL была бы невозможна. На DASD текст IPL содержится в цилиндре X'0000 ', треке X'0000' и записи X'01 '(24 байта), и цилиндре X'0000', треке X'0000 'и записи X' 02 '(довольно большой, конечно, несколько больше 3000 байт). Метка тома всегда содержится в цилиндре X'0000 ', дорожке X'0000' и блоке X'03 '(80 байт). Метка тома всегда указывает на VTOC с указателем в форме HHHH (то есть VTOC должен находиться в пределах первых 65 536 дорожек). В VTOC в формате 4 DSCB определяет степень (размер) VTOC, так что метка тома требуется только указатель на первые дорожки в пределах этого VTOC, и как формат 4 DSCB, который описывает VTOC, всегда самые первый DSCB в VTOC HHHH также указывает на DSCB формата 4.

При попытке выполнить IPL с устройства, которое не было инициализировано с помощью текста IPL, система просто переходит в состояние ожидания. Программа инициализации DASD (устройство хранения с прямым доступом), IBCDASDI, или приложение инициализации DASD, ICKDSF, помещает состояние ожидания PSW и фиктивную строку CCW в 24 байта, если устройство предназначено только для данных, а не для IPL, после Эти программы форматируют VTOC и выполняют другие функции инициализации жесткого диска.

Смотрите также

Рекомендации

Заметки

Внешние ссылки