Принципы работы системы IBM/370
Описание логической структуры вычислительных машин Системы 370. Особенности мультипроцессирования. Команды общего назначения и управления системой, обработки десятичных данных и команды с плавающей точкой. Средства обработки машинных ошибок (коррекция).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | книга |
Язык | русский |
Дата добавления | 12.06.2014 |
Размер файла | 658,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Между командами НАЧАТЬ ВВОД-ВЫВОД и НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ существуют два основных различия:
1. В некоторых каналах, а именно таких, которые выполняют команду НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ независимо от устройства, при выполнении немедленных операций, не связанных в цепочку, по команде НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ и при значении бита управления мультиплексированием, равным единице, устанавливается признак результата, равный 0, в то время как команда НАЧАТЬ ВВОД-ВЫВОД установила бы признак результата 1. См. также Замечания по программированию 2 непосредственно за подразделом “Повторение команды” раздела 13.3.
2. Признак результата, равный 0, устанавливается этими каналами для команды НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ при значении бита управления мультиплексированием, равном единице, также в том случае, когда адресуемое устройство недоступно или команда отвергается устройством. Информация о состоянии устройства выдается через прерывание ввода-вывода.
ЗАПИСАТЬ ИДЕНТИФИКАТОР КАНАЛА
STIDC D2(B2) [S]
+--------------------------+
¦ B203 ¦ B2 ¦ D2 ¦
+--------------------------+
0 15 16 19 20 31
В ячейку 168 основной памяти записываются 4 байта информации, описывающей заданный канал. Команда ЗАПИСАТЬ ИДЕНТИФИКАТОР КАНАЛА выполняется только в состоянии “супервизор”.
Разряды 16-23 адреса второго операнда определяют канал, к которому относится команда. Биты 24-31 адреса игнорируются.
Формат информации, записываемой в ячейку 168, имеет следующий вид:
+-----------------------------------------------------+
¦ ??? ¦ ????? ?????? ?????? ¦ ???????????? ????? IOEL ¦
+-----------------------------------------------------+
0 3 4 15 16 31
Разряды 0-3 описывают тип канала. Если канал может работать в качестве каналов различных типов, то запомненный код идентифицирует тип канала в момент выполнения команды. Используются следующие коды:
0000 - селекторный;
0001 - байт-мультиплексный;
0010 - блок-мультиплексный.
Разряды 4-15 описывают модель канала. Когда модель канала однозначно определяется типом канала и моделью процессора, в этом поле записываются нули.
Биты 16-31 содержат длину в байтах самой большой области расширенной регистрации ввода-вывода (IOEL), которая может быть записана каналом во время прерывания ввода-вывода. Если канал никогда не выполняет регистрацию, используя указатель IOEL, в это поле записываются нули.
Если канал обнаруживает сбой оборудования при выполнении команды STIDC, он записывает в память байты состояния CSW. За исключением бита СБОЙ УПРАВЛЕНИЯ КАНАЛА, все биты состояния равны нулю. Содержимое других полей CSW не изменяется.
Если команда STIDC не может быть выполнена из-за того, что в канале имеет место состояние “не выполнена регистрация” и это влияет на работоспособность канала, то в память записывается полное CSW. Все поля CSW устанавливаются в нуль, за исключением разрядов НЕ ВЫПОЛНЕНА РЕГИСТРАЦИЯ и СБОЙ УПРАВЛЕНИЯ КАНАЛА. Никакая регистрация по сбою с этим состоянием не связана.
Признак результата:
0 - идентификатор канала записан правильно;
1 - записано CSW;
2 - состояние канала запрещает запись идентификатора канала;
3 - выключен.
Программные прерывания:
привилегированная операция.
В таблице 13.8 приведены значения признака результата, устанавливаемые командой ЗАПИСАТЬ ИДЕНТИФИКАТОР КАНАЛА для всех возможных состояний системы ввода-вывода. Состояния A, I, W и N описаны в подразделе “Состояния системы ввода-вывода”.
Таблица 13.8 Значения признака результата для команды ЗАПИСАТЬ ИДЕНТИФИКАТОР КАНАЛА
Канал |
A |
I |
W |
N |
|
0 |
а |
а |
3 |
||
Обозначения:A - доступен;I - хранит прерывание;W - работает;N - выключен.а) Если канал не может записать идентификатор канала из-за того, что он работает или хранит прерывание, то устанавливается признак результата, равный 2. Если состояние “работает” или “хранит прерывание” не мешает каналу записать свой идентификатор. то устанавливается признак результата, равный 0. |
ПРОВЕРИТЬ КАНАЛ
TCH D2(B2) [S]
+--------------------------+
¦ 9F00 ¦ B2 ¦ D2 ¦
+--------------------------+
0 15 16 19 20 31
Состояние адресуемого канала указывается соответствующим признаком результата в PSW. Состояние канала не изменяется, и никаких действий в канале не выполняется. Разряды 8-15 кода команды игнорируются. Команда ПРОВЕРИТЬ КАНАЛ выполняется только в состоянии “супервизор”.
Разряды 16-23 адреса второго операнда идентифицируют канал, к которому относится команда. Разряды 24-31 адреса игнорируются.
Команда ПРОВЕРИТЬ КАНАЛ проверяет состояние адресуемого канала. Она проверяет, работает ли канал в монопольном режиме, хранит ли он условия прерывания от устройств или же выключен. Если ни одно из перечисленных условий не имеет места, указывается состояние “доступен”. Выборка устройства не производится, подканалы мультиплексного канала не опрашиваются.
Признак результата:
0 - доступен;
1 - канал хранит прерывание или в нем не выполнена регистрация;
2 - канал работает в монопольном режиме;
3 - канал выключен.
Программные прерывания:
привилегированная операция.
В таблице 13.9 приведены значения признака результата, устанавливаемые командой ПРОВЕРИТЬ КАНАЛ для всех возможных состояний системы ввода-вывода. Состояния A, I, W и N описаны в подразделе “Состояния системы ввода-вывода”.
Таблица 13.9 Значения признака результата для команды ПРОВЕРИТЬ КАНАЛ
Канал |
A |
I |
W |
N |
|
0 |
1 |
2 |
3 |
||
Обозначения:A - доступен;I - хранит прерывание;W - работает;N - выключен. |
ПРОВЕРИТЬ ВВОД-ВЫВОД
TIO D2(B2) [S]
+--------------------------+
¦ 9D00 ¦ B2 ¦ D2 ¦
+--------------------------+
0 15 16 19 20 31
Состояние адресуемого канала, подканала и устройства указывается соответствующим признаком результата в PSW и в некоторых случаях записью CSW. Хранящиеся сигналы прерывания могут быть сброшены. Команда выполняется только тогда, когда процессор находится в состоянии “супервизор”. Разряды 8-14 кода команды игнорируются.
Разряды 16-31 адреса второго операнда идентифицируют канал, подканал и внешнее устройство, к которым адресована команда.
Функция TIO выполняется по команде ПРОВЕРИТЬ ВВОД-ВЫВОД и в некоторых каналах в определенных ситуациях по команде ОСВОБОДИТЬ ВВОД-ВЫВОД.
Если канал работает в монопольном режиме, а адресуемый подканал хранит прерывание, то в зависимости от типа канала и модели системы при выполнении функции TIO устанавливается признак результата, равный 1 или 2. Если устанавливается признак результата, равный 1, то для идентификации условия прерывания в ячейку 64 записывается CSW, а само условие прерывания сбрасывается.
Если имеет место описываемая ниже ситуация и канал доступен или хранит прерывание либо в случае некоторых каналов работает, то при выполнении функции TIO записывается полное CSW. Содержимое этого CSW относится к внешнему устройству, адресуемому командой. Упомянутое выше условие формулируется следующим образом:
Подканал хранит прерывание по концу операции в адресуемом внешнем устройстве. CSW идентифицирует это прерывание, и условие прерывания сбрасывается. Поля ключа защиты, адреса команды и счета содержат конечные для операции ввода-вывода значения, а в поле состояния могут быть установлены другие разряды, обеспечиваемые каналом и устройством. Если канал работает и еще не принял сигнал прерывания от устройства, условие прерывания в подканале не сбрасывается и CSW не записывается.
Если имеет место одна из следующих ситуаций и канал при этом доступен или хранит прерывание, то выполнение функции TIO вызывает запись CSW. Содержимое этого CSW относится к устройству, адресуемому командой.
1. Подканал доступен, а устройство хранит прерывание или контроллер хранит сигнал КОНЕЦ РАБОТЫ КОНТРОЛЛЕРА для адресуемого устройства. Поле состояния устройства в CSW идентифицирует это прерывание и может содержать другие биты, выдаваемые устройством или контроллером. Условие прерывания сбрасывается. Бит ЗАНЯТО в CSW установлен в нуль. Другие поля CSW содержат нули, если только не был обнаружен сбой оборудования.
2. Подканал доступен, а внешнее устройство или контроллер выполняет ранее начатую операцию или контроллер хранит прерывание для неадресуемого устройства. Поле состояния устройства в CSW содержит бит ЗАНЯТО, а если занят контроллер - биты ЗАНЯТО и МОДИФИКАТОР СОСТОЯНИЯ. Другие поля CSW содержат нули, если только не был обнаружен сбой оборудования.
3. Подканал доступен, а устройство или канал при выполнении команды обнаружили сбой оборудования или адресуемое устройство находится в состоянии “не готово” и не хранит никаких условий прерывания. CSW идентифицирует ошибку. Если устройство не готово, устанавливается бит СБОЙ В УСТРОЙСТВЕ. Во внешнем устройстве или подканале не вырабатывается никаких условий прерывания.
Если команда ПРОВЕРИТЬ ВВОД-ВЫВОД из-за необработанного условия регистрации и это влияет на работоспособность канала или подканала, то в память записывается полное CSW. Все поля CSW устанавливаются в нуль, за исключением разрядов НЕ ВЫПОЛНЕНА РЕГИСТРАЦИЯ и СБОЙ УПРАВЛЕНИЯ КАНАЛА. Никакая регистрация по сбою с этим состоянием не связана.
Если функция TIO используется для сброса условия прерывания от подканала, а канал еще не принял этот сигнал от устройства, то при выполнении функции TIO производится выборка устройства и условие прерывания в нем сбрасывается. При выполнении определенных операций ввода-вывода некоторые устройства не могут выдавать информацию о своем текущем состоянии в ответ на команду ПРОВЕРИТЬ ВВОД-ВЫВОД. Например, некоторые контроллеры накопителей на магнитной ленте находятся в подобном состоянии, когда они уже выдали сигнал КОНЕЦ РАБОТЫ КАНАЛА и выполняют операцию возврата на зону. Если в это время выдается команда ПРОВЕРИТЬ ВВОД-ВЫВОД, то в поле состояния устройства в CSW устанавливаются в 1 биты ЗАНЯТО и МОДИФИКАТОР СОСТОЯНИЯ, причем во все остальные поля записываются нули. Условие прерывания во внешнем устройстве и подканале не сбрасывается.
Некоторые устройства, например, мультиплексор передачи данных 2702, никогда не выдают свое текущее состояние в ответ на команду ПРОВЕРИТЬ ВВОД-ВЫВОД, а условие прерывания может быть сброшено только в том случае, если разрешено прерывание ввода-вывода. Если в такое устройство выдается команда ПРОВЕРИТЬ ВВОД-ВЫВОД, поле состояния устройства содержит бит МОДИФИКАТОР СОСТОЯНИЯ, причем все остальные поля в CSW имеют нулевые значения; условие прерывания в устройстве и в подканале, если оно имеет место, не сбрасывается.
Однако в момент, когда канал присваивает высший приоритет для прерываний условию, связанному с выполнением операции в подканале, канал принимает состояние от устройства, после чего соответствующее условие в устройстве сбрасывается. Если функция TIO обращается к устройству, для которого канал уже принял сигнал прерывания, то устройство не выбирается, а условие прерывания в подканале сбрасывается независимо то типа устройства и его текущего состояния. CSW содержит состояние устройства и другую информацию, связанную с условием прерывания. В байт-мультиплексном канале при выполнении функции TIO адресуемое устройство выбирается только после того, как канал обслужит все необработанные запросы на передачу данных для ранее начатых операций.
Признак результата:
0 - доступен;
1 - записано CSW;
2 - канал или подканал занят;
3 - выключен.
Программные прерывания:
привилегированная операция.
В таблице 13.10 приведены значения признака результата, устанавливаемые командой ПРОВЕРИТЬ ВВОД-ВЫВОД для всех возможных состояний системы ввода-вывода. Состояния A, I, W и N описаны в подразделе “Состояния системы ввода-вывода”.
Таблица 13.10 Значения признака результата для команды ПРОВЕРИТЬ ВВОД-ВЫВОД
Канал |
A |
I |
Wа |
Wб |
N |
|||||||||||||||||||
Подканал |
A |
Iа |
Iб |
W |
N |
A |
Iа |
Iб |
W |
N |
A |
Iа |
Iб |
W |
N |
2 |
3 |
|||||||
Контроллер - ВУ |
A |
I |
W |
N |
2 |
1в |
2 |
3 |
A |
I |
W |
N |
2 |
1в |
2 |
3 |
2 |
2 |
г |
2 |
2 |
|||
0 |
1в |
1в |
3 |
0 |
1в |
1в |
3 |
|||||||||||||||||
Обозначения: A - доступен; I - хранит прерывание; Iа - хранит прерывание для неадресуемого устройства; Iб - хранит прерывание для адресуемого устройства; W - работает; Wа - работает с неадресуемым устройством; Wб - работает с адресуемым устройством; N - выключен. в) Записано CSW. г) В состоянии WаIбX в зависимости от канала и ситуации в канале может быть установлен признак результата 1 и записано CSW или признак результата 2. Примечание. Подчеркнутые значения признака результата относятся к ситуациям, которые могут иметь место только в мультиплексном канале. |
Замечания по программированию
Устанавливая маску, запрещающую прерывания ввода-вывода, программа получает возможность управлять приоритетом прерываний ввода-вывода выборочно от каналов. Приоритет устройств, подключенных к каналу, является фиксированным и не может контролироваться программой. Команда ПРОВЕРИТЬ ВВОД-ВЫВОД позволяет программе сбрасывать сигналы прерывания выборочно от определенных внешних устройств.
Если CSW записывается при выполнении функции TIO, индикации о сбое управления канала или интерфейса могут относиться к условиям, уже существовавшим в канале, или к условиям, возникшим при выполнении функции TIO. Аналогично наличие в CSW бита СБОЙ В УСТРОЙСТВЕ, когда биты КОНЕЦ РАБОТЫ КАНАЛА, КОНЕЦ РАБОТЫ КОНТРОЛЛЕРА или КОНЕЦ РАБОТЫ УСТРОЙСТВА равны нулю, может быть обусловлено ситуацией, созданной предыдущей операцией, состоянием “не готово” или сбоем оборудования, обнаруженным при выполнении команды ПРОВЕРИТЬ ВВОД-ВЫВОД. Команду ПРОВЕРИТЬ ВВОД-ВЫВОД нельзя использовать для сброса условия прерывания по флажку PCI, когда подканал находится в состоянии “работает”.
Обработка особых случаев при выполнении команд ввода-вывода
До того как в канал посылается сигнал на выполнение команды ввода-вывода, команда проверяется процессором на допустимость. Особые случаи, обнаруженные в этот момент, вызывают программные прерывания. Если такое прерывание происходит, текущее PSW записывается в ячейку старого PSW для программных прерываний и заменяется новым PSW для программных прерываний. Код прерывания в старом PSW идентифицирует причину прерывания.
Ниже описан особый случай при выполнении команды, который приводит к программному прерыванию.
Привилегированная операция
Команда ввода-вывода встретилась в состоянии “задача”. Команда подавляется до того, как в канал посылается сигнал на выполнение команды. CSW, признак результата в PSW и состояние адресуемого канала, подканала и внешнего устройства при попытке выполнить команду ввода-вывода в состоянии “задача” не изменяются.
13.3 Выполнение операций ввода-вывода
Канал может выполнять шесть команд: ЗАПИСЬ, ЧТЕНИЕ, ЧТЕНИЕ В ОБРАТНОМ НАПРАВЛЕНИИ, УПРАВЛЕНИЕ, УТОЧНИТЬ СОСТОЯНИЕ и ПЕРЕХОД В КАНАЛЕ. Каждая команда, за исключением команды перехода в канале, вызывает соответствующую операцию ввода-вывода. Термин “операция ввода-вывода” относится к действиям, которые выполняются по команде во внешнем устройстве и соответствующем подканале. Подканал занят выполнением операции с момента поступления команды канала до получения сигнала КОНЕЦ РАБОТЫ КАНАЛА или в случае цепочки команд до получения сигнала КОНЕЦ РАБОТЫ УСТРОЙСТВА. Операция в устройстве продолжается до возникновения сигнала КОНЕЦ РАБОТЫ УСТРОЙСТВА.
Блоки данных
Данные, записываемые внешними устройствами, могут разделяться на блоки. Длина блока зависит от устройства. Например, блоком может быть содержимое одной перфокарты, строки печати или информация, записанная между двумя соседними межзонными промежутками на магнитной ленте.
Один блок - это максимальное количество информации, которое может быть передано за одну операцию ввода-вывода. Операция ввода-вывода прекращается, как только соответствующая область памяти будет исчерпана или будет достигнут конец блока. При выполнении некоторых операции, таких, как запись на магнитную ленту или передача данных на абонентский пункт, блоки не определены и количество передаваемой информации контролируется только программой.
Адресное слово канала
Адресное слово канала (CAW) определяет ключ защиты памяти и адрес первого CCW, связанного с командой НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ. Канал обращается за CAW только при выполнении команды НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ. CAW выбирается из ячейки 72 основной памяти процессора, выдавшего команду. Затем соответствующая информация записывается в подканал и программа может изменять содержимое CAW. При выборке CAW каналом содержимое ячейки 72 не изменяется.
CAW имеет следующий формат:
+-------------------------+
¦ ???? ¦ 0000 ¦ ????? CCW ¦
+-------------------------+
0 3 4 7 8 31
Поля в CAW используются для следующих целей.
Ключ защиты. Разряды 0-3 являются ключом защиты для всех команд канала, связанных с командой НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ. Всякий раз, когда во время операции ввода-вывода делается обращение к основной памяти, то выполняется проверка соответствия этого ключа и ключа памяти.
Адрес CCW. Разряды 8-31 указывают ячейку абсолютной основной памяти, где находится первое CCW.
Разряды 4-7 CAW должны содержать нули. Поскольку CCW расположено на границе двойного слова, три младших разряда адреса CCW должны содержать нули. Если какое-либо из этих ограничений нарушено или же если адрес CCW указывает ячейку, защищенную от выборки, или ячейку, находящуюся за пределами основной памяти данной установки, то по командам НАЧАТЬ ВВОД-ВЫВОД и НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ записываются байты состояния CSW с установленным в единицу битом НАРУШЕНИЕ ЗАЩИТЫ или ОШИБКА В ПРОГРАММЕ. В этом случае операция ввода-вывода не начинается.
Замечания по программированию
Разряды 4-8 CAW, которые в настоящее время должны содержать нули, в будущем могут использоваться для управления новыми функциями. Поэтому не рекомендуется устанавливать эти биты в единицу с целью получения преднамеренных прерываний из-за ошибки в программе.
Команды канала
Команда канала, или управляющее слово канала (CCW), определяет команду, которую нужно выполнить, а для команд. вызывающих передачу данных, - область памяти, связанную с операцией ввода-вывода, а также действия, которые нужно предпринять после завершения передачи данных. CCW могут находиться в любой ячейке основной памяти, и к одной команде НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ может относиться несколько CCW. Первое CCW выбирается во время выполнения команды НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, когда последняя выполняется как команда НАЧАТЬ ВВОД-ВЫВОД. Если команда НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ выполняется независимо от устройства, первое CCW выбирается уже после выполнения этой команды. Каждое следующее CCW выбирается тогда, когда операция дойдет до места, где требуется это CCW. При выборке CCW каналом содержимое основной памяти не изменяется.
CCW имеет следующий формат:
+--------------------------------------------------------------+
¦ ??? ¦ ????? ?????? ¦ ?????? ¦ 00 ¦ //////// ¦ ??????? ¦
¦ ??????? ¦ ¦ ¦ ¦ ¦ ¦
+--------------------------------------------------------------+
0 7 8 31 32 37 40 47 48 63
Поля в CCW используются для следующих целей.
Код команды. Разряды 0-7 указывают, какая операция должна быть выполнена.
Адрес данных. Разряды 8-31 указывают место байта в абсолютной основной памяти. Ячейка, в которой он находится, является первой ячейкой, относящейся к области памяти, определяемой этим CCW.
Флажок цепочки данных (CD). Единичное значение бита 32 определяет цепочку данных. Это означает, что область памяти, определяемая следующим CCW, будет использоваться в текущей операции ввода-вывода.
Флажок цепочки команд (CC). Единичное значение бита 33 при отсутствии флажка CD определяет цепочку команд. Это означает, что после нормального завершения текущей операции начинает выполняться операция, задаваемая кодом команды в следующем CCW.
Флажок подавления индикации неправильной длины (SLI). От состояния бита 34 зависит, будет ли сообщаться программе о неправильной длине или нет. Если этот бит установлен в единицу и флажок CD отсутствует, индикация неправильной длины подавляется. Если установлены в единицу флажки CC и SLI, имеет место цепочка команд независимо от наличия неправильной длины.
Флажок блокировки записи в память (SKIP). Если бит 35 равен единице, то передача информации в память во время операции чтения, чтения в обратном направлении или уточнения состояния подавляется.
Флажок программно-управляемого прерывания (PCI). Единичное значение бита 36 приводит к тому, что канал при выборке этого CCW вырабатывает условие прерывания. Если бит 36 равен нулю, то имеет место обычная операция ввода-вывода.
Флажок косвенной адресации данных в канале (IDA). Единичное значение бита 37 определяет косвенную адресацию данных в канале. Этот флажок допустим для обоих режимов BC и EC, хотя само средство косвенной адресации данных в канале предназначено прежде всего для упрощения программирования операций ввода-вывода при использовании динамической переадресации, которую можно включить только в режиме EC.
Счет. Разряды 48-63 задают число байтов в области памяти, определяемой данным CCW.
Биты 38-39 каждого CCW, за исключением команды перехода в канале, должны быть равны нулю. Кроме того, если задана косвенная адресация данных в канале, биты 30-31 в CCW должны быть равны нулю, указывая на границу слова; биты 0-7 первой записи списка косвенных адресов данных также должны быть равны нулю (см. подраздел “Косвенная адресация данных в канале”). Если вышеуказанные биты не равны нулю, то вырабатывается сигнал ОШИБКА В ПРОГРАММЕ. Если в первом CCW, указанном в CAW, нет нужных нулей, то операция ввода-вывода не начинается, и при выполнении команды НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, когда последняя выполняется как команда НАЧАТЬ ВВОД-ВЫВОД, запоминаются байты состояния CSW с индикацией ошибки в программе. Если подобная ситуация обнаружится при выполнении цепочки данных, в устройство посылается сигнал прекращения операции. Если отсутствие этих нулей обнаруживается во время выполнения цепочки команд или после выполнения команды НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, выполняемой независимо от устройства, то новая операция не начинается, а вырабатывается условие прерывания.
Содержимое разрядов 40-47 CCW игнорируется.
Замечания по программированию
Разряды 38-39 в CCW, которые в настоящее время должны устанавливаться в нуль, в будущем могут использоваться для управления новыми функциями. Поэтому не рекомендуется использовать эти биты для преднамеренного получения прерывания по ошибке в программе канала.
Код команды канала
Код команды (биты 0-7 CCW) определяет для канала и внешнего устройства операцию, которая должна быть выполнена. Каждая команда подробно описана в подразделе “Команды”.
Два младших бита или, если они равны нулю, 4 младших бита кода команды определяют для канала выполняемую операцию. Канал различает четыре операции:
- вывод в прямом направлении (писать, управление);
- ввод в прямом направлении (читать, уточнить состояние);
- ввод в обратном направлении (читать в обратном направлении);
- переход (переход в канале).
Канал игнорирует старшие биты кода команды.
При выполнении команд, которые вызывают операции ввода-вывода, все 8 разрядов кода команды передаются во внешнее устройство. Старшие биты этих кодов содержат биты модификатора. Они определяют, как будет выполняться команда в устройстве. Биты модификатора могут вызвать, например, сравнение данных, полученных при выполнении операции записи, с ранее записанными данными. Эти биты могут определять такие условия, как плотность записи и тип контроля по четности. В операциях управления биты модификатора могут содержать код приказа, определяющий управляющую функцию, которую нужно выполнить. Значения битов модификатора зависят от типа внешнего устройства и для каждого конкретного устройства описаны в публикациях SL и SRL.
В таблице 13.11 приведены коды команд канала. Символ X указывает на то, что данный бит игнорируется; символ m определяет бит идентификатора.
Таблица 13.11 Коды команд канала
Код |
Команда |
|
XXXX 0000 |
Недопустимая команда |
|
mmmm 0100 |
Уточнить состояние |
|
XXXX 1000 |
Переход в канале |
|
mmmm 1100 |
Читать в обратном направлении |
|
mmmm mm01 |
Писать |
|
mmmm mm10 |
Читать |
|
mmmm mm11 |
Управлять |
Всякий раз, когда канал обнаруживает недопустимый код команды, вырабатывается сигнал ОШИБКА В ПРОГРАММЕ. Если первое CCW, указанное в CAW, содержит недопустимый код команды, то во время выполнения команды НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, когда последняя выполняется как команда НАЧАТЬ ВВОД-ВЫВОД, запоминаются байты состояния CSW с индикацией ошибки в программе. Если недопустимый код обнаруживается во время выполнения цепочки команд или после выполнения команды НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, новая операция не начинается и вырабатывается условие прерывания. При работе с цепочкой данных код команды игнорируется, если только он не является кодом команды перехода в канале.
Определение области памяти
Примечание. Описание области памяти, связанной с CCW, в котором указана косвенная адресация данных в канале, приводится в подразделе “Косвенная адресация данных в канале”.
Одна или несколько CCW определяют область памяти, связанную с операцией ввода-вывода. При определении области в CCW задается адрес первого передаваемого байта и число последовательно расположенных байтов, содержащихся в этой области. Адрес первого байта указывается в поле адреса данных CCW. Число байтов, содержащихся в этой области памяти, указывается в поле счета CCW.
В операциях записи, чтения, управления и уточнения состояния ячейки памяти используются в порядке возрастания их адресов. При передаче информации в основную память или из нее адрес из поля адреса данных в CCW увеличивается, а счетчик из поля счета уменьшается. При операции чтения в обратном направлении данные помещаются в память в порядке убывания их адресов, при этом и счетчик, и адрес уменьшаются. Если счетчик в операции дошел до нуля, то это означает, что область памяти, определяемая данным CCW, исчерпана.
Любая ячейка основной памяти, доступная каналу, может быть использована для передачи данных во внешнее устройство или из него при условии, что рассматриваемая ячейка не защищена от данного типа обращения. Аналогично сами CCW могут располагаться в любой части доступной основной памяти при условии, что эта часть памяти не защищена от выборки. Если канал пытается обратиться к защищенной ячейке, вырабатывается условие прерывания при нарушении защиты, при этом во внешнее устройство посылается сигнал прекращения операции.
В случае когда канал обращается к ячейке, которой нет в системе, вырабатывается сигнал ОШИБКА В ПРОГРАММЕ. Если в CAW указывает адрес первого CCW в несуществующей ячейке памяти, то операция ввода-вывода не начинается и во время выполнения команды НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, когда последняя выполняется как команда НАЧАТЬ ВВОД-ВЫВОД, запоминаются байты состояния CSW с индикацией ошибки в программе. Если при работе с цепочкой или после завершения команды НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ обнаруживаются недопустимые адреса данных или адреса CCW, то программе сообщается об этом с помощью условий прерывания по завершении операции или цепочки операций.
Во время операции вывода канал может выбирать данные из основной памяти до того. как эти данные будут запрошены устройством. Предварительно может быть выбрано и занесено в буфер любое число байтов, указанных текущим CCW. При работе с цепочкой данных во время операции вывода канал может выбрать следующее CCW в любое время при использовании текущего CCW. Если операция ввода-вывода использует данные или CCW из ячеек, расположенных в конце доступной памяти, такие предварительные выборки могут привести к тому, что канал обратится к несуществующим ячейкам. Недоступные адреса, обнаруженные во время предварительной выборки данных или CCW, не влияют на выполнение операции и не вызывают индикации ошибки до тех пор, пока операция ввода-вывода действительно не попытается использовать эту информацию. Если операция прекращается по инициативе внешнего устройства или по команде ОСТАНОВИТЬ ВВОД-ВЫВОД, ОСТАНОВИТЬ УСТРОЙСТВО или ОСВОБОДИТЬ ВВОД-ВЫВОД до того, как потребуется недоступная информация, то об этой ошибке программе не сообщается.
В поле счета CCW может быть указано любое число байтов до 65 535 включительно. Поле счета в CCW не должно быть равно нулю, за исключением команды перехода в канале, в которой поле счета игнорируется. Всякий раз, когда первоначально в поле счета CCW содержится нуль, вырабатывается сигнал ОШИБКА В ПРОГРАММЕ. Если нуль обнаруживается в первом CCW, указанным в CAW, операция не начинается и во время выполнения команды НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, когда последняя выполняется как команда НАЧАТЬ ВВОД-ВЫВОД, запоминаются байты состояния CSW с индикацией ошибки в программе. Если счетчик, равный нулю, обнаруживается во время выполнения цепочки команд или после завершения команды НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, то новая операция не начинается и вырабатывается условие прерывания.
Цепочки
Если канал выполнил передачу информации, заданную одним CCW, то он может продолжить процесс, вызванный командой НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, выбрав новое CCW. Такая выборка нового CCW называется цепочкой, а все CCW, принадлежащие такой последовательности, считаются сцепленными.
Цепочка имеет место между CCW, последовательно расположенными в ячейках длиной двойное слово. CCW в цепочке расположены в памяти в порядке возрастания адресов, т.е. адрес нового CCW получается прибавлением числа 8 к адресу текущего CCW. Из двух цепочек CCW, расположенных в несмежных областях памяти, с помощью команды перехода в канале может быть получена одна общая цепочка.
Все CCW в цепочке относятся к внешнему устройству, указанному в исходной команде НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ.
Предусмотрены два типа цепочек: цепочка данных и цепочка команд. Выполнение цепочки определяется флажками цепочки данных (CD), цепочки команд (CC) и подавления индикации неправильной длины (SLI) в CCW. Эти флажки указывают, что должен делать канал при исчерпании счетчика в текущем CCW и по получении конечного состояния от устройства. Действия канала в этих случаях определены таблицей 13.12.
При помощи команды перехода в канале можно задавать более сложные цепочки. Если при работе с цепочкой выбирается команда перехода в канале, то CCW, на которое указывает команда перехода, используется в цепочке того типа, который определен в CCW, предшествовавшей команде перехода.
В команде перехода в канале флажки CD и СС игнорируются.
Таблица 13.12Действия канала по выполнению цепочек
Флажки в текущей CCW |
Действия в канале при исчерпании счета или получении сигнала |
||||||
CD |
CC |
SLI |
Немедленная операция |
Обычная операция |
|||
I |
II |
III |
|||||
0 |
0 |
0 |
Конец 1) |
Стоп, IL |
Конец 1) |
Конец, IL |
|
0 |
0 |
1 |
Конец 1) |
Стоп |
Конец 1) |
Конец 1) |
|
0 |
1 |
0 |
Цепочка команд |
Стоп, IL |
Цепочка команд |
Конец, IL |
|
0 |
1 |
1 |
Цепочка команд |
Цепочка команд |
Цепочка команд |
Цепочка команд |
|
1 |
0 |
0 |
Конец 1) |
Цепочка данных |
- 2) |
Конец, IL |
|
1 |
0 |
1 |
Конец 1) |
Цепочка данных |
- 2) |
Конец, IL |
|
1 |
1 |
0 |
Конец 1) |
Цепочка данных |
- 2) |
Конец, IL |
|
1 |
1 |
1 |
Конец 1) |
Цепочка данных |
- 2) |
Конец, IL |
|
1) Неправильная длина в CSW не указывается2) При нормальной работе не может быть на практике ситуации, при которой счет равен нулю и цепочка данных указана в момент, когда устройство выдает сигнал КОНЕЦ РАБОТЫ КАНАЛА. Если указана цепочка данных, канал выбирает новую CCW после передачи последнего байта данных, указанных текущим CCW, но до того, как внешнее устройство выдаст следующий запрос на передачу данных или состояния. В результате канал распознает сигнал КОНЕЦ РАБОТЫ КАНАЛА от внешнего устройства только после того, как он уже выбрал CCW, в которой уже не может быть нулевого счета, если только не допущена ошибка программирования.Обозначения:I - счет исчерпан, конец блока в устройстве не достигнут;II - счет исчерпан и есть сигнал КОНЕЦ РАБОТЫ КАНАЛА от внешнего устройства;III - счет не исчерпан и есть сигнал КОНЕЦ РАБОТЫ КАНАЛА от внешнего устройства;Конец - операция прекращается. Если это была немедленная операция и она указана в первом CCW, связанном с командой НАЧАТЬ ВВОД-ВЫВОД, то во время выполнения команды НАЧАТЬ ВВОД-ВЫВОД устанавливается признак результата, равный единице, и записываются байты состояния CSW. Во всех других случаях в подканале вырабатывается условие прерывания.Стоп - в устройство посылается сигнал прекращения передачи данных, но подканал остается в состоянии “работает” до получения сигнала КОНЕЦ РАБОТЫ КАНАЛА, после чего в подканале вырабатывается условие прерывания;IL - в CSW вместе с сигналом прерывания указывается неправильная длина;Цепочка команд - канал выполняет цепочку команд по получении сигнала КОНЕЦ РАБОТЫ УСТРОЙСТВА;Цепочка данных - канал немедленно выбирает новое CCW для уже выполняющейся операции ввода-вывода. |
Цепочка данных
При цепочке данных новое CCW, выбранное каналом, определяет новую область памяти для исходной операции ввода-вывода. Выполнение ранее начатой операции во внешнем устройстве продолжается. Когда все данные, указанные текущим CCW, будут переданы в основную память или в устройство, операция в устройстве продолжается по цепочке данных с использованием области памяти, определяемой новым CCW. Содержимое поля кода команды в новом CCW игнорируется, если только это не код команды ПЕРЕХОД В КАНАЛЕ.
Считается, что цепочка данных начинается сразу после того, как последний байт данных, указанный текущим CCW, будет передан в основную память или во внешнее устройство. Когда последний байт данных помещен в память или принят устройством, новое CCW используется для управления операцией и замещения соответствующей информации в подканале. Если внешнее устройство посылает сигнал КОНЕЦ РАБОТЫ КАНАЛА после того, как счетчик в текущем CCW дойдет до нуля, но до того, как начнется обмен данными с областью памяти, указанной в новом CCW, то CSW, связанное с закончившейся операцией, относится к новому CCW.
Если программные ошибки обнаружены в самом новом CCW или во время его выборки, то вырабатывается сигнал ошибки и в устройство, когда оно попытается передать или получить данные, указанные новым CCW, посылается сигнал прекращения операции. Если устройство посылает сигнал КОНЕЦ РАБОТЫ КАНАЛА до передачи каких-либо данных, указанным в новом CCW, то в CSW, связанном с окончанием операции, фиксируется ошибка программы или нарушение защиты. Если во встретившейся команде перехода в канале адрес нового CCW задан правильно, не обнаружено нарушения защиты при обращении к этой ячейке памяти и нет других программных ошибок, то содержимое CSW относится к новому CCW. Адрес данных, относящийся к несуществующей или защищенной области памяти, вызывает индикацию ошибки только после того, как внешнее устройство попытается передать данные в ячейку с неправильным адресом или из нее.
Если цепочка данных задана в операции ввода, новое CCW выбирается после того, как все данные, указанные текущим CCW, будут помещены в основную память. При операции вывода канал может выбрать новое CCW из основной памяти до того, как будут закончен действия, связанные с предшествующим CCW. Однако любые программные ошибки в предварительно выбранном CCW не влияют на выполнение операции до того, как все данные, указанные в текущем CCW, не будут переданы во внешнее устройство. Если устройство заканчивает операцию до того, как все данные, указанные в текущем CCW, будут переданы, условия прерывания, появившиеся в связи с предварительно выбранным CCW, теряются.
В канале может храниться только одно предварительно выбранное CCW, описывающее область памяти. Если же предварительно выбранное CCW определяет переход в канале, то до завершения действий, относящихся к текущему CCW, выбирается еще одно CCW.
Замечания по программированию
Цепочка данных может быть использована для перекомпоновки информации во время передачи между основной памятью и внешним устройством. Цепочки данных позволяют передавать блоки информации в несмежные области памяти и из них. Использование цепочки данных совместно с блокировкой записи в память позволяет программе помещать в основную память только отдельные части блока.
Если при операции ввода программа указывает цепочку данных к ячейке, данные в которую были помещены под управлением текущего CCW, то канал при выборке следующего CCW получает новое содержимое этой ячейки даже в том случае, если эта ячейка содержит последний байт, переданный под управлением текущего CCW. Если программа канала образует цепочку данных с CCW, помещенным в память под управлением текущего CCW, в котором указана цепочка данных, то говорят, что вводимый блок является самоопределенным. Такой блок содержит одно или более CCW, которые задают ячейки памяти и счетчики для последующих данных в том же вводимом блоке.
Использование самоопределенных блоков равносильно использованию неконтролируемых данных. Сигнал о сбое при передаче данных, повлиявшем на достоверность блока информации, выдается только после завершения передачи данных. Обычно наличие ошибки не приводит к преждевременному прекращению или изменению в выполнении операции. Поэтому до тех пор, пока не закончится операция, нет уверенности в том, что прочитано допустимое CCW. Если в CCW, прочитанном таким образом, есть ошибка, то использование его в текущей операции может привести к тому, что последующие данные будут помещены не в нужные ячейки памяти. При этом либо будет стерто предыдущее содержимое этих ячеек, либо сработает система защиты.
Цепочка команд
В случае цепочки команд новое CCW, выбранное каналом, определяет новую операцию ввода-вывода. Канал выбирает новое CCW и начинает новую операцию только после получения сигнала КОНЕЦ РАБОТЫ УСТРОЙСТВА для текущей операции. Если имеет место цепочка команд, завершение текущей операции не вызывает прерывания ввода-вывода, а счетчик, указывающий количество данных, переданных в текущей операции, не доступен для программы. Для операций, включающих передачу данных, новая команда всегда относится к новому блоку данных в устройстве.
Цепочка команд имеет место и новая операция начинается только в том случае, если во время выполнения текущей операции не было обнаружено никаких необычных условий. Канал начинает новую операцию по цепочке команд, если он получает байт состояния, содержащий следующие комбинации битов: 1) КОНЕЦ РАБОТЫ УСТРОЙСТВА; 2) КОНЕЦ РАБОТЫ УСТРОЙСТВА и МОДИФИКАТОР СОСТОЯНИЯ; 3) КОНЕЦ РАБОТЫ УСТРОЙСТВА и КОНЕЦ РАБОТЫ КАНАЛА; 4) КОНЕЦ РАБОТЫ УСТРОЙСТВА, КОНЕЦ РАБОТЫ КАНАЛА и МОДИФИКАТОР СОСТОЯНИЯ. В первых двух случаях сигнал КОНЕЦ РАБОТЫ КАНАЛА был получен каналом до сигнала КОНЕЦ РАБОТЫ УСТРОЙСТВА, причем все остальные биты состояния были равны нулю. Если был выработан один из таких сигналов, как ВНИМАНИЕ, СБОЙ В УСТРОЙСТВЕ, ОСОБЫЙ СЛУЧАЙ В УСТРОЙСТВЕ, НЕПРАВИЛЬНАЯ ДЛИНА, ОШИБКА В ПРОГРАММЕ или НАРУШЕНИЕ ЗАЩИТЫ, то выполнение последовательности операций прекращается и состояние, связанное с текущей операцией, вызывает формирование условия прерывания. В этом случае новая CCW не выбирается. Если в текущей CCW флажок SLI равен единице, то наличие условия неправильной длины не приводит к подавлению цепочки команд.
Если устройство посылает в канала сигнал КОНЕЦ РАБОТЫ УСТРОЙСТВА вместе с сигналом МОДИФИКАТОР СОСТОЯНИЯ, то имеет место особый случай в последовательности выборки CCW. Если указана цепочка команд и никаких необычных условий не было обнаружено, комбинация битов МОДИФИКАТОР СОСТОЯНИЯ и КОНЕЦ РАБОТЫ УСТРОЙСТВА приводит к тому, что канал выбирает и использует в качестве следующего CCW двойное слово из ячейки основной памяти, адрес которой на 16 больше адреса текущего CCW, т.е. пропускает CCW, непосредственно следующее за текущим.
Если в одном CCW указывается и цепочка команд, и цепочка данных, то имеет место цепочка данных. Однако в разных CCW, относящихся к одной команде НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, могут встречаться обе цепочки. Например, первое CCW определяет выполняемую операцию ввода-вывода и задает цепочку данных. Последующие CCW определяют дополнительные области памяти для выполнения начатой операции. Последнее из этих CCW, относящихся к цепочке данных, может задать цепочку команд, и тогда следующее CCW определит новую операцию.
Замечания по программированию
Цепочка команд позволяет программе начать передачу нескольких блоков данных с помощью одной команды НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ. Она также позволяет подканалу настраиваться на выполнение вспомогательных операций, таких, например, как установка механизма доступа на магнитных дисках, а также на организацию передачи данных без вмешательства программы в конце каждой операции. Цепочка команд совместно с индикатором МОДИФИКАТОР СОСТОЯНИЯ позволяет каналу изменять нормальную последовательность команд в соответствии с сигналами, полученными от внешнего устройства.
Блокировка записи в основную память
При блокировке записи во время операции ввода-вывода отсутствуют обращения в основную память. Блокировка записи определена только для операций чтения, чтения в обратном направлении и уточнения состояния и задается флажком SLI, который может быть установлен отдельно в каждом CCW. Если этот флажок установлен в единицу, то имеет место блокировка записи, если не установлен - операция выполняется обычным образом. Во всех других операциях флажок игнорируется.
Блокировка влияет только на обработку информации каналом. Операция во внешнем устройстве выполняется нормально, и информация передается в канал. Канал обновляет счетчик байтов, но не записывает информацию в основную память. Наличие блокировки записи не влияет на выполнение цепочки. В случае цепочки данных, если флажок блокировки записи в основную память в новом CCW равен нулю, продолжается нормальное выполнение операции, и получаемые данные записываются в память.
Во время блокировки записи никаких проверок на доступность адресов данных и защиту указанной области памяти не производится.
Замечания по программированию
Использование блокировки записи в сочетании с цепочкой данных позволяет программе помещать в основную память отдельные части блока информации, поступающего из внешнего устройства.
Программно-управляемое прерывание
Функция программно-управляемого прерывания (PCI) дает возможность программе вызывать прерывание ввода-вывода во время выполнения операции ввода-вывода. Эта функция задается флажком PCI в CCW. Последний может быть установлен в единицу либо в первом CCW, определяемом командой НАЧАТЬ ВВОД-ВЫВОД или НАЧАТЬ ВВОД-ВЫВОД С БЫСТРЫМ ОТКЛЮЧЕНИЕМ, либо в CCW, выбранном по цепочке. Наличие флажка PCI, а также связанное с ним прерывание не влияют на выполнение текущей операции.
Всякий раз, когда флажок PCI в CCW равен единице, канал пытается прервать программу. Прерывание, вызванное наличием установленного флажка PCI, происходит при первой же возможности после выборки и начала использования CCW, содержащего этот флажок. Флажок PCI в CCW, выбранном по цепочке данных, вызывает прерывание после того, как все данные, указанные предшествующим CCW, были переданы. Однако момент прерывания зависит от модели и действий, выполняемых в данный момент в системе; прерывание может быть задержано, даже если канал не замаскирован. Между моментом прерывания по флажку PCI и количество данных, переданных в указанную CCW область памяти или из нее, никакой предсказуемой связи не существует, однако поля в CSW относятся к одному и тому же моменту времени.
Если переход к новому CCW цепочки произошел до того, как осуществилось прерывание по флажку PCI, то запрос на это прерывание переносится на новое CCW независимо от того, установлен ли флажок PCI в новом CCW или нет. Такой перенос выполняется и для цепочки данных, и для цепочки команд, а также распространяется через команду перехода в канале. Запросы на прерывание PCI не накапливаются, т.е. если следующее CCW с установленным флажком PCI выбирается до того, как произошло прерывание по флажку PCI предыдущего CCW, то имеет место только одно прерывание.
CSW, содержащее бит PCI, может быть записано в память либо по прерыванию во время выполнения операции, либо по прерыванию или по командам ПРОВЕРИТЬ ВВОД-ВЫВОД или ОСВОБОДИТЬ ВВОД-ВЫВОД после завершения операции. Оно не может быть записано по команде ПРОВЕРИТЬ ВВОД-ВЫВОД, если подканал находится в состоянии “работает”.
Если CSW записано в память по прерыванию во время выполнения операции или цепочки операций, то адрес команды в этом CSW будет на 8 больше адреса текущего CCW, а счет непредсказуем. Все биты байта состояния устройства в CSW установлены в нуль. Если канал обнаруживает необычные ситуации, такие, например, как ошибку в данных в канале, ошибку в программе или нарушение защиты, то соответствующий бит байта состояния канала в CSW устанавливается в единицу. Однако соответствующее условие сохраняется в подканале и снова указывается в CSW после прекращения операции.
Наличие какого-либо бита в байте состояния устройства CSW означает, что операция или цепочка операций в устройстве закончилась. В этом случае в CSW записывается соответствующая окончанию информация и к ней добавляется бит PCI.
Однако если прерывание по флажку PCI было задержано до окончания операции в подканале, то могут произойти два прерывания ввода-вывода от этого подканала. Во время первого прерывания указывается и сбрасывается только условие PCI, а во время второго - обеспечивается CSW, связанное с конечным состоянием. Какое число прерываний ввода-вывода произойдет, зависит от модели и от того, был ли присвоен условию PCI наивысший приоритет для прерываний в момент завершения операции. Если команда ПРОВЕРИТЬ ВВОД-ВЫВОД или команда ОСВОБОДИТЬ ВВОД-ВЫВОД выдается в устройство, для которого в подканале хранится сигнал прерывания, то сигнал PCI в подканале также сбрасывается, как и все другие сигналы, относящиеся к прекращению операции.
Значение флажка PCI проверяется в каждом CCW, за исключением команды перехода в канале, в которой он игнорируется. Значение флажка PCI игнорируется также во время процедуры начальной загрузки программы.
Замечания по программированию
При прекращении операции в селекторном канале по команде ОСТАНОВИТЬ ВВОД-ВЫВОД или по команде ОСТАНОВИТЬ УСТРОЙСТВО записывается CSW с нулевыми битами в байте состояния устройства. Поэтому наличие какого-либо бита в байте состояния устройства одновременно с битом PCI не обязательно говорит о завершении операции. Если в селекторном канале хранится условие PCI в момент прекращения операции по команде ОСТАНОВИТЬ ВВОД-ВЫВОД или ОСТАНОВИТЬ УСТРОЙСТВО, то CSW, относящееся к прерванной операции, неотличимо от CSW, которое записывается при прерывании ввода-вывода во время выполнения операции.
Программно-управляемое прерывание дает возможность программе отслеживать ход выполнения цепочки во время операции ввода-вывода. С его помощью можно программно организовать динамическое распределение основной памяти.
Косвенная адресация данных в канале
Средство косвенной адресации данных в канале (CIDA), являющееся дополнением к средству динамического преобразования адресов, обеспечивает преобразование адресов данных для операций ввода-вывода. Это средство позволяет одной команде канала (CCW) управлять обменом данными с несмежными страницами абсолютной основной памяти.
Использование косвенной адресации данных задается определенным флажком в CCW, который, будучи установленным в единицу, указывает на то, что адрес данных в CCW не используется для непосредственной адресации данных. Вместо этого адрес в CCW указывает на список слов, называемых словами косвенной адресации данных (IDAW), каждое из которых содержит абсолютный адрес области данных в пределах 2048-байтового блока памяти. Если в CCW установлен в единицу бит косвенной адресации данных, то биты 8-31 CCW определяют адрес первого слова списка слов косвенной адресации, который будет использоваться для организации передачи данных по этой команде. Дополнительные IDAW,если они требуются для передачи данных в этой операции, выбираются из смежных ячеек основной памяти. Число слов косвенной адресации, требуемых для одной операции, определяется полем счета в CCW и адресом данных в первом IDAW. Так, например, если в поле счета CCW указано 4000 байтов, а первое слово косвенной адресации определяет ячейку в середине 2048-байтового блока, то для операции требуются три слова косвенной адресации данных.
Каждое IDAW используется для передачи до 2048 байтов. IDAW, адрес которого указан в CCW, может определять любой адрес в памяти. Для операций чтения, записи, управления и уточнения состояния данные будут передаваться в смежные ячейки памяти или из них в порядке возрастания адресов, а для команды чтения в обратном направлении - в порядке убывания адресов, пока не будет достигнут конец или начало 2048-байтовой страницы, т.е. пока в младших 11 разрядах адреса памяти не установятся все единицы для операций чтения, записи, управления и уточнения состояния или все нули для операции чтения в обратном направлении. После этого управление передается следующему слову косвенной адресации. Второе и любые последующие IDAW должны определять в зависимости от команды адрес первого или последнего байта 2048-разрядного блока. Таким образом, для команд чтения, записи, управления и уточнения состояния эти IDAW должны иметь нули в битах 21-31. Для команды чтения в обратном направлении биты 21-31 IDAW должны содержать единицы.
Подобные документы
Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
курсовая работа [266,9 K], добавлен 24.12.2013Общая характеристика и преимущество использования двоично-десятичных чисел с плавающей точкой. Разработка цифрового автомата. Функциональное назначение выводов корпуса МК51, арифметико-логического устройства, портов. Примеры деления данных чисел.
курсовая работа [719,3 K], добавлен 12.09.2015Сущность и роль бухгалтерской отчетности. Характеристика хозяйственных операции и системы обработки данных в первичные учетные документы. Особенности логической структуры реляционной базы данных. Описание методов работы с информационной системой.
курсовая работа [1,1 M], добавлен 26.04.2015Операции, осуществляемые при реализации алгоритмов цифровой обработки сигналов. Применение процессора ADSP-2106x для операций с фиксированной и плавающей точкой. Исключения при выполнении операций с плавающей точкой, режимы и границы округления.
реферат [35,2 K], добавлен 13.11.2009Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.
курсовая работа [78,9 K], добавлен 09.09.2014Проектирование блоков устройства контроля по модулю три матричного умножителя с сокращением вычислений для обработки мантисс чисел с плавающей точкой. Методика выполнения арифметических операций, порядок обработки мантисс по n-разрядным операндам.
курсовая работа [125,2 K], добавлен 24.09.2010Периоды применения средств вычислительной техники. Переход к новому поколению электронно-вычислительных машин. Системы, основанные на знаниях. Экспертные системы и искусственный интеллект. Этапы обработки данных на ЭВМ. Иерархическая структура знания.
презентация [170,6 K], добавлен 14.08.2013Общее представление о записи данных. Виды регистров и типов данных с плавающей точкой. Модель выполнения программы SIMD. Формат данных в памяти регистра с плавающей точкой. Состояние и управление потоковым разрешением. Поле управления округлением.
реферат [1,1 M], добавлен 06.01.2011Понятие машинной команды как закодированного по определенным правилам указания микропроцессору на выполнение некоторой операции или действия. Элементы машинных команд (код операции, операнд) и их виды (передачи данных, управления, арифметико-логические).
презентация [120,6 K], добавлен 14.10.2013Арифметические команды языка Assembler в архитектуре x86. Организация ветвлений и циклов в программах. Ввод строк с клавиатуры и команды пакетной обработки (строковые команды). Алгоритм вывода на экран в текстовом режиме с использованием средств BIOS.
контрольная работа [18,0 K], добавлен 05.07.2014