Московский государственный университет путей сообщения
Опубликован: 11.04.2006 | Доступ: свободный | Студентов: 1311 / 300 | Оценка: 4.39 / 4.00 | Длительность: 17:21:00
ISBN: 978-5-9556-0036-1
Специальности: Разработчик аппаратуры
Лекция 3:

Организация подсистемы ввода вывода

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >

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

Каждая канальная программа реализует определенную операцию ввода-вывода и состоит из последовательности управляющих слов канала CCW, являющихся командами для процессорного ядра каналов. В z/Architecture используются два формата CCW, приведенные на таблице 2.30. Оба формата являются общими для всех типов периферийных устройств [2.1].

Таблица 2.30. Форматы CCW
Код операции Адрес данных Формат 0
0
8                 31
Флаги 0 00000000 Счетчик данных
32 40
48       63

Код операции Флаги 0 Счетчик данных Формат 1
0 8
16        31
0 Адрес данных
32                63

Каждое CCW содержит восьмиразрядный код операции, который определяет приказ, передаваемый в устройство для выполнения в нем одной из возможных операций, и действия, выполняемые в канале. Перечень возможных значений кодов операций CCW и соответствующих им действий приведен в таблице 2.31. Биты m используются для кодирования модификаций приказов, исполняемых в периферийных устройствах различных типов.

Таблица 2.31. Коды операции CCW
Код операции Выполняемые действия
~ ~ ~ ~ 0 0 0 0 не используется
m m m m m m 0 1 записать
m m m m m m 1 0 прочитать
m m m m 1 1 0 0 прочитать в обратном направлении
m m m m m m 1 1 управление
m m m m 0 1 0 0 прочитать состояние
1 1 1 0 0 1 0 0 прочитать уточненное состояние
~ ~ ~ ~ 1 0 0 0 переход в канале (формат 0)
0 0 0 0 1 0 0 0 переход в канале (формат 1)
m m m m 1 0 0 0 не используется

m - биты модификации кодов в зависимости от типов устройств

Для задания области памяти, с которой канал производит обмен, в CCW указывается начальный адрес этой области (адрес данных) и количество байт, участвующих в обмене (счетчик данных). Форматы 0 и 1 отличаются разрядностью адреса, равной, соответственно, 24 и 31 разрядам. Возможно использование косвенной адресации при установке в CCW флага IDA (Indirect Access). В этом случае адрес данных указывает на список косвенных адресов (Indirect Data Address Word - IDAW), каждый из которых адресует страницу памяти емкостью 2КB или 4КB. Разрядность IDAW определяется одним из двух его форматов (1 или 2) и равна, соответственно, 31 или 64 бита. Количество IDAW в списке косвенных адресов определяется полем счетчика данных.

Поле флагов CCW дополняет код операции и используется в канале для управления выборкой CCW и выполнения специальных функций. Помимо флага IDA используются следующие флаги. Флаг цепочки данных (Chain-Data) предназначен для указания каналу, что следующее CCW имеет тот же код операции и продолжает ее выполнение с другой областью памяти. Флаг цепочки команд (Chain-Command) указывает каналу на наличие нового кода операции в следующем CCW. Флаг пропуска (Skip) определяет блокировку записи в память данных, принимаемых от периферийного устройства, что позволяет каналу осуществлять выборочное чтение информации из зон физических носителей устройств. Флаг блокировки неправильной длины (Suppress-Length-Indication) позволяет каналу исключить прерывание основной программы при обнаружении несовпадения размеров блока данных, указанного в CCW, и блока данных, формируемого в устройстве. Флаг программно управляемого прерывания (Program-Controlled-Interruption) вызывает запрос на прерывание основной программы и позволяет информировать ее о ходе выполнения канальной программы в контрольных точках. Флаг останова (Suspend) позволяет приостановить выполнение канальной программы до команды на продолжение работы подканала.

CCW с кодом операции "переход в канале" предназначено только для канала и не вызывает операций с периферийным устройством. Основное назначение такого CCW - организация безусловных переходов и ветвлений в канальной программе. При его исполнении адрес из поля "адрес данных" используется в качестве адреса следующего CCW. В сочетании с возможностью условного пропуска очередного CCW в зависимости от признака, полученного от периферийного устройства при исполнении текущего CCW, команда "переход в канале" позволяет организовать условные ветвления.

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

В зависимости от типа каналов в z/Architecture возможны три способа выполнения канальных программ:

  • байт-мультиплексный (byte-multiplex mode);
  • блок-мультиплексный (burst mode);
  • фрейм-мультиплексный (frame-multiplex mode).

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

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

Фрейм-мультиплексный режим реализует вариант организации обмена между каналами и периферийными устройствами с использованием элементов сетевых технологий. Обмен реализуется с использованием фреймов (или кадров) информации, соответствующих канальному уровню модели открытых систем OSI, и протоколов типа "точка-точка" (PPP). Каждый фрейм информации имеет многоуровневую структуру и содержит следующие стандартные поля (рис. 2.16):

  • заголовок, включающий начало фрейма (SOF), адрес источника (S_ID), адрес приемника (D_ID) и другую управляющую информацию;
  • поле передаваемых в фрейме данных;
  • концевик, включающий контрольный код (CRC) и конец фрейма (EOF).

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

Структура фрейма

Рис. 2.16. Структура фрейма

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

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >