Способ и компьютерная система для выполнения команды запуска субканала в вычислительной среде

Изобретение относится к области вспомогательных запоминающих устройств вычислительной среды. Техническим результатом является повышение эффективности управления вспомогательными запоминающими устройствами. Раскрыт способ выполнения команды запуска субканала в вычислительной среде, содержащей основное запоминающее устройство и твердотельное запоминающее устройство, при этом указанный способ включает: с учетом определения того, что субканал, идентифицированный командой запуска субканала, является субканалом перемещения асинхронных данных (ADM), выполнение: получения блока запроса операции из основного запоминающего устройства, при этом блок запроса операции содержит адрес блока операции; получения блока операции из основного запоминающего устройства на основании адреса блока операции, при этом блок операции состоит из блока запроса, блока ответа и одного или более блоков (MSB) спецификации первого перемещения, причем блок запроса содержит поле счетчика MSB, содержащее значение, указывающее число одного или более блоков MSB, которые блок операции содержит и на которые ссылается, причем блок ответа сконфигурирован содержать условия исключительных ситуаций, причем каждый блок спецификации перемещения сконфигурирован содержать поле кода операции, поле счетчика блоков, поле адреса основного запоминающего устройства для адресации основного запоминающего устройства, поле адреса твердотельного запоминающего устройства для адресации твердотельного запоминающего устройства, поле размера блока и поле флагов; получения блока спецификации перемещения из одного или более блоков спецификации перемещения; определения на основании кода операции в полученном блоке спецификации перемещения операции, которую полученный блок спецификации перемещения сконфигурирован выполнять на блоках твердотельного запоминающего устройства; на основании блока спецификации перемещения запуска операции на блоках твердотельного запоминающего устройства, связанных с адресом твердотельного запоминающего устройства поля адреса твердотельного запоминающего устройства; и с учетом, по меньшей мере, запуска операции и обнаружения условия исключительной ситуации сохранения информации в блоке ответа, причем блок ответа содержит поле флагов исключительной ситуации, поле достоверности поля, поле неверного адреса MSB, поле неверного адреса косвенного адресного слова данных (AIDAW), поле неверного адреса основного запоминающего устройства и поле неверного адреса твердотельного запоминающего устройства, при этом информация касается одной или более исключительных ситуаций, являющихся результатом операции, причем одна или более исключительных ситуаций относятся по меньшей мере к одному из: основному запоминающему устройству, связанному с адресом основного запоминающего устройства из поля адреса основного запоминающего устройства; твердотельному запоминающему устройству, связанному с адресом твердотельного запоминающего устройства из поля адреса твердотельного запоминающего устройства; или полученного блока спецификации перемещения, причем информация содержит признак исключительной ситуации и дополнительную информацию, относящуюся к исключительной ситуации, при этом дополнительная информация определяет одну или более исключительных ситуаций адресации. 2 н. и 6 з.п. ф-лы, 45 ил.

 

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

[0001] Одна или несколько особенностей настоящего изобретения относятся, в общем, к вспомогательному запоминающему устройству вычислительной среды и, в частности, к особенностям управления вспомогательным запоминающим устройством.

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

[0003] Твердотельное запоминающее устройство, которое представляет собой объем внешнего запоминающего устройства снаружи классического основного запоминающего устройства, обеспечивает более быстрый доступ, чем запоминающие устройства прямого доступа. В отличие от DASD, твердотельное запоминающее устройство, как правило, не реализовано как вращающиеся диски с механической рукой, но, вместо этого, - как немеханические твердотельные части. Как правило, твердотельное запоминающее устройство реализовано как группы твердотельных устройств, соединенные с вычислительной системой посредством нескольких адаптеров ввода-вывода (I/O), которые применяют для отображения технологии устройства ввода-вывода на шину памяти центрального процессора (процессоров).

КРАТКОЕ ИЗЛОЖЕНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ

[0004] На основе изучения недостатков уровня техники предложены способ и система для выполнения команды запуска субканала (далее - Start Subchannel) в вычислительной среде, содержащей основное запоминающее устройство и твердотельное запоминающее устройство. Способ, осуществляемый, в частности, посредством компьютерного программного продукта, содержащего машиночитаемую запоминающую среду, считываемую устройством обработки данных и хранящую соответствующие команды для выполнения устройством обработки данных, включает, например, с учетом определения того, что субканал, идентифицируемый командой Start Subchannel, представляет собой субканал асинхронного перемещения данных (ADM), выполнение: получения блока запроса операций из основного запоминающего устройства, где блок запроса операций содержит адрес блока операции; получения блока операции из основного запоминающего устройства на основании адреса блока операции, где блок операции состоит из блока запроса, блока ответа и одного или нескольких первых блоков спецификации перемещения (MSB), где блок запроса содержит поле счетчика блоков MSB, содержащее значение, которое указывает число одного или нескольких блоков MSB, которые блок операции содержит и на которые ссылается, где блок ответа сконфигурирован для содержания исключительных ситуаций, где каждый блок спецификации перемещения сконфигурирован содержать поле кода операции, поле счетчика блоков, поле адреса основного запоминающего устройства для адресации основного запоминающего устройства, поля адреса памяти твердотельного запоминающего устройства для адресации твердотельного запоминающего устройства, поле размера блоков и поле флагов; получения блока спецификации перемещения одного или нескольких блоков спецификации перемещения; на основе кода операции в полученном блоке спецификации перемещения определения операции, для осуществления которой на блоках твердотельного запоминающего устройства сконфигурирован полученный блок спецификации перемещения; на основе блока спецификации перемещения инициирования операции на блоках твердотельного запоминающего устройства, связанных с адресом памяти твердотельного запоминающего устройства поля адреса памяти твердотельного запоминающего устройства; и с учетом, по меньшей мере, инициирования операции и обнаружения исключительной ситуации, сохранения информации в блоке ответа, где блок ответа содержит поле флагов исключительной ситуации, поле достоверности поля, поле неверного адреса MSB, поле неверного адреса косвенного адресного слова данных (AIDAW), поле неверного адреса основного запоминающего устройства и поле неверного адреса твердотельного запоминающего устройства, где информация касается одной или более исключительных ситуаций, являющихся результатом операции, где одна или несколько исключительных ситуаций относятся по меньшей мере к одному из следующего: основному запоминающему устройству, связанному с адресом основного запоминающего устройства из поля адреса основного запоминающего устройства; твердотельному запоминающему устройству, связанному с адресом твердотельного запоминающего устройства из поля адреса твердотельного запоминающего устройства; или полученного блока спецификации перемещения, причем информация содержит признак исключительной ситуации и дополнительную информацию, относящуюся к исключительной ситуации, при этом дополнительная информация определяет одну или более исключительных ситуаций адресации.

[0005] В изобретении также описаны и заявлены способы и системы, в которых применяют одну или несколько особенностей настоящего изобретения. Кроме того, в данном изобретении также описаны и могут быть заявлены сервисы, относящиеся к одной или нескольким особенностям настоящего изобретения.

[0006] Дополнительные признаки и преимущества реализуются посредством методик согласно настоящему изобретению. Другие варианты осуществления и признаки изобретения подробно описаны в настоящем изобретении и считаются частью заявленного изобретения.

КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ

[0007] Варианты осуществления изобретения буду описаны только в виде примера с отсылкой к сопроводительным графическим материалам, на которых:

ФИГ.1A иллюстрирует один вариант осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.1B иллюстрирует другой вариант осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.2A иллюстрирует один вариант осуществления блока запроса операций расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.2B иллюстрирует один вариант осуществления блока запроса операций расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.2C иллюстрирует один вариант осуществления блока запроса операций расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.2D иллюстрирует один вариант осуществления блока ответа расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.2E иллюстрирует один вариант осуществления блока спецификации перемещения расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.2F иллюстрирует один вариант осуществления косвенного адресного слова данных расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.3A иллюстрирует один вариант осуществления команды Start Subchannel, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.3B иллюстрирует один вариант осуществления логики, связанной с командой Start Subchannel, согласно одной из особенностей настоящего изобретения;

ФИГ.3C иллюстрирует один вариант осуществления команды Clear Subchannel, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.3D иллюстрирует один вариант осуществления команды Test Subchannel, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.3E иллюстрирует один вариант осуществления команды Modify Subchannel, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.3F иллюстрирует один вариант осуществления команды Store Subchannel, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.4A иллюстрирует один вариант осуществления блока информации о субканале расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.4B иллюстрирует один вариант осуществления управляющего слова управления трактами расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.4C иллюстрирует один вариант осуществления слова статуса субканала, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.4D иллюстрирует один вариант осуществления расширенного слова статуса расширенной схемы асинхронного перемещения данных, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.5A иллюстрирует один вариант осуществления блока запроса сохранения информации о твердотельном запоминающем устройстве, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.5B иллюстрирует один вариант осуществления блока ответа сохранения информации о твердотельном запоминающем устройстве, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.5C иллюстрирует один вариант осуществления записи списка адресов запоминающего устройства, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.5D иллюстрирует один вариант осуществления логики, связанной с командой Store Storage Class Memory Information, согласно одной из особенностей настоящего изобретения;

ФИГ.6A иллюстрирует один пример диаграммы состояний, отображающей различные состояния твердотельного запоминающего устройства, согласно одной из особенностей настоящего изобретения;

ФИГ.6B иллюстрирует один вариант осуществления диаграммы состояний, показывающей состояния операций и состояния данных, согласно одной из особенностей настоящего изобретения;

ФИГ.7A иллюстрирует один вариант осуществления блока запроса конфигурирования твердотельного запоминающего устройства, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.7B иллюстрирует один вариант осуществления блока ответа конфигурирования твердотельного запоминающего устройства, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.7C-7D иллюстрируют один вариант осуществления логики, связанной с командой Configure Storage Class Memory, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.8A иллюстрирует один пример блока ответа на уведомление, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.8B иллюстрирует один вариант осуществления блока запроса сохранения информации о событиях, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.8C иллюстрирует один вариант осуществления блока ответа сохранения информации о событиях, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.9A иллюстрирует один вариант осуществления блока запроса деконфигурирования твердотельного запоминающего устройства, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.9B иллюстрирует один вариант осуществления записи списка запроса приращений твердотельного запоминающего устройства, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.9C иллюстрирует один вариант осуществления блока ответа деконфигурирования памяти твердотельного запоминающего устройства, используемого согласно одной из особенностей настоящего изобретения;

ФИГ.9D-9E иллюстрируют один вариант осуществления логики, связанной с командой Deconfigure Storage Class Memory, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.10 иллюстрирует один вариант осуществления компьютерного программного продукта, в котором содержится одна или несколько особенностей настоящего изобретения;

ФИГ.11 иллюстрирует один вариант осуществления хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.12 иллюстрирует дополнительный пример компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.13 иллюстрирует другой пример компьютерной системы, содержащей компьютерную сеть, в которой содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.14 иллюстрирует один вариант осуществления различных элементов компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.15A иллюстрирует один вариант осуществления исполнительного устройства компьютерной системы по ФИГ.14, в которой содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.15B иллюстрирует один вариант осуществления устройства перехода компьютерной системы по ФИГ.14, в котором содержится и используется одна или несколько особенностей настоящего изобретения;

ФИГ.15C иллюстрирует один вариант осуществления устройства загрузки/сохранения компьютерной системы по ФИГ.14, в которой содержится и используется одна или несколько особенностей настоящего изобретения; и ФИГ.16 иллюстрирует один вариант осуществления эмулированной хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения.

ПОДРОБНОЕ ОПИСАНИЕ

[0008] Согласно одному или нескольким вариантам осуществления изобретения для твердотельного запоминающего устройства предусмотрена абстракция, которая скрывает подробности реализации твердотельного запоминающего устройства от программы (например, от операционной системы) и предусматривает стандартный программный интерфейс канала для осуществления определенных действий, таких как управление перемещением данных между основным запоминающим устройством и твердотельным запоминающим устройством.

[0009] В одном примере предусмотрено средство, называемое средством расширенного асинхронного перемещения данных (EADM), которое позволяет программам запрашивать передачу блоков данных между основным запоминающим устройством и твердотельным запоминающим устройством, а также запрашивать другие операции. Ниже подробно описываются особенности данного средства.

[0010] Также связанным со средством EADM является необязательное средство, называемое средством освобождения EADM. Средство освобождения EADM, если оно установлено, предоставляет программе средства для указания того, что она больше не нуждается в хранении данных в одном или нескольких блоках твердотельного запоминающего устройства. То, поддерживается ли операция освобождения для всех блоков твердотельного запоминающего устройства или только для подмножества твердотельных запоминающих устройств, зависит от модели.

[0011] Когда блок твердотельного запоминающего устройства освобожден, программа может передавать в блок новые данные, в противном случае последующие запросы на передачу данных из блока в основное запоминающее устройство будут неудачными.

[0012] Один вариант осуществления вычислительной среды, который содержит и/или использует одну или несколько особенностей настоящего изобретения, описывается с отсылкой к ФИГ.1А. Вычислительная среда 100 основана, например, на архитектуре z/Architecture® предлагаемой International Business Machines Corporation (IBM®), Армонк, штат Нью-Йорк. Один вариант осуществления архитектуры z/Architecture® IBM опи® z/Architecture Principles of Operation», IBM Publication No. SA22-7832-08, August, 2010 г., которая ссылкой полностью включена в настоящее описание. В одном примере вычислительная среда, основанная на архитектуре z/Architecture® zEnterprise 196 (z196), предлагаемую International Business Machines Corporation. IBM® и z/Architecture® являются зарегистрированными товарными знаками, и zEnterprise 196 и z196 являются товарными знаками International Business Machines Corporation, Армонк, Нью-Йорк, США. Другие названия, используемые в заявке, могут являться зарегистрированными товарными знаками, товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.

[0013] В одном примере вычислительная среда 100 содержит один или несколько центральных процессоров 102, связанных с основной памятью 104 посредством одной или нескольких шин 106. Один или несколько центральных процессоров могут выполнять операционную систему 108, такую как операционная система z/OS® International Business Machines Corporation. В других примерах один или несколько центральных процессоров могут выполнять другие операционные системы или не выполнять ни одной операционной системы. z/OS® является зарегистрированным товарным знаком International Business Machines Corporation, Армонк, Нью-Йорк, США.

[0014] Центральные процессоры 102 и основная память 104 также могут быть связаны с концентратором 120 ввода-вывода посредством одного или нескольких соединений 122 (например, шин или других соединений). Концентратор ввода-вывода обеспечивает соединяемость с одним или несколькими адаптерами 130 ввода-вывода, которые дополнительно связаны с одним или несколькими твердотельными устройствами 140. Адаптеры и твердотельные устройства представляют собой реализацию твердотельного запоминающего устройства (например, флэш-памяти). Концентратор ввода-вывода является частью подсистемы 145 ввода-вывода, содействующей одной или нескольким особенностям одного варианте осуществления изобретения.

[0015] В одном дополнительном варианте осуществления изобретения, как проиллюстрировано на ФИГ.1B, вычислительная среда 150 может содержать центральный процессорный комплекс (CPC) 152, который основан на архитектуре z/Architecture® предлагаемой International Business Machines Corporation. Центральный процессорный комплекс 152 содержит, например, одно или несколько разделов 154, гипервизор 156, один или несколько центральных процессоров 158 и один или несколько компонентов подсистемы 160 ввода-вывода. В данном примере разделы 154 представляют собой логические разделы (например, LPAR), каждый из которых содержит набор аппаратных ресурсов системы, виртуализированный как отдельная система.

[0016] Каждый логический раздел 154 способен функционировать как отдельная система. То есть каждый логический раздел может быть независимо переустановлен, при необходимости, в исходном положении в него может быть загружена операционная система или другой управляющий код, и он может работать с разными программами. Оказывается, что операционная система, или прикладная программа, выполняемая в логическом разделе, имеет доступ к системе во всей полноте, но, на самом деле, доступной является только ее часть. Сочетание аппаратного обеспечения и лицензионного внутреннего кода (LIC), называемого аппаратно-программным обеспечением, защищает программу в одном логическом разделе от создания помех какой-либо программы в другом логическом разделе. Это позволяет нескольким различным логическим разделам работать на одном или нескольких физических процессорах способом квантования времени. Используемое в данном описании программно-аппаратное обеспечение содержит, например, микрокод, милликод и/или макрокод процессора (или сущности, осуществляющей обработку данных). Оно содержит, например, команды аппаратного уровня и/или структуры данных, используемые при реализации высокоуровневого машинного кода. В одном варианте осуществления изобретения оно содержит, например, собственный код, который, как правило, поставляют как микрокод, который содержит выверенное программное обеспечение, или микрокод, характерный для базового аппаратного обеспечения, и управляет доступом операционной системы к аппаратному обеспечению системы.

[0017] В данном примере некоторые из логических разделов содержат резидентную операционную систему (OS) 170, которая может отличаться для одного или нескольких логических разделов. В одном варианте осуществления изобретения, по меньшей мере, один логический раздел выполняет операционную систему z/OS® International Business Machines Corporation, Армонк, Нью-Йорк.

[0018] Логические разделы 154 администрируются гипервизором 156, который реализован посредством аппаратно-программного обеспечения, выполняемого на центральных процессорах 158. Каждый из логических разделов 154 и гипервизор 156 содержат одну или несколько программ, постоянно находящихся в соответствующих частях основной памяти 159, связанного с центральными процессорами. Одним примером гипервизора 156 является Processor Resource/Systems Manager (PR/SM™), предлагаемый International Business Machines Corporation, Армонк, Нью-Йорк.

[0019] Центральные процессоры 158 представляют собой физические процессорные ресурсы, которые выделены логическими разделами. Например, логический раздел 154 содержит один или несколько логических процессоров, каждый из которых отображает весь выделенный разделу физический процессорный ресурс 158 или его часть. Логические процессоры конкретного раздела 154 могут быть или выделены разделу, и тогда базовый процессорный ресурс является зарезервированным для этого раздела; или они могут использоваться совместно с другим разделом, и тогда базовый процессорный ресурс потенциально является доступным и для другого раздела.

[0020] Подсистема 160 ввода-вывода (только часть которой проиллюстрирована) обеспечивает соединяемость с твердотельным запоминающим устройством 180. В данном примере для твердотельного запоминающего устройства предусмотрено адресное пространство, которое представляет память как линейную, скрывающую от программы подробности физической реализации. В одном примере, для твердотельного запоминающего устройства существует одно адресное пространство в масштабе системы, но с точки зрения конфигурации (например, LPAR или в другом варианте осуществления изобретения виртуализированного гостя) существует одно адресное пространство, которое для каждой конфигурации системы заполняется приращениями твердотельного запоминающего устройства. Адресное пространство твердотельного запоминающего устройства является отдельным и не зависящим от адресного пространства основного запоминающего устройства.

[0021] В одном частном примере архитектуры z/Architecture®, подсистема ввода-вывода содержит канальную подсистему, которая не только направляет поток информации не только между периферийными блоками управления (и устройствами) вводом-выводом и основной памятью, но также и между твердотельным запоминающим устройством и основной памятью. Однако подсистема ввода-вывода может представлять собой и иную систему, чем канальная подсистема.

[0022] В случае канальной подсистемы для осуществления операций EADM используют субканалы. Эти субканалы называются субканалами, относящимися к типу схемы асинхронного перемещения данных (ADM), и они связаны с операциями EADM, а не с устройствами ввода-вывода, как другие субканалы, относящиеся к типу ввода-вывода. Субканал ADM-типа не содержит ни номер устройства, ни информацию о канальном тракте. Количество субканалов ADM-типа, предусматриваемых для некоторой конфигурации, зависит от модели. Субканалы ADM-типа адресуются словом идентификации подсистемы (SID).

[0023] Субканалы ADM-типа используют средством расширенного асинхронного перемещения данных, которое представляет собой одно из расширений канальной подсистемы. Как описывается в данном описании, средство EADM позволяет программе запрашивать передачу блоков данных между основным запоминающим устройством и твердотельным запоминающим устройством, а также осуществление других операций, таких как сброс блока твердотельного запоминающего устройства или освобождение блока твердотельного запоминающего устройства. В одном варианте осуществления изобретения, когда средство EADM установлено:

[0024] * Предусмотрен один или несколько субканалов ADM-типа, которые используют для операций EADM.

[0025] * Операции EADM указаны указанным блоком операций EADM (АОВ). АОВ содержит блок запроса EADM (ARQB) и блок ответа EADM (ARSB) и указывает список блоков спецификации перемещения EADM (MSB). Для операции перемещения блоки MSB содержат такую информацию о блоках данных, которые подлежат перемещению, как размер блоков, исходное местоположение и конечное местоположение блоков, и направление перемещения данных.

[0026] Максимальное количество блоков MSB, которое может указываться посредством AOB, зависит от модели. Максимальное число блоков, которое MSB может указывать, как подлежащие перемещению или операциям на них, также зависит от модели.

[0027] * Программа инициирует операции EADM, выдавая команду Start Subchannel, которая указывает субканал ADM-типа и блок запроса операций (ORB) EADM. В свою очередь, EADM ORB указывает AOB. Команда передает содержимое EADM ORB в указанный субканал.

[0028] * Когда для инициирования операций EADM выдается команда Start

Subchannel, канальная подсистема асинхронно осуществляет указанную операцию.

[0029] * Программа следит, что твердотельное запоминающее устройство при зависящем от модели минимальном размере блоков кажется параллельной по блокам. Эта зависящая от модели величина называется размером параллельности блоков SCM.

[0030] * Когда операции EADM завершены, прерывание ввода-вывода для субканала ADM-типа, на котором были инициированы операции, делается ожидающим программу.

[0031] EADM ORB содержит спецификацию ключа субканала и адрес AOB, подлежащего использованию. AOB указывается, например, на границе 4 Кбайт и может иметь размер до 4 Кбайт. Если требуется больше блоков MSB, чем может поместиться в 4 Кбайта AOB, AOB может указывать список блоков MSB, который расширяется на дополнительные области хранения путем использования блоков MSB, которые вместо указания области памяти, подлежащей использованию для передачи данных, указывают адрес следующего MSB в списке.

[0032] Первая операция EADM запускается канальной подсистемой, использующей информацию в указанном EADM ORB и ARQB в указанном AOB для извлечения MSB. MSB содержит информацию, которая указывает операцию EADM, подлежащую обработке, и управляет этой операцией.

[0033] Каждая операция EADM отображается одним MSB. MSB может указывать, например, передачу блоков данных из основного запоминающего устройства в твердотельное запоминающее устройство; передачу блоков данных из твердотельного запоминающего устройства в основное запоминающее устройство; сброс блоков твердотельного запоминающего устройства; и освобождение блоков твердотельного запоминающего устройства.

[0034] Если блоки, подлежащие передаче, не являются непрерывными в основном запоминающем устройстве, может использоваться новый MSB, или MSB может использовать косвенную адресацию путем определения списка косвенных адресных слов данных (AIDAW) для указания блоков, не являющихся непрерывными.

[0035] Так как MSB определяет передачу данных только в одном направлении, в случае, когда происходит изменение в направлении передачи, следует использовать новый MSB.

[0036] Окончание операции EADM обычно указывается комбинированными ситуациями статусов окончания работы канала и окончания работы устройства. Указанная комбинация статусов отображает комбинацию первичного и вторичного статуса, указывающую, что после сброса статуса субканал будет доступен для следующей функции запуска.

[0037] Операция EADM может быть преждевременно прекращена при помощи команды Clear Subchannel. Выполнение команды Clear Subchannel прекращает выполнение AOB в субканале, очищает субканал от указателей выполняемого AOB и асинхронно осуществляет функцию сброса.

[0038] Дополнительные подробности, относящиеся к EADM ORB и связанным с ним управляющим структурам, описаны ниже со ссылкой на ФИГ.2A-2F. В начале со ссылкой на ФИГ.2A описывается один вариант осуществления EADM ORB.

[0039] В одном примере, EADM ORB 200 содержит:

[0040] Параметр 202 прерывания: данное поле сохраняется неизменным в субканале до тех пор, пока оно не будет замещено посредством последующей команды Modify Subchannel или Start Subchannel. Указанные биты помещены в код прерывания ввода-вывода, когда для субканала происходит прерывание ввода вывода, и когда запрос прерывания сбрасывается путем выполнения, например, команды Test Pending Interruption.

[0041] Ключ 204 субканала: данное поле образует ключ субканала для операций EADM, определяемых посредством ARQB, и применяется для извлечения ARQB, извлечения блоков MSB, сохранения ARSB и для получения доступа к основному запоминающему устройству для передачи данных. Значение этого поля является определенным значением; в противном случае, или канальной подсистемой распознается ситуация проверки программы, или распознается исключительная ситуация операнда.

[0042] Управление (X) 205 расширением ORB: данное поле указывает, является ли ORB расширенным. Данное поле представляет собой определенное значение, когда субканал ADM-типа является указанным; в противном случае, распознается или исключительная ситуация операнда, или ситуация проверки программы.

[0043] Адрес 206 блока операций EADM (AOB): данное поле указывает адрес блока операций EADM (AOB). Если некоторые биты данного поля не включают определенное значение, распознается или исключительная ситуация операнда, или ситуация проверки программы.

[0044] Если данное поле указывает местоположение, защищенное от извлечения, или указывает местоположение за пределами конфигурации, функция запуска не инициируется. В этом случае субканал является ожидающим статус с первичным, вторичным и предупреждающим статусом.

[0045] Приоритет 208 канальной подсистемы (CSS): данное поле содержит указатель приоритета канальной подсистемы, который назначен указанному субканалу и используется для упорядочивания выбора субканалов ADM-типа тогда, когда функция запуска подлежит инициированию для одного или нескольких субканалов, которые являются ожидающими запуск.

[0046] Приоритет 210 твердотельного запоминающего устройства (SCM): данное поле содержит указатель приоритета твердотельного запоминающего устройства (SCM), который указывает уровень приоритета, который применяется ко всем операциям EADM, связанным с функцией запуска.

[0047] То, распознается ли поле приоритета SCM средством EADM, зависит от модели. На моделях, которые не распознают это поле, содержимое поля игнорируется, и всем операциям EADM, связанным с функцией запуска, назначается неявный указатель приоритета.

[0048] Формат (FMT) 212: данное поле указывает структуру ORB. Данное поле предназначено для содержания определенного значения тогда, когда указан субканал ADM-типа; в противном случае, распознается исключительная ситуация операнда или устанавливается код особой ситуации.

[0049] Блок операций EADM (AOB), указываемый адресом 206 AOB EADM в EADM ORB, содержит информацию, используемую для вызова операций EADM. AOB выделяется, в одном примере, на границе 4 Кбайт и имеет переменную длину.

[0050] В одном примере, как показано на ФИГ.2B, AOB 220 EADM содержит три секции: блок (ARQB) 222 запроса EADM; блок (ARSB) 224 ответа EADM; и область 226 MSB, содержащую блоки MSB до определенного количества (например, 124). ARQB может указывать использование большего количества блоков MSB, чем определенное, однако только при использовании перехода блоков MSB (то есть путем использования перехода к флагу следующего MSB в MSB).

[0051] Один вариант осуществления блока (ARQB) 222 запроса EADM описан со ссылкой на ФИГ.2C. В одном примере, ARQB 222 содержит:

[0052] Формат 230 (FMT): данное поле указывает структуру ARQB. Значение этого поля представляет собой определенное значение; в противном случае, канальной подсистемой распознается ситуация проверки программы, или в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка кода команды.

[0053] Код 232 команды: это поле предназначено для указания команды перемещения блоков EADM; в противном случае, канальной подсистемой распознается ситуация проверки программы, или в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка кода команды.

[0054] Счетчик 234 блоков MSB: Данное поле указывает счетчик блоков MSB, которые составляют запрос EADM. Максимальное число блоков MSB, которое может быть указано, зависит от модели. Значение этого поля должно быть больше нуля и меньше или равно зависящему от модели максимальному значению счетчика блоков MSB; в противном случае, канальной подсистемой распознается ситуация проверки программы, или в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка в коде команды.

[0055] В дополнение к блоку запроса EADM, EADM ORB также указывает блок ответа EADM (ARSB). В данном варианте осуществления изобретения, блок ответа EADM является значимым только тогда, когда распознается исключительная ситуация. Точнее, ARSB является значимым только тогда, когда в слове статуса субканала EADM (SCSW) присутствует предупреждающий статус, расширенное слово статуса EADM (ESW) является значимым, и блок ответа EADM, хранящий (R) битов, равен единице в расширенном слове отчета EADM (ERW), каждое из них описывается ниже. Когда ARSB не является значимым, содержимое ARSB в AOB является непред сказу емым.

[0056] Если программа сохраняется в ARSB, в то время как связанный субканал является действующим субканалом, могут возникать непредсказуемые результаты.

[0057] Когда ARSB сохраняется, объем данных, которые были переданы, если это имеет место, является непред сказуемым.

[0058] Один вариант осуществления блока ответа EADM описывается со ссылкой на ФИГ. 2D. В одном примере, ARSB 224 содержит:

[0059] формат 240 (FMT): это поле указывает структуру ARSB. Когда ARSB сохраняется, значение этого поля сохраняется как определенное значение.

[0060] Флаги 242 исключительных ситуаций (EF): когда ARSB сохраняется, это поле, если оно установлено, указывает причину исключительной ситуации, по которой сохраняется ARSB. Примеры причин исключительной ситуации включают:

[0061] проверку программы: обнаружена ошибка программирования.

[0062] Проверку защиты: доступу к запоминающему устройству препятствует механизм защиты. Защита распространяется на извлечение ARQB, MSB, AIDAW и данные, подлежащие передаче в твердотельное запоминающее устройство, и на сохранение информации в ARSB и данные, передаваемые из твердотельного запоминающего устройства.

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

[0064] Проверку управления каналом: проверка управления каналом вызывается любым сбоем системы, оказывающим влияние на элементы управления канальной подсистемы. Ситуация включает недостоверный CBC на ARQB, ARSB, MSB, AIDAW или соответствующем связанном ключе. Ситуация может быть указана, когда недостоверный CBC обнаруживается на подвергнутом предварительному извлечению ARQB, MSB, AIDAW или соответствующем связанном ключе, даже если этот ARQB, MSB или AIDAW не используется.

[0065] Проверку средства расширенного асинхронного перемещения данных: неисправленная ошибка была обнаружена в отношении данных, которые содержатся в твердотельном запоминающем устройстве и в настоящее время используются для выполнения операции EADM.

[0066] Идентификаторы 244 блоков управления исключительными ситуациями (ECBI): когда ARSB сохраняется, данное поле представляет собой маску из нескольких битов, биты которой, когда они установлены, указывают какой-либо один из следующих компонентов, которые связаны с распознаванием исключительной ситуации, указываемого полем EF, или их сочетание:

[0067] * блок, или блоки, управления.

[0068] * Область данных основного запоминающего устройства.

[0069] * Твердотельное запоминающее устройство.

[0070] Биты, которые могут быть установлены, отображают, например, блок спецификации перемещения EADM, косвенный адрес данных EADM, данные в основном запоминающем устройстве и/или данные в твердотельном запоминающем устройстве.

[0071] Биты в поле ECBI описывают компоненты, связанные с единичной исключительной ситуацией. Если для исключительной ситуации нельзя идентифицировать ни одного компонента, данное поле содержит, например, нули.

[0072] Флаг 246 достоверности полей (FVF): когда ARSB сохраняется, это поле содержит маску из нескольких битов, биты которой указывают достоверность некоторых полей в ARSB. Если бит достоверности установлен, соответствующее поле было сохранено и является пригодным для целей восстановления. Биты, которые могут быть установлены, отображают, например, поле неверного адреса MSB, поле неверного AIDAW, поле неверного адреса основного запоминающего устройства и/или поле неверного адреса твердотельного запоминающего устройства.

[0073] Код 248 квалификатора исключительных ситуаций (EQC): если ARSB сохраняется, данное поле содержит кодовое значение, которое дополнительно описывает исключительная ситуация, указываемое полем флагов исключительных ситуаций. Кодовые значения могут отображать, в качестве примеров, следующее.

[0074] Не предоставлено дополнительное описание. В этом случае поле идентификаторов блоков управления исключительными ситуациями (ECBI) и те поля, достоверность которых подтверждена полем флагов достоверности полей, могут идентифицировать блоки управления, для которых распознана исключительная ситуация.

[0075] Ошибка формата. Формат, указанный полем формата, является зарезервированным. В этом случае поле идентификаторов блоков управления исключительными ситуациями (ECBI) и те поля, достоверность которых подтверждена полем флагов достоверности полей, могут идентифицировать блоки управления, для которых распознана исключительная ситуация.

[0076] Ошибка кода команды. Значение, указанное в поле кода команды ARQB, не распознано.

[0077] Ошибка счетчика блоков MSB. Значение, указанное в поле счетчика блоков MSB в блоке ARQB, равно нулю или превышает зависящий от модели максимум блоков MSB, который может быть указан.

[0078] Ошибка флагов. Биты флагов, указанные полем флагов, являются зарезервированными. В этом случае, поле идентификаторов блоков управления исключительными ситуациями (ECBI) и те поля, достоверность которых подтверждена полем флагов достоверности полей, могут идентифицировать блоки управления, для которых распознана исключительная ситуация.

[0079] Ошибка кода операции. Указывается зарезервированное значение кода операции. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация.

[0080] Ошибка размера блоков. Указывается зарезервированное значение размера блоков. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация.

[0081] Ошибка счетчика блоков. Значение, указываемое в поле счетчика блоков MSB, равно нулю или превышает зависящее от модели максимальное число блоков, которые могут указываться посредством MSB. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация.

[0082] Ошибка указания адреса основного запоминающего устройства. Адрес основного запоминающего устройства указан на неправильной границе. Такой адрес мог быть указан посредством блока MSB или AIDAW. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса основного запоминающего устройства является достоверным, поле содержит адрес основного запоминающего устройства, для которого распознана исключительная ситуация.

[0083] Ошибка указания адреса твердотельного запоминающего устройства. Адрес твердотельного запоминающего устройства указан на неправильной границе. Такой адрес указывается посредством MSB. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса твердотельного запоминающего устройства является достоверным, поле содержит адрес твердотельного запоминающего устройства, для которого распознана исключительная ситуация.

[0084] Исключительная ситуация адреса основного запоминающего устройства. Средство EADM попыталось использовать адрес, который является недоступным в данной конфигурации или охватывает максимальный адрес. Такой адрес мог быть указан MSB или является результатом приращения адресов основного запоминающего устройства в ходе передачи данных. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса основного запоминающего устройства является достоверным, поле содержит адрес основного запоминающего устройства, для которого распознана исключительная ситуация.

[0085] Исключительная ситуация адреса твердотельного запоминающего устройства. Средство EADM попыталось использовать адрес твердотельного запоминающего устройства, который является недоступным в данной конфигурации. Такой адрес мог быть указан MSB или является результатом приращения адресов твердотельного запоминающего устройства в ходе передачи данных. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса твердотельного запоминающего устройства является достоверным, поле содержит адрес твердотельного запоминающего устройства, для которого распознана исключительная ситуация.

[0086] Ошибка основного запоминающего устройства. Обнаружена неисправленная ошибка основного запоминающего устройства. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса основного запоминающего устройства является достоверным, поле содержит адрес основного запоминающего устройства, для которого распознана исключительная ситуация.

[0087] Ошибка списка блоков MSB.: AOB указывает список блоков MSB, который пересекает границу 4 Кбайт без указания перехода к следующему MSB (BNM) для пересечения границы, или MSB представляет собой последний MSB в указанном списке MSB, и BNM указывается этим MSB. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация.

[0088] Ошибка перехода MSB. AOB указывает список блоков MSB, в котором один из блоков MSB (исходный MSB перехода) указывает переход к следующему MSB (BNM), и MSB, который является целью перехода, также указывает BNM. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес исходного MSB перехода, для которого распознана исключительная ситуация.

[0089] Ошибка списка AIDAW. MSB указывает список косвенных адресных слов данных EADM (AIDAW), который пересекает границу 4 Кбайт без указания перехода к следующему AIDAW (BNA) для пересечения границы. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация.

[0090] Ошибка перехода AIDAW. MSB указывает список косвенных адресных слов данных EADM (AIDAW), в котором AIDAW (исходное AIDAW перехода) указывает переход к исходному AIDAW (BNA), и AIDAW, которое является целью перехода, также указывает BNA. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес исходного AIDAW перехода, для которого распознана исключительная ситуация.

[0091] Временная ошибка твердотельного запоминающего устройства.

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

[0092] Ошибка отсутствия поддержки операции освобождения. Операция освобождения указана для твердотельного запоминающего устройства, для которого операция освобождения не поддерживается. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса твердотельного запоминающего устройства является достоверным, поле содержит адрес твердотельного запоминающего устройства, для которого распознана исключительная ситуация.

[0093] Ошибка чтения освобожденных данных. Операция чтения указана для твердотельного запоминающего устройства, для которого последней успешной операцией являлась операция освобождения. Если поле флагов достоверности полей указывает, что поле неверного адреса MSB является достоверным, поле содержит адрес MSB, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса AIDAW является достоверным, поле содержит адрес AIDAW, для которого распознана исключительная ситуация. Если поле флагов достоверности полей указывает, что поле неверного адреса твердотельного запоминающего устройства является достоверным, поле содержит адрес твердотельного запоминающего устройства, для которого распознана исключительная ситуация.

[0094] Неверный адрес 250 MSB.: Если установлен указанный бит поля флагов достоверности полей, данное поле указывает адрес MSB, для которого распознана исключительная ситуация.

[0095] Неверный адрес 252 AIDAW. Если установлен указанный бит поля флагов достоверности полей, данное поле указывает адрес AIDAW, для которого распознана исключительная ситуация.

[0096] Неверный адрес 254 основного запоминающего устройства. Если установлен указанный бит поля флагов достоверности полей, данное поле указывает адрес блока основного запоминающего устройства, для которого распознана исключительная ситуация.

[0097] Неверный адрес 256 твердотельного запоминающего устройства. Когда установлен указанный бит поля флагов достоверности полей, данное поле содержит адрес (например, 64-битный) SCM блока твердотельного запоминающего устройства, для которого распознана исключительная ситуация.

[0098] В дополнение к блоку запроса EADM и блоку ответа EADM, блок операций EADM (AOB) также указывает один или несколько блоков спецификации перемещения EADM (MSB). AOB может содержать, например, до 124 блоков MSB. Однако программа может указывать более чем 124 блока MSB путем указания большего количества блоков MSB в поле счетчика ARQB и путем использования флага перехода к следующему MSB (BNM) для перехода к продолжению списка блоков MSB. Возможно множество продолжений списка блоков MSB, но, в одном варианте осуществления изобретения, ни одно из этих продолжений не может пересекать границу 4 Кбайт без использования BNM для пересечения этой границы. От продолжений списка блоков MSB не требуется, чтобы они были непрерывными. Каждое продолжение списка блоков MSB, если указано его начало на границе 4Кбайт, может содержать до 128 блоков MSB. Общее количество блоков MSB в списке блоков MSB указывается полем счетчика блоков MSB в ARQB.

[0099] Блок спецификации перемещения EADM описывает, например, блоки запоминающего устройства, которые подлежат перемещению между основным запоминающим устройством и твердотельным запоминающим устройством, или операцию, подлежащую осуществлению на блоке запоминающего устройства. Один вариант осуществления MSB 226 описывается со ссылкой на ФИГ.2E, и содержит, например:

[00100] формат (FMT) 260. Данное поле указывает структуру MSB. Значение этого поля представляет собой определенное значение; в противном случае, в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка формата MSB.

[00101] Код 262 операции (OC). Данное поле указывает операцию, подлежащую осуществлению. В одном примере, когда указанный бит в описываемом ниже поле флагов, представляет собой определенное значение, данное поле указывает операцию, подлежащую осуществлению. Примеры операций включают:

[00102] сброс твердотельного запоминающего устройства. Когда указывается этот код, сбрасывается (например, устанавливается на нуль) ячейка твердотельного запоминающего устройства, указываемая адресом твердотельного запоминающего устройства, размером блока и полем счетчика блоков. Поле адреса основного запоминающего устройства не имеет значения для данной операции.

[00103] Чтение: когда указывается этот код, данные указываются как подлежащие передаче из твердотельного запоминающего устройства в основное запоминающее устройство. Поля счетчика блоков, размера блоков, адреса основного запоминающего устройства и адреса твердотельного запоминающего устройства не имеют значения для данной операции.

[00104] Запись: когда указывается этот код, данные указываются как подлежащие передаче из основного запоминающего устройства в твердотельное запоминающее устройство. Поля счетчика блоков, размера блоков, адреса основного запоминающего устройства и адреса твердотельного запоминающего устройства не имеют значения для данной операции.

[00105] Освобождение: когда указывается этот код, и установлено средство освобождения EADM, освобождается твердотельное запоминающее устройство, указываемое полями адреса твердотельного запоминающего устройства, размером блоков и счетчика блоков. Поле адреса основного запоминающего устройства не имеет значения для данной операции. Когда средство освобождения EADM не установлено, данный код резервируется.

[00106] Если указывается зарезервированное значение, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка кода операции.

[00107] Когда бит указанного флага не является определенным значением, данное поле является зарезервированным и не проверяется.

[00108] Флаги 264. Данное поле идентифицирует один или несколько флагов, которые могут быть установлены. Биты флагов, которые являются зарезервированными, устанавливаются на определенное значение; в противном случае, в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка флагов. Примеры флагов включают:

[00109] * флаг перехода к следующему MSB (BNM): Данный флаг, если он установлена, указывает, что MSB не указывает операцию EADM и не используется для передачи данных. Вместо этого, поле адреса основного запоминающего устройства указывает адрес следующего MSB, подлежащего использованию для указания операции EADM.

[00110] Если установлен флаг BNM (например, один), и поле адреса основного запоминающего устройства указывает MSB, в котором также установлен флаг BNM, канальной подсистемой распознается ситуация проверки программы, адрес исходного MSB перехода сохраняется в поле неверного адреса MSB в ARSB, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка перехода MSB.

[00111] Если MSB заканчивается на границе 4 Кбайт, АОВ указывает дополнительные блоки MSB, и флаг BNM не установлен, канальной подсистемой распознается ситуация проверки программы, адрес этого MSB сохраняется в поле неверного адреса MSB в ARSB, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка списка блоков MSB.

[00112] Если MSB является последним MSB в указанном списке блоков MSB, и установлен флаг BNM, канальной подсистемой распознается ситуация проверки программы, адрес этого MSB сохраняется в поле неверного адреса MSB в ARSB, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка списка блоков MSB.

[00113] Когда установлен флаг BNM, остальные флаги, поле кода операции, поле размера блоков, поле счетчика блоков в наборе и адрес твердотельного запоминающего устройства не имеют значения.

[00114] * Флаг косвенной адресации. Данный флаг, если он установлен, указывает, что поле адреса основного запоминающего устройства указывает адрес косвенного адресного слова данных EADM (AIDAW) или первого AIDAW из списка AIDAW, которое указывает местоположение или, соответственно, местоположения в основном запоминающем устройстве, подлежащие использованию для передачи данных. Данный флаг, если он не установлен, указывает, что поле адреса основного запоминающего устройства указывает адрес местоположения в основном запоминающем устройстве, подлежащего использованию для передачи данных.

[00115] Размер 266 блоков (BS). Данное поле указывает размер и границу подлежащих передаче блоков данных, как для основного запоминающего устройства, так и для твердотельного запоминающего устройства, или размер и границу блока твердотельного запоминающего устройства, подлежащего выполнению операции на нем (например, сбросу или освобождению). Примеры включают:

[00116] 4K: когда кодовым значением является одно определенное значение, подлежащие передаче блоки данных находятся на границе 4 Кбайт и имеют размер 4 Кбайт.

[00117] 1M: когда кодовым значением является другое определенное значение, подлежащие передаче блоки данных находятся на границе 1 Мбайт и имеют размер 1 Мбайт.

[00118] Если указывается зарезервированное значение, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка размера блоков.

[00119] Когда установлен флаг BNM, данное поле игнорируется.

[00120] Счетчик 268 блоков: данное поле содержит счетчик блоков данных, подлежащих передаче или операциям на них (например, сбросу или освобождению). На основе поля размера блоков, данный счетчик представляет собой счетчик блоков размером 4 Кбайт или 1 Мбайт.

[00121] Значение данного поля должно быть больше нуля и меньше или равно зависящему от модели максимальному числу блоков, которое может указываться посредством MSB; в противном случае, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка счетчика блоков.

[00122] Когда установлен флаг BNM, данное поле является зарезервированным и не проверяется.

[00123] Адрес 270 основного запоминающего устройства. Когда поле кода операции имеет значение (например, флаг BNM не установлен) и указывает или операцию чтения, или операцию записи, и не установлен указатель косвенной адресации в поле флагов, данное поле содержит адрес основного запоминающего устройства, подлежащий использованию для передачи данных, и применяется следующее:

[00124] * когда поле размера блоков указывает блоки размера 4 Кбайт, указанные биты этого поля содержат определенное значение (например, ноль); в противном случае, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации основного запоминающего устройства.

[00125] * Когда поле размера блоков указывает блоки размера 1 Мбайт, указанные биты этого поля содержат определенное значение (например, нули); в противном случае, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации основного запоминающего устройства.

[00126] Когда поле кода операции имеет смысл и указывает или операцию чтения, или операцию записи, и в поле флагов установлен указатель косвенной адресации, поле содержит адрес одного из слов AIDAW в основного запоминающего устройства или первое слово из списка слов AIDAW, подлежащее использованию для передачи данных. В этом случае, определенные биты данного поля содержат определенное значение; в противном случае, канальной подсистемой распознается ситуация проверки программы, я в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации основного запоминающего устройства.

[00127] Когда установлена флаг BNM, код операции не имеет смысла, и MSB не указывает операцию EADM. Вместо этого, данное поле содержит адрес основного запоминающего устройства следующего MSB, который указывает операцию EADM. В этом случае, указанные биты данного поля содержат определенное значение; в противном случае, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации основного запоминающего устройства.

[00128] Поле 272 адреса твердотельного запоминающего устройства: Когда поле кода операции имеет смысл, данное поле содержит адрес (например, 64-битный) твердотельного запоминающего устройства, подлежащей использованию для передачи данных или для операций на ней (например, для сброса, освобождения), и применяется следующее:

[00129] * Когда поле размера блоков указывает блоки размера 4 Кбайт, указанные биты этого поля содержат определенное значение (например, нули); в противном случае, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации твердотельного запоминающего устройства.

[00130] * Когда поле размера блоков указывает блоки размера 1 Мбайт, указанные биты этого поля содержат определенное значение (например, нули); в противном случае, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации твердотельного запоминающего устройства.

[00131] Когда установлена флаг BNM, данное поле является зарезервированным и не проверяется.

[00132] Как указано выше, может быть указано косвенное адресное слово данных EADM. Косвенное адресное слово данных EADM (AIDAW) позволяет программе указывать передачу блоков данных между твердотельным запоминающим устройством и блоками основного запоминающего устройства, которые не являются непрерывными. Одно из слов AIDAW, или список слов AIDAW, указывается посредством одного из блоков MSB, когда в MSB установлена флаг косвенной адресации.

[00133] Объем данных, передаваемый единственным AIDAW, указывается в MSB в поле размера блоков. Количество слов AIDAW в списке слов AIDAW представляет собой сумму количества, указанного в MSB полем счетчика блоков, плюс количество слов AIDAW, которые указывают переход к следующему AIDAW. Передачи данных могут обрабатываться в порядках, которые отличаются от таковых, указываемых в списке слов AIDAW. Кроме того, передачи данных, указанные несколькими словами AIDAW в списке слов AIDAW, могут обрабатываться параллельно.

[00134] AIDAW размещается, например, на границе учетверенного слова. Список слов AIDAW может иметь любую длину, но, в одном примере, он не пересекает границу 4 Кбайт, если для пересечения границы не указан переход к следующему AIDAW (BNA). Требование того, чтобы AIDAW, которое является целью перехода, было непрерывным с AIDAW, указывающим BNA, отсутствует. Однако программа должна создавать список AIDAW как можно в меньшем количестве блоков размера 4 Кбайт; в противном случае, может проявляться ухудшение производительности.

[00135] Согласно ФИГ.2F, в одном примере, косвенное адресное слово 280 данных EADM содержит:

[00136] Флаги 282. Один пример флага содержит:

[00137] флаг перехода к следующему AIDAW (BNA). Этот флаг, когда он установлен, указывает, что поле адреса основного запоминающего устройства не указывает адрес основного запоминающего устройства, подлежащей использованию для передачи данных. Вместо этого, поле адреса основного запоминающего устройства указывает адрес следующего AIDAW, подлежащего использованию для передачи данных.

[00138] Когда установлен флаг BNA, и поле адреса основного запоминающего устройства указывает AIDAW, в котором также установлен флаг BNA, адрес MSB сохраняется в поле неверного адреса MSB в ARSB, адрес исходного AIDAW перехода сохраняется в поле неверного адреса основного запоминающего устройства в ARSB, и в поле кода квалификатора исключительных ситуаций в ARSB указывается ошибка перехода AIDAW.

[00139] Если AIDAW заканчивается на границе 4 Кбайт, MSB указывает дополнительные AIDAW, и флаг BNA не установлен, адрес MSB сохраняется в поле неверного адреса MSB в ARSB, адрес AIDAW сохраняется в поле неверного адреса основного запоминающего устройства в ARSB, и в поле кода квалификатора исключительных ситуаций в ARSB указывается ошибка слов AIDAW.

[00140] Адрес 284 основного запоминающего устройства. Когда поле BNA не установлено, данное поле содержит адрес в основном запоминающем устройстве, подлежащий использованию для передачи данных, и применяется следующее.

[00141] * Когда поле размера блоков в MSB указывает блоки размера 4 Кбайт, указанные биты этого поля содержат определенное значение (например, ноль); в противном случае, канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации основного запоминающего устройства.

[00142] * Когда поле размера блоков в MSB указывает блоки размера 1 Мбайт, указанные биты этого поля содержат определенное значение (например, нули); в противном случае канальной подсистемой распознается ситуация проверки программы, и в поле кода квалификатора исключительных ситуаций ARSB указывается ошибка спецификации основного запоминающего устройства.

[00143] * Когда установлен флаг BNA, данное поле содержит адрес основного запоминающего устройства следующего AIDAW, подлежащего использованию для передачи данных.

[00144] Как описано выше, операции EADM указываются командой Start Subchannel. То есть программа инициирует операции EADM, выдавая команду Start Subchannel, которая указывает субканал ADM-типа и EADM ORB. Выполнение указанной команды передает содержимое EADM ORB в указанный субканал. EADM ORB содержит описание ключа субканала (используемого для защиты) и адрес AOB, подлежащего использованию.

[00145] В одном примере, как проиллюстрировано на ФИГ.3A, команда 300 Start Subchannel содержит код 302 операции, указывающий функцию Start Subchannel, первый операнд 304, который представляет собой подразумеваемый операнд, расположенный, например, в регистре 1 общего назначения, который содержит идентификатор подсистемы, указывающий субканал ADM-типа, который подлежит запуску; и второй операнд 306, который представляет собой логический адрес EADM ORB. EADM ORB указывает параметры, используемые в управлении функцией запуска. Содержимое EADM ORB помещается в указанный субканал в ходе выполнения команды Start Subchannel перед установкой кода ситуации. Если выполнение команды Start Subchannel приводит к установке иного кода ситуации, чем код, указывающий успех, содержимое EADM ORB не помещается в указанный субканал.

[00146] Вслед за выполнением команды Start Subchannel для субканала ADM-типа канальная подсистема асинхронно осуществляет функцию запуска для инициирования средством EADM операций EADM. Функция запуска содержит, например, предусматривает:

[00147] 1. Извлечение ARQB из AOB.

[00148] 2. Выполнение операций EADM так, как это указано ARQB и блоками MSB, которые он обозначает.

[00149] 3. Условное сохранение информации о завершении в ARSB в AOB.

[00150] 4. Вынуждение субканала ADM-типа к тому, чтобы он был сделан ожидающим статус, что указывает завершение функции запуска.

[00151] В одном варианте осуществления изобретения, со ссылкой на ФИГ.3B, когда выполнена команда Start Subchannel и SID указывает субканал ADM-типа, и второй операнд указывает EADM ORB, на этапе 320 указывается операция EADM. Параметры в EADM ORB передаются в указанный субканал на этапе 322, и на этапе 324 канальная подсистема запрашивается на выполнение средством EADM функции запуска. Канальная подсистема асинхронно осуществляет функцию запуска путем использования информации в субканале, в том числе, информации, переданной в ходе выполнения команды Start Subchannel, для инициализации операций EADM на этапе 326.

[00152] Выполнение операции EADM (например, первой операции) включает использование информации из EADM ORB для получения AOB на этапе 328, и использование информации в AOB для получения блока запроса EADM (ARQB) и указания одного или нескольких блоков спецификации перемещения EADM (блоков MSB) на этапе 330. Один или несколько указанных блоков MSB затем подвергаются извлечению из основного запоминающего устройства на этапе 332, и информация, указываемая в блоках MSB, используется для управления запрошенной операцией EADM. Первая операция считается запущенной, когда канальная подсистема предпринимает попытку инициирования передачи данных или попытку операции сброса или освобождения.

[00153] Канальная подсистема осуществляет операцию (операции), запрашиваемую в блоке (блоках) MSB, на этапе 334. Данная обработка данных является асинхронной для выполнения команды запуска.

[00154] Когда операции EADM, инициированные командой Start Subchannel заканчиваются на этапе 336, канальная подсистема на этапе 338 генерирует ситуации статуса. Генерирование указанных ситуаций на этапе 339 доводится до сведения программы посредством прерывания ввода-вывода. Программа также может запрашивать указанные ситуации путем выполнения команды Test Pending Interruption.

[00155] Генерируемые ситуации статуса представляются программе в форме слова статуса субканала EADM (SCSW). Указанное SCSW EADM сохраняется как часть блока ответа на прерывание (IRB) EADM путем выполнения команды Test Subchannel.

[00156] Когда операции EADM, указываемые блоком операций EADM (AOB), заканчиваются, канальная подсистема генерирует первичный и вторичный статусы прерывания. Операции EADM могут быть завершены командой Clear Subchannel или ненормальной ситуацией, распознанной при осуществлении функции запуска.

[00157] Обработка MSB канальной подсистемой для операции перемещения управляет потоком единицы информации в основное запоминающее устройство или из основного запоминающего устройства. Для изменения направления перемещения данных в ходе обработки MSB необходим новый MSB. ARQB указывает число блоков MSB, которые включают запрос.

[00158] Каждая операция EADM отображается одним MSB. MSB может указывать любое из следующего:

[00159] * передачу блоков данных из основного запоминающего устройства в твердотельное запоминающее устройство.

[00160] * Передачу блоков данных из твердотельного запоминающего устройства в основное запоминающее устройство.

[00161] * Сброс блоков твердотельного запоминающего устройства.

[00162] * Освобождение блоков твердотельного запоминающего устройства, когда установлено средство освобождения EADM.

[00163] Если блоки запоминающего устройства, подлежащие передаче для операции перемещения, не являются непрерывными в основном запоминающем устройстве, может использоваться новый MSB, или MSB может использовать косвенную адресацию путем указания списка косвенных адресных слов данных EADM (AIDAW) для указания блоков, не являющихся непрерывными. Поскольку MSB может указывать передачу данных только в одном направлении, когда происходит изменение в направлении передачи данных, должен использоваться новый MSB.

[00164] Характеристиками передач данных EADM являются следующие характеристики:

[00165] * передачи данных могут обрабатываться вне очереди относительно порядка указанного списка MSB.

[00166] * Передачи данных, указываемые несколькими блоками MSB в списке MSB, могут обрабатываться параллельно.

[00167] * Передачи данных могут обрабатываться вне очереди относительно порядка указываемого списка AIDAW.

[00168] * Передачи данных, указываемые несколькими AIDAW в списке AIDAW, могут обрабатываться параллельно.

[00169] * Доступы к основному запоминающему устройству и к твердотельному запоминающему устройству необязательно являются обращениями одиночного доступа и необязательно осуществляются в направлении слева направо, как наблюдается программой и другими ЦП.

[00170] * Если две или более операций EADM в настоящий момент действуют и

адресуют одни и те же местоположения SCM, местоположение в основном запоминающем устройстве или те и другие местоположения, операции могут осуществляться параллельно, и содержимое из различных операций может чередоваться; однако:

[00171] - для операций ввода - данные, сохраненные средством EADM в каждый блок основного запоминающего устройства, то есть размер, равный размеру параллелизма блоков SCM, состоит из данных, переданных из твердотельного запоминающего устройства посредством только одной из параллельных операций EADM.

[00172] - Для операций вывода - каждый блок твердотельного запоминающего устройства, который находится на границе и имеет размер, равный размеру параллелизма блоков SCM, содержит данные, указанные посредством только одной из параллельных операций EADM.

[00173] Вышесказанное верно независимо от того, указываются ли операции EADM единичным AOB и являются ли обрабатываемыми одним и тем же вариантом функции запуска, или операции EADM указываются различными блоками AOB и являются обрабатываемыми различными вариантами функции запуска.

[00174] * Когда для субканала являются действующими операции EADM, является непредсказуемым то, будут ли наблюдаться средством EADM изменения, сделанные программой в ARQB, блоках MSB, словах AIDAW и передаваемых данных, связанные с действующей операцией.

[00175] Когда все блоки, указанные всеми блоками MSB, указанными посредством AOB, были переданы или сброшены, или освобождены, субканал генерирует статус, который сохраняется в субканале, и запрашивает для субканала ADM-типа прерывание ввода-вывода.

[00176] Завершение операции EADM обычно указывается комбинированными ситуациями статусов окончания работы канала и окончания работы устройства. Данная комбинация статусов отображает комбинацию первичного и вторичного статусов, указывающую, что после сброса статуса субканал является доступным для другой функции запуска.

[00177] Как описано выше, MSB может указывать операцию передачи данных, операцию сброса или операцию освобождения, каждая из которых описывается ниже.

[00178] Когда запрашивается операция перемещения, один или несколько блоков данных перемещаются между основным запоминающим устройством и твердотельным запоминающим устройством. Например, для операции чтения данные SCM получают из SSD, которые доставляют содержимое, обозначаемое указанным адресом SCM, и затем это содержимое сохраняется в основную память. Для операции записи процесс является обратным. Сохранение осуществляет адаптер (адаптеры), управляющий SSD. Более подробно, для осуществления операции перемещения системное программно-аппаратное обеспечение, в первую очередь, транслирует данный адрес SCM в адрес адаптера (например, адрес логического тома, в котором логический том содержит один или несколько SSD). Например, используется таблица трансляции, которая коррелирует адрес SCM с адресом адаптера. Системное программно-аппаратное обеспечение затем подает одному или нескольким адаптерам ввода-вывода одну или несколько соответствующих адаптерных команд перемещения (например, чтения или записи). Адаптерная команда перемещения содержит адрес основного запоминающего устройства, адрес адаптера и размер передачи. Затем адаптер использует другую таблицу трансляции для определения местоположения одного или нескольких физических адресов SSD, которые соответствуют адресу адаптера. Адаптер ввода-вывода выполняет операцию перемещения или путем извлечения данных из основного запоминающего устройства и их сохранения на SSD, или путем извлечения данных с SSD и их сохранения в основную память. Дополнительные подробности дополнительно предоставлены в совместно подаваемой патентной заявке под названием «Firmware Management of Storage Class Memory», POU920110090US1, которая ссылкой полностью включена в настоящее описание.

[00179] Когда осуществляется операция сброса, указанные приращения твердотельного запоминающего устройства сбрасываются путем установки содержимого на ноль.

[00180] Дополнительно, когда осуществляется операция освобождения, SSD, содержащим соответствующие адреса SCM, может подаваться одна или несколько стандартных команд TRIM. Команда TRIM позволяет программе подсказывать использование блоков, позволяющее лучше выполнять очистку от ненужных данных посредством SSD. Команда TRIM позволяет операционной системе информировать SSD о том, какие блоки запоминающего устройства больше не считаются находящимися в употреблении и могут быть стерты.

[00181] Операция EADM может быть преждевременно завершена командой Clear Subchannel. Выполнение команды Clear Subchannel завершает выполнение AOB в субканале, сбрасывает субканал от указателей выполнения AOB и асинхронно осуществляет функцию сброса. Когда осуществляется функция сброса, перед тем, как субканал становится ожидающим статус, передача данных завершается, и объем переданных данных является непредсказуемым. Выполнение функции сброса не приводит к генерированию статуса, но вынуждает канальную подсистему сделать прерывание ввода-вывода ожидающим.

[00182] В одном варианте осуществления изобретения, со ссылкой на ФИГ.3C, команда 350 Clear Subchannel включает код 352 операций, указывающий функцию Clear Subchannel. Субканал, подлежащий сбросу, указывается словом идентификации подсистемы, например, в регистре 1 общего назначения.

[00183] Функция сброса для субканала ADM-типа включает:

[00184] 1. Проверку того, что текущая передача данных завершена.

[00185] 2. Модификацию полей в субканале и, условно, в ARSB. Например, слово статуса субканала модифицируется так, чтобы оно указывало функцию сброса в поле управления функциями и в поле управления действиями. ARSB может быть модифицирован для отражения любых обнаруживаемых ошибок.

[00186] 3. Вызов того, что субканал делается ожидающим статус, что указывает на завершение функции сброса.

[00187] Также могут выдаваться другие команды, которые могут указывать субканал ADM-типа, в том числе команды Test Subchannel, Modify Subchannel и Store Subchannel, каждая из которых описывается ниже.

[00188] Со ссылкой на ФИГ.3D, в одном примере, команда 360 Test Subchannel включает, например, код 362 операций, указывающий функцию проверки субканала; первый операнд 364, который представляет собой подразумеваемый операнд, расположенный, например, в регистре 1 общего назначения, который содержит слово идентификации подсистемы, указывающее субканал, который подлежит проверке; и второй операнд 366, который представляет собой логический адрес блока ответа на информацию (IRB), в котором хранится информация.

[00189] Когда выполняется команда Test Subchannel, указывающая субканал ADM-типа, субканал является ожидающим статус, и информация сохранена в указанном IRB (блоке ответа на прерывание) EADM, устанавливается код указанной ситуации. Когда субканал не является ожидающим статус, и информация о статусе сохранена в указанном IRB EADM, устанавливается код определенной ситуации. Когда субканал не предоставлен или не является деблокированным, никакие действия не предпринимаются.

[00190] В одном примере IRB EADM содержит слово статуса субканала (SSW) и расширенное слово статуса (ESW), а также расширенное слово управления, которые могут обеспечивать дополнительную зависящую от модели информацию, описывающую ситуации, которые могут существовать в средстве. Каждое из указанных слов в дальнейшем описывается ниже после описания различных команд, которые могут указывать субканал ADM-типа.

[00191] Со ссылкой на ФИГ. 3E, в одном варианте осуществления изобретения команда 370 Modify Subchannel содержит код 372 операции, указывающий функцию Modify Subchannel, первый операнд 374, который представляет собой подразумеваемый операнд, расположенный, например, в регистре 1 общего назначения, который содержит слово идентификации подсистемы, указывающее субканал, который подлежит модификации; и второй операнд 376, который представляет собой логический адрес блока информации о субканале (SCHIB), связанный с субканалом.

[00192] Когда выполняется команда Modify Subchannel, указывающая субканал ADM-типа, и информация из указанного блока информации о субканале (SCHIB) размещена в субканале, устанавливается специальный код ситуации. Когда субканал является ожидающим статуса, никакие действия не предпринимаются, и устанавливается код определенной ситуации. Когда субканал занят для функции запуска или сброса, никакие действия не предпринимаются.

[00193] Со ссылкой на ФИГ.3F описан один пример команды сохранения субканала (Store Subchannel). В одном примере, команда 380 Store Subchannel содержит код 382 операции, идентифицирующий функцию Store Subchannel; первый операнд 384, который представляет собой подразумеваемый операнд, расположенный, например, в регистре 1 общего назначения, который содержит слово идентификации подсистемы, указывающее субканал, для которого сохраняется информация; и второй операнд 386, который представляет собой логический адрес SCHIB.

[00194] Когда выдается команда Store Subchannel, указывающая субканал ADM-типа, и SCHIB является сохраненным, устанавливается код указанной ситуации. Когда указанный субканал не предусматривается в канальной подсистеме, никакие действия не предпринимаются.

[00195] Один пример блока информации о субканале для субканала ADM-типа (SCHIB EADM) описывается со ссылкой на ФИГ.4A. В одном примере SCHIB 400 EADM содержит зависящую от модели область 401, которая содержит зависящую от модели информацию. Дополнительно SCHIB 400 содержит управляющее слово 402 управления трактами (PMCW) и слово 404 статуса субканала (SCSW), каждое из которых будет описано ниже.

[00196] В одном примере PMCW 402 EADM содержит, например, следующие поля, как показано на ФИГ.4B:

[00197] Параметр 410 прерывания: данное поле содержит параметр прерывания, который хранится в коде прерывания ввода-вывода. Параметр прерывания может быть установлен на любое значение посредством команд Start Subchannel и Modify Subchannel. Исходное значение поля параметра прерывания в субканале равно нулю.

[00198] Подкласс 412 прерывания (ISC): данное поле содержит ряд битов, которые представляют собой беззнаковое двоичное целое число в указанном интервале, которое соответствует позиции бита бита маски подкласса прерывания ввода-вывода в указанном управляющем регистре для каждого ЦП в конфигурации. Установка бита маски в управляющем регистре ЦП управляет распознаванием запросов прерывания, относящихся к субканалу этого ЦП. ISC может быть установлено на некоторое значение командой Modify Subchannel. Исходное значение поля ISC в субканале равно, например, нулю.

[00199] Поле 414 деблокирования (Е): данное поле, когда оно установлено, указывает, что субканал деблокирован для всех функций EADM.

[00200] Тип 416 субканала (ST): данное поле указывает тип субканала. В зависимости от модели и конфигурации может предусматриваться один или несколько следующих типов субканалов: субканал ввода-вывода или субканал ADM.

[00201] Такое значение данного поля определяется, когда субканал является сконфигурированным и не может быть изменен командой Modify Subchannel.

[00202] Когда команда Modify Subchannel выполняется и указывает субканал ADM-типа, ST предназначено для указания субканала ADM; в противном случае распознается исключительная ситуация операнда.

[00203] Согласно ФИГ.4A, блок информации о субканале также содержит слово 404 статуса субканала. Слово статуса субканала EADM (SCSW) обеспечивает для программы указатели, которые описывают статус субканала ADM-типа и связанные операции EADM. В одном примере, как показано на ФИГ.4C, слово 404 статуса субканала содержит:

[00204] ключ 420 субканала: когда в поле управления функциями (описываемом ниже) установлен индикатор функции запуска EADM, данное поле содержит ключ доступа к запоминающему устройству, используемый канальной подсистемой. Указанные биты идентичны ключу, указываемому в EADM ORB при выполнении команды Start Subchannel.

[00205] Формат 422 расширенного слова статуса (L): когда установлен индикатор ожидания статуса в поле элементов управления статусами (описываемом ниже), данное поле, если оно установлено, указывает, что был сохранен ESW с форматом 0. ESW с форматом 0 сохраняется, когда командой Test Subchannel сбрасывается ситуация прерывания, содержащая любой из следующих указателей:

[00206] * Проверка программы

[00207] * Проверка защиты

[00208] * Проверка канальных данных

[00209] * Проверка управления каналом

[00210] * Проверка средства расширенного асинхронного перемещения данных (EADMF).

[00211] Код 424 отложенной ситуации (СС): когда индикатор функции запуска EADM установлен, и индикатор ожидания статуса также установлен, данное поле указывает общую причину того, что субканал являлся ожидающим статус, когда выполнялись команды Test Subchannel или Store Subchannel. Код отложенной ситуации имеет смысл, когда субканал является ожидающим статус с любой комбинацией статусов, и только тогда, когда установлен индикатор функции запуска в поле управления функциями в SCSW.

[00212] Код отложенной ситуации, если он установлен, используется для указания того, встречались ли какие-либо ситуации, которые препятствовали тому, чтобы субканал становился действующим субканалом, в то время как субканал являлся ожидающим запуск.

[00213] Примеры кодов отложенной ситуации включают следующее.

[00214] * Было представлено нормальнее прерывание ввода-вывода.

[00215] * В SCSW EADM присутствует статус, который был сгенерирован канальной подсистемой для ситуаций, которые препятствовали тому, чтобы функция запуска EADM была успешно инициирована. То есть субканал не перешел в действующее состояние субканала.

[00216] Формат 426 CCW (F): когда установлен индикатор функции запуска EADM, данное поле сохраняется как определенное значение.

[00217] Предварительное извлечение 428 (P): когда установлен индикатор функции запуска EADM, данное поле сохраняется как определенное значение.

[00218] Расширенное управление 430 (E): Данное поле, когда оно установлено, указывает, что зависящая от модели информация сохранена в расширенном управляющем слове EADM (ECW).

[00219] Управление 432 функциями (FC): поле управления функциями указывает функции EADM, которые указаны в субканале. Примеры функций включают следующее.

[00220] * Функцию запуска EADM: когда она установлена, она указывает, что функция запуска EADM была запрошена, и она или является ожидающей, или в настоящий момент выполняется в субканале ADM-типа. Функция запуска EADM указывается в субканале, когда для команды Start Subchannel установлен код успешной ситуации. Функция запуска EADM в субканале сбрасывается, когда выполняется команда Test Subchannel, а субканал является ожидающим статус. Функция запуска EADM в субканале также сбрасывается в ходе выполнения функции Clear Subchannel.

[00221] * Функцию сброса EADM: когда она установлена, указывает, что была запрошена функция сброса EADM, и она или является ожидающей, или в настоящий момент выполняется в субканале ADM-типа. Функция сброса EADM указывается в субканале, когда для команды Start Subchannel установлен код успешной ситуации. Когда выполняется команда Test Subchannel, указатель функции сброса EADM в субканале сбрасывается, и субканал является ожидающим статус.

[00222] Управление 434 действиями (АС): поле управления действиями указывает текущий прогресс функции EADM, ранее принятой в субканале.

[00223] Все ситуации, которые отображаются битами в поле управления действиями, сбрасываются в субканале ADM-типа, когда выполняется команда Test Subchannel, и субканал является ожидающим статус.

[00224] Примеры действий включают следующее.

[00225] * Ожидание запуска: при установке указывает, что субканал является ожидающим запуск. Канальная подсистема может находиться или может не находиться в процессе осуществления функции запуска EADM. Субканал становится ожидающим запуск, когда для команды Start Subchannel установлен код успешной ситуации. Субканал остается ожидающим запуск, когда осуществляется функция запуска EADM, и канальная подсистема определяет существующие ситуации, которые препятствуют осуществлению извлечения ARQB.

[00226] Субканал более не является ожидающим запуск, когда происходит любое из следующего:

[00227] * канальная подсистема предпринимает попытку инициирования первой передачи данных, указанной посредством AOB.

[00228] * Выполняется команда Clear Subchannel.

[00229] * Команда Test Subchannel сбрасывает ситуацию статуса в субканале.

[00230] Ожидание сброса: когда оно установлено, субканал является ожидающим сброс. Канальная подсистема может находиться или может не находиться в процессе осуществления функции сброса EADM. Субканал становится ожидающим сброс, когда для команды Clear Subchannel установлен код указанной ситуации.

[00231] Субканал больше не является ожидающим сброс, когда происходит любое из следующего.

[00232] * Осуществляется функция сброса EADM.

[00233] * Команда Test Subchannel сбрасывает только ситуацию ожидания статуса.

[00234] Субканал действует: когда оно установлено, указывает, что субканал ADM-типа является действующим субканалом. Субканал ADM-типа считается действующим субканалом, когда канальная подсистема предпринимает попытку инициировать первую передачу данных, указываемую посредством AOB, или осуществляет первую операцию (в зависимости от того, что происходит в первую очередь).

[00235] Субканал больше не является действующим субканалом, когда происходит любое из следующего.

[00236] * Субканал становится ожидающим статус.

[00237] * Выполняется команда Clear Subchannel.

[00238] Управление 436 статусами (SC): поле управления статусами снабжает программу указателем обобщенного уровня для ситуации прерывания, описываемой информацией в полях статуса субканала и статуса устройства. В результате ситуаций в субканале может устанавливаться больше одного индикатора управления статусами.

[00239] Примеры элементов управления статусами включают следующее:

[00240] Предупреждающий статус: когда он установлен, указывает, что существует ситуация предупреждающего прерывания. Ситуация предупреждающего прерывания распознается, когда в субканале присутствует предупреждающий статус. Предупреждающий статус генерируется канальной подсистемой в любой из следующих ситуаций.

[00241] * Субканал ADM-типа является ожидающим запуск, и ситуация статуса препятствует инициированию первой передачи данных.

[00242] * Субканал является действующим субканалом, и ненормальная ситуация, которая была сообщена как статус субканала, завершила операции EADM.

[00243] Когда выполняется команда Test Subchannel или Clear Subchannel, предупреждающий статус в субканале сбрасывается.

[00244] Первичный статус: когда он установлен, указывает, что существует ситуация первичного прерывания. Ситуация первичного прерывания распознается, когда в субканале присутствует первичный статус.

Ситуация первичного прерывания представляет собой ситуацию обусловленного прерывания, которая, когда она сопровождается ситуацией вторичного прерывания, указывает завершение функции запуска EADM в субканале.

[00245] Когда выполняется команда Test Subchannel или Clear Subchannel, ситуация первичного прерывания в субканале сбрасывается.

[00246] Вторичный статус: когда он установлен, указывает существование ситуации вторичного прерывания. Ситуация вторичного прерывания распознается, когда в субканале присутствует вторичный статус. Ситуация вторичного прерывания представляет собой ситуацию обусловленного прерывания, которая, когда она сопровождается ситуацией первичного прерывания, указывает завершение функции запуска EADM в субканале.

[00247] Когда выполняется команда Test Subchannel или Clear Subchannel, ситуация вторичного прерывания в субканале сбрасывается.

[00248] Ожидание статуса: когда оно установлено, указывает, что субканал является ожидающим статус, и что доступна информация, описывающая причину ситуации прерывания. Когда выполняется команда Test Subchannel, сохраняющая SCSW EADM с набором битов ожидания статуса, все указатели SCSW EADM в субканале сбрасываются, помещая субканал в состоянии бездействия. Ситуация ожидания статуса также сбрасывается в субканале в ходе выполнения команды Clear Subchannel.

[00249] Когда установлено ожидание статуса, ARSB завершил все доступы к основному запоминающему устройству и твердотельному запоминающему устройству для субканала.

[00250] Статус 438 субканала: ситуации статуса субканала ADM-типа обнаруживаются и сохраняются канальной подсистемой в поле статуса субканала. Поле статуса субканала является значимым, когда субканал является ожидающим статус. За исключением ситуаций, вызванных сбоями оборудования, статус субканала может возникать только тогда, когда канальная подсистема включена в обработку функции EADM.

[00251] Примеры ситуаций статуса включают следующее.

[00252] * Проверку программы: проверка программы происходит, когда канальной подсистемой обнаруживаются ошибки программирования.

[00253] * Проверку защиты: проверка защиты происходит, когда канальная подсистема предпринимает попытку доступа к запоминающему устройству, который запрещен механизмом защиты. Защита распространяется на извлечение ARQB, блоков MSB, слов AIDAW, данных, подлежащих передаче в твердотельное запоминающее устройство, на сохранение информации в ARSB и данные, передаваемые из твердотельного запоминающего устройства.

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

[00255] * Проверку управления каналом: проверка управления каналом указывает, что в отношении извлечения или сохранения АОВ, блоков MSB или слов AIDAW была обнаружена неисправленная ошибка запоминающего устройства, или что канальная подсистема столкнулась с машинным сбоем, и сбой повлиял на операции EADM.

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

[00257] Когда канальной подсистемой распознается ситуация проверки программы, проверки защиты, проверки канальных данных, проверки управления каналом или проверки средства EADM, операции EADM завершаются, и канал делается ожидающим статус с первичным, вторичным и предупреждающим статусом.

[00258] Адрес 440 блока операций EADM: данное поле содержит адрес блока операций EADM.

[00259] Статус 442 устройства: данное поле содержит окончание работы устройства или окончание работы канала.

[00260] Когда формат 422 ESW в слове статуса субканала установлен, и субканал является ожидающим статуса, предусматривается расширенное слово статуса субканала EADM (ESW EADM), которое указывает дополнительную информацию о субканале ADM-типа.

[00261] В одном примере, со ссылкой на ФИГ.4D, расширенное слово 450 статуса субканала EADM содержит следующее.

[00262] Отключение 452 субканала EADM: отключение субканала EADM включает, в одном примере:

[00263] * расширенные флаги статусов (ESF): поле, биты которого, если они присутствуют, указывает, что канальной подсистемой была обнаружена ошибка.

[00264] Примеры расширенных флагов статусов включают:

[00265] проверку ключа: когда она установлена, указывает, что канальная подсистема обнаружила недостоверный код проверки блока (CBC) на связанном ключе хранения при обращении к данным в блоке операций EADM (AOB), в блоке спецификации перемещения EADM (MSB) или в косвенном адресном слове данных EADM (AIDAW).

[00266] * Достоверность адреса AOB: когда она установлена, указывает, что адрес, хранящийся в поле адреса AOB в SCSW, применим для целей восстановления.

[00267] Расширенное слово 454 отчета EADM, которое содержит, например:

[00268] индикатор ошибки блока операций EADM (В), который, когда он установлен, указывает, что статус исключительной ситуации, сохраненный в SCSW EADM, связан с указанным блоком операций EADM (AOB); и индикатор сохраненного блока ответа EADM (R), который, когда он установлен, указывает, что блок ответа EADM (ARSB) сохранен.

[00269] Когда установлен расширенный индикатор управления SCSW и индикатор формата расширенного слова статуса SCSW, расширенное слово управления EADM обеспечивает дополнительную информацию о зависящей от модели сущности, которая описывает ситуации, которые могут существовать в средстве EADM.

[00270] Кроме того, для субканалов ADM-типа могут сообщаться следующие слова отчета о каналах (CRW): инициализированы установленные параметры субканала; восстановлены установленные параметры субканала; субканалы доступны; ожидание информации о событиях в субканалах.

[00271] Необусловленные события и сбои, которые происходят в средстве EADM, могут сообщаться посредством CRW ожидания информации о событиях в субканалах.

[00272] Выше было подробно описано средство расширенного асинхронного перемещения данных, используемое для перемещения блоков данных между основным запоминающим устройством и твердотельным запоминающим устройством и для других операций на твердотельном запоминающем устройстве. В одном варианте осуществления изобретения информация о средстве EADM и твердотельном запоминающем устройстве получают с использованием команды EADM. В частности, поскольку твердотельное запоминающее устройство не является непосредственно доступным, обеспечивается средство для определения того, выделено ли твердотельное запоминающее устройство, и, если оно выделено, для получения информации касательно конфигурации. В частности, в одном примере, предусматривается средство для связи с управляющей программой (например, с операционной системой) о том, выделено или нет твердотельное запоминающее устройство, и, если оно выделено, то в каком объеме и в каких местоположениях. Возможность определения доступного твердотельного запоминающего устройства в данном описании называется отысканием, и один примере функции отыскания предусматривается командой Store Storage Class Memory (SCM) Information (SSI).

[00273] Команда Store Storage Class Memory Information (SSI) используется для получения информации о твердотельном запоминающем устройстве и о средстве расширенного асинхронного перемещения данных. Команда SSI выдает следующую информацию, полученную, например, из канальной подсистемы. Указанная информация более подробно описывается ниже.

[00274] 1. Характеристики средства EADM, включающие:

[00275] * максимальное число блоков спецификации перемещения (MSB), приходящихся на один AOB.

[00276] * Максимальное число блоков, приходящихся на один MSB.

[00277] 2. Характеристики твердотельного запоминающего устройства, включающие:

[00278] * размер приращений SCM.

[00279] * Список приращений адресов SCM в пределах адресного пространства SCM.

[00280] * Зависящий от модели максимальный адрес SCM.

[00281] Выполнение команды Store SCM Information, которое является синхронным, не изменяет какую-либо информацию, содержащуюся в канальной подсистеме.

[00282] Дополнительные подробности, относящиеся к команде SSI, описываются согласно ФИГ.5A-5D. В начале, согласно ФИГ.5A, в одном варианте осуществления изобретения, блок 500 запроса команды для команды Store SCM Information содержит, например:

[00283] Длину 502: значение, указывающее длину блока запроса команды.

[00284] Код 504 команды: значение, которое указывает код команды для команды Store SCM Information.

[00285] Формат 506 (FMT): значение, которое указывает формат блока запроса команды.

[00286] Маркер 508 продолжения: значение, которое может запрашивать точку продолжения для возобновления относительно предшествующего ответа, который не был завершен. Если значение маркера продолжения равно нулю, осуществляется запуск с начала. Если значение маркера продолжения является ненулевым и нераспознанным, осуществляется запуск с начала.

[00287] Один вариант осуществления блока 520 ответа на команду SSI описывается согласно ФИГ.5B, и содержит, например:

[00288] Длину 522: значение, указывающее длину в байтах блока ответа на команду.

[00289] Код 524 ответа: значение, которое описывает результаты попытки выполнения команды SSI. Значение кода ответа обуславливает длину блока ответа. Например, если сохраняется выбранный код ответа, длина указывает 96+N×16 байт, где N - количество записей в списке адресов твердотельного запоминающего устройства, которые описываются ниже. В одном примере, N находится в диапазоне 1≤N≤248.

[00290] Формат 526 (FMT): значение, которое указывает формат блока ответа на команду. Значение этого поля равно, например, нулю.

[00291] RQ 528: значение квалификатора ответа, как определено ниже:

[00292] Квалификации ответа не существует.

[00293] Указанный маркер продолжения не распознается и обрабатывается так, будто бы был указан ноль.

[00294] Поле 530 максимального счетчика блоков, приходящихся на один MSB (MBC): значение, которое указывает максимальное значение, которое может использоваться в поле счетчика блоков блока спецификации перемещения (MSB).

[00295] Максимальный адрес SCM (MSA) 532: значение, которое указывает зависящий от модели максимальный адрес SCM. Оно представляет собой адрес SCM последнего байта в наивысшем адресуемом приращении SCM.

[00296] Размер приращений SCM (IS) 534: значение, которое отображает размер каждого приращения SCM в списке адресов SCM и представляет собой, например, степень двойки.

[00297] Максимальный счетчик 536 блоков MSB (MMC): значение, которое указывает максимальное число блоков спецификации перемещения (MSB), которое может быть указано в блоке операций EADM (AOB).

[00298] Максимальные конфигурируемые приращения SCM (MCI) 538: значение, которое представляет собой максимальное количество приращений SCM, которое может конфигурироваться в запрашиваемую конфигурацию.

[00299] В одном варианте осуществления изобретения, MCI не превышает 2(64-IS). Например, для размера приращения SCM 16 Гбайт, MCI≤2(64-34) поскольку все приращения SCM по 16 Гбайт должны быть адресуемыми в пределах ограничения адресации 64-битового адреса. Кроме того, ((MCI+1)% IS)-1 не превышает зависящий от модели максимальный адрес SCM.

[00300] Количество конфигурируемых приращений SCM (NCI) уменьшает общий размер (TS), который может указываться, когда выполняется описываемая ниже успешная команда Configure Storage Class Memory, так что TS≤(MCI-NCI). Однако основываясь на пропускной способности системы в целом и выделений, уже сделанных для других конфигураций, приращения SCM в инициализированном состоянии могут быть или могут не быть способны полностью удовлетворять запрос на в противном случае достоверное конфигурирование вплоть до предела MCI для запрашиваемого конфигурирования.

[00301] Поле 540 общего количества инициализированных приращений SCM в CPC: значение, которое отображает количество приращений SCM в инициализированном состоянии для системы (например, для центрального процессорного комплекса (CPC)). Если система логически разбита, оно представляет собой количество приращений, доступное в целом для выделения разделам/разделами.

[00302] Поле 542 общего количества неинициализированных приращений SCM в CPC: значение, которое отображает количество приращений SCM в неинициализированном состоянии для системы (например, для (СРС)).

[00303] Размер 544 блока измерения SCM: значение, которое представляет собой размер блока (BS) в байтах для блока измерения SCM. В одном примере оно представляет собой степень 2, и максимальный размер блока измерения SCM составляет, например, 4096 байт.

[00304] Максимальное количество частей 546 ресурса SCM: значение, которое представляет собой максимальное количество частей ресурса (RP) (например, адаптеров ввода-вывода) SCM на CPC. Каждое приращение SCM связано с одной из частей ресурса SCM. Каждый ресурс SCM (например, один или несколько адаптеров ввода-вывода и один или несколько SSD) содержит одну или несколько частей. Максимальное количество частей ресурса SCM составляет, например, 509.

[00305] В одном примере термин «часть ресурса» определен для использования для получения измерительной информации, относящейся к твердотельному запоминающему устройству. Каждое приращение SCM может распределяться по нескольким адаптерам, и каждый адаптер содержит для передачи некоторые данные об использовании/измерении. Так, каждый выдаваемый блок измерения идентифицируется кортежем, состоящим из идентификатора приращения плюс идентификатор ресурса.

[00306] Размер 548 единицы данных SCM: Зависящее от модели значение, которое указывает количество байтов, которые включены в единицу данных SCM. В одном примере единица данных определяется для использования при получении измерительной информации, относящейся к твердотельному запоминающему устройству. Число, которое сообщается, представляет собой число единиц данных, а не число байтов.

[00307] Маркер 550 продолжения: зависящее от модели значение, посредством которого последующая выдача команды SSI может продолжаться в точке продолжения, отображаемой маркером. Содержимое маркера продолжения зависит от модели.

[00308] Список 552 адресов твердотельного запоминающего устройства: начало списка адресов SCM. Когда сохраненный код ответа представляет собой предварительно определенное значение, сохраняется ряд записей списка адресов SCM (SALE) (например, сохраняется (Length - 96)/16 записей SALE).

[00309] В одном примере сохраняемое количество записей SALE зависит от количества приращений SCM в конфигурации запросчика, от статуса каждой из них при выполнении команды, и от модели канальной подсистемы. Сохраняется нулевое или большее количество записей SALE, и фактическое сохраненное количество определяется, например, путем вычитания 96 из размера блока ответа (длина), а затем деления этого результата на 16.

[00310] Каждая запись в списке адресов SCM (SALE) отображает одно приращение SCM, которое занимает диапазон адресов SCM. Начальный адрес SCM приращения SCM, отображаемый посредством SALE, содержится в SALE и в адресе SCM первого байта соответствующего приращения SCM. Конечный адрес вычисляется, в одном примере, путем добавления размера приращения SCM в байтах к начальному адресу SCM и затем вычитания единицы. Он представляет собой адрес SCM последнего байта приращения SCM. Твердотельное запоминающее устройство, отображаемое посредством SALE, представляет собой непрерывный набор местоположений байтов SCM, который, в одном варианте осуществления изобретения, начинается на естественной границе 2IS

[00311] SALE сохраняется, когда соответствующее приращение SCM находится в сконфигурированном состоянии, и в блоке ответа доступно пространство для SALE. Если пространство в списке адресов SCM блока ответа исчерпано, значение сохраняется в маркере продолжения, и выполнение завершается со специальным кодом ответа.

[00312] Два или большее количество записей SALE сохраняются в порядке возрастания их адресов SCM.

[00313] Один вариант осуществления SALE описывается согласно ФИГ.5C. В одном примере SALE 552 содержит, например:

[00314] Адрес 560 SCM (SA): значение, которое представляет собой начальный адрес SCM байта 0 соответствующего приращения SCM в адресном пространстве SCM, выровненного по естественной границе, определяемой размером приращения SCM (2IS байт).

[00315] Атрибут 562 сохраняемости (P): значение, которое указывает текущее правило сохраняемости, применимое к приращению SCM. Правилу сохраняемости следует любое местоположение в пределах приращения SCM. Возможные правила сохраняемости включают:

[00316] правило 1 - сохранять данные при отключении питания.

[00317] Правило 2 - сохранять данные до сброса по включению питания или IML.

[00318] Состояние 564 операций: значение, которое указывает состояние операций приращения твердотельного запоминающего устройства, отображаемого посредством SALE. Состояние операций достоверно только тогда, когда связанное приращение SCM находится в сконфигурированном состоянии.

[00319] Примеры состояний операций включают:

[00320] рабочее (Op): твердотельное запоминающее устройство, отображаемое посредством SALE, доступно для всех операций ввода-вывода. Вход в рабочее состояние происходит при успешном конфигурировании и может происходить повторно при выходе из состояния временной или постоянной ошибки.

[00321] Временная ошибка (ТЕ): твердотельное запоминающее устройство, отображаемое посредством SALE, не доступна ни для каких операций ввода-вывода. Состояние данных недостоверно, но содержимое данных сохранено при переходе из рабочего состояния к временной ошибке. Вход в состояние временной ошибки происходит из рабочего состояния, когда отсутствует доступ к приращению SCM.

[00322] Постоянная ошибка (РЕ): твердотельное запоминающее устройство, отображаемое посредством SALE, не доступно ни для каких операций ввода-вывода. Состояние данных недостоверно, и данные потеряны. Вход в состояние постоянной ошибки происходит из временной ошибки или из рабочего состояния, когда распознается неисправимая ошибочная ситуация.

[00323] Когда операция завершается с указателем постоянной ошибки, установленным в коде квалификатора исключительных ситуаций блока ответа EADM, по меньшей мере, это соответствующее приращение SCM вошло в состояние постоянной ошибки. Однако в состояние постоянной ошибки могло войти больше одного приращения SCM.

[00324] Когда приращение SCM не находится в рабочем состоянии, операция ввода-вывода, которая обращается к местоположению в приращении, распознает проверку средства расширенного асинхронного перемещения данных или с временной, или с постоянной ошибкой, установленной в коде квалификатора исключительных ситуаций блока ответа EADM.

[00325] Состояние 566 данных: значение, которое указывает состояние данных содержимого приращения твердотельного запоминающего устройства, отображаемого посредством SALE. Состояние данных является достоверным, когда связанное приращение SCM находится в сконфигурированном и рабочем состояниях.

[00326] Примеры состояний данных включают:

[00327] установлено на ноль - все содержимое приращения SCM представляет собой нули.

[00328] Достоверно - содержимое приращения SCM представляет собой накопление всех успешных операций, относящихся к типу записи. Еще не записанные местоположения в приращении остаются или установленными на ноль, или непредсказуемыми.

[00329] Непредсказуемое - содержимое приращения SCM перед любой операцией ввода-вывода, относящейся к типу записи, неизвестно. После того, как осуществлена одна или несколько операций, относящихся к типу записи, содержимое данных других незаписанных местоположений остается непредсказуемым, даже если успешно записанные местоположения приводят к состоянию данных приращения SCM, которое становится достоверным.

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

[00331] Ранг 568: значение, которое указывает концептуальное качество приращения твердотельного запоминающего устройства, отображаемого посредством SALE. Ранг является достоверным только тогда, когда связанное приращение SCM находится в сконфигурированном и рабочем состояниях. Нулевое значение означает, что ранга не существует. Ненулевое значение в указанном диапазоне означает, что ранг существует. В данном примере значение ранга, равное единице, представляет собой высший, или лучший, ранг. Значение ранга, равное пятнадцати, представляет собой низший, или худший, ранг. При прочих равных условиях, SCM с более высоким рангом должна являться предпочтительной перед SCM с менее высоким рангом.

[00332] R 570: данное поле указывает, что приращение SCM распознает операцию освобождения. С этим связаны следующие поведения.

[00333] 1. Освобожденный блок является первым, подлежащим записи перед тем, как он будет прочитан, в противном случае, если чтение предшествует записи, распознается ошибка операции чтения. При такой ошибке приращение SCM остается в рабочем состоянии.

[00334] 2. При начальной конфигурации состояние данных установлено на ноль.

[00335] 3. Программа может осуществлять специальную операцию, называемую освобождением, которая помещает указанный блок в освобожденную ситуацию.

[00336] ID 572 ресурса: ненулевое значение представляет собой идентификатор ресурса (RID) для ресурса, который обеспечивает приращение SCM отображаемое посредством SALE. Когда RID равен нулю, не указан ни один ID ресурса. В одном из частных примеров, RID отображает столько адаптеров и SSD, сколько обеспечивают для приращения SCM запоминающее устройство. Поскольку могут применяться некоторые алгоритмы RAID, или расслоение с целью улучшения производительности путем допуска параллельных операций ввода-вывода на нескольких адаптерах/SSD, RID может отображать составную сущность.

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

[00338] Со ссылкой, в первую очередь, на ФИГ.6A описываются состояния конфигурации и события/действия, которые приводят к переходам в этих состояниях. Как показано, состояния SCM представляют сконфигурированное состояние, состояние простоя и зарезервированное состояние. SCM может помещаться в состояние простоя из зарезервированного состояния, а затем из состояния простоя в сконфигурированное состояние. Из сконфигурированного состояния SCM может быть деконфигурирована и введена в зарезервированное состояние.

[00339] Со ссылкой на ФИГ.6B показаны состояния операций и события, которые приводят к переходам в указанных состояниях. Для того чтобы стать сконфигурированным, приращение SCM должно находиться в состоянии простоя, и при успешном завершении действия по конфигурированию оно находится в рабочем состоянии- Первая запись в приращение SCM в установленном на ноль состоянии переводит его в достоверное состояние. Промежуточное отключение питания, а затем включение питания на приращении SCM, которое не указано, как обладающее сохраняемостью по правилу 1, переводит приращение SCM в непредсказуемое состояние.

[00340] Ошибка (E) может вызывать переход в состояние временной ошибки (TE) или в состояние постоянной ошибки (РЕ) в зависимости от зависящей от модели специфики ошибки. Приобретение (A) соединяемости может приводить к переходу из состояния временной ошибки в рабочее (Op) состояние. Деконфигурирование приращения SCM может происходить независимо от его состояния операций.

[00341] ФИГ.6B также иллюстрирует состояния данных при нахождении в рабочем состоянии согласно тому, каким образом происходил вход в рабочее состояние. Состояние данных является достоверным и распространяется на соответствующее приращение SCM, когда оно является сконфигурированным и находится в рабочем состоянии. Достоверными состояниями данных являются: установленное на ноль, непредсказуемое и достоверное состояния. Следующее представляет собой возможные состояния данных при различных входах в рабочее состояние.

[00342] * Из состояния простоя - установленное на ноль (z)

[00343] * Из состояния временной ошибки - достоверное (v)

[00344] * Из состояния постоянной ошибки - непредсказуемое (u) или установленное на ноль (z)

[00345] * Из рабочего состояния - достоверное (v) - первая запись

[00346] * Из рабочего состояния - непредсказуемое (u) - силовой цикл и сохраняемость не по правилу 1.

[00347] Если приращение не находится в рабочем состоянии, состояние данных является недостоверным.

[00348] При первом конфигурировании и перед первой записью данные приращения SCM находятся в установленном на ноль состоянии, что означает, что все его содержимое представляет собой нули.

[00349] Несмотря на то, что содержание данных приращения SCM не изменяется при переходе в состояние временной ошибки, приращение не является доступным. Таким образом, высказывание о том, что данные являются достоверными, может быть описательным, но не слишком значимым из-за отсутствия доступности программы. Поэтому состояние данных в таком сценарии является недостоверным. Также на основе ошибки, которая вызывает переход из рабочего состояния к временной ошибке, если затрагивается целостность данных, происходит вход в состояние постоянной ошибки, состояние данных остается недостоверным, и данные являются потерянными. Если параллельное исправление может перевести приращение SCM, находящееся в состоянии постоянной ошибки, в рабочее состояние как без деконфигурирования, так и без повторного конфигурирования, оригинальные данные по-прежнему являются потерянными, и то, является состояние данных непредсказуемым или установленным на ноль, зависит от модели.

[00350] Сохраняемость приращения SCM и его характеристики RAS (надежность, доступность и пригодность к эксплуатации) также могут определять изменение состояния данных от достоверного к непредсказуемому. Если сохраняемость превышается, ожидается, что состояние данных перейдет из достоверного в непредсказуемое.

[00351] Переход или из установленного на ноль, или из непредсказуемого состояния данных в достоверное состояние данных происходит с первой успешной записью. Из-за любой разности между размером записанных данных и размером целевого приращения SCM, изменение в достоверное состояние не описывает фактическую ситуацию для любого еще не записанного местоположения данных. Такое местоположение перед первым доступом для записи фактически по-прежнему описывается как установленное на ноль или непредсказуемое.

[00352] После того, как приращение SCM сконфигурировано, незапрашиваемое уведомление тогда делается ожидающим, когда происходит любое одно или несколько событий, которые являются наблюдаемыми в ответ на команду Store SCM Information. Примеры:

[00353] 1. Состояние операций изменяется от рабочего к временной ошибке или постоянной ошибке, но не сообщается в неверной операции.

[00354] 2. Состояние операций изменяется от временной ошибки к рабочему.

[00355] 3. Состояние операций изменяется от временной ошибки к постоянной ошибке.

[00356] 4. Изменение ранга.

100357] Примеры, когда незапрашиваемые уведомления не делаются ожидающими, включают следующее:

[00358] 1. Состояние данных изменяется от установленного на ноль или непредсказуемого к достоверному.

[00359] 2. Завершена команда Configure Storage Class Memory.

[00360] 3. Завершена команда Deconfigure Storage Class Memory.

[00361] Когда уведомление является ожидающим, программа изучает уведомление и может выдать команду Store SCM Information для получения информации. Команда Store SCM Information также может выдаваться в другие моменты времени, в которые программа хотела бы получить информацию о SCM и/или о SALE.

[00362] В одном примере уведомление содержит выданное программе прерывание автоматической проверки с соответствующим CRW, указывающим отчет о событии. Программа выдает команду CHSC Store Event Information и получает блок ответа с кодом содержимого, содержащим сигнал уведомления об изменении твердотельного запоминающего устройства.

[00363] В одном варианте осуществления изобретения, команда Store SCM Information(SSI) представляет собой команду канальной подсистемы, выдаваемую программой (например, операционной системой) для получения информации о твердотельном запоминающем устройстве и/или о записи списка адресов SCM. В одном примере программа выдает команду Channel Subsystem Call, и команда SSI указывается в командном блоке команды, которая направляется канальной подсистеме. Команда осуществляется в канальной подсистеме, и ответ выдается в блоке ответа, который представляет собой остающуюся часть блока управления размера 4 Кбайт (т.е. запрашиваемая информация сохраняется в области основного запоминающего устройства, указанной для блока ответа). Дополнительные подробности, относящиеся к работе данной команды, описываются со ссылкой на ФИГ.5D.

[00364] В начале на этапе 580 программа генерирует вышеуказанный блок запроса для запроса Store SCM Information. Блок запроса принимается канальной подсистемой на этапе 582, и в отношении достоверности блока запроса (например, достоверного поля длины, достоверного формата блока запроса команды, установленной команды и т.д.) делается одна или несколько проверок достоверности. Если на этапе запроса 584 запрос не является достоверным, то на этапе 586 в блок ответа помещается код ответа, указывающий на проблему, и на этапе 592 выдается блок ответа.

[00365] Однако если на этапе запроса 584 запрос является достоверным, то канальная подсистема на этапе 588 получает информацию от машины (например, процессоров и т.д.), и на этапе 590 заполняет блок ответа. На этапе 592 выдается блок ответа. Например, информация содержится в энергонезависимом запоминающем устройстве машины и загружается программно-аппаратным обеспечением в основное запоминающее устройство, только доступное для программно-аппаратного обеспечения в ходе инициализации системы. Канальная подсистема (т.е., в данном случае, программно-аппаратное обеспечение) получает информацию путем ее считывания из основного запоминающего устройства, только доступного для программно-аппаратного обеспечения, и заполняет блок ответа.

[00366] С учетом получения информации о твердотельном запоминающем устройстве или в противном случае может быть принято решение об изменении конфигурации твердотельного запоминающего устройства. Решение может приниматься вручную или автоматически при помощи программы или другой сущности.

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

[00367] В одном примере для конфигурирования твердотельного запоминающего устройства используется команда Configure Storage Class Memory. Эта команда запрашивает объем твердотельного запоминающего устройства, подлежащий конфигурированию, из доступного пула системы. Объем указывается как размер, кодируемый как число приращений SCM.

[00368] Если не определено иное, данное количество приращений SCM, используемых для удовлетворения запроса, находится в инициализированном состоянии. Если запрашиваемое количество приращений SCM может вызывать превышение предела максимума конфигурируемых приращений SCM, предусматривается специальный код ответа.

[00369] Содержимое каждого приращения составляют нули с достоверным СВС. Применимое правило сохраняемости, связанное с каждым конфигурируемым приращением SCM, устанавливается, например, при помощи элементов ручного управления.

[00370] Один вариант осуществления блока запроса команды для команды Configure Storage Class Memory проиллюстрирован на ФИГ.7A. В одном примере блок 700 запроса конфигурирования твердотельного запоминающего устройства содержит:

[00371] Длину 702: значение, которое указывает длину блока запроса команды.

[00372] Код 704 команды: значение, которое указывает код команды для команды Configure Storage Class Memory.

[00373] Формат 706 (FMT): значение, которое указывает формат блока запроса команды.

[00374] Общий размера (TS) 708: значение, которое указывает размер запрашиваемого твердотельного запоминающего устройства, кодируемый как число приращений SCM. Число уже сконфигурированных приращений SCM плюс TS не должно превышать предел максимума конфигурируемых приращений SCM (MCI). Если количество приращений SCM в инициализированном состоянии меньше указанного общего размера, предусматривается специальный код ответа.

[00375] Коррелятора асинхронного завершения (ACC) 710: значение, которое выдается в описываемом ниже поле уведомления об асинхронном завершении уведомляющего ответа. Коррелятор служит для продолжения оригинального потока, который инициировал запрос.

[00376] Один вариант осуществления блока ответа на команду для команды Configure Storage Class Memory проиллюстрирован на ФИГ.7B. В одном варианте осуществления изобретения блок 730 ответа на команду содержит:

[00377] Длину 732: значение, которое указывает длину блока ответа команды.

[00378] Код 734 ответа: значение, которое описывает результаты попытки выполнения команды Configure Storage Class Memory.

[00379] Если в поле кода ответа сохраняется определенный код ответа, для окончания обработки команды инициируется асинхронный процесс. Если в поле кода ответа сохраняется иной код ответа, чем определенный код, ни одно приращение SCM не конфигурируется, ни один асинхронный процесс не инициируется и не делается никакого последующего уведомления. Завершение асинхронного процесса указывается в уведомляющем ответе.

[00380] Формат 736 (FMT): значение, которое указывает формат блока ответа команды.

[00381] Команда Configure Storage Class Memory выдается программой для запроса объема твердотельного запоминающего устройства, подлежащей конфигурированию в адресное пространство SCM. Один вариант осуществления логики, используемой для конфигурирования SCM, описывается со ссылкой на ФИГ.7C.

[00382] Вначале, на этапе 740 программа выдает команду Channel Subsystem Call, которая содержит команду Configure SCM. Блок запроса команды Configure SCM на этапе 742 принимается канальной подсистемой, и канальная подсистема на этапе 744 предпринимает попытку выполнения команды. Если на этапе запроса 746 попытка выполнения указанной команды генерирует код ответа, который не указывает на успех, то код ответа на этапе 748 помещается в блок ответа на команду Configure SCM, и на этапе 750 выдается блок ответа.

[00383] Если на этапе запроса 746 указывается успешный код ответа, то код ответа на этапе 752 помещается в блок ответа, и блок ответа выдается на этапе 754. В данном примере успешный код ответа указывает, что поле длины блока запроса является достоверным; команда является доступной в системе; блок запроса команды имеет достоверный формат; канальная подсистема способна осуществить команду (т.е. не занята); запрошенный общий размер не превышает предел максимума конфигурируемых приращений SCM запрашиваемой конфигурации; и запрошенный общий размер не превышает количество приращений SCM в инициализированном состоянии.

[00384] Кроме того, на этапе 756 для завершения конфигурирования инициируется асинхронный процесс. Дополнительные подробности, относящиеся к данной обработке, описываются со ссылкой на ФИГ.7D.

[00385] В одном варианте осуществления изобретения асинхронная обработка на этапе 760 осуществляет конфигурирование для выделения одного или нескольких приращений. Например, для каждого сконфигурированного приращения SCM внутренние элементы управления изменяются так, чтобы позволить вновь сконфигурированному приращению быть доступным для запросов перемещения ввода-вывода в данный раздел. В частности, с учетом получения канальной подсистемой команды CHSC Configure программно-аппаратное обеспечение канальной подсистемы опрашивает внутренние таблицы для подтверждения того, что имеется достаточно приращений для удовлетворения запроса, и для гарантии того, что запрос не превышает максимум конфигурируемых приращений SCM для данной конфигурации. Если запрос является достоверным, программно-аппаратное обеспечение обновляет одну или несколько таблиц для выделения приращения (приращений) конфигурации и помещения приращения (приращений) в рабочее состояние для конфигурирования. Приращения затем являются доступными для запросов перемещения ввода-вывода (описанных выше) из конфигурации. Завершение асинхронного процесса указывается на этапе 762 в уведомляющем ответе.

[00386] Данные ответа уведомления для команды Configure Storage Class Memory выдаются в блоке ответа на команду сохранения информации о событиях (SEI). Один вариант осуществления формата блока ответа уведомления, используемый для команды Configure Storage Class Memory описывается со ссылкой на ФПГ.8A.

[00387] В одном варианте осуществления изобретения блок 800 ответа уведомления на команду Configure Storage Class Memory содержит:

[00388] Длину 802: значение, которое указывает длину блока ответа на команду.

[00389] Код 804 ответа: значение, которое описывает результаты попытки выполнения команды Store Event Information CHSC.

[00390] Формат 806 (FMT): значение, которое указывает формат блока ответа на команду.

[00391] Тип 808 уведомления: значение, которое указывает, что данное уведомление является относящимся к EADM.

[00392] P 810: если оно установлено, указывает, что канальная подсистема содержит ожидающую информацию о событиях в дополнение к информации, предоставляемой в ответ на данную команду CHSC.

[00393] V 812: если оно установлено, указывает, что канальная подсистема распознала ситуацию переполнения, и информация о событиях была потеряна.

[00394] Код 814 содержимого: значение, которое указывает, что оно представляет собой ответ на завершение выполнения асинхронного процесса, инициированного запросом команды Configure Storage Class Memory.

[00395] Вторичный код 816 ответа: значение, которое дополнительно описывает результаты попытки выполнения команды Configure SCM.

[00396] Когда вторичный код ответа представляет собой определенное значение, полный объем твердотельного запоминающего устройства был сконфигурирован, как запрашивалось первоначально. В противном случае могут предусматриваться коды ответа, которые указывают, например, на недостоверное поле длины, на то, что не установлена команда Configure SCM, блок команды конфигурирования SCM имеет недостоверный формат, общий запрашиваемый размер может превышать предел MCI, общий запрашиваемый размер превышает количество приращений SCM в инициализированном состоянии, канальная подсистема занята.

[00397] Коррелятор 818 асинхронного завершения (АСС): значение, которое первоначально указывается в соответствующем блоке запроса команды.

[00398] Один вариант осуществления команды Store Event Information, используемой для выдачи блока уведомляющего ответа для команды Configure Storage Class Memory, описывается со ссылкой на ФИГ.8B-8C.

[00399] Команда Store Event Information используется для сохранения информации о событиях, которая канальной подсистемой была сделана ожидающей. Обычно, данная команда выполняется в результате того, что программа получила отчет канала об ожидающей информации о некотором событии.

[00400] Выполнение команды Store Event Information может изменять информацию, содержащуюся в канальной подсистеме. Команда Store Event Information выполняется синхронно.

[00401] Один вариант осуществления блока запроса команды для команды Store Event Information описывается со ссылкой на ФИГ.8B. В одном примере блок 830 запроса содержит:

[00402] Длину 832: данное поле указывает длину блока запроса команды. [00403] Код 834 команды: данное поле указывает команду Store Event Information.

[00404] Формат 836 (FMT): значение, которое указывает формат блока запроса команды.

[00405] Маска 838 выбора типа уведомления (NTSM): макса, где каждая позиция бита соответствует значению селектора логического процессора (LPS) с тем же численным значением. В одном примере, бит 0 игнорируется и полагается равным единице. Когда позиция бита в указанном диапазоне, начиная с 1, равна нулю, тип уведомления, соответствующий этой позиции бита, не сохраняется в блоке ответа, и, если распознается как ожидающий, отбрасывается. Когда указанный бит равен единице, тип уведомления, соответствующий этой позиции бита, может сохраняться в блоке ответа.

[00406] В одном варианте осуществления изобретения, со ссылкой на ФИГ.8C, ниже описывается блок 850 ответа для команды Store Event Information.

[00407] Длина 852: значение, которое указывает исходную длину блока ответа на команду. Длина по завершении зависит от кода ответа, который сохраняется в результате попытки выполнения команды Store Event Information.

[00408] Если в поле кода ответа сохраняется иной код ответа, чем код, указывающий на успех, информация не сохраняется в области данных ответа.

[00409] Если в поле кода ответа сохраняется код ответа, указывающий на успех, информация о событии сохраняется в области данных ответа.

[00410] Код 854 ответа: значение, которое описывает результаты попытки выполнения команды Store Event Information.

[00411] Для команды Store Event Information область данных ответа содержит часть фиксированной длины и часть переменной длины.

[00412] Для ответа указанного формата, когда NT является ненулевым, формат зависит от конкретного типа уведомления, и формат поля, зависящего от кода содержимого, зависит от конкретного типа уведомления и поля кода содержимого (CC) вместе взятых.

[00413] Формат 856 (FMT): значение, которое указывает формат блока ответа на команду.

[00414] Тип 858 уведомления (NT): значение, которое указывает тип уведомления (NT). Для команды Configure SCM предусматривается специальное значение.

[00415] Флаг 860 P: если установлен, указывает, что канальная подсистема содержит ожидающую информацию о событиях в дополнение к информации, предоставляемой в ответ на данную команду CHSC. Программа может получать дополнительную информацию путем повторного выполнения команды Store Event Information. Если не установлена, данный флаг указывает, что канальная подсистема не содержит дополнительной ожидающей информации о событиях.

[00416] Флаг 862 V: когда установлен, указывает, что канальная подсистема распознала ситуацию переполнения, и информация о событиях была потеряна. Ситуация переполнения была распознана в то время, как информация о событиях, не содержащаяся в области данных ответа, являлась самой недавней ожидающей информацией. Переполнение не оказывает влияния на информацию, содержащуюся в области данных ответа.

[00417] Код 864 содержимого (CC): значение, которое описывает тип информации, которая содержится в области данных ответа. В одном примере, данное значение указывает уведомление об изменении твердотельного запоминающего устройства, в котором одно или несколько приращений SCM изменили состояние или статус.

[00418] Поле 866, зависящее от кода содержимого: данное поле может содержать дополнительную информацию, относящуюся к событию.

[00419] Успешное уведомление об изменении конфигурации может подсказать программе выдачу команды Store SCM Information для получения подробностей, относящихся к конфигурации.

[00420] Помимо увеличения памяти твердотельного запоминающего устройства, память твердотельного запоминающего устройства может быть уменьшена. Команда Deconfigure Storage Class Memory запрашивает объем твердотельного запоминающего устройства, подлежащий удалению из адресного пространства SCM в запрашиваемой конфигурации. Приращение SCM, подлежащее деконфигурированию, должно находиться в сконфигурированном состоянии.

[00421] Приращения SCM, подлежащие деконфигурированию, указываются в записи списка запроса приращений SCM, описываемого в данном описании. В записи списка запроса приращений SCM (SIRLE) может указываться одно или несколько непрерывных приращений SCM. Для каждого списка приращений (также известного как экстент), который не являются непрерывным с любым другим списком приращений, может указываться отдельная SIRLE.

[00422] Независимо от правил сохраняемости, успешное деконфигурирование приращения SCM помещает приращение в неинициализированное состояние. Когда завершается установка на ноль, приращение SCM переходит из неинициализированного состояния в инициализированное состояние.

[00423] Один вариант осуществления блока запроса команды для команды Deconfigwe Storage Class Memory проиллюстрирован на ФИГ.9A. Блок 900 запроса команды для команды Deconfigure Storage Class Memory содержит, например:

[00424] Длину 902: значение, которое указывает длину блока запроса команды. В одном примере длина равна 32+(N% 16) байт, где N - число записей списка запроса приращений SCM (записей SIRLE). Достоверная длина в данном примере без остатка делится на 16 и находится в диапазоне (32+1%16)≤L1≤(32+253% 16).

[00425] Код 904 команды: значение, которое указывает код команды для команды Deconfigure Storage Class Memory.

[00426] Формат 906 (FMT): значение, которое указывает формат блока запроса команды.

[00427] Коррелятор 908 асинхронного завершения (АСС): значение, которое выдается в вышеописанном уведомлении об асинхронном завершении.

[00428] Список 910 запроса приращений SCM: данное поле содержит список запроса приращений SCM (SIRL). Список запроса приращений SCM содержит одну или несколько записей (SIRLE). Длина SIRL определяется из значения поля длины.

[00429] Запись списка запроса приращений SCM (SIRLE) указывает размер и местоположение указанного экстента твердотельного запоминающего устройства (например, списка приращений). Экстент, или экстент SCM, представляет собой указанный размер твердотельного запоминающего устройства.

[00430] Со ссылкой на ФИГ.9B, в одном примере, SIRLE 920 содержит:

[00431] общий размер 922 (TS): значение, которое указывает размер твердотельного запоминающего устройства, подлежащий деконфигурированию, кодируемый как число приращений SCM.

[00432] Начальный адрес 924 SCM (SA): значение, которое представляет собой адрес SCM и является местоположением в адресном пространстве SCM, из которого следует удалить первое, или единственное, приращение SCM, деконфигурируемое посредством SIRLE. Положения младших битов, которые могут составлять смещение в пределах первого приращения SCM, в данном примере игнорируются и полагаются равными нулю.

[00433] Когда общий размер больше единицы, каждое дополнительное приращение SCM за первым приращением располагается по адресу SCM, который делится без остатка на размер приращения SCM, которое содержит сконфигурированное приращение SCM, и положение которого является непрерывным с последним байтом предыдущего приращения SCM. Иными словами, в следующем, непрерывном местоположении.

[00434] Если пространство, описываемое начальным адресом и общим размером вместе взятыми, не полностью заполнено сконфигурированными приращениями SCM, предусматривается указанный код ответа, не деконфигурируется ни одно приращение SCM, не инициируется ни один асинхронный процесс, и не появляется ни одного последующего уведомления.

[00435] При успешном завершении, каждое деконфигурированное приращение SCM входит в зарезервированное состояние и затем устанавливается на ноль перед помещением в состояние простоя.

[00436] Блок ответа на команду для команды Deconfigure Storage Class Memory проиллюстрирован на ФИГ.9C. В одном варианте осуществления изобретения, блок 950 ответа на команду содержит:

[00437] длине 952: значение, которое указывает длину блока ответа на команду.

[00438] Код 954 ответа: значение, которое описывает результаты попытки выполнения команды Deconfigure Storage Class Memory.

[00439] Если в поле кода ответа сохраняется код ответа с указанным значением, для окончания обработки команды инициируется асинхронный процесс. Если в поле кода ответа сохраняется иной код ответа, чем указанное значение, ни одно приращение SCM не деконфигурируется, не инициируется никакой асинхронный процесс, и не делается никакого последующего уведомления. Завершение асинхронного процесса указывается в уведомляющем ответе.

[00440] Перед тем, как синхронная часть команды Deconfigure Storage Class Memory завершается с указанным кодом ответа, все записи в списке запроса приращений SCM опрашиваются с тем, чтобы гарантировать, что все указанные приращения SCM находятся в сконфигурированном состоянии.

[00441] Формат 956 (FMT): значение, которое указывает формат блока ответа на команду.

[00442] Один вариант осуществления логики, связанной с командой Deconfigure SCM описывается со ссылкой на ФИГ.9D-9E.

[00443] В начале на этапе 970 программа выдает команду Channel Subsystem Call, которая содержит команду (Reconfigure SCM). Блок запроса команды Deconfigure SCM принимается канальной подсистемой на этапе 972, и канальная подсистема на этапе 974 предпринимает попытку выполнения этой команды. Если попытка выполнения команды на этапе запроса 976 дает код ответа, который не указывает на успех, то на этапе 978 код ответа помещается в блок ответа на команду Deconfigure SCM, и на этапе 980 выдается блок ответа.

[00444] Если на этапе запроса 976 указывается успешный код ответа, то на этапе 982 код ответа помещается в блок ответа, и на этапе 984 выдается блок ответа. В данном примере успешный код ответа указывает, что поле длины блока запроса является достоверным; команда в данной системе является доступной; блок запроса команды имеет достоверный формат; канальная подсистема способна осуществить команду (т.е. не занята); и приращения SCM изначально находятся в сконфигурированном состоянии.

[00445] Кроме того, для завершения деконфигурирования на этапе 986 инициируется асинхронный процесс. Дополнительные подробности, относящиеся к данной обработке, описываются со ссылкой на ФИГ.9E.

[00446] В одном варианте осуществления изобретения, деконфигурирование на этапе 990 осуществляет асинхронная обработка. Например, освобождается одно или несколько приращений. Приращение SCM переводится из сконфигурированного состояния в зарезервированное состояние. За входом в зарезервированное состояние следует процесс установки на ноль, и, после его завершения, приращение SCM переходит в состояние простоя. Завершение асинхронного процесса указывается на этапе 992 в уведомляющем ответе.

[00447] Данные уведомляющего ответа для команды Deconfigure Storage Class Memory выдаются в блоке ответа на команду Store Event Information CHSC (SEI). Один пример такого блока ответа описан со ссылкой на ФИГ.8A. Однако, в данном примере, код содержимого указывает, что это ответ на завершение выполнения асинхронного процесса, инициированного запросом команды Deconfigure Storage Class Memory.

Аналогично, вторичный код ответа дополнительно описывает результаты попытки выполнения команды Deconfigure Storage Class Memory.

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

[00449] 1. Указывать для данной конфигурации максимум конфигурируемых приращений (MCI);

[00450] 2. Выделять приращения для конфигурации;

[00451] 3. Освобождать приращения из конфигурации.

[00452] Панель также позволяет просматривать выделенные конфигурации приращения и MCI, а также количество приращений в доступном, недоступном и неинициализированном пулах. Когда, по причине действия SE, распределение приращений изменяется, или когда изменяется размер одного из пулов, конфигурациям отправляется уведомление.

[00453] Выше подробно было описано средство для администрирования твердотельного запоминающего устройства. Оно предусматривает абстракцию, позволяющую программе получать доступ к памяти без знания специфики этой памяти. Согласно одной или нескольким особенностям настоящего изобретения предложено средство для перемещения данных между основным запоминающим устройством и SCM; для сброса или освобождения SCM; для конфигурирования и деконфигурирования SCM; и для отыскания конфигурации SCM. Также предусматриваются и другие средства.

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

[00455] Подробности, относящиеся к канальным подсистемам и/или средству ADM, описаны в патенте США №5377337 под названием «Method and Means for Enabling Virtual Addressing Control By Software Users Over A Hardware Page Transfer Control Entity», выданном на имя Antognini et al. 27 декабря 1994 г.; патенте США №5442802 под названием «Asynchronous Co-Processor Data Mover Method and Means», выданном на имя Brent et al. 15 августа 1995 г.; и в патенте США №5526484 под названием «Method and System for Pipelining the Processing of Channel Command Words», выданном 11 июня 1996 г., каждый из которых ссылкой полностью содержится в данное описание.

[00456] Кроме того, дальнейшая информация, относящаяся к канальной подсистеме и командам, связанным с ней (для конкретной реализации архитектуры z/Architecture®

[00457] Ввод-вывод (I/O)

[00458] Термины «ввод» и «вывод» используются для описания передачи данных между устройствами ввода-вывода и основным запоминающим устройством. Операция, включающая такой тип передачи, называется операцией ввода-вывода. Средства, используемые для управления операциями ввода вывода, в совокупности называются канальной подсистемой. (Устройства ввода-вывода и их устройства управления присоединяются к канальной подсистеме.)

[00459] Канальная подсистема

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

[00461] Внутри канальной подсистемы находятся субканалы. Для каждого устройства ввода-вывода, доступного для программы посредством канальной подсистемы, предусматривается и предназначается один субканал.

[00462] Средство нескольких наборов субканалов является необязательным средством. Когда оно установлено, субканалы разбиваются на несколько наборов субканалов, и каждый набор субканалов может обеспечивать для устройства ввода-вывода один выделенный субканал. В зависимости от используемой модели и интерфейса для некоторых устройств ввода-вывода доступ разрешается только через определенные наборы субканалов.

[00463] Каждый субканал обеспечивает информацию, касающуюся связанного устройства ввода-вывода и его присоединения к канальной подсистеме. Субканал также обеспечивает информацию, касающуюся операций ввода-вывода и других функций, включаемых в связанное устройство ввода-вывода. Субканал представляет собой средства, при помощи которых канальная подсистема доставляет информацию о связанных устройствах ввода вывода центральным процессорам, которые получают эту информацию путем выполнения команд ввода-вывода. Фактическое количество предоставляемых субканалов зависит от модели и конфигурации; максимальная адресуемость в каждом наборе субканалов составляет 0-65,535.

[00464] Устройства ввода-вывода присоединяются к канальной подсистеме через устройства управления посредством канальных трактов. Устройства управления могут присоединяться к канальной подсистеме посредством более чем одного канального тракта, а устройство ввода-вывода может присоединяться более чем к одному устройству управления. В зависимости от модели и конфигурации, в целом, отдельное устройство ввода-вывода может быть доступно для канальной подсистемы через субканал посредством не более чем восьми различных канальных трактов. Общее количество канальных трактов, предусматриваемое канальной подсистемой, зависит от модели и конфигурации; максимальная адресуемость составляет 0-255.

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

[00466] Канальная подсистема содержит общие средства управления операциями ввода-вывода. Когда указанные средства предусматриваются в форме отдельного, автономного оборудования, рассчитанного специально на управление устройствами ввода-вывода, операции ввода-вывода полностью совмещаются с действиями в центральных процессорах. Единственными циклами работы основного запоминающего устройства, требуемыми канальной подсистемой в ходе операций ввода-вывода, являются те из них, которые необходимы для передачи данных и управляющей информации из конечных местоположений в основном запоминающем устройстве или в эти конечные местоположения, наряду с теми циклами работы, которые могут потребоваться канальной подсистеме для доступа к субканалам, когда они реализуются как часть неадресуемого основного запоминающего устройства. Указанные циклы не задерживают программы ЦП, за исключением случаев, когда и ЦП, и канальная подсистема параллельно предпринимают попытки обращения к одной и той же области основного запоминающего устройства.

[00467] Наборы субканалов

[00468] Когда средство нескольких наборов субканалов установлено, субканалы разбиваются на несколько наборов субканалов. Может существовать до четырех наборов субканалов, каждый из которых идентифицируется по идентификатору набора субканалов (SSID). Когда средство нескольких наборов субканалов не установлено, имеется только один набор субканалов с SSID, равным нулю. Когда средство нескольких наборов субканалов не разблокировано, видимым для программы является только нулевой набор субканалов.

[00469] Субканалы

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

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

[00472] На некоторых моделях субканалы предусматриваются в блоках. На таких моделях может предусматриваться больше субканалов, чем имеется присоединенных устройств. Субканалы, которые предусмотрены, но не содержат назначенных им устройств, не используются канальной подсистемой для осуществления каких-либо функций, и указываются путем сохранения связанного бита достоверности номера устройства как ноля в блоке информации о субканале в субканале.

[00473] Количество субканалов, предусматриваемых канальной подсистемой не зависит от количества канальных трактов к связанным устройствам. Например, устройство, доступное через альтернативные канальные тракты, по-прежнему отображается как единственный субканал. Когда установлено средство наборов субканалов, каждый субканал адресуется с использованием 16-битного номера субканала и двухбитного SSID.

[00474] После обработки ввода-вывода в субканале, запрошенной путем выполнения команды START SUBCHANNEL, ЦП освобождается для другой работы, а канальная подсистема собирает или разбирает данные и синхронизирует передачу байтов данных между устройством ввода-вывода и основным запоминающим устройством. Для выполнения этой задачи, канальная подсистема поддерживает и обновляет адрес и число, которые описывают адрес назначения или источника данных в основном запоминающем устройстве. Аналогично, когда устройства ввода-вывода создает сигналы, которые следует довести до внимания программы, канальная подсистема преобразовывает сигналы в информацию о статусе и сохраняет эту информацию в субканале, где она может быть отыскана программой.

[00475] Присоединение устройств ввода-вывода

[00476] Канальные тракты

[00477] Канальная подсистема связывается с устройствами ввода-вывода посредством канальных трактов между канальной подсистемой и устройствами управления. Устройство управления может быть доступно для канальной подсистемы посредством более чем одного канального тракта. Аналогично, устройство ввода-вывода может быть доступно для канальной подсистемы через более чем одно устройство управления, каждое из которых содержит один или несколько канальных трактов к канальной подсистеме.

[00478] Устройства, которые присоединяются к канальной подсистеме посредством нескольких канальных трактов, сконфигурированных в субканал, могут быть доступны для канальной подсистемы с использованием любого из доступных канальных трактов. Аналогично, устройство, содержащее средство динамической перестройки соединений и действующее в многотрактном режиме, может быть инициализировано для работы таким образом, чтобы устройство могло выбирать любой из доступных канальных трактов, сконфигурированных в субканал, при логической перестройке соединений с канальной подсистемой для продолжения цепочки операций ввода-вывода.

[00479] Канальная подсистема может содержать больше одного типа канальных трактов. Примерами типов канальных трактов, используемых канальной подсистемой, являются: интерфейс ввода-вывода ESCON, преобразованный интерфейс ввода-вывода FICON и интерфейс ввода-вывода IBM System/360 и System/370. Термин «интерфейс последовательного ввода-вывода» используется для обращения к интерфейсу ввода-вывода ESCON интерфейсу ввода-вывода FICON и преобразованному интерфейсу ввода-вывода FICON. Термин «интерфейс параллельного ввода-вывода» используется для обращения к интерфейсу ввода-вывода IBM System/360 and System/370.

[00480] Интерфейс ввода-вывода ESCON описан в публикации системной библиотеки IBM Enterprise Systems Architecture / 390 ESCON I/O Interface, SA22-7202, которая ссылкой полностью включена в данное описание.

[00481] Интерфейс ввода-вывода FICON описан в документе стандартов ANSI Fibre Channel - Single-Byte Command Code Sets-2 (FC-SB-2).

[00482] Интерфейс ввода-вывода IBM System/360 и System/370 описан в публикации системной библиотеки IBM System/360 and System/370 I/O Interface Channel to Control Unit OEMI, GA22-6974, которая ссылкой полностью включена в данное описание.

[00483] В зависимости от типа канального тракта средств, обеспечиваемых канальным трактом и устройством ввода-вывода, и устройства ввода-вывода, операция ввода-вывода может происходить в одном из трех режимов: кадровый мультиплексный режим, пакетно-монопольный режим или байтовый мультиплексный режим.

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

[00485] В пакетно-монопольном режиме устройство ввода-вывода монополизирует канальный тракт и остается логически соединенным с канальным трактом в течение передачи пакета информации. Ни одно другое устройство не может связываться по канальному тракту в течение времени передачи пакета. Пакет может состоять из нескольких байтов, всего блока данных, последовательности блоков со связанной управляющей информацией и информацией о статусе (длина блока может быть равной нулю) или из информации о статусе, которая монополизирует канальный тракт. Средства канального тракта, допускающие работу в пакетно-монопольном режиме, могут совместно использоваться несколькими параллельно работающими устройствами ввода-вывода.

[00486] Некоторые канальные тракты в ходе пакетно-монопольного режима могут допускать отсутствие передачи данных в течение приблизительно половины минуты, как, например, происходит, когда считывается длинный промежуток на магнитной ленте. Когда отсутствие передачи данных превышает установленный предел, может указываться сбой оборудования.

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

[00488] Обычно устройства с высокими требованиями к скоростям передачи данных работают с канальными трактами в кадровом мультиплексном режиме, более медленные устройства работают в пакетно-монопольном режиме, и самые медленные устройства работают в байтовом мультиплексном режиме. Некоторые устройства управления содержат ручной переключатель для установки желаемого режима работы.

[00489] Операция ввода-вывода, которая происходит на канальном тракте с параллельным типом интерфейса ввода-вывода, может происходить или в пакетно-монопольном режиме, или в байтовом мультиплексном режиме в зависимости от средств, обеспечиваемых канальным трактом и устройством ввода-вывода. Для увеличения производительности некоторые канальные тракты и устройства управления оснащаются средствами для высокоскоростной и потоковой передачи данных. Описание двух таких средств см. в публикации System Library publication IBM System/360 and System/370 I/O Interface Channel to Control Unit OEMI, GA22-6974, которая ссылкой полностью включена в данное описание.

[00490] Операция ввода-вывода, которая происходит на канальном тракте с последовательным типом интерфейса ввода-вывода, может происходить или в кадровом мультиплексном режиме, или в пакетно-монопольном режиме. Для увеличения производительности некоторые устройства управления, присоединяемые к последовательному интерфейсу ввода-вывода, предусматривают средство доставки программе данных ощущений параллельно с предоставлением статуса проверки устройства, если такое действие допускается программой.

[00491] В зависимости от устройства управления или канальной подсистемы доступ к устройству через субканал может быть ограничен типом с единственным канальным трактом.

[00492] Вышеописанные режимы и признаки оказывают влияние только на протокол, используемый для передачи информации по канальному тракту, и на скорость передачи. ЦП или канальными программами не могут наблюдаться никакие воздействия в отношении способов, которыми выполняются указанные программы.

[00493] Устройства управления

[00494] Устройство управления обеспечивает логические мощности, необходимые, чтобы приводить в действие и управлять устройством ввода-вывода, и приспосабливает признаки каждого устройства так, что оно может отвечать на стандартную форму управления, обеспечиваемую канальной подсистемой.

[00495] Связь между устройством управления и канальной подсистемой происходит по канальному тракту. Устройство управления принимает сигналы управления от канальной подсистемы, управляет распределением по времени передачи данных по канальному тракту и предоставляет показания относительно статуса устройства.

[00496] Устройство ввода-вывода, подключенное к устройству управления, может быть предназначено выполнять только определенные ограниченные операции, или оно может выполнять множество различных операций. Обычной операцией является перемещение среды записи и данных записи. Чтобы выполнять свои операции, устройство нуждается в подробных сигнальных последовательностях, специфических для своего типа устройства. Устройство управления декодирует команды, полученные от канальной подсистемы, интерпретирует их для конкретного типа устройства, и предоставляет сигнальную последовательность, требующуюся для выполнения операции.

[00497] Устройство управления может размещаться отдельно, или оно может быть физически и логически объединено с устройством ввода-вывода, канальной подсистемой или ЦП. Для большинства электромеханических устройств существует хорошо определенный интерфейс между устройством и устройством управления из-за различия в типе оборудования, требуемого устройством управления и устройством. Эти электромеханические устройства часто бывают устройствами типа, в котором из группы, подключенной устройству управления, чтобы передавать данные в момент времени (например, устройства на магнитной ленте или устройства доступа к диску), требуется только одно устройство, и элемент управления разделяется между некоторым числом устройств ввода-вывода. С другой стороны, в некоторых электронных устройствах ввода-вывода, таких как адаптер канал-канал, устройство управления не имеет собственной сущности.

[00498] С точки зрения программиста, большинство функций, выполняемых устройством управления, могут быть объединены с функциями, выполняемыми устройством ввода-вывода. Следовательно, как правило, в этом описании не делается конкретного упоминания об устройстве управления; выполнение операций ввода-вывода описывается, как если бы устройства ввода-вывода сообщались непосредственно с канальной подсистемой. Ссылка на устройство управления делается только при особом упоминании функции, выполняемой им, или при описании того, как разделение устройства управления среди ряда устройств влияет на производительность операций ввода-вывода.

[00499] Устройства ввода-вывода

[00500] Устройство ввода-вывода (I/O) обеспечивает внешнее запоминающее устройство, средства связи между системами обработки данных или средства связи между системой и ее средой. Устройства ввода-вывода включают такое оборудование как устройства на магнитных лентах, запоминающие устройства прямого доступа (например, диски), устройства отображения, клавиатурные печатающие устройства, принтеры, устройства телеобработки и сенсорное оборудование. Устройство ввода-вывода может быть физически отдельным оборудованием или оно может разделять оборудование с другими устройствами ввода-вывода.

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

[00502] В простейшем случае устройство ввода-вывода подключается к одному устройству управления и доступно из одного канального тракта. Переключающее оборудования доступно, чтобы делать некоторые устройства достижимым из одного или нескольких канальных трактов путем переключения устройств между устройствами управления и переключения устройств управления между канальными трактами. Такое переключающее оборудование предоставляет множество трактов, по которым можно получить доступ к устройству ввода-вывода. Множество канальных трактов к устройству ввода-вывода предоставляются, чтобы улучшить производительность или доступность ввода-вывода, или и то, и другое, в системе. Управление многими канальными трактами к устройствам находится под контролем канальной подсистемы и устройства, но канальные тракты могут косвенно управляться программой.

[00503] Адресация ввода-вывода

[00504] Четыре различных типа адресации ввода-вывода обеспечиваются канальной подсистемой для необходимой адресации различных компонентов: идентификаторы канального тракта, номера субканалов, номера устройств и, хотя невидимые для программ, - адреса, зависимые от типа канального тракта. Когда установлено средство нескольких наборов субканалов, в адресации ввода-вывода также используется идентификатор набора субканалов (SSID).

[00505] Идентификатор набора субканалов

[00506] Идентификатор набора субканалов (SSID) представляет собой двубитное значение, приписанное к каждому предоставленному набору субканалов.

[00507] Идентификатор канального тракта

[00508] Идентификатор канального тракта (CHPID) представляет собой уникальное для системы восьмибитное значение, приписанное к каждому установленному канальному тракту системы. CHPID используется для адресации канального тракта. CHPID определяется адресом второго операнда RESET CHANNEL PATH и используется, чтобы указывать канальный тракт, который необходимо восстановить. Канальные тракты, посредством которых доступно устройство, идентифицируются в блоке информации субканала (SCHIB), каждый своим связанным CHPID, когда выполняется STORE SUBCHANNEL. CHPID также может использоваться в сообщениях оператора, когда необходимо идентифицировать конкретный канальный тракт. Модель системы может обеспечивать целых 256 канальных трактов. Максимальное число канальных трактов и назначение идентификаторов CHPID для канальных трактов зависит от модели системы.

[00509] Номер субканала

[00510] Номер субканала представляет собой уникальное для системы 16-битное значение, используемое для адресации субканала. Это значение является уникальным в наборе субканалов канальной подсистемы. Адресация к субканалу осуществляется с помощью восьми команд ввода-вывода: CANCEL SUBCHANNEL, CLEAR SUBCHANNEL, HALT SUBCHANNEL, MODIFY SUBCHANNEL, RESUME SUBCHANNEL, START SUBCHANNEL, STORE SUBCHANNEL и TEST SUBCHANNEL.

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

[00511] Номер устройства

[00512] Каждый субканал, который имеет назначенное устройство ввода-вывода, также содержит параметр, называемый номером устройства. Номер устройства представляет собой 16-битное значение, которое приписывается в качестве одного из параметров субканала, когда субканалу назначается устройство. Номер устройства уникальным образом идентифицирует устройство для программы.

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

[00514] Замечание для программирования: Номер устройства назначается во время установки устройства и может иметь любое значение. Однако пользователь должен принимать во внимание любые ограничения на назначение номера устройства, которые могут накладываться управляющей программой, вспомогательными программами или конкретным устройством управления или устройством ввода-вывода.

[00515] Идентификатор устройства

[00516] Идентификатор устройства представляет собой адрес, невидимый программе, который используется канальной подсистемой для осуществления связи с устройствами ввода-вывода. Тип используемого идентификатора устройства зависит от типа конкретного канального тракта и обеспечиваемых протоколов. Каждый субканал содержит один или несколько идентификаторов устройства.

[00517] Для канального тракта интерфейса ввода-вывода параллельного типа идентификатор устройства называется адресом устройства и имеет восьмибитное значение. Для интерфейса ввода-вывода ESCON идентификатор устройства состоит из четырехбитного адреса устройства управления и восьмибитного адреса устройства. Для интерфейса ввода-вывода FICON идентификатор устройства состоит из восьмибитного ID образа устройства управления и восьмибитного адреса устройства. Для FICON-преобразованного интерфейса ввода-вывода идентификатор устройства состоит из четырехбитного адреса устройства управления и восьмибитного адреса устройства.

[00518] Адрес устройства идентифицирует конкретное устройство ввода-вывода (и, на параллельном интерфейсе ввода-вывода, - устройство управления), связанное с субканалом. Адрес устройства может идентифицировать, например, конкретный накопитель на магнитной ленте, устройство доступа к диску или линию передачи данных. В качестве адреса устройства может быть назначено любое число в диапазоне 0-255.

[00519] Расширение Fibre-Channel

[00520] Средства расширения Fibre Channel (FCX) представляют собой необязательные средства, которые обеспечивают формирование канальной программы, которая состоит из слова (TCW) управления передачей, которое указывает блок (TCCB) управления командами передачи и блок (TSB) статуса передачи. TCCB включает область (TCA) команд передачи, которая содержит список до 30 команд ввода-вывода, которые имеют форму слов (DCW) команд устройств. TCW и его TCCB могут определять операцию или чтения, или записи. В дополнение к IRB, TSB содержит статус завершения и другую информацию, относящуюся к канальной программе TCW.

[00521] Средства FCX обеспечивают возможность прямо или косвенно указывать один или все TCCB, область памяти входных данных и область памяти выходных данных. Когда область памяти указана прямо, TCW определяет местоположение одного непрерывного блока памяти. Когда область памяти указана косвенно, TCW указывает местоположение списка одного или нескольких слов (TIDAW) косвенного адреса данных передачи. Списки TIDAW и область памяти, указанная каждым TIDAW в списке, не могут превышать границ 4 кбайт.

[00522] Средства FCX также обеспечивают операцию опроса, которая может инициироваться командой CANCEL SUBCHANNEL, чтобы определять состояние операции ввода-вывода.

[00523] Слова команд ввода-вывода

[00524] Слово команды ввода-вывода определяет команду и содержит информацию, связанную с командой. Когда средства FCX установлены, имеется две простейших формы слов команд ввода-вывода, а именно командное слово (CCW) канала и командное слово (DCW) устройства.

[00525] CCW имеет размер 8 байт и определяет команду, подлежащую выполнению. Для команд, которые инициируют определенные операции, CCW также указывает область памяти, связанную с операцией, подсчет байтов данных, действие, которое необходимо предпринять, когда команда завершается, и другие настройки. Все устройства ввода-вывода распознают слова CCW.

[00526] DCW имеет размер 8 байт и определяет команду, подлежащую выполнению, подсчет байтов данных и другие настройки. Устройства ввода-вывода, которые поддерживают FCX, распознают слова DCW.

[00527] Командное слово (TCW) передачи

[00528] TCW указывает блок (TCCB) управления командами передачи, который содержит список команд, которые необходимо передать и на устройство ввода-вывода и выполнить на нем. TCW также указывает области памяти для команд в TCCB, а также блок (TSB) статуса передачи, который должен содержать статус операции ввода-вывода.

[00529] Организация канальной программы

[00530] Когда средства FCX не установлены, имеется единственная форма канальной программы, а именно канальная программа CCW. Когда средства FCX установлены, имеется дополнительная форма канальной программы, а именно канальная программа TCW. Обе формы канальных программ описываются ниже.

[00531] Канальная программа CCW

[00532] Канальная программа, состоящая из одного или нескольких слов CCW, называется канальной программой CCW (CCP). Такая канальная программа содержит одно или несколько слов CCW, которые логически связаны и упорядочены для последовательного выполнения канальной подсистемой.

[00533] Канальная программа TCW

[00534] Канальная программа, которая состоит из одного слова TCW, называется канальной программой TCW. TCW указывает блок (TCCB) управления командами передачи, который содержит от 1 до 30 слов DCW. Слова DCW в TCCB логически связаны и упорядочены для последовательного выполнения. Для слов DCW, которые определяют информацию управления, TCCB также содержит информацию управления для этих команд. TCW также указывает область или области памяти для слов DCW, которые определяют передачу данных от устройства или на устройство и местоположение блока (TSB) статуса передачи для статуса завершения. TCCB и области памяти для передачи данных могут определяться или как непрерывная, или как прерывная память.

[00535] TCW также указывает TSB для статуса завершения.

[00536] Выполнение операций ввода-вывода

[00537] Операции ввода-вывода инициируются и управляются посредством информации с четырьмя типами форматов: командой START SUBCHANNEL, словами команд передачи, словами команд ввода-вывода и указаниями. Команда START SUBCHANNEL выполняется ЦП и является частью программы ЦП, которая осуществляет управление потоком запросов для операций ввода-вывода от других программ, которые управляют или обрабатывают данные ввода-вывода.

[00538] Когда выполняется START SUBCHANNEL, параметры передаются на целевой субканал, запрашивая, чтобы канальная подсистема выполнила функцию запуска с устройством ввода-вывода, связанным с субканалом. Канальная подсистема выполняет функцию запуска, используя информацию на субканале, включая информацию, переданную во время выполнения команды START SUBCHANNEL, чтобы найти доступный канальный тракт к устройству. Когда устройство было выбрано, выполнение операции ввода-вывода совершается путем декодирования и выполнения CCW канальной подсистемой и устройством ввода-вывода, для канальных программ CCW или, для канальных программ TCW, - путем передачи TCCB на устройство ввода-вывода канальной подсистемой и декодирования и выполнения DCW устройством. Слова команд ввода-вывода и слова команд передачи извлекаются из основного запоминающего устройства, хотя модифицирующие биты в командном коде CCW DCW могут определять зависимые от устройства ситуации для выполнения операции на устройстве.

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

[00540] Инициация функции запуска

[00541] Программы ЦП инициируют операции ввода-вывода командой START SUBCHANNEL. Эта команда передает содержимое блока (ORB) запроса операции на субканал.

[00542] Если ORB определяет канальную программу CCW, содержимое ORB включает ключ субканала, адрес первого CCW, подлежащего выполнению, и спецификацию формата слов CCW. CCW определяет команду, подлежащую выполнению, и область памяти, если имеется, которую необходимо использовать. Если ORB определяет канальную программу TCW, содержимое ORB включает ключ субканала и адрес слова TCW, подлежащего выполнению. TCW указывает TCCB, который содержит команды, подлежащие передаче на устройство для выполнения, область или области памяти, если имеются, которые надо использовать для передачи данных, и TSB, который должен содержать статус операции ввода-вывода.

[00543] Когда содержимое ORB было передано на субканал, выполнение START SUBCHANNEL завершается. Результаты выполнения команды обозначаются набором кодов ситуаций в слове статуса программы.

[00544] Когда средства становятся доступными, и ORB определяет канальную программу CCW, канальная подсистема извлекает первое CCW и декодирует его в соответствии с битом формата, определенным в ORB. Если бит формата равен нулю, определяется формат - 0 слов CCW. Если бит формата равен единице, определяется формат - 1 слов CCW. Слова CCW формата - 0 и формата - 1 содержат одинаковую информацию, но поля в CCW формате - 1 организованы иным образом, так что 31-битные адреса могут определяться непосредственно в CCW. Когда средства становятся доступными, и ORB определяет канальную программу TCW, канальная подсистема извлекает указанное TCW и передает указанный ТССВ на устройство. Области памяти, указанные TCW для передачи данных на устройство или из устройства, являются 64-битными адресами.

[00545] Режимы работы субканалов

[00546] Имеется два режима работы субканалов. Субканал входит в режим передачи, когда средство FCX установлено, и функция запуска установлена на субканале в результате выполнения команды START SUBCHANNEL, которая определяет канальную программу TCW. Субканал остается в режиме передачи, пока функция запуска в субканале не будет перезапущена. Во всех остальных случаях субканал находится в командном режиме.

[00547] Управление трактами

[00548] Если ORB определяет канальную программу CCW, и первое CCW проходит определенные проверки достоверности и не имеет флага приостановки, заданного в единицу, или если ORB определяет канальную программу TCW, и указанное TCW проходит определенные проверки достоверности, канальная подсистема предпринимает выбор устройства путем выбора канального тракта из группы канальных трактов, которые доступны для выбора. Устройство управления, которое распознает идентификатор устройства, логически соединяется с канальным трактом и отвечает на его выбор.

[00549] Если ORB определяет канальную программу CCW, канальная подсистема отправляет часть CCW с кодом команд по канальному тракту, и устройство отвечает байтом статуса, указывающим, может ли команда быть выполнена. Устройство управления в это время может логически отключаться от канального тракта или может оставаться подключенным, чтобы инициировать передачу данных.

[00550] Если ORB определяет канальную программу TCW, канальная подсистема использует информацию в указанном TCW, чтобы передавать TCCB на устройство управления. Содержимое TCCB игнорируется канальной подсистемой и имеет значение только для устройства управления и устройства ввода-вывода.

[00551] Если предпринятый выбор не происходит то ли из-за указания занятости, то ли из-за ситуации нерабочего тракта, канальная подсистема пытается выбрать устройство по альтернативному канальному тракту, если таковой доступен. Если выбор был предпринят по всем доступным для выбора трактам, а ситуация занятости сохраняется, операция остается в ожидании, пока тракт не освободится. Если ситуация нерабочего тракта обнаруживается на одном или нескольких канальных трактах, на которых предпринимался выбор устройства, программа получает предупреждение последующим прерыванием ввода-вывода. Прерывание ввода-вывода возникает или после выполнения канальной программы (в предположении, что устройство было выбрано по альтернативному канальному тракту) или в результате того, что выполнение было прекращено из-за обнаружения ситуаций нерабочего тракта на всех канальных трактах, на которых был предпринят выбор устройства.

[00552] Выполнение канальной программы

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

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

[00555] Для программиста в формате CCW дается возможность задавать, чтобы при декодировании CCW канальная подсистема запрашивала прерывание ввода-вывода как можно быстрее, тем самым уведомляя программу ЦП, что сцепление продвинулось по меньшей мере до этого CCW в канальной программе.

[00556] Для дополнения динамической трансляции адресов в центральных процессорах предоставляются косвенная адресация данных CCW и модифицированная косвенная адресация данных CCW.

[00557] Когда ORB определяет канальную программу CCW, и используется косвенная адресация данных CCW, флаг в CCW указывает, что для указания областей памяти для этого CCW должен использоваться список косвенных адресов данных. Каждый раз, когда достигается граница блока памяти, производится обращение к списку, чтобы определить следующий блок памяти, который надо использовать. ORB определяет, равен размер каждого блока памяти 2 кб или 4 кб.

[00558] Когда ORB определяет канальную программу CCW, и используется модифицированная косвенная адресация данных CCW, флаг в ORB и флаг в CCW указывают, что для указания областей памяти для этого CCW должен использоваться список модифицированных косвенных адресов данных. Каждый раз, когда достигается итоговое число байтов, определенное для блока памяти, осуществляется обращение к списку, чтобы определить следующий блок памяти, который надо использовать. В отличие от случая использования косвенной адресации данных, блок может определяться на любой границе и размером до 4 кб, при условии, что не определяется передача данных через границу 4 кб.

[00559] Когда ORB определяет канальную программу TCW и используется косвенная адресация передачи данных, флаги в TCW указывают, будет ли список передачи косвенных адресов данных использоваться, чтобы указывать области памяти, содержащие TCCB, и используется ли список передачи косвенных адресов данных, чтобы указывать области запоминающего устройства для данных, связанные со словами DCW в TCCB. Каждый раз, когда достигается итоговое число байтов, определенное для блока памяти, осуществляется обращение к соответствующему списку передачи косвенных адресов данных, чтобы определить следующий блок памяти, который надо использовать.

[00560] Косвенная адресация данных CCW и модифицированная косвенная адресация данных CCW позволяет использовать по существу те же последовательности CCW для программы, работающей с динамической трансляцией адреса, активной в ЦП, которые использовались бы, если бы ЦП работал с эквивалентным непрерывным реальным запоминающим устройством. Косвенная адресация данных CCW позволяет программе обозначать блоки данных, имеющие абсолютные адреса памяти до 264-1, независимо от того, был ли определен в ORB формат - 0 или формат - 1. Модифицированная косвенная адресация данных CCW позволяет программе указывать блоки данных, имеющие абсолютные адреса памяти до 264-1, независимо от того, был ли определен в ORB формат - 0 или формат - 1.

[00561] В целом, выполнение операции ввода-вывода или цепочки операций включает целых три уровня участия:

[00562] 1. За исключением эффектов, вызванных интеграцией ЦП и оборудования канальной подсистемы, ЦП занят в течение выполнения START SUBCHANNEL, которое длится, пока адресуемому субканалу не передано содержимое ORB.

[00563] 2. Субканал занимается новой командой START SUBCHANNEL от получения содержимого ORB до того, как первичная ситуация прерывания не будет сброшена на субканале.

[00564] 3. Устройство ввода-вывода занято от инициации первой операции на устройстве до момента, когда или субканал приостанавливается, или на субканал накладывается вторичная ситуация прерывания. В случае приостановленного субканала устройство снова становится занятым, когда выполнение приостановленной канальной программы возобновляется.

[00565] Завершение операций ввода-вывода

[00566] На завершение операции ввода-вывода, как правило, указывают две ситуации статуса: окончание работы канала и окончание работы устройства. Ситуация окончания работы канала указывает, что устройство ввода-вывода получило или предоставило все данные, связанные с операцией, и больше не нуждается в средствах канальной подсистемы. Эта ситуация называется первичной ситуацией прерывания, и окончание работы канала в этом случае является первичным статусом. Как правило, первичная ситуация прерывания - это любая ситуация прерывания, которая относится к операции ввода-вывода и которая сигнализирует о завершении операции ввода-вывода или цепочек операций ввода-вывода на субканале.

[00567] Сигнал окончания работы устройства указывает, что устройство ввода-вывода завершило выполнение и готово выполнять другую операцию. Эта ситуация называется вторичной ситуацией прерывания, и окончание работы устройства в этом случае является вторичным статусом. Как правило, вторичная ситуация прерывания - это любая ситуация прерывания, которая относится к операции ввода-вывода и которая сигнализирует о завершении операции ввода-вывода или цепочки операций на устройстве. Вторичная ситуация прерывания может возникать одновременно с первичной ситуацией прерывания или позже нее.

[00568] Параллельно с первичной или вторичной ситуациями прерывания и канальная подсистема, и устройство ввода-вывода могут предоставлять указания на необычные ситуации.

[00569] Ситуации, сигнализирующие о завершении операции ввода-вывода, могут доводиться до сведения программы прерываниями ввода-вывода или, когда центральные процессоры отключены для прерываний ввода-вывода, - программным опросом канальной подсистемы. В первом случае эти ситуации вызывают сохранение кода прерывания ввода-вывода, который содержит информацию, касающуюся источника прерывания. В последнем случае код прерывания сохраняется в результате выполнения TEST PENDING INTERRUPTION.

[00570] Когда распознается первичная ситуация прерывания, канальная подсистема пытается уведомить программу, посредством запроса прерывания, что субканал содержит информацию, описывающую завершение операции ввода-вывода на субканале. Для прерываний командного режима информация идентифицирует последнее использованное CCW и может предоставлять его остаточный счетчик байтов, таким образом описывая размер использованной памяти основного запоминающего устройства. Для прерываний транспортного режима информация идентифицирует текущее TCW и TSB, связанный с канальной программой, который содержит дополнительный статус об операции ввода-вывода, такой как остаточный счетчик байтов. В дополнение к информации о канальной программе и канальная подсистема, и устройство ввода-вывода могут предоставлять дополнительные указания на необычные ситуации в качестве части или первичной, или вторичной ситуации прерывания. Информация, содержащаяся на субканале, может сохраняться выполнением TEST SUBCHANNEL или выполнением STORE SUBCHANNEL. Сохраненная, эта информация называется словом статуса субканала (SCSW).

[00571] Сцепление при использовании канальной программы (SCSW).

[00572] Когда ORB определяет канальную программу CCW, предоставляются средства для инициации программой выполнения цепочки операций ввода-вывода одной командой START SUBCHANNEL. Когда текущее CCW определяет сцепление команд, и во время операции не было обнаружено никаких необычных ситуаций, получение сигнала окончания работы устройства заставляет канальную подсистему извлекать новое CCW. Если CCW проходит определенные проверки достоверности, и флаг приостановки в новом CCW не задан в единицу, на устройстве инициируется выполнение новой команды. Если CCW не проходит проверки достоверности, новая команда не инициируется, сцепление команд подавляется, и статус, связанный с новым CCW, приводит к генерации ситуации прерывания. Если флаг приостановки задан в единицу, и это значение является достоверным по причине единичного значения в контроле приостановки, бит 4 слова 1 связанного ORB, выполнение новой команды не инициируется, и сцепление команд завершается.

[00573] Выполнение новой команды инициируется канальной подсистемой тем же образом, что и в предыдущей операции. Сигналы окончания, возникающие при завершении операции, вызванном CCW, определяющим сцепление команд, не делаются доступными программе. Когда сцеплением команд инициируется другая операция ввода-вывода, канальная подсистема продолжает выполнение канальной программы. Однако если была обнаружена необычная ситуация, сцепление команд подавляется, канальная программа прерывается, генерируется ситуация прерывания, а сигналы окончания, вызывающие прерывание, делаются доступными программе.

[00574] Функция приостановки и возобновления обеспечивает программу контролем над выполнением канальной программы. Инициация функции приостановки контролируется установкой бита контроля приостановки в ORB. Сигнал о функции приостановки подается на канальную подсистему во время выполнения канальной программы, когда бит контроля приостановки в ORB равен единице и флаг приостановки в первом CCW или в CCW, извлеченном во время сцепления команд, равен единице.

[00575] Приостановка возникает, когда канальная подсистема извлекает CCW с флагом приостановки правомерно (по причине единичного значения бита контроля приостановки в ORB) установленным в единицу. Команда в этом CCW не отправляется на устройство ввода-вывода, и устройству передается сигнал о том, что цепочка команд завершается. Последующая команда RESUME SUBCHANNEL информирует канальную подсистему, что CCW, которое вызвало приостановку, могло быть изменено и что канальная подсистема должна повторно извлечь CCW и проверить текущую установку флага приостановки. Если обнаруживается, что флаг приостановки в CCW равен нулю, канальная подсистема возобновляет выполнение цепочки команд с устройством ввода-вывода.

[00576] Сцепление при использовании канальной программы TCW

[00577] Когда ORB определяет канальную программу TCW, также предоставляются средства для инициации программой выполнения цепочки операций устройства одной командой START SUBCHANNEL. Сцепление команд может определяться для тех слов DCW, которые указаны одним TCW. Когда текущее DCW определяет сцепление команд и во время операции не было обнаружено никаких необычных ситуаций, распознавание успешного выполнения DCW приводит к обработке следующего DCW в текущем ТССВ.

[00578] Если следующее DCW проходит определенные проверки достоверности, на устройстве инициируется выполнение новой команды, и это DCW становится текущим DCW. Если DCW не проходит проверки достоверности, новая команда не инициируется, сцепление команд подавляется, канальная программа прерывается, и статус, связанный с новым DCW, приводит к генерации ситуации прерывания.

[00579] Выполнение новой команды инициируется тем же образом, что и в предыдущей операции. Сигналы окончания, возникающие при завершении операции, вызванном DCW, которое не является последним определенным DCW, не делаются доступными программе. Когда сцеплением команд инициируется другая операция ввода-вывода, выполнение канальной программы продолжается. Однако если была обнаружена необычная ситуация, сцепление команд подавляется, канальная программа прерывается, генерируется условие прерывания, и программе делается доступным статус, идентифицирующий необычную ситуацию.

[00580] Преждевременное завершение операций ввода-вывода

[00581] Выполнение канальной программы может преждевременно прерываться посредством CANCEL SUBCHANNEL. HALT SUBCHANNEL или CLEAR SUBCHANNEL. Выполнение CANCEL SUBCHANNEL вынуждает канальную подсистему прерывать функцию запуска на субканале, если канальная программа не была инициирована на устройстве. Когда функция запуска прерывается выполнением CANCEL SUBCHANNEL, в ответ на команду CANCEL SUBCHANNEL канальная подсистема устанавливает код 0 ситуации. Выполнение HALT SUBCHANNEL вынуждает канальную подсистему подавать сигнал остановки на устройство ввода-вывода и прерывать выполнение канальной программы на субканале. Когда выполнение канальной программы прерывается выполнением HALT SUBCHANNEL, программа уведомляется о завершении запросом прерывания ввода-вывода. Когда субканал находится в командном режиме, запрос прерывания генерируется, когда устройство передает статус для прерванной операции. Когда субканал находится в режиме передачи, запрос прерывания генерируется незамедлительно. Однако если сигнал остановки был подан на устройство во время сцепления команд после приема окончания работы устройства, но до того, как на устройство была передана следующая команда, запрос прерывания генерируется после того, как сигнал был подан на устройство. В последнем случае поле статуса устройства SCSW содержит нули. Выполнение CLEAR SUBCHANNEL очищает субканал от признаков выполняющейся канальной программы, вынуждает канальную подсистему подавать сигнал сброса на устройство ввода-вывода и заставляет канальную подсистему генерировать запрос прерывания ввода-вывода, чтобы уведомить программу о завершении функции сброса.

[00582] Прерывания ввода-вывода

[00583] Ситуации, вызывающие запросы прерывания ввода-вывода, являются асинхронными относительно активности в центральных процессорах, и одновременно может возникать более одной ситуации. Ситуации сохраняются на субканалах, пока не сбрасываются посредством TEST SUBCHANNEL или CLEAR SUBCHANNEL, или не переустанавливаются перезапуском устройства ввода-вывода.

[00584] Когда ситуация прерывания была распознана канальной подсистемой и указана на субканале, запрос прерывания ввода-вывода переводится в ожидание для подкласса прерывания ввода-вывода, определенного на субканале. Подкласс прерывания ввода-вывода, которого ожидает прерывание, находится под программным управлением посредством использования MODIFY SUBCHANNEL. Ожидающее прерывание ввода-вывода может приниматься любым ЦП, который активирован для прерываний от своего подкласса прерываний ввода-вывода. Каждый ЦП имеет восемь битов маски, в управляющем регистре 6, которые управляют активированием этого ЦП для каждого из восьми подклассов прерываний ввода-вывода, где маска ввода-вывода, 6 бит в PSW, является главной маской прерываний ввода-вывода для ЦП.

[00585] Когда на ЦП возникает прерывание ввода-вывода, код прерывания ввода-вывода сохраняется в области связи ввода-вывода этого ЦП, и запрос прерывания ввода-вывода сбрасывается. Код прерывания ввода-вывода идентифицирует субканал, для которого прерывание было ожидающим. Ситуации, вызывающие генерацию запроса прерывания, затем могут быть явно извлечены из субканала посредством TEST SUBCHANNEL или STORE SUBCHANNEL.

[00586] Ожидающий запрос прерывания ввода-вывода также может быть сброшен посредством TEST PENDING INTERRUPTION, когда соответствующий подкласс прерывания ввода-вывода активирован, но у PSW прерывания ввода-вывода отключены, или посредством TEST SUBCHANNEL, когда ЦП отключен для прерываний ввода-вывода от соответствующего подкласса прерываний ввода-вывода. Ожидающий запрос прерывания ввода-вывода также может сбрасываться CLEAR SUBCHANNEL. Как CLEAR SUBCHANNEL, так и TEST SUBCHANNEL сбрасывают сохраненную ситуацию прерывания также и на субканале.

[00587] Как правило, если только запрос прерывания не сбрасывается CLEAR SUBCHANNEL, программа запускает TEST SUBCHANNEL, чтобы получить информацию относительно выполнения операции.

[00588] CLEAR SUBCHANNEL

[00589] Указанный субканал сбрасывается, текущая функция запуска или остановки, если имеется, прерывается на указанном субканале, и канальной подсистеме подается сигнал асинхронно выполнять функцию сброса на указанном субканале и на связанном устройстве.

[00590] Регистр 1 общего назначения содержит слово (SID) идентификации подсистемы, которое указывает субканал, который необходимо сбросить.

[00591] Если функция запуска или остановки выполняется, она прерывается на субканале.

[00592] Субканал выводится из ожидания статуса. Вся активность, как указанно в поле контроля активности слова SCSW, на субканале сбрасывается, только субканал приводится в ожидание сброса. Любые работающие функции, как указанно в поле контроля функций слова SCSW, на субканале сбрасываются, кроме функции сброса, которая должна быть выполнена вследствие выполнения этой команды.

[00593] Когда субканал работает в режиме передачи и установлен код 2 ситуации, ЦП может подавать сигнал канальной подсистеме асинхронно выполнять функцию опроса и завершать команду.

[00594] Канальной подсистеме подается сигнал асинхронно выполнять функцию сброса. Функция сброса кратко описывается ниже в разделе «Связанные функции», а более подробно описывается впоследствии.

[00595] Устанавливается код 0 ситуации, чтобы указывать, что были предприняты действия, описанные выше.

[00596] Связанные функции

[00597] Следом за выполнением CLEAR SUBCHANNEL, канальная подсистема асинхронно выполняет функцию сброса. Если позволяет ситуация, канальная подсистема выбирает канальный тракт и пытается подать сигнал сброса на устройство, чтобы прервать операцию ввода-вывода, если таковая имеет место. Затем субканал становится ожидающим статус. Ситуации, с которыми сталкивается канальная подсистема и которые препятствуют подаче сигнала сброса на устройство, не мешают субканалу становиться ожидающим статус.

[00598] Когда субканал становится ожидающим статус в результате выполнения функции сброса, передача данных, если имеет место, со связанным устройством была прервана. Хранимое SCSW, когда результирующий статус сбрасывается посредством TEST SUBCHANNEL, имеет бит функции сброса, установленный в единицу. Если канальная подсистема может определить, что сигнал сброса был подан на устройство, бит ожидания сброса в SCSW сохраняется как ноль. Иначе бит ожидания сброса сохраняется как единица, и предоставляются другие указания, более подробно описывающие ситуацию, с которой пришлось столкнуться.

[00599] Данные измерений не накапливаются, и время соединения с устройством не сохраняется в слове расширенного статуса для субканала, для функции запуска, которая прерывается посредством CLEAR SUBCHANNEL.

[00600] Особые ситуации

[00601] Код 3 ситуации устанавливается, и никакое другое действие не предпринимается, когда субканал не является рабочим для CLEAR SUBCHANNEL. Субканал не является рабочим для CLEAR SUBCHANNEL, когда субканал не предоставляется в канальной подсистеме, не имеет приписанного к нему достоверного номера устройства или не активирован.

[00602] CLEAR SUBCHANNEL может сталкиваться с программными исключительными ситуациями, описанными или перечисленными ниже.

[00603] Когда средство нескольких наборов субканалов не установлено, биты 32-47 регистра 1 общего назначения должны содержать шестнадцатеричное значение 0001; иначе распознается исключительная ситуация операнда.

[00604] Когда средство нескольких наборов субканалов установлено, биты 32-44 регистра 1 общего назначения должны содержать нули, биты 45-46 должны содержать достоверное значение, а бит 47 должен содержать единичное значение; иначе распознается исключительная ситуация операнда.

[00605] Результирующий код ситуации:

[00606] 0 Функция инициирована

[00607] 1 -

[00608] 2 -

[00609] 3 нерабочий

[00610] Программные исключительные ситуации:

[00611] - Операнда

[00612] - Приоритетной операции

[00613] Функция сброса

[00614] Следом за выполнением CLEAR SUBCHANNEL, канальная подсистема выполняет функцию сброса. Выполнение функции сброса состоит в (1) выполнении операции управления трактами, (2) изменении полей на субканале, (3) подаче сигнала сброса на связанное устройство и (4) переводе субканала в ожидание статуса, что указывает на завершение функции сброса.

[00615] Управление трактами в функции сброса

[00616] Операция управления трактами выполняется как часть функции сброса, чтобы проверить ситуации канального тракта для связанного субканала и попробовать выбрать доступный канальный тракт, по которому связанному устройству можно подать сигнал сброса.

[00617] Ситуации канального тракта проверяются в следующем порядке:

[00618] 1. Если канальная подсистема активно осуществляет связь или пытается установить активную связь с устройством, на которое необходимо передать сигнал, выбирается используемый канальный тракт.

[00619] 2. Если канальная подсистема находится в процессе получения указания на завершение занятости (которое не приведет к распознаванию ситуации прерывания) от устройства, на которое необходимо передать сигнал, и связанный субканал не привязан ни к какому канальному тракту, выбирается используемый канальный тракт.

[00620] 3. Если связанный субканал имеет назначенную привязку для канального тракта, выбирается этот канальный тракт.

[00621] 4. Если связанный субканал имеет работающую привязку для одного или нескольких канальных трактов, выбирается один из этих канальных трактов.

[00622] 5. Если связанный субканал не имеет привязки ни для какого канального тракта, если указан последний использованный канальный тракт и если этот канальный тракт доступен для выбора, выбирается этот канальный тракт. Если этот канальный тракт недоступен для выбора, то либо не выбирается никакой канальный тракт, либо канальный тракт выбирается из набора канальных трактов, если таковые имеются, которые доступны для выбора (как будто не был указан последний использованный канальный тракт).

[00623] 6. Если связанный субканал не имеет привязки ни для какого канального тракта, если не указан последний использованный канальный тракт и если существуют один или несколько канальных трактов, которые доступны для выбора, выбирается один из этих канальных трактов.

[00624] Если ни одна из перечисленных выше ситуаций для канальных трактов не имеет места, не выбирается никакой канальный тракт.

[00625] Для пункта 4, для пункта 5 при указанных условиях, и для пункта 6, канальная подсистема выбирает канальный тракт из набора канальных трактов. В этих случаях канальная подсистема может пытаться выбрать канальный тракт при условии, что следующие ситуации не имеют места:

[00626] 1. Для канального тракта существует терминальная ситуация канального тракта.

[00627] 2. Для параллельного канального тракта или канального тракта ESCON: Другой субканал имеет активную привязку для канального тракта.

[00628] Для канального тракта FICON: Канальный тракт в настоящее время используется, чтобы активно поддерживать связь с максимальным числом субканалов, которые могут поддерживать одновременно активные процессы связи.

[00629] 3. Устройство, на которое необходимо передать сигнал, подключено к устройству управления типа-1, и субканал для другого устройства, подключенного к тому же устройству управления, имеет привязку к тому же канальному тракту, кроме случаев, когда привязка является работающей привязкой и первичный статус был принят этим субканалом.

[00630] 4. Устройство, на которое необходимо передать сигнал, подключено к устройству управления типа-3, и субканал для другого устройства, подключенного к тому же устройству управления, имеет специальную привязку к тому же канальному тракту.

[00631] Изменение субканалов функцией сброса

[00632] Контрольные указания управления трактами на субканале изменяются во время выполнения функции сброса. Фактически, это изменение происходит после попытки выбрать канальный тракт, но до попытки выбрать устройство для подачи сигнала сброса. Изменяемые контрольные указания управления трактами следующие:

[00633] 1. Состояние всех восьми возможных канальных трактов на субканале устанавливается в рабочее для субканала.

[00634] 2. Указание последнего использованного тракта переустанавливается, чтобы не указывать никакого последнего использованного канального тракта.

[00635] 3. Ситуации нерабочего тракта, если имеются, - переустанавливаются.

[00636] Передача сигналов и завершение в функции сброса

[00637] Следом за попыткой выбрать канальный тракт и изменением контрольных полей управления трактами, канальная подсистема, если позволяет ситуация, пытается выбрать устройство, чтобы подать сигнал сброса. Ситуации, связанные с субканалом и выбранным канальным трактом, если имеется, влияют на то, (1) делается ли попытка подать сигнал сброса, и (2) является ли попытка подать сигнал сброса успешной. Независимо от этих ситуаций субканал затем устанавливается в ожидание статуса, и выполнение функции сброса завершается. Эти ситуации и их влияние на функцию сброса описываются ниже:

[00638] Попытка подать сигнал сброса не предпринимается: Канальная подсистема не пытается подать сигнал сброса на устройство, если существует любая из следующих ситуаций:

[00639] 1. Никакой канальный тракт не был выбран

[00640] 2. Выбранный канальный тракт больше недоступен для выбора.

[00641] 3. Для выбранного канального тракта существует терминальная ситуация канального тракта.

[00642] 4. Для параллельных канальных трактов и канальных трактов ESCON: Выбранный канальный тракт в настоящее время используется для активной поддержки связи с другим устройством. Для канальных трактов FICON: Выбранный канальный тракт в настоящее время используется для активной поддержки связи с максимальным количеством устройств, которые могут поддерживать одновременно активные сеансы связи.

[00643] 5. Устройство, на которое необходимо передать сигнал, подключено к устройству управления типа - 1, и субканал для другого устройства, подключенного к тому же устройству управления, имеет привязку к тому же канальному тракту, кроме случаев, когда привязка является работающей привязкой и первичный статус был принят этим субканалом.

[00644] 6. Устройство, на которое необходимо передать сигнал, подключено к устройству управления типа - 3, и субканал для другого устройства, подключенного к тому же устройству управления, имеет назначенную привязку к тому же канальному тракту.

[00645] Если любая из вышеуказанных ситуаций имеет место, субканал остается ожидающим сброс и устанавливается ожидающим статус, и выполнение функции сброса завершается.

[00646] Попытка подать сигнал сброса безуспешна: Когда канальная подсистема пытается подать на устройство сигнал сброса, попытка может быть безуспешной из-за следующих ситуаций:

[00647] 1. Когда канальная подсистема пытается выбрать устройство, чтобы подать сигнал сброса, устройство управления или устройство подает сигнал о ситуации занятости.

[00648] 2. Когда канальная подсистема пытается выбрать устройство, чтобы подать сигнал сброса, распознается ситуация нерабочего тракта.

[00649] 3. Когда канальная подсистема пытается подать сигнал сброса, встречается ситуация ошибки.

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

[00651] Попытка подать сигнал сброса успешна: Когда канальная подсистема определяет, что попытка подать сигнал сброса была успешной, субканал больше не является ожидающим сброс и устанавливается ожидающим статус, и выполнение функции сброса завершается. Когда субканал становится ожидающим статус, операция ввода-вывода, если таковая имеется, со связанным устройством была прервана.

[00652] Замечание для программирования: Вслед за выполнением функции сброса, любой ненулевой статус, кроме единственно окончания работы устройства управления, которое передается канальной подсистеме устройством, передается программе как незапрашиваемый предупреждающий статус. Незапрашиваемый статус, состоящий из единственно окончания работы устройства управления или нулевого состояния, программе не передается.

[00653] MODIFY SUBCHANNEL

[00654] Информация, содержащаяся в блоке (SCHIB) информации субканала, располагается в программно-изменяемых полях на субканале. В результате программа влияет, для этого субканала, на определенные особенности обработки ввода-вывода что касается функций сброса, остановки, возобновления и запуска и определенные вспомогательные функции ввода-вывода.

[00655] Регистр 1 общего назначения содержит слово идентификации подсистемы (SID), которое указывает субканал, который подлежит изменению как указано определенными полями блока SCHIB. Адрес второго операнда представляет собой логический адрес SCHIB и должен быть задан на границе слова; иначе распознается исключительная ситуация спецификации.

[00656] Операции канальной подсистемы, на которые может оказывать влияние расположение информации SCHIB в субканале, таковы:

[00657] - Обработка ввода-вывода (поле E)

[00658] - Обработка прерываний (параметр прерываний и поле ISC)

[00659] - Управление трактами (поля D, LPM и POM)

[00660] - Отслеживание и проверка адресных ограничений (показатель блока измерения, поля LM и MM)

[00661] - Контроль формата блока измерения (поле F)

[00662] - Включение режима расширенного слова измерения (поле X)

[00663] - Средство обнаружения одновременности (поле S)

[00664] - Адрес блока измерения (MBA)

[00665] Биты 0, 1, 6 и 7 слова 1 и биты 0-28 слова 6 операнда SCHIB должны быть нулями, а биты 9 и 10 слова 1 не должны быть оба единицами. Когда расширенное средство блока измерения ввода-вывода установлено и определен блок измерения формата - 1, биты 26-31 слова 11 должны быть установлены в нули. Когда расширенное средство блока измерения ввода-вывода не установлено, бит 29 слова 6 должен быть установлен в ноль; иначе распознается исключительная ситуация операнда. Когда расширенное средство слова измерения ввода-вывода не установлено, или установлено, но не активировано, бит 30 слова 6 должен быть установлен в ноль; иначе распознается исключительная ситуация операнда. Остальные поля SCHIB игнорируются и не оказывают влияния на обработку MODIFY SUBCHANNEL.

[00666] Устанавливается код 0 ситуации, чтобы указывать, что информация из SCHIB была размещена в программно-изменяемых полях на субканале, за исключением того, что когда бит (V) достоверности номера устройства на указанном субканале равен нулю, то устанавливается код 0 ситуации, а информация из SCHIB не размещается в программно-изменяемых полях.

[00667] Особые ситуации

[00668] Код 1 ситуации устанавливается и никакое другое действие не производится, когда субканал ожидает статус.

[00669] Код 2 ситуации устанавливается и никакое другое действие не производится, когда на субканале выполняется функция сброса, остановки или запуска.

[00670] Код 3 ситуации устанавливается и никакое другое действие не производится, когда субканал является нерабочим для MODIFY SUBCHANNEL. Субканал является нерабочим для MODIFY SUBCHANNEL, когда субканал не предоставляется в канальной подсистеме.

[00671] MODIFY SUBCHANNEL может сталкиваться с программными исключительными ситуациями, описанными или перечисленными ниже.

[00672] В слове 1 SCHIB биты 0, 1, 6 и 7 должны быть нулями и, когда установлено средство проверки адресных ограничений, биты 9 и 10 не должны оба быть единицами. В слове 6 SCHIB биты 0-28 должны быть нулями. Иначе распознается исключительная ситуация операнда.

[00673] Когда расширенное средство блока измерения ввода-вывода установлено и определен блок измерения формата - 1, биты 26-31 слова 11 должны быть установлены в нули; иначе распознается исключительная ситуация операнда. Когда расширенное средство блока измерения ввода-вывода не установлено, бит 29 слова 6 должен быть установлен в ноль; иначе распознается исключительная ситуация операнда. Когда расширенное средство слова измерения ввода-вывода не установлено, или установлено, но не активировано, бит 30 слова 6 должен быть установлен в ноль; иначе распознается исключительная ситуация операнда.

[00674] Когда средство нескольких наборов субканалов не установлено, биты 32-47 регистра 1 общего назначения должны содержать шестнадцатеричное значение 0001;

иначе распознается исключительная ситуация операнда.

[00675] Когда средство нескольких наборов субканалов установлено, биты 32-44 регистра 1 общего назначения должны содержать нули, биты 45-46 должны содержать достоверное значение, а бит 47 должен содержать единицу; иначе распознается исключительная ситуация операнда.

[00676] Второй операнд должен быть задан на границе слова; иначе распознается исключительная ситуация спецификации. Выполнение MODIFY SUBCHANNEL подавляется во всех исключительных ситуациях адресации и защиты.

[00677] Результирующий код ситуации:

[00678] 0 Функция завершена

[00679] 1 Ожидание статуса

[00680] 2 Занят

[00681] 3 Нерабочий

[00682] Программные исключительные ситуации:

[00683] - Доступа (извлечения, операнд 2)

[00684] - Операнда

[00685] - Приоритетной операции

[00686] - Спецификации

[00687] Замечания для программирования:

[00688] 1. Если устройство подает сигнал предупреждения об ошибке ввода-вывода, в то время как связанный субканал отключен, канальная подсистема подает сигнал сброса на устройство и отвергает указание предупреждения об ошибке ввода-вывода без генерации ситуации прерывания ввода-вывода.

[00689] 2. Если устройство передает незапрошенный статус, в то время как связанный субканал отключен, это состояние отвергается канальной подсистемой без генерации ситуации прерывания ввода-вывода. Однако если переданный статус содержит проверку блока, канальная подсистема подает сигнал сброса для связанного субканала и не генерирует ситуации прерывания ввода-вывода. Это необходимо принимать во внимание, когда программа использует MODIFY SUBCHANNEL для активации субканала. Например, среда на связанном устройстве, которая присутствовала, когда субканал стал неактивным, могла быть заменена и, следовательно, программе следует проверить целостность этой среды.

[00690] 3. Рекомендуется, чтобы программа обследовала содержимое субканала посредством последующей подачи STORE SUBCHANNEL, когда MODIFY SUBCHANNEL устанавливает код 0 ситуации. Использование STORE SUBCHANNEL представляет собой способ для определения, был ли изменен указанный субканал. Неудача обследования субканала после установки кода 0 ситуации посредством MODIFY SUBCHANNEL может приводить к ситуациям, появления которых программа не ожидает.

[00691] START SUBCHANNEL

[00692] Канальной подсистеме передается сигнал асинхронно выполнить функцию запуска для связанного устройства, и параметры выполнения, которые содержатся в указанном ORB, располагаются на указанном субканале.

[00693] Регистр 1 общего назначения содержит слово идентификации подсистемы, которое указывает субканал, который необходимо запустить. Адрес второго операнда является логическим адресом ORB и должен быть указан на границе слова; иначе распознается исключительная ситуация спецификации.

[00694] Параметры выполнения, содержащиеся в ORB, располагаются на субканале.

[00695] При выполнении START SUBCHANNEL субканал является ожидающим статус только со вторичным статусом, и бит (L) формата слова расширенного статуса равен нулю, ситуация ожидания статуса на субканале отбрасывается.

[00696] Субканал делается ожидающим запуск, и на субканале указывается функция запуска. Если второй операнд указывает ORB командного режима, субканал остается в командном режиме. Если второй операнд указывает ORB режима передачи, субканал входит в режим передачи. Когда субканал входит в режим передачи, LPUM устанавливается в ноль, если не существует предыдущей специальной привязки; иначе LPUM не меняется.

[00697] Логически до установки кода 0 ситуации, ситуации нерабочего тракта на субканале, если таковые имеются, сбрасываются.

[00698] Канальной подсистеме подается сигнал асинхронно выполнять функцию запуска. Функция запуска кратко описывается ниже в разделе «Связанные функции», а подробно описывается впоследствии.

[00699] Устанавливается код 0 ситуации, чтобы указывать, что действия, описанные выше, были предприняты.

[00700] Связанные функции

[00701] После выполнения START SUBCHANNEL канальная подсистема асинхронно выполняет функцию запуска.

[00702] Содержимое ORB, отличающееся от полей, которые должны содержать все нули, проверяется на достоверность. По некоторым моделям поля ORB, которые должны содержать нули, проверяются асинхронно, а не во время выполнения команды. Когда недостоверные поля обнаруживаются асинхронно, субканал становится ожидающим статус с первичным, вторичным и предупреждающим статусом и с указанными кодом 1 отложенной ситуации и программной проверкой. В этом случае операция ввода-вывода или цепочка операций ввода-вывода на устройстве не инициируется, а ситуация указывается битом ожидания запуска, сохраняемым как единица, когда SCSW сбрасывается выполнением TEST SUBCHANNEL.

[00703] По некоторым моделям доступность тракта проверяется асинхронно, а не во время выполнения команды. Когда никакой канальный тракт недоступен для выбора, субканал становится ожидающим статус с первичным и вторичным статусами и с указанным кодом 3 отложенной ситуации. Операция ввода-вывода или цепочка операций ввода-вывода на устройстве не инициируется, и эта ситуация указывается битом ожидания запуска, сохраняемым как единица, когда SCSW сбрасывается выполнением TEST SUBCHANNEL.

[00704] Если позволяет ситуация, выбирается канальный тракт, и инициируется выполнение канальной программы, которая указана в ORB.

[00705] Особые ситуации

[00706] Код 1 ситуации устанавливается, и никакое другое действие не производится, когда субканал является ожидающим статус, когда выполняется START SUBCHANNEL. По некоторым моделям код 1 ситуации не устанавливается, когда субканал является ожидающим статус только со вторичным статусом; вместо этого ситуация ожидания статуса отклоняется.

[00707] Код 2 ситуации устанавливается, и никакое другое действие не производится, когда на субканале в текущее время выполняется функция запуска, остановки или сброса.

[00708] Код 3 ситуации устанавливается, и никакое другое действие не производится, когда субканал является нерабочим для START SUBCHANNEL. Субканал является нерабочим для START SUBCHANNEL, если субканал не предоставлен в канальной системе, не имеет связанного с ним достоверного номера устройства или не активирован.

[00709] Субканал также является нерабочим для START SUBCHANNEL, no некоторым моделям, когда для выбора недоступен никакой канальный тракт. По этим моделям отсутствие доступного канального тракта обнаруживается как часть выполнения START SUBCHANNEL. По другим моделям доступность канального тракта проверяется только как часть асинхронной функции запуска.

[00710] START SUBCHANNEL может сталкиваться с программными исключительными ситуациями, описанными или перечисленными ниже.

[00711] В слове 1 ORB командного режима биты 26-30 должны быть нулями, а в слове 2 ORB командного режима бит 0 должен быть нулем. Иначе, по некоторым моделям, распознается исключительная ситуация операнда. По другим моделям генерируется ситуация прерывания ввода-вывода, обозначающая программную проверку, как часть асинхронной функции запуска.

[00712] START SUBCHANNEL также может сталкиваться с программными исключительными ситуациями, перечисленными ниже.

[00713] Когда средство нескольких наборов субканалов не установлено, биты 32-47 регистра 1 общего назначения должны содержать шестнадцатеричное значение 0001; иначе распознается исключительная ситуация операнда.

[00714] Когда средство нескольких наборов субканалов установлено, биты 32-44 регистра 1 общего назначения должны содержать нули, биты 45-46 должны содержать достоверное значение, а бит 47 должен содержать единицу; иначе распознается исключительная ситуация операнда.

[00715] Второй операнд должен быть указан на границе слова; иначе распознается исключительная ситуация спецификации. Выполнение START SUBCHANNEL подавляется во всех исключительных ситуациях адресации и защиты.

[00716] Результирующий код ситуации:

[00717] 0 Функция инициирована

[00718] 1 Ожидание статуса

[00719] 2 Занят

[00720] 3 Нерабочий

[00721] Программные исключительные ситуации:

[00722] - Доступ (извлечение, операнд 2)

[00723] - Операнд

[00724] - Приоритетная операция

[00725] - Спецификация

[00726] Функция запуска и функция возобновления

[00727] Функции запуска и возобновления инициируют операции ввода-вывода, как описано ниже. Функция запуска применяется для субканалов, работающих или в командном режиме, или в режиме передачи. Функция возобновления применяется только для субканалов, работающих в командном режиме.

[00728] После выполнения START SUBCHANNEL и RESUME SUBCHANNEL канальная подсистема выполняет функции запуска и возобновления, соответственно, чтобы инициировать операцию ввода-вывода со связанным устройством. Исполнение функции запуска или возобновления состоит из: (1) выполнения операции управления трактами, (2) выполнения операции ввода-вывода или цепочки операций ввода-вывода со связанным устройством, и (3) переведении субканала в ожидание статуса, указывая на завершение функции запуска. Функция запуска инициирует выполнение канальной программы, которая указана в ORB, который, в свою очередь, указан в операнде START SUBCHANNEL, в отличие от функции возобновления, которая инициирует выполнение отложенной канальной программы, если имеется, начиная в CCW, которое вызвало приостановку; иначе функция возобновления выполняется так, как если бы она была функцией запуска.

[00729] Управление трактами в функции запуска и функции возобновления [00730] Операция управления трактами выполняется канальной подсистемой во время исполнения функции запуска или возобновления, чтобы выбрать доступный канальный тракт, который может быть использован для выбора устройства, чтобы инициировать операцию ввода-вывода с этим устройством. Предпринимаемые действия таковы:

[00731] 1. Если субканал в текущее время ожидает старта и устройство активно, функция запуска остается ожидающей на субканале, пока вторичный статус для предыдущей функции запуска не принимается от связанного устройства, и субканал делается единственно ожидающим запуск. Когда статус принимается и не описывает ситуации предупреждающего прерывания, субканал не делается ожидающим статус, и затем инициируется выполнение ожидающей функции запуска. Если статус описывает ситуацию предупреждающего прерывания, субканал становится ожидающим статус со вторичным статусом и предупреждающим статусом, ожидающая функция запуска не инициируется, устанавливается код 1 отложенной ситуации, а бит ожидания запуска остается равным единице. Если субканал в текущее время является единственно ожидающим запуск, инициируется выполнение функции запуска, как описано ниже.

[00732] 2. Если на субканале для канального тракта существует выделенная привязка, канальная подсистема выбирает этот тракт для выбора устройства. Если при попытке выбрать устройство встречается занятая ситуация, и на субканале существует назначенная привязка, функция запуска остается в состоянии ожидания, пока для этого канального тракта не сбрасывается внутреннее указание занятости. Когда внутреннее указание занятости сбрасывается, выполнение ожидающей функции запуска инициируется на этом канальном тракте.

[00733] 3. Если для выбора нет доступного канального тракта, и назначенной привязки в субканале для канального тракта не существует, канальный тракт не выбирается.

[00734] 4. Если все канальные тракты, которые доступны для выбора, были испробованы, и один или несколько из них используются для активной связи с другими устройствами, или, в другом случае, если канальная подсистема на одном или нескольких из этих канальных трактов столкнулась с ситуацией занятости устройства управления или занятости устройства, или сочетанием этих ситуаций на одном или нескольких из этих канальных трактов, функция запуска остается ожидающей на субканале, пока канальный тракт, устройство управления или устройство, по необходимости, не станут доступными.

[00735] 5. Если (1) функция запуска должна быть инициирована на канальном тракте с устройством, подключенным к устройству управления типа - 1, и (2) никакое другое устройство не подключено к тому же устройству управления, субканал которого имеет или назначенную привязку к тому же канальному тракту, или работающую привязку к тому же канальному тракту, где первичный статус не был принят для этого субканала, то этот канальный тракт выбирается, если он доступен для выбора; иначе этот канальный тракт не выбирается. Однако если другой канальный тракт к устройству доступен для выбора, и не существует привязок, описанных выше, выбирается этот канальный тракт. Если никакой другой канальный тракт не доступен для выбора, функция запуска или возобновления, по необходимости, остается в состоянии ожидания, пока канальный тракт не станет доступным.

[00736] 6. Если устройство подключено к устройству управления типа - 3, и если по меньшей мере одно другое устройство подключено к тому же устройству управления, субканал которого имеет назначенную привязку к тому же канальному тракту, может быть выбран другой канальный тракт, доступный для выбора, или функция запуска остается в состоянии ожидания, пока не сбросится назначенная привязка для другого устройства.

[00737] 7. Если канальный тракт был выбран, и получено указание занятости во время выбора устройства, чтобы инициировать выполнение первой команды ожидающей канальной программы CCW или чтобы передать TCCB ожидающей канальной программы TCW, канальный тракт, по которому получено указание занятости, снова для этого устройства или устройства управления (в зависимости от полученного указания занятости устройства или устройства управления) не используется, пока внутреннее указание занятости не сбросится.

[00738] 8. Если во время попытки выбора устройства, чтобы инициировать выполнение первой команды, определенной для функции запуска или подразумеваемой для функции возобновления для канальной программы CCW, или инициировать передачу TCCB для функции запуска для канальной программы TCW (как описано в действии 7 выше), канальная подсистема получает указание занятости, она выполняет одно из следующих действий:

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

[00740] b. Если устройство определено для работы в многотрактном режиме, и полученное указание занятости представляет занятость устройства управления, или если устройство определено для работы в однотрактном режиме, канальная подсистема пробует выбор устройства путем выбора альтернативного канального тракта, который доступен для выбора, и продолжает операцию управления трактами, пока либо функция запуска или возобновления не инициируется, либо выбор устройства не будет испробован по всем канальным трактам, доступным для выбора. Если функция запуска или возобновления не была инициирована канальной подсистемой после того, как были перепробованы все канальные тракты, доступные для выбора, функция запуска или возобновления остается ожидающей, пока внутреннее указание занятости не сбросится.

[00741] с. Если субканал имеет назначенную привязку, то применяется действие 2, описанное на стр.15-20.

[00742] 9. Когда, во время попытки выбора передать первую команду для канальной программы CCW или передать TCCB для канальной программы TCW, устройство оказывается нерабочим, а соответствующий канальный тракт является рабочим для субканала, распознается ситуация нерабочего тракта, и состояние канального тракта на субканале изменяется с рабочего для субканала на нерабочее для субканала. Ситуации нерабочего тракта на субканале, если таковые имеются, сохраняются, пока субканал затем не становится ожидающим сброс, ожидающим запуск или ожидающим возобновление (если канал был приостановлен), во время чего ситуации нерабочего тракта сбрасываются. Однако если соответствующий канальный тракт является нерабочим для субканала, ситуация нерабочего тракта не распознается. Когда устройство оказывается нерабочим во время попытки выбора передать первую команду или TCCB по канальному тракту, который доступен для выбора, происходит одно из следующих действий:

[00743] a. Если для этого канального тракта существует назначенная привязка, то это единственный канальный тракт, который доступен для выбора; следовательно, дальнейшие попытки инициировать функцию запуска или возобновления прекращаются, и распознается ситуация прерывания.

[00744] b. Если не существует назначенной привязки и имеются альтернативные канальные тракты, доступные для выбора, которые не были испробованы, один из этих канальных трактов выбирается, чтобы попробовать выбрать устройство и передать первую команду для канальной программы CCW или TCCB для канальной программы TCW.

[00745] c Если не существует назначенной привязки, нет альтернативных канальных трактов, доступных для выбора, которые не были испробованы, и устройство оказалось рабочим на по меньшей мере одном из канальных трактов, которые были испробованы, функция запуска или возобновления остается ожидающей на субканале, пока канальный тракт, устройство управления или устройство, по необходимости, не станет доступным.

[00746] d. Если не существует назначенной привязки, нет альтернативных канальных трактов, доступных для выбора, которые не были испробованы, и устройство оказалось нерабочим на всех канальных трактах, которые были испробованы, дальнейшие попытки инициировать функцию запуска или возобновления прекращаются, и распознается ситуация прерывания.

[00747] 10. Когда субканал активен и должна быть инициирована операция ввода-вывода с устройством, происходят все выборы устройства, в соответствии с указанием LPUM, если на субканале не определен многотрактный режим. Например, если для канальной программы CCW определено сцепление команд, канальная подсистема передает первую и все последующие команды, описывающие цепочку операций ввода-ввода, по одному и тому же канальному тракту.

[00748] Выполнение операций ввода-вывода

[00749] После того как канальный тракт выбран, канальная подсистема, если позволяет ситуация, инициирует выполнение операции ввода-вывода со связанным устройством. Выполнение дополнительных операций ввода-вывода может следовать за инициацией и выполнением первой операции ввода-вывода.

[00750] Для субканалов, работающих в командном режиме, канальная подсистема может выполнять семь типов команд: записать, читать, читать в обратном направлении, контролировать, опознать, опознать ID и передать в канале. Каждая команда, кроме передать в канале, инициирует соответствующую операцию ввода-вывода. За исключением периодов, когда выполнение канальной программы на субканале отложено, субканал активен от приема первой команды до распознавания на субканале первичной ситуации прерывания. Если первичная ситуация прерывания распознается до получения первой команды, субканал не становится активным. Как правило, первичная ситуация прерывания вызывается сигналом окончания работы канала или, в случае сцепления команд, - сигналом окончания работы канала для последнего CCW цепочки. Устройство является активным до распознавания на субканале вторичной ситуации прерывания. Как правило, вторичная ситуация прерывания вызывается сигналом окончания работы устройства, или, в случае сцепления команд, - сигналом окончания работы устройства для последнего CCW цепочки.

[00751] Для субканалов, работающих в режиме передачи, канальная подсистема может передавать шесть типов команд для выполнения: записать, читать, контролировать, опознать, опознать ID и опросить. Каждая команда инициирует соответствующую операцию устройства. Когда одна или несколько команд передаются на устройство ввода-вывода в TCCB, субканал остается ожидающим старт пока не будет передан первичный статус.

[00752] Замечания для программирования:

[00753] В однотрактном режиме все передачи команд, данных и статусов для операции ввода-вывода или цепочки операций ввода-вывода происходят на канальном тракте, по которому на устройство была передана первая команда.

[00754] Когда устройство имеет установленное средство динамического отсоединения, операция ввода-вывода или цепочка операций ввода-вывода может выполняться в многотрактном режиме. Чтобы работать в многотрактном режиме, MODIFY SUBCHANNEL должна была быть предварительно выполнена для субканала с битом 13 слова 1 SCHIB, заданным в единицу. Кроме того, устройство должно быть установлено для многотрактного режима выполнением определенных зависящих от модели команд, соответствующих этому типу устройства. Общие процедуры для выполнения операций многотрактного режима следующие:

[00755] 1. Установка

[00756] Команда типа установки многотрактного режима должна быть успешно выполнена устройством на каждом канальном тракте, которому предстоит быть элементом устанавливаемой многотрактной группы; иначе многотрактный режим работы может привести к непредсказуемым результатам на субканале. Если, по какой-либо причине, один или несколько физически доступных канальных трактов к устройству не включаются в многотрактную группу, эти канальные тракты не должны быть доступны для выбора, пока субканал работает в многотрактном режиме. Канальный тракт может делаться недоступным для выбора путем установки соответствующего бита LPM в ноль или в SCHIB до выполнения MODIFY SUBCHANNEL, или в ORB до выполнения START SUBCHANNEL.

[00757] b. Когда команда типа установки многотрактного режима передается на устройство, только один канальный тракт должен быть логически доступен, чтобы избежать выбора альтернативного канального тракта для выполнения этой функции запуска; иначе ситуации занятости устройства могут быть обнаружены канальной подсистемой на более чем одном канальном тракте, что может привести к непредсказуемым результатам для последующих операций многотрактного режима. Этот тип процедуры установки следует использовать всякий раз, когда изменяется количество элементов многотрактной группы.

[00758] 2. Выход из многотрактного режима

[00759] Чтобы выйти из многотрактного режима и продолжить обработку в однотрактном режиме, может использоваться любая из следующих двух процедур:

[00760] a. Команда типа расформирования многотрактного режима может выполняться для любого канального тракта многотрактной группы. За этой командой должны следовать или (1) выполнение MODIFY SUBCHANNEL с 13 битом слова 1 SCHIB установленным в ноль, или (2) определение только одного канального тракта как логически доступного в LPM. Функция запуска не должна выполняться на субканале, работающем в многотрактном режиме с множеством канальных трактов, доступных для выбора, в то время как устройство работает в однотрактном режиме; иначе на субканале для этой функции или последующих функций запуска могут возникнуть непредсказуемые результаты.

[00761] b. Команда типа расформирования многотрактного режима выполняется на каждом канальном тракте многотрактной группы (обращение установки). После этой команды должны следовать или (1) выполнение MODIFY SUBCHANNEL с 13 битом слова 1 SCHIB установленным в ноль, или (2) определение только одного канального тракта как логически доступного в LPM. Никакая функция запуска не может выполняться на субканале, работающем в многотрактном режиме с множеством канальных трактов, доступных для выбора, в то время как устройство работает в однотрактном режиме; иначе на субканале для этой функции или последующих функций запуска могут возникнуть непредсказуемые результаты.

[00762] Блокирование данных

[00763] Данные, записанные устройством ввода-вывода, разделяются на блоки. Размер блока зависит от устройства; например, блок может быть карточкой, строкой печати или информацией, записанной между двумя последовательными промежутками на магнитной ленте.

[00764] Максимальный размер информации, которая может быть передана в одной операции ввода-вывода, составляет один блок. Операция ввода-вывода прерывается, когда связанная область основного запоминающего устройства исчерпывается или достигается конец блока, в зависимости от того, что происходит первым. Для некоторых операций, таких как запись на магнитопротяжном устройстве или на терминале запросов, блоки не определены, и количество передаваемой информации контролируется только программой.

[00765] Блок запроса операции

[00766] Блок (ORB) запроса операции является операндом START SUBCHANNEL. ORB определяет параметры, которые должны использоваться при управлении этой конкретной функцией запуска. Эти параметры включают параметр прерывания, ключ субканала, адрес первого CCW или TCW, биты управления операцией, числа управления приоритетом и спецификацию логической доступности канальных трактов к указанному устройству.

[00767] Содержимое ORB помещается на указанном субканале во время выполнения START SUBCHANNEL, до установки кода 0 ситуации. Если выполнение приводит к ненулевому коду ситуации, содержимое ORB не помещается на указанный субканал.

[00768] Два крайних справа бита адреса ORB должны быть нулями, располагая ORB на границе слова; иначе распознается исключительная ситуация спецификации. Когда установлено средство (FCX) расширений fibre channel, контроль (В) (слово 1, бит 13) типа канальной программы ORB определяет тип канальной программы, которая указана посредством ORB. Когда В равно нулю, ORB указывает канальную программу CCW. Когда В равно единице, ORB указывает канальную программу TCW. Только устройства ввода-вывода, которые поддерживают FCX, распознают канальные программы TCW.

[00769] Если содержимое ORB, который указывает канальную программу CCW, располагается на указанном субканале во время выполнения START SUBCHANNEL, субканал остается в командном режиме. Таким образом, такой ORB также известен как ORB командного режима. Если содержимое ORB, который указывает канальную программу TCW, располагается на указанном субканале во время выполнения START SUBCHANNEL, субканал входит в режим передачи. Таким образом, такой ORB также известен как ORB режима передачи.

[00770] TEST PENDING INTERRUPTION

[00771] Код прерывания ввода-вывода для ожидающего прерывания ввода-вывода на субканале сохраняется в местоположении, указанном адресом второго операнда, и ожидающее прерывание ввода-вывода сбрасывается.

[00772] Адрес второго операнда, когда не равен нулю, является логическим адресом местоположения, в котором должен храниться код прерывания ввода-вывода из двух слов, состоящий из слов 0 и 1. Адрес второго операнда должен быть указан на границе слова;

иначе распознается исключительная ситуация спецификации.

[00773] Если адрес второго операнда равен нулю, код прерывания ввода-вывода из трех слов, состоящий из слов 0-2, сохраняется в реальных местоположениях 184-195. В этом случае защита младшего адреса и защита с контролем по ключу не используются.

[00774] В режиме регистра доступа, когда адрес второго операнда равен нулю, невозможно предсказать, происходит ли трансляция регистра доступа для регистра B2 доступа. Если трансляция происходит, результирующий элемент управления адресного пространства не используется; то есть, код прерывания по-прежнему хранится в реальных местоположениях 184-195.

[00775] Ожидающие запросы прерывания ввода-вывода принимаются только для тех подклассов прерываний ввода-вывода, которые разрешены маской подкласса прерываний ввода-вывода в управляющем регистре 6 центрального процессора, выполняющего команду. Если не существует запросов прерывания ввода-вывода, разрешенных управляющим регистром 6, код прерывания ввода-вывода не сохраняется, положение второго операнда не изменяется, и устанавливается код 0 ситуации.

[00776] Если ожидающий запрос прерывания ввода-вывода принимается, код прерывания ввода-вывода сохраняется, ожидающий запрос прерывания ввода-вывода сбрасывается, и устанавливается код 1 ситуации. Код прерывания ввода-вывода, который сохраняется, является таким же, какой сохранялся бы, если бы произошло прерывание ввода-вывода. Однако слова PSW не подкачиваются, как при возникновении прерывания ввода-вывода. Выполнение команды определяется следующим образом:

[00777] Слово идентификации подсистемы (SID):

[00778] Биты 32-63 SID располагаются в слове 0.

[00779] Параметр прерывания: Слово 1 содержит четырехбайтный параметр, который был определен программой и передан на субканал в слове 0 ORB или PMCW. Когда устройство передает предупреждающий статус, а параметр прерывания не был ранее передан на субканал путем выполнения START SUBCHANNEL или MODIFY SUBCHANNEL, это поле содержит нули.

[00780] Слово идентификации прерывания: Сохраненное слово 2 содержит слово идентификации прерывания, которое дополнительно идентифицирует источник прерывания ввода-вывода. Слово 2 сохраняется только когда адрес второго операнда равен нулю.

[00781] Слово идентификации прерывания определяется следующим образом:

[00782] Бит (А): Бит 0 слова идентификации прерывания определяет тип ожидающего запроса прерывания ввода-вывода, которое было сброшено. Когда бит 0 равен нулю, запрос прерывания ввода-вывода был связан с субканалом.

[00783] Подкласс (ISC) прерывания ввода-вывода: Позиции битов 2-4 слова идентификации прерывания содержат беззнаковое двоичное целое число, в диапазоне 0-7, которое определяет подкласс прерывания ввода-вывода, связанный с субканалом, для которого был сброшен ожидающий запрос прерывания ввода-вывода. Остальные позиции битов зарезервированы и установлены в нули.

[00784] Особые ситуации

[00785] TEST PENDING INTERRUPTION может сталкиваться с программными исключительными ситуациями, описанными или перечисленными ниже.

[00786] Второй операнд должен быть указан на границе слова; иначе распознается исключительная ситуация спецификации.

[00787] Выполнение TEST PENDING INTERRUPTION подавляется во всех исключительных ситуациях адресации и защиты.

[00788] Результирующий код ситуации:

[00789] 0 Код прерывания не сохранен

[00790] 1 Код прерывания сохранен

[00791] 2 -

[00792] 3 -

[00793] Программные исключительные ситуации:

[007941 - Доступа (сохранения, операнда 2, только ненулевого адреса второго операнда)

[00795] - Приоритетной операции

[00796] - Спецификации

[00797] Замечания для программирования:

[00798] 1. TEST PENDING INTERRUPTION следует исполнять только с нулевым адресом второго операнда, когда прерывания ввода-вывода маскированы. Иначе код прерывания ввода-вывода, сохраненный командой, может быть потерян, если возникает прерывание ввода-вывода. Код прерывания ввода-вывода, который идентифицирует источник прерывания ввода-вывода, принятого после TEST PENDING INTERRUPTION, также сохраняется в местоположениях 184-195, заменяя код прерывания ввода-вывода, который был сохранен командой.

[00799] 2. В режиме регистра доступа, когда адрес второго операнда равен нулю, исключительная ситуация доступа распознается, если возникает трансляция регистра доступа и регистр доступа находится в состоянии ошибки. Это исключение можно предотвратить путем установки поля B2 в нуль или путем расположения шестнадцатеричного значения 00000000, 00000001 или любого другого достоверного содержимого в регистр доступа.

[00800] STORE SUBCHANNEL

[00801] Информация управления и статуса для указанного субканала сохраняется в указанном SCHIB.

[00802] Регистр 1 общего назначения содержит слово идентификации подсистемы, которое указывает субканал, для которого необходимо сохранить информацию. Адрес второго операнда является логическим адресом SCHIB и должен быть указан на границе слова; иначе распознается исключительная ситуация спецификации.

[00803] Когда расширенное средство блока измерения ввода-вывода не установлено, информация, которая сохраняется в SCHIB, состоит из слова контроля управления трактами, SCSW и трех слов зависящей от модели информации. Когда расширенное средство блока измерения ввода-вывода установлено, информация, которая сохраняется в SCHIB, состоит из слова контроля управления трактами, SCSW, поля адреса блока измерения и одного слова зависящей от модели информации.

[00804] Выполнение STORE SUBCHANNEL не изменяет никакой информации на субканале.

[00805] Код 0 ситуации устанавливается, чтобы указывать, что информация управления и статуса для указанного субканала была сохранена в SCHIB. Когда выполнение STORE SUBCHANNEL приводит к установке кода 0 ситуации, информация в SCHIB указывает на согласованное состояние субканала.

[00806] Особые ситуации

[00807] Код 3 ситуации устанавливается, и никакое другое действие не предпринимается, когда указанный субканал является нерабочим для STORE SUBCHANNEL. Субканал является нерабочим для STORE SUBCHANNEL, если субканал не предоставлен в канальной подсистеме.

[00808] STORE SUBCHANNEL может встречать программные исключительные ситуации, описанные или перечисленные ниже.

[00809] Когда средство нескольких наборов субканалов не установлено, биты 32-47 регистра 1 общего назначения должны содержать шестнадцатеричное значение 0001 hex; иначе распознается исключительная ситуация операнда.

[00810] Когда средство нескольких наборов субканалов установлено, биты 32-44 регистра 1 общего назначения должны содержать нули, биты 45-46 должны содержать достоверное значение, а бит 47 должен содержать единичное значение; иначе распознается исключительная ситуация операнда.

[00811] Второй операнд должен быть указан на границе слова; иначе распознается исключительная ситуация спецификации.

[00812] Результирующий код ситуации:

[00813] 0 SCHIB сохранен

[00814] 1 -

[00815] 2 -

[00816] 3 Нерабочий

[00817] Программные исключительные ситуации:

[00818] - Доступа (сохранения, операнда 2)

[00819] - Операнда

[00820] - Приоритетной операции

[00821] - Спецификации

[00822] Замечания для программирования:

[00823] 1. Статус устройства, которое сохраняется в SCSW, может включать указания на занятость устройства, занятость устройства управления или окончание работы устройства управления.

[00824] 2. Информация, которая сохраняется в SCHIB, получается из субканала. Команда STORE SUBCHANNEL не приводит к опросу канальной подсистемой адресуемого устройства.

[00825] 3. STORE SUBCHANNEL может выполняться в любое время, чтобы замерить ситуации, существующие на субканале, не вызывая сброса никаких ожидающих статус ситуаций.

[00826] 4. Повторяющегося выполнения STORE SUBCHANNEL без промежуточной задержки (например, чтобы определить, когда субканал меняет состояние) следует избегать, поскольку повторяющиеся обращения к субканалу со стороны ЦП могут задерживать или препятствовать доступу к субканалу со стороны канальной системы с целью обновления субканала.

[00827] TEST SUBCHANNEL

[00828] Информация управления и статуса для субканала сохраняется в указанном IRB.

[00829] Регистр 1 общего назначения содержит слово идентификации подсистемы, которое указывает субканал, для которого необходимо сохранить информацию. Адрес второго операнда является логическим адресом IRB и должен быть указан на границе слова; иначе распознается исключительная ситуация спецификации.

[00830] Информация, которая сохраняется в IRB, состоит из SCSW, слова расширенного статуса и слова расширенного управления.

[00831] Если субканал является ожидающим статус, бит ожидания статуса поля управления статусом устанавливается в единицу. То, является или нет субканал ожидающим статус, оказывает влияние на функции, которые выполняются при выполнении TEST SUBCHANNEL.

[00832] Когда субканал является ожидающим статус и выполняется TEST SUBCHANNEL, информация, как описано выше, сохраняется в IRB, после чего следует сброс определенных ситуаций и указаний, которые существуют на субканале. Если субканал находится в режиме передачи, сброс этих ситуаций, особенно функции запуска, помещает субканал в командный режим. Если запрос прерывания ввода-вывода является ожидающим для субканала, запрос сбрасывается. Код 0 ситуации устанавливается, чтобы указать, что эти действия были предприняты.

[00833] Когда субканал не является ожидающим статус и выполняется TEST SUBCHANNEL, информация сохраняется в IRB, и никакие ситуации или указания не сбрасываются. Код 1 ситуации устанавливается, чтобы указать, что эти действия были предприняты.

[00834] Особые ситуации

[00835] Код 3 состояния устанавливается, и никакие другие действия не предпринимаются, когда субканал является нерабочим для TEST SUBCHANNEL. Субканал является нерабочим для TEST SUBCHANNEL, если субканал не предоставлен, не имеет достоверного номера устройства, связанного с ним, или не активирован.

[00836] TEST SUBCHANNEL может сталкиваться с программными исключительными ситуациями, описанными или перечисленными ниже.

[00837] Когда средство нескольких наборов субканалов не установлено, биты 32-47 регистра 1 общего назначения должны содержать шестнадцатеричное значение 0001; иначе распознается исключительная ситуация операнда.

[00838] Когда средство нескольких наборов субканалов установлено, биты 32-44 регистра 1 общего назначения должны содержать нули, биты 45-46 должны содержать достоверное значение, а бит 47 должен содержать единицу; иначе распознается исключительная ситуация операнда.

[00839] Второй операнд должен быть указан на границе слова; иначе распознается исключительная ситуация спецификации.

[00840] Когда выполнение TEST SUBCHANNEL прерывается в исключительных ситуациях адресации и защиты, состояние субканала не меняется.

[00841] Результирующий код ситуации:

[00842] 0 IRB сохранен; субканал ожидает статус

[00843] 1 IRB сохранен; субканал не ожидает статус

[00844] 2 -

[00845] 3 Нерабочий

[00846] Программные исключительные ситуации:

[00847] - Доступа (сохранения, операнда 2)

[00848] - Операнда

[00849] - Приоритетной операции

[00850] - Спецификации

[00851] Замечания для программирования:

[00852] 1. Статус устройства, которое сохраняется в SCSW, может включать указания на занятость устройства, занятость устройства управления или окончания работы устройства управления.

[00853] 2. Информация, которая сохраняется в IRB, получается из субканала. Команда TEST SUBCHANNEL не вынуждает канальную подсистему опрашивать адресуемое устройство.

[00854] 3. Когда происходит прерывание ввода-вывода, это является результатом ситуации ожидания статуса на субканале, и, как правило, TEST SUBCHANNEL выполняется, чтобы сбросить статус.TEST SUBCHANNEL также может выполняться в любое другое время, чтобы замерить ситуации, существующие на субканале.

[00855] 4. Повторяющегося выполнения TEST SUBCHANNEL, чтобы определить, когда была завершена функция запуска, следует избегать, поскольку существуют ситуации, в которых завершение функции запуска может быть или не может быть инициировано. Например, если канальная подсистема удерживает ситуацию проверки управления интерфейса (IFCC) в ожидании (для какого-либо субканала), поскольку другой субканал уже является ожидающим статус, и если функция запуска, проверяемая посредством TEST SUBCHANNEL, имеет в качестве единственного доступного для выбора тракта канальный тракт с ситуацией IFCC, то стартовая функция не может быть инициирована до тех пор, пока ситуация ожидания статуса в другом субканале не будет сброшена, позволяя ситуации IFCC быть указанной на субканале, к которому она применяется.

[00856] 5. Повторяющегося выполнения TEST SUBCHANNEL без промежуточной задержки, например, чтобы определить, когда субканал меняет состояние, следует избегать, поскольку повторяющиеся обращения к субканалу со стороны ЦП могут задерживать или препятствовать доступу к субканалу со стороны канальной системы. Выполнение TEST SUBCHANNEL множеством центральных процессоров для одного субканала примерно в одно время может иметь тот же эффект, и его также следует избегать.

[00857] 6. Приоритет обработки прерываний ввода-вывода центральным процессором можно менять посредством выполнения TEST SUBCHANNEL. Когда выполняется TEST SUBCHANNEL, и указанный субканал имеет ожидающий запрос прерывания ввода-вывода, этот запрос прерывания ввода-вывода сбрасывается, и SCSW сохраняется, в независимости от какого-либо ранее установленного приоритета. Относительный приоритет остальных запросов прерываний ввода-вывода остается неизменным.

[00858] Как будет понятно специалисту в данной области техники, особенности настоящего изобретения могут быть реализованы системой, способом или компьютерным программным продуктом. Соответственно, особенности настоящего изобретения могут иметь форму полностью аппаратного варианта осуществления, полностью программного варианта осуществления (включая встроенное программное обеспечение, резидентное программное обеспечение, микрокод и т.п.) или варианта осуществления, сочетающего программные и аппаратные особенности, которые все в данном документе в целом могут называться «контуром», «модулем» или «системой». Кроме того, особенности настоящего изобретения могут иметь форму компьютерного программного продукта, реализованного в одной или нескольких машиночитаемой среде(-ах), с реализованным на них машиночитаемым программным кодом.

[00859] Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемая среда может быть машиночитаемой запоминающей средой. Машиночитаемая запоминающая среда может быть, например, без ограничения, электронной, магнитной, оптической, электромагнитной, инфракрасной или полупроводниковой системой, аппаратом или устройством, или любым подходящим сочетанием вышеуказанного. Более конкретные примеры (не исчерпывающий список) машиночитаемых запоминающих сред включают следующее: электрическое соединение, имеющее один или несколько проводов, съемную дискету для компьютера, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СПЗУ или флэш-память), оптоволокно, постоянное запоминающее устройство на съемном диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое подходящее сочетание вышеуказанного. В контексте этого документа машиночитаемая запоминающая среда может быть любой материальной средой, которая может содержать или хранить программу для использования посредством системы, аппарата или устройства выполнения команд или в связи с ними.

[00860] Как показано на фиг.10, в одном примере компьютерный программный продукт 1000 содержит, например, одну или несколько постоянных машиночитаемых запоминающих сред 1002 для хранения в них машиночитаемого программного кода или логики 1004 для обеспечения и улучшения одной или нескольких особенностей настоящего изобретения.

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

[00862] Компьютерный программный код для выполнения операций, обеспечивающих особенности настоящего изобретения, может быть написан на любом сочетании одного или нескольких языков программирования, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционные процедурные языки программирования, такие как язык программирования C, ассемблер или подобные языки программирования. Программный код может полностью выполняться на компьютере пользователя, частично на компьютере пользователя, в качестве автономного пакета программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью удаленном компьютере или сервере. В последнем случае удаленный компьютер может быть соединен с компьютером пользователя посредством сети любого типа, включая локальную вычислительную сеть (LAN) или глобальную вычислительную сеть (WAN), или соединение может осуществляться с внешним компьютером (например, по сети Интернет с помощью Интернет-провайдера).

[00863] Особенности настоящего изобретения описаны в данном документе со ссылкой на структурные схемы и/или блок-схемы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления изобретения. Будет понятно, что каждый блок на структурных схемах и/или блок-схемах и сочетания блоков на структурных схемах и/или блок-схемах могут быть реализованы посредством команд управления компьютерных программ. Эти команды управления компьютерной программой могут подаваться на процессор компьютера общего назначения, компьютера специального назначения или другого программируемого устройства для обработки данных с целью создания машины, в которой команды, которые выполняются посредством процессора компьютера или другого программируемого устройства для обработки данных, создают средство для реализации функций/действий, определенных блоком или блоками на структурных схемах и/или блок-схемах.

[00864] Эти команды управления компьютерной программой также могут храниться в машиночитаемой среде, которая может предписывать компьютеру, другому программируемому устройству обработки данных или другим устройствам действовать конкретным образом, так что команды, хранящиеся в машиночитаемой среде, образуют изделие обработки, содержащее команды, которые реализуют функцию/действие, определенные блоком или блоками на структурных схемах и/или блок-схемах.

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

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

[00867] В придачу к вышесказанному, одна или несколько особенностей настоящего изобретения может предоставляться, предлагаться, вводиться, управляться, обслуживаться и т.п. поставщиком услуг, который предлагает управление пользовательскими средами. Например, поставщик услуг может создавать, поддерживать, обслуживать и т.п. компьютерный код и/или вычислительную инфраструктуру, которая выполняет одну или несколько особенностей настоящего изобретения для одного или нескольких пользователей. В ответ поставщик услуг может получать оплату от пользователя, например, согласно подписке и/или соглашению. Дополнительно или в качестве альтернативы, поставщик услуг может получать плату за продажу рекламы одной или нескольким третьим сторонам.

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

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

[00870] В качестве еще одной особенности настоящего изобретения может быть представлен способ интегрирования вычислительной инфраструктуры, включающий интегрирование машиночитаемого кода в компьютерную систему. Компьютерная система содержит машиночитаемую среду, причем машиночитаемая среда содержит одну или несколько особенностей настоящего изобретения. Код в сочетании с компьютерной системой способен выполнять одну или несколько особенностей настоящего изобретения.

[00871] Хотя выше описаны различные варианты осуществления, они являются лишь примерами. Например, вычислительные среды других архитектур могут включать и использовать одну или несколько особенностей настоящего изобретения. Например, серверы, отличающиеся от серверов z196, могут включать, использовать и/или получать преимущества от одной или нескольких особенностей настоящего изобретения. Кроме того, могут использоваться другие команды управления и/или команды; и команды управления/команды могут включать дополнительную, меньшую и/или отличающуюся информацию, по сравнению с описанной в данном документе. Возможны многие варианты.

[00872] Кроме того, другие типы вычислительных сред могут получать преимущества от одной или нескольких особенностей настоящего изобретения. Например, может применяться система обработки данных, подходящая для хранения и/или выполнения программного кода, которая включает по меньшей мере два процессора, прямо или непрямо соединенных с элементами памяти через системную шину. Элементы памяти включают, например, локальную память, используемую во время фактического выполнения программного кода, устройство массовой памяти и кэш-память, которая обеспечивает временное хранение по меньшей мере некоторого программного кода с целью уменьшения количества извлечений кода из устройства массовой памяти во время выполнения.

[00873] Устройства ввода-вывода (включая без ограничения клавиатуры, экраны, устройства указания, DASD (устройства памяти с прямым доступом), ленту, CD диски, DVD диски, флэш-устройства и другие среды памяти, и т.п.) могут подключаться к системе или прямо, или посредством промежуточных контроллеров ввода-вывода. Сетевые адаптеры также могут подключаться к системе, чтобы позволять системе обработки данных соединяться с другими системами обработки данных или удаленным принтерам или устройствам памяти посредством промежуточных частных или общих сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь некоторыми из доступных типов сетевых адаптеров.

[00874] Фиг.11 представляет собой изображение характерных компонентов хост-компьютерной системы 5000 для реализации одной или нескольких особенностей настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько ЦП 5001, связанных с памятью (т.е. центральным запоминающим устройством) 5002 компьютера, а также интерфейсы ввода-вывода к запоминающим устройствам 5011 и сети 5010 для связи с другими компьютерами или SAN и т.п. ЦП 5001 совместим с архитектурой, имеющей структурированный набор команд и структурированные функциональные возможности. ЦП 5001 может иметь динамическую трансляцию 5003 адреса (DAT) для преобразования программных адресов (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 5007 быстрого преобразования адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш 5009. Кэш 5009 может быть иерархическим, имеющим кэш большой емкости, доступный для более чем одного ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых осуществлениях кэши низкого уровня разделяются, чтобы предоставлять отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном варианте осуществления команда извлекается из памяти 5002 блоком 5004 выборки команд посредством кэша 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения, например, блок выполнения арифметических команд, блок выполнения с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком выполнения, который осуществляет доступ к операндам из определяемых командами регистров или памяти по мере необходимости. Если доступ (загрузку или сохранение) к операнду необходимо осуществлять из памяти 5002, блок 5005 загрузки/сохранения обычно осуществляет доступ под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении), или с использованием их сочетания.

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

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

[00877] Для команд и операндов, хранимых в памяти, могу быть предусмотрены отдельные кэши. Информация в кэше содержится в форме непрерывных байтов на целочисленной границе, называемой блоком кэша или строкой кэша (или, для краткости, -строкой). Одна модель может предоставлять команду EXTRACT CACHE ATTRIBUTE (команда извлечения атрибута кэша), которая возвращает размер строки кэша в байтах. Одна модель также может предоставлять команду PREFETCH DATA (предварительной выборки данных) и команду PREFETCH DATA RELATIVE LONG (предварительной выборки данных относительно большой длины) для предварительной выборки данных из запоминающего устройства в кэш данных или команд или для освобождения данных из кэша.

[00878] Запоминающее устройство рассматривается как длинная горизонтальная строка битов. Для большинства операций доступ к запоминающему устройству осуществляется последовательно слева направо. Строка битов подразделяется на блоки из восьми битов. Восьмиразрядный блок называется байтом, который является основным конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется уникальным неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют последовательные адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой беззнаковые двоичные целые числа, содержащие 24, 31 или 64 бита.

[00879] Информацией между запоминающим устройством и ЦП или канальной подсистемой передается по одному байту или группой байтов за один раз. Если не оговорено иное, например, в системе z/Architecture® хранящаяся группа байтов адресуется посредством крайнего левого байта группы. Число байтов в группе подразумевается или прямо определяется операцией, которую необходимо выполнить. Используемая в работе ЦП группа байтов называется полем. В каждой группе байтов, например, в z/Architecture®, биты последовательно нумеруются слева направо. В z/Architecture® крайние левые биты иногда именуются "старшими" битами, а крайние правые разряды - "младшими" битами. Однако номера битов не являются адресами ячеек запоминающего устройства. Обращаться по адресу можно только к байтам. Чтобы работать с отдельными битами хранящегося байта, осуществляется доступ ко всему байту. Биты в байте пронумерованы слева направо от 0 до 7 (например, в Architecture®. Биты в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-битных адресов или от 1 до 31 или от 33 до 63 в случае 31-битных адресов и от 0 до 63 в случае 64-битных адресов. В любом другом формате фиксированной длины из множества байтов биты, образующие формат, последовательно нумеруются, начиная с 0. В целях обнаружения ошибок, и предпочтительно их исправления, с каждым байтом или группой байтов может передаваться один или несколько контрольных битов. Такие контрольные разряды генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда длина хранящегося поля операнда подразумевается кодом операций команды, говорят, что поле имеет фиксированную длину, которая может составлять 1, 2, 4, 8 или 16 байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, говорят, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине с шагом в 1 байт (или для некоторых команд с шагом в 2 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути к запоминающему устройству может быть больше длины сохраняемого поля.

[00880] Некоторые единицы информации должны находиться на целочисленной границе в запоминающем устройстве. Применительно к единице информации граница называется целочисленной, когда адрес ее ячейки запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтов на целочисленной границе даются особые названия. Полуслово представляет собой группу из 2 идущих подряд байтов на двухбайтной границе и является основным структурным блоком команд. Слово представляет собой группу из 4 идущих подряд байтов на четырехбайтной границе. Двойное слово представляет собой группу из 8 идущих подряд байтов на восьмибайтной границе. Учетверенное слово представляет собой группу из 16 идущих подряд байтов на шестнадцатибайтной границе. Когда адреса запоминающего устройства обозначают полуслова, слова, двойные слова и учетверенные слова, двоичное представление адреса содержит один, два, три или четыре крайних правых нулевых бита, соответственно. Команды должны находиться на двухбайтных целочисленных границах. Хранящиеся операнды большинства команд не содержат требования выравнивания на границах.

[00881] В устройствах, в которых реализованы раздельные кэши для команд и операндов, хранимых в памяти, могут происходить значительные задержки, если программа сохраняется в строке кэша, из которой впоследствии осуществляется извлечение команд, независимо от того, изменяются ли при сохранении команды, извлечение которых осуществляется впоследствии.

[00882] В одном варианте осуществления изобретение может быть реализовано на практике программным обеспечением (иногда называемым лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., любое из чего будет согласоваться с настоящим изобретением). Как показано на фиг.11, к программному коду программного обеспечения, которое воплощает настоящее изобретение, обычно получает доступ процессор 5001 хост-системы 5000 из запоминающих устройств 5011 долговременной памяти, таких накопитель на CD-диске, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код программного обеспечения может быть воплощен в любой из множества известных сред для использования с системой обработки данных, такой как дискета, накопитель на жестких дисках или CD-диск. Код может распределяться в таких средах или может распределяться пользователям из компьютерной памяти 5002 или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для использования пользователями таких других систем.

[00883] Программный код включает операционную систему, которая управляет функцией и взаимодействием различных компонентов компьютера и одной или нескольких прикладных программ. Обычно программный код подкачивается по частям из запоминающего устройства 5011 в относительно более быстродействующее запоминающее устройство 5002 компьютера, в которой он доступен для обработки процессором 5001. Методы и способы для воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода через сети хорошо известны и более глубоко в данном документе обсуждаться не будут. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски (CD), DVD, магнитную ленту и т.п.) часто называют «компьютерным программным продуктом». Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

[00884] ФИГ.12 представляет собой изображение характерной рабочей станции или серверной аппаратной системы, в которой настоящее изобретение может быть реализовано на практике. Система 5020, представленная на фиг.12, содержит характерную базовую компьютерную систему 5021, такую как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину, используемую для соединения и связи процессора(-ов) 5026 и других компонентов системы 5021 и в соответствии с известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может включать накопитель на жестких дисках (например, включающий любое из магнитного накопителя, CD-диска, DVD-диска и флэш-памяти) или, например, накопитель на магнитной ленте. Система 5021 также может включать адаптер пользовательского интерфейса, который соединяет микропроцессор 5026 через шину с одним или несколькими интерфейсными устройствами, такими как клавиатура 5024, мышь 5023, принтер/сканнер 5030 и/или другие интерфейсные устройства, которые могут быть любыми устройствами пользовательского интерфейса, такими как сенсорный экран, клавиатура цифрового ввода и т.п.Шина также соединяет устройство 5022 воспроизведения, такое как ЖК-экран или монитор, с микропроцессором 5026 посредством адаптера устройства воспроизведения.

[00885] Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с маркерным доступом, сеть Ethernet или модемы. В другом случае система 5021 может поддерживать связь с помощью беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (LAN) или глобальной вычислительной сети (WAN), или система 5021 может быть клиентом в клиент/серверной распределенной системе с другим компьютером, и т.п. Все эти конфигурации, а также соответствующее коммуникационное аппаратное и программное обеспечение, известны в данной области техники.

[00886] Фиг. 13 представляет собой изображение сети 5040 обработки данных, в которой настоящее изобретение может быть реализовано на практике. Сеть 5040 обработки данных может включать множество отдельных сетей, таких как беспроводная сеть и проводная сеть, каждая из которых может включать множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, она может содержать одну или несколько сетей LAN, где LAN может включать множество интеллектуальных рабочих станций, соединенных с хост-процессором.

[00887] Все еще обращаясь к фиг. 13, сети также могут содержать мэйнфреймы или серверы, такие как шлюз (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюз 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при соединении одного сетевого протокола с другим. Шлюз 5046 предпочтительно может быть соединен линией связи с другой сетью (например, сетью Интернет 5047). Шлюз 5046 также может быть прямо соединен с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 посредством линии связи. Шлюз может быть реализован с использованием сервера IBM eServer™ System z®, поставляемым на рынок International Business Machines Corporation.

[00888] Одновременно на фиг. 12 и фиг. 13 представлен программный код программного обеспечения, который может реализовывать настоящее изобретение, может быть доступен процессору 5026 системы 5020 из долговременных запоминающих сред 5027, таких накопитель на CD-дисках или накопитель на жестких дисках. Программныйкод программного обеспечения может быть воплощен в любой из множества известных сред для использования с системой обработки данных, такой как дискета, жесткий диск или CD-диск. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для использования пользователями таких других систем.

[00889] В другом случае, программный код может быть осуществлен в памяти 5025, с доступом к нему процессором 5026 с применением процессорной шины. Такой программный код включает операционную систему, которая управляет функцией и взаимодействием различных компонентов компьютера и одной или нескольких прикладных программ 5032. Программный код обычно подкачивается по частям из запоминающих сред 5027 в быстродействующую память 5025, где он доступен для обработки процессором 5026. Методы и способы осуществления программного кода программного обеспечения в памяти, в физических средах и/или распределения кода программного обеспечения посредством сетей хорошо известны и в данном документе подробнее обсуждаться не будут. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски (CD), DVD-диски, магнитную ленту и т.п.) часто называют «компьютерным программным продуктом». Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

[00890] Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующий и менее объемный, чем другие кэши процессора), представляет собой низший (L1 или уровня 1) кэш, а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3, если имеется 3 уровня). Кэш низшего уровня часто делится на кэш команд (1-кэш), хранящий машинные команды, подлежащие выполнению, и кэш данных (D-кэш), содержащий операнды, хранимые в памяти.

[00891] Фиг.14 представляет собой изображение иллюстративного варианта осуществления процессора для процессора 5026. Обычно, чтобы буферизировать блоки памяти с целью повышения производительности процессора, используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, хранящий строки кэша данных памяти, которые предположительно будут использоваться. Типичные строки кэша содержат 64, 128 или 256 байтов данных памяти. Для кэширования команд и кэширования данных часто используются отдельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения, хорошо известными в данной области техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, имеющей 4 уровня кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем 5 уровня (L5), поскольку оно обычно является более быстродействующими и содержит лишь часть энергонезависимого запоминающего устройства (DASD, лента и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые постранично перемещаются в основное запоминающее устройство 5025 и из него операционной системой.

[00892] Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды, подлежащей выполнению. Счетчик команд в процессоре z/Architecture® является 64-битным и может быть усечен до 31 или 24 битов с целью поддержки предыдущих ограничений адресации. Счетчик команд обычно воплощен в слове статуса программы (PSW) компьютера, так что он сохраняется при переключении контекста. Таким образом, работающая программа, имеющая значение счетчика команд, может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы сохраняет значение счетчика команд, пока программа неактивна, и программный счетчик (в PSW) операционной системы используется, пока выполняется операционная система. Обычно счетчик команд увеличивается на величину, равную числу байтов текущей команды. RISC-команды (вычисления с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (вычисления со сложным набором команд) обычно имеют переменную длину. Команды IBM z/Architecture® являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Счетчик 5061 команд изменяется, например, или операцией переключения контекста, или операцией выбранного перехода команды перехода. В операции переключения контекста текущее значение счетчика команд сохраняется в слове статуса программы сохраняется вместе с другой информацией о состоянии выполняемой программы (такой как коды состояний), и загружается новое значение счетчика команд, указывающее на команду нового программного модуля, который необходимо выполнить. Операция выбранного перехода выполняется, чтобы позволить программе принимать решения или выполнять цикл в программе путем загрузки результата команды перехода в счетчик 5061 команд.

[00893 j Обычно для выборки команд от имени процессора 5026 используется блок 5055 выборки команд. Блок выборки или извлекает «следующие последовательные команды», целевые команды команд выбранного перехода, или первые команды программы, следующей за переключением контекста. В современных блоках выборки команд часто применяют методы предварительной выборки, чтобы эмпирически осуществлять предварительную выборку команд на основании вероятности того, что предварительно выбранные команды могли бы быть использованы. Например, блок выборки может осуществлять выборку 16 байтов команды, которая содержит следующую последовательную команду, и дополнительных байтов других последовательных команд.

[00894] Затем извлеченные команды выполняются процессором 5026. В одном варианте осуществления извлеченная команда(-ы) передаются блоку 5056 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 выборки команд и выполняет арифметические операции с операндами в соответствии с кодом операции команды. Операнды подаются на блок 5057 выполнения предпочтительно или из памяти 5025, структурированных регистров 5059 или из ближайшего поля выполняемой команды. Сохраненные результаты выполнения хранятся или в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).

[00895] Процессор 5026 обычно имеет один или несколько блоков 5057, 5058, 5060 для выполнения функции команды. Обращаясь к фиг.15A, блок 5057 выполнения может сообщаться со структурированными регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065 посредством интерфейсной логики 5071. Блок 5057 выполнения может применять несколько регистровых схем 5067, 5068, 5069, чтобы хранить информацию, с которой будет работать арифметическое логическое устройство (ALU) 5066. ALU выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ (XOR), циклический сдвиг и смещение. ALU предпочтительно поддерживает специализированные операции, зависящие от структуры. Другие схемы могут обеспечивать другие структурированные средства 5072, включающие, например, коды ситуаций и логику поддержки восстановления. Обычно результат операции ALU хранится в схеме 5070 выходного регистра, которая может направлять результат ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание предназначено лишь обеспечить характерное понимание одного варианта осуществления.

[00896] Например, команда ADD выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, тогда как, например, команда с плавающей точкой выполняется блоком вычислений с плавающей точкой, обладающим специальными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения функции, определенной кодом операции, на операндах. Например, команда ADD может выполняться блоком 5057 выполнения на операндах, находящихся в двух регистрах 5059, указанных в регистровых полях команды.

[00897] Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, где третий операнд может быть третьим регистром или одним из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (ALU) 5066, способное выполнять ряд логических функций, таких как смещение, циклический сдвиг, И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любую из сложения, вычитания, умножения, деления. Некоторые ALU 5066 разработаны для скалярных операций, а некоторые - для плавающей точки. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). IBM z/Architecture® имеет обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до единицы или дополнения до двух. Число в форме дополнения до двух выгодно в том смысле, что ALU не нужно поддерживать процедуру вычитания, поскольку и отрицательное, и положительное значение в форме дополнения до двух в АЛУ требует только сложения. Числа обычно описаны в сокращенном виде, в котором 12-битное поле определяет адрес блока из 4096 байтов и обычно описывается, например, как 4 кб (килобайтный) блок.

[00898] Обращаясь к фиг.15B, информация команды перехода для выполнения команды перехода обычно передается блоку 5058 перехода, который часто применяет алгоритм предсказания переходов, такой как таблица 5082 истории переходов, чтобы предсказывать исход перехода до завершения других условных операций. Цель текущей команды перехода извлекается и выполняется по предположению до завершения условных операций. Когда условные операции завершаются, выполненные по предположению команды перехода или завершаются, или отбрасываются на основании ситуаций условной операции и предположенного исхода. Типичная команда перехода может проверять коды ситуаций и переход к целевому адресу, если коды ситуаций отвечают требованию перехода команды перехода, причем целевой адрес может рассчитываться на основании нескольких чисел, включая, например, числа из полей регистра или непосредственного поля команды. Блок 5058 перехода может применят ALU 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 перехода, может поддерживать связь, например, с регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации или другими схемами 5073.

[00899] Выполнение группы команд может прерываться по ряду причин, включая, например, переключение контекста, инициированное операционной системой, исключительную ситуацию или ошибку программы, приводящую к переключению контекста, сигнал прерывания ввода-вывода, приводящий к переключению контекста, или многопоточную деятельность множества программ (в многопоточной среде). Предпочтительно переключение контекста сохраняет информации о состоянии выполняемой в данный момент программе, а затем загружает информацию о состоянии другой запускаемой программы. Информация о состоянии может сохраняться, например, в аппаратных регистрах или в памяти. Информация о состоянии предпочтительно содержит значение счетчика команд, указывающее на очередную команду, которую необходимо выполнить, коды ситуаций, информацию о трансляции памяти и содержимое структурированного регистра. Деятельность по переключению контекста может осуществляться аппаратными схемами, прикладными программами, программами операционной системы или аппаратно-программным кодом (микрокодом, пикокодом или лицензионным внутренним кодом (LIC) по отдельности или в сочетании).

[00900] Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может предоставлять непосредственный операнд, использующий значение части команды, может предоставлять одно или несколько регистровых полей, прямо указывающих или на регистры общего назначения или на регистры особого назначения (например, регистры с плавающей точкой). Команда может использовать подразумеваемые регистры, идентифицируемые полем кода операции как операнды. Команда может использовать для операндов местоположения в запоминающем устройстве. Местоположение в запоминающем устройстве операнда может предоставляться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения z/Architecture®, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются, чтобы предоставлять, например, адрес операнда в памяти. Под местоположением в данном документе понимается местоположение в основной памяти (основного запоминающего устройства), если не указано иное.

[00901] Обращаясь к фиг.15C, процессор осуществляет доступ к запоминающему устройству, используя блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другое местоположение в памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая по порядку не соответствует последовательности команд, однако блок 5060 загрузки/сохранения должен поддерживать для программ видимость того, что команды выполнялись по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, устройства ALU 5085 и управляющую логику 5090, чтобы вычислять адреса памяти и обеспечивать формирование последовательности конвейера для сохранения порядка операций. Некоторые операции могут не сохранять порядок, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы операции с нарушенным порядком казались программе выполненными по порядку, как хорошо известно в данной области техники.

[00902] Предпочтительно адреса, которые «видит» прикладная программа, часто называют виртуальными адресами. Виртуальные адреса иногда называют «логическими адресами» и «исполнительными адресами». Эти виртуальные адреса являются виртуальными в том смысле, что они перенаправляются в местоположение в физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простую префиксацию виртуального адреса величиной смещения, трансляцию виртуального адреса посредством одной или нескольких таблиц трансляции, причем таблицы трансляции предпочтительно содержат по меньшей мере таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись, указывающую на таблицу страниц. В z/Architecture® предоставляется иерархия трансляции, включающая первую таблицу области, вторую таблицу области, третью таблицу области, таблицу сегментов и необязательную таблицу страниц. Эффективность трансляции адресов часто повышается за счет использования буфера (TLB) ассоциативной трансляции, который содержит записи, отображающие виртуальный адрес для соответствующего местоположения в физической памяти. Записи создаются, когда DAT транслирует виртуальный адрес с помощью таблиц трансляции. Последующее использование виртуального адреса может затем использовать запись быстродействующего TLB, а не медленный последовательный доступ к таблице трансляции. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения наиболее давней по использованию страницы (LRU).

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

[00904] Блоки 5054 ввода-вывода (фиг.14) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, диски, принтеры, устройства отображения и сети. Блоки ввода-вывода часто представляются компьютерной программе драйверами программного обеспечения. В мэйнфреймах, таких как System z® производства IBM®, канальные адаптеры и адаптеры открытых систем являются блоками ввода-вывода мэйнфрейма, которые обеспечивают связь между операционной системой и периферийными устройствами.

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

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

[00907] Более конкретно, в мэйнфрейме структурированные машинные команды используются программистами, сегодня, как правило, программистами, работающими на языке С, часто посредством приложения-компиллятора. Эти команды, хранящиеся в запоминающей среде, могут выполняться в исходном формате на сервере z/Architecture® IBM® или в другом случае в машинах, реализующих другие архитектуры. Они могут эмулироваться в существующих и будущих мэйнфрейм-серверах IBM® и на других машинах IBM® (например, серверах Power Systems и серверах System x®). Они могут выполняться в машинах, работающих на Linux на широком ряде машин, использующих аппаратное обеспечение производства IBM®, Intel®, AMD™ и других. Помимо выполнения на этом аппаратном обеспечении под z/Architecture®, может использоваться Linux, равно как и машины, которые используют эмуляцию посредством Hercules, UMX или FSI (Fundamental Software, Inc), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции программное обеспечение эмуляции выполняется собственным процессором, чтобы эмулировать архитектуру эмулируемого процессора.

[00908] Собственный процессор, чтобы выполнять эмуляцию эмулируемого процессора, как правило, выполняет программное обеспечение эмуляции, содержащее или аппаратно-программное обеспечение или собственную операционную систему. Программное обеспечение эмуляции отвечает за извлечение и выполнение команд архитектуры эмулируемого процессора. Программное обеспечение эмуляции поддерживает счетчик эмулируемых программ, чтобы отслеживать границы команд. Программное обеспечение эмуляции может извлекать одну или несколько эмулируемых машинных команд за раз и преобразовывать одну или несколько эмулируемых машинных команд в соответствующую группу собственных машинных команд для выполнения собственным процессором. Эти преобразованные команды могут кэшироваться, так что можно добиться более быстрого преобразования. Тем не менее, программное обеспечение эмуляции должно поддерживать правила архитектуры эмулируемого процессора, чтобы обеспечивать корректную работу операционных систем и приложений, написанных для эмулируемого процессора. Кроме того, программное обеспечение эмуляции должно обеспечивать ресурсы, определенные архитектурой эмулируемого процессора, включая без ограничения управляющие регистры, регистры общего назначения, регистры с плавающей точкой, функцию динамической трансляции адреса, включая, например, таблицы сегментов и таблицы страниц, механизмы прерывания, механизмы переключения контекста, часы истинного времени (TOD) и структурированные интерфейсы к подсистемам ввода-вывода, чтобы операционная система или прикладная программа, созданная для работы на эмулируемом процессоре, могла запускаться на собственном процессоре, имеющем программное обеспечение эмуляции.

[00909] Конкретная эмулируемая команда декодируется, и для выполнения функции отдельной команды вызывается подпрограмма. Функция программного обеспечения эмуляции, эмулирующая функцию эмулируемого процессора, реализуется, например, в подпрограмме или драйвере на языке С или каким-либо другим способом предоставления драйвера для конкретного аппаратного обеспечения, который будет доступен специалистам в данной области техники после понимания описания предпочтительного варианта осуществления. Множество патентов, относящихся к эмуляции программного и аппаратного обеспечения, включая без ограничения патент на изобретение США №5551013 под названием «Multiprocessor for Hardware Emulation», выданный Beausoleil и др.; и патент на изобретение США №6009261 под названием «Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor», выданный Scalzi и др.; и патент на изобретение США №5,574,873 под названием «Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions», выданный Davidian и др.; и патент на изобретение США №6,308,255 под названием «Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System», выданный Gorishek и др.; и патент на изобретение США №6,463,582 под названием «Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method», выданный Lethin и др.; и патент на изобретение США №5790825 под названием «Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions», выданный Eric Traut, каждый из которых эти включается в данный документ посредством ссылки во всей своей полноте; и многие другие, демонстрируют множество известных способов получения эмуляции формата команд, структурированного для другой машины, на целевой машине, доступных специалистам в данной области техники.

[00910] Фиг.16 представляет собой изображение примера эмулируемой компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000' хост-архитектуры. В эмулируемой компьютерной хост-системе 5092 хост-процессор (ЦП) 5091 является эмулируемым хост-процессором (или виртуальным хост-процессором) и содержит процессор 5093 эмуляции, имеющий другую собственную архитектуру набора команд, чем у процессора 5091 хост-компьютера 5000'. Эмулируемая компьютерная хост-система 5092 содержит память 5094, доступную для процессора 5093эмуляции. В иллюстративном варианте осуществления память 5094 разделена на часть памяти 5096 хост-компьютера и часть 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в соответствии с архитектурой хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированного набора команд, имеющих структуру, отличную от структуры команд эмулируемого процессора 5091, собственные команды извлекаются из памяти 5097 подпрограмм эмуляции, и может осуществлять доступ к хост-команде для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд, полученных в подпрограмме последовательности и доступа/декодирования, которая может декодировать хост-команду(-ы), к которой осуществляется доступ, чтобы определять подпрограмму выполнения собственных команд для эмуляции функции хост-команды, к которой осуществляется доступ. Другие средства, которые определены для архитектуры компьютерной хост-системы 5000', могут эмулироваться подпрограммами структурированных средств, включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамического преобразования адреса и ввода-вывода и кэш процессора. Подпрограммы эмуляции также могут получать преимущество от функций, доступных в процессоре 5093 эмуляции (таких как регистры общего назначения и динамическая трансляция виртуальных адресов), чтобы улучшать производительность подпрограмм эмуляции. Также может предоставляться специальное аппаратное обеспечение и механизмы разгрузки, чтобы помогать процессору 5093 эмулировать функции хост-компьютера 5000'.

[00911] Используемая в данном документе терминология имеет целью описание лишь конкретных вариантов осуществления и не предназначена ограничивать изобретение. Как используются в данном документе, формы единственного числа также включают формы множественного числа, если иное прямо не следует из контекста. Также будет понятно, что термины "содержит" и/или "содержащий", когда используются в этом описании, определяют наличие указанных признаков, чисел, этапов, операций, элементов и/или компонентов, но не исключают наличия или добавления одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и/или их групп.

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

1. Способ выполнения команды запуска субканала в вычислительной среде, содержащей основное запоминающее устройство и твердотельное запоминающее устройство, при этом указанный способ включает:
с учетом определения того, что субканал, идентифицированный командой запуска субканала, является субканалом перемещения асинхронных данных (ADM), выполнение:
получения блока запроса операции из основного запоминающего устройства, при этом блок запроса операции содержит адрес блока операции;
получения блока операции из основного запоминающего устройства на основании адреса блока операции, при этом блок операции состоит из блока запроса, блока ответа и одного или более блоков (MSB) спецификации первого перемещения, причем блок запроса содержит поле счетчика MSB, содержащее значение, указывающее число одного или более блоков MSB, которые блок операции содержит и на которые ссылается, причем блок ответа сконфигурирован содержать условия исключительных ситуаций, причем каждый блок спецификации перемещения сконфигурирован содержать поле кода операции, поле счетчика блоков, поле адреса основного запоминающего устройства для адресации основного запоминающего устройства, поле адреса твердотельного запоминающего устройства для адресации твердотельного запоминающего устройства, поле размера блока и поле флагов;
получения блока спецификации перемещения из одного или более блоков спецификации перемещения;
определения на основании кода операции в полученном блоке спецификации перемещения операции, которую полученный блок спецификации перемещения сконфигурирован выполнять на блоках твердотельного запоминающего устройства;
на основании блока спецификации перемещения запуска операции на блоках твердотельного запоминающего устройства, связанных с адресом твердотельного запоминающего устройства поля адреса твердотельного запоминающего устройства; и
с учетом, по меньшей мере, запуска операции и обнаружения условия исключительной ситуации сохранения информации в блоке ответа, причем блок ответа содержит поле флагов исключительной ситуации, поле достоверности поля, поле неверного адреса MSB, поле неверного адреса косвенного адресного слова данных (AIDAW), поле неверного адреса основного запоминающего устройства и поле неверного адреса твердотельного запоминающего устройства, при этом информация касается одной или более исключительных ситуаций, являющихся результатом операции, причем одна или более исключительных ситуаций относятся по меньшей мере к одному из: основному запоминающему устройству, связанному с адресом основного запоминающего устройства из поля адреса основного запоминающего устройства; твердотельному запоминающему устройству, связанному с адресом твердотельного запоминающего устройства из поля адреса твердотельного запоминающего устройства; или полученного блока спецификации перемещения, причем информация содержит признак исключительной ситуации и дополнительную информацию, относящуюся к исключительной ситуации, при этом дополнительная информация определяет одну или более исключительных ситуаций адресации.

2. Способ по п. 1, отличающийся тем, что:
с учетом того, что поле достоверности поля содержит первое значение, блок ответа указывает, что неверный адрес MSB сохранен;
с учетом того, что поле достоверности поля содержит второе значение, блок ответа указывает, что неверный адрес основного запоминающего устройства сохранен; и
с учетом того, что поле достоверности поля содержит третье значение, блок ответа указывает, что неверный адрес твердотельного запоминающего устройства сохранен.

3. Способ по п. 1, отличающийся тем, что:
с учетом того, что поле флагов исключительной ситуации содержит первое значение, блок ответа указывает на проверку программы;
с учетом того, что поле флагов исключительной ситуации содержит второе значение, блок ответа указывает на исключительную ситуацию защиты запоминающего устройства; и
с учетом того, что поле флагов исключительной ситуации содержит третье значение, блок ответа указывает на неисправимую ошибку данных твердотельного запоминающего устройства.

4. Способ по п. 1, отличающийся тем, что блок ответа дополнительно содержит код уточнения исключительной ситуации, предоставляющий дополнительную информацию относительно исключительной ситуации.

5. Способ по п. 4, отличающийся тем, что:
с учетом того, что код уточнения исключительной ситуации содержит первое значение, блок ответа указывает на ошибку счетчика MSB;
с учетом того, что код уточнения исключительной ситуации содержит второе значение, блок ответа указывает на ошибку размера блока;
с учетом того, что код уточнения исключительной ситуации содержит третье значение, блок ответа указывает на ошибку счетчика блоков;
с учетом того, что код уточнения исключительной ситуации содержит четвертое значение, блок ответа указывает на ошибку спецификации адреса основного запоминающего устройства;
с учетом того, что код уточнения исключительной ситуации содержит пятое значение, блок ответа указывает на ошибку спецификации адреса твердотельного запоминающего устройства;
с учетом того, что код уточнения исключительной ситуации содержит шестое значение, блок ответа указывает на исключительную ситуацию адреса основного запоминающего устройства; и
с учетом того, что код уточнения исключительной ситуации содержит седьмое значение, блок ответа указывает на исключительную ситуацию адресации твердотельного запоминающего устройства.

6. Способ по п. 4, отличающийся тем, что:
с учетом того, что код уточнения исключительной ситуации содержит восьмое значение, блок ответа указывает на ошибку основного запоминающего устройства;
с учетом того, что код уточнения исключительной ситуации содержит девятое значение, блок ответа указывает на ошибку списка MSB;
с учетом того, что код уточнения исключительной ситуации содержит десятое значение, блок ответа указывает на ошибку перехода MSB;
с учетом того, что код уточнения исключительной ситуации содержит одиннадцатое значение, блок ответа указывает на ошибку списка AIDAW; и
с учетом того, что код уточнения исключительной ситуации содержит двенадцатое значение, блок ответа указывает на ошибку перехода AIDAW.

7. Способ по п. 4, отличающийся тем, что с учетом того, что код уточнения исключительной ситуации содержит тринадцатое значение, блок ответа указывает на одну или более ошибок освобождения.

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



 

Похожие патенты:

Группа изобретений относится к обработке операций ввода-вывода. Технический результат заключается в упрощении обработки указанных операций.

Изобретение относится к области обмена данными между генератором и потребителем. .

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

Изобретение относится к способу и устройствам обмена информацией с интеллектуальными полевыми приборами, используемыми в системах измерений и контроля процессов.

Изобретение относится к системе игровых устройств. .

Изобретение относится к компьютерной технике, в частности к устройствам соединения компьютерных внешних устройств. .

Изобретение относится к вычислительной технике, частности, к селекторным каналам для ввода-вывода информации в ЭВМ. .

Изобретение относится к вычислительной технике. Технический результат заключается в повышении производительности системы хранения данных. Способ выполнения команды Start Subchannel в вычислительной среде, содержащей основное запоминающее устройство и твердотельное запоминающее устройство, в котором с учетом определения того, что субканал, идентифицированный командой Start Subchannel, является субканалом перемещения асинхронных данных (ADM), осуществляют выполнение: получения блока запроса операции из основного запоминающего устройства, при этом блок запроса операции содержит адрес блока операции; получения блока операции из основного запоминающего устройства на основании адреса блока операции, при этом блок операции состоит из блока запроса, блока ответа и одного или более блоков (MSB) спецификации перемещения; получения MSB из блока операции; и определения на основании поля флагов того, что полученный MSB сконфигурирован для получения списка одного или более косвенных адресных слов данных; для каждого блока данных, определяемых полученным MSB, - получение второго адреса основного запоминающего устройства из списка одного или более косвенных адресных слов данных; и на основании полученного MSB - перемещение каждого блока данных между основным запоминающим устройством и твердотельным запоминающим устройством. 3 н. и 6 з.п. ф-лы, 45 ил.

Изобретение относится к вычислительной технике. Технический результат изобретения заключается в повышении сбоеустойчивости начальной загрузки и повышении производительности для каждого микропроцессора управляющего модуля в условиях разрушающего воздействия радиационных факторов при сохранении массогабаритных показателей и ограничении на потребляемую мощность. В управляющем модуле содержатся микропроцессоры, сбоеустойчивые резервируемые параллельные каналы RapidIO, выполненные на основе многоканального коммутатора, микросхемы для хранения информации и электрические линии связи, согласно изобретению он дополнительно снабжен последовательными каналами RapidIO LP-Serial, выполненными на основе двуканального коммутатора, встроенного внутрь каждого микропроцессора. Кроме того, управляющий модуль содержит устройства самодиагностики, распределенную систему управления восстановлением «Реаниматор», состоящую из постоянно запоминающих устройств и однотипных блоков, каждый из которых содержит контроллер аварийного маршрутизатора, сторожевой таймер и таймер общего назначения, связанных между собой посредством ядра процессора, и содержит два дополнительных электронных мезонинных модуля в конструктиве стандарта PMC/RMC, связанных с одним из микропроцессоров. 6 ил.

Изобретение относится к области виртуализации мобильной сети. Технический результат изобретения заключается в повышении производительности обработки пользовательских данных за счет распределения пакетов пользовательских данных по множеству CPU-ядер. Для того, чтобы обеспечить возможность масштабирования обработки пакетов пользовательских данных в соответствии с числом CPU-ядер, селектор очереди оборудован средством приема пакетов пользовательских данных; средством извлечения IP адресов пользователя, расположенных в полезной нагрузке пакета; средством вычисления/выбора хеш-значения для извлеченного IP адреса пользователя и, основываясь на этом хеш-значении, выбирается номер очереди, в которой должен быть сохранен принятый пакет; средством определения из таблицы определений, хранящей соответствующую интенсивность использования CPU для каждого из множества CPU-ядер, и определяется, основываясь на интенсивности использования CPU, надо ли установить выбранный номер очереди как номер очереди, в которой следует сохранить принятый пакет; и средством сохранения принятого пакета в очереди, имеющей выбранный номер очереди. 5 н. и 5 з.п. ф-лы, 5 ил.
Наверх