ОБЕСПЕЧЕНИЕ КОСВЕННОЙ АДРЕСАЦИИ ДАННЫХ В СИСТЕМЕ ОБРАБОТКИ ВВОДА-ВЫВОДА ПРИ ФРАГМЕНТИРОВАННОМ СПИСКЕ КОСВЕННЫХ АДРЕСОВ ДАННЫХ
PROVIDING INDIRECT DATA ADDRESSING IN INPUT/OUTPUT PROCESSING SYSTEM WHERE INDIRECT DATA ADDRESS LIST IS FRAGMENTED

Область техники, к которой относится изобретение
Настоящее изобретение относится в целом к обработке ввода-вывода и, в частности, к созданию фрагментированного списка косвенной адресации данных в подсистеме ввода-вывода системы обработки ввода-вывода.
Уровень техники
Операции ввода-вывода используются для обмена данными между памятью и устройствами ввода-вывода системы обработки ввода-вывода. В частности, одно или несколько устройств ввода-вывода записывает данные из памяти, а память считывает данные из одного или нескольких устройств ввода-вывода путем выполнения операций ввода-вывода.
Для облегчения операций ввода-вывода в системе обработки ввода-вывода применяется подсистема ввода-вывода. Подсистема ввода-вывода связана с основной памятью и устройствами ввода-вывода системы обработки ввода-вывода и распределяет поток данных между памятью и устройствами ввода-вывода. Одним из примеров подсистемы ввода-вывода является канальная подсистема. В канальной подсистеме трассы каналов используются в качестве передающей среды. Каждая трасса имеет канал, связанный с устройством управления, которое дополнительно связано с одним или несколькими устройствами ввода-вывода.
Для обмена данными между устройствами ввода-вывода и памятью в канальной подсистеме могут использоваться управляющие слова каналов (УСК или CCW, от английского - Channel Command Word). УСК задает выполняемую команду. Для команд, инициирующих определенные операции ввода-вывода, УСК указывает область памяти, соответствующую операции, действие, предпринимаемое по завершении каждого переноса данных в эту область памяти или из нее, и другие опции.
Во время обработки ввода-вывода канал вызывает из памяти список УСК. Канал проводит грамматический разбор каждой команды из списка УСК и пересылает устройству управления, связанному с каналом, определенное число команд, каждая из которых передается в виде отдельного объекта. Затем устройство управления обрабатывает команды. Канал отслеживает состояние каждой команды и регулирует момент, когда устройству управления должен быть передан следующий набор команд для обработки. Канал обеспечивает передачу каждой команды устройству управления в виде отдельного объекта. Кроме того, для каждой команды канал выводит некоторые данные, связанные с обработкой ответа от устройства управления.
Обработка ввода-вывода, осуществляемая на основе каждого УСК, может быть сопряжена с высокими накладными расходами на обработку в канальной подсистеме по мере того, как каналы проводят грамматический разбор УСК, отслеживают информацию о состоянии и реагируют на ответы от устройств управления. В связи с этим может быть выгодным перенести значительную часть нагрузки, связанной с обработкой при интерпретации и управлении УСК и информацией о состоянии, из канальной подсистемы в устройства управления.
За счет упрощения роли каналов в процесс обмена данными между устройствами управления и операционной системой в системе обработки ввода-вывода можно повысить пропускную способность обмена данными, поскольку уменьшается квитирование связи. При этом путем изменения последовательностей команд, а также ролей канальной подсистемы и устройств управления объем данных, передаваемых за одну операцию ввода-вывода, может быть доведен до более одного мегабайта. Это максимальный объем данных, который может быть передан с одним непрерывным списком транспортных косвенных адресов данных, когда емкость страницы системы составляет 4 килобайта. Существующее в настоящее время управляющее слово канала (УСК) не способно поддерживать передачу более 64 килобайт данных за одну операцию ввода-вывода из-за ограничения, налагаемого двухбайтовым полем счета в УСК. Этот недостаток был устранен за счет использования слова управления передачей (СУП или TCW, от английского - Transport Control Word), в котором отчет увеличен до четырех битов, но затем было выявлено еще одно ограничение при передаче одного мегабайта данных, связанное с тем, что список транспортных косвенных адресов данных (СпТКАД или TIDAL, от английского - transport indirect data address list) должен содержаться на одной странице объемом 4 килобайта, что позволяет вносить в список только 256 адресов.
Раскрытие изобретения
Объектом изобретения являются компьютерный программный продукт для обеспечения косвенной адресации данных в подсистеме ввода-вывода системы обработки ввода-вывода (процессорной системы ввода-вывода). Компьютерный программный продукт содержит материальный машиночитаемый носитель информации, который считывается устройством обработки и на котором хранятся команды, выполняемые устройством обработки данных для осуществления способа. Этот способ включает в себя прием управляющего слова для операции ввода-вывода. Управляющее слово содержит косвенный адрес данных, связанных с операцией ввода-вывода. Косвенный адрес данных содержит начальный адрес списка адресов хранения, совместно описывающих данные, причем список содержит два или более несмежных адреса хранения (т.е. является фрагментированным). В соответствии со списком происходит сбор данных. Собранные данные передаются устройству управления в системе обработки ввода-вывода.
Объектом изобретения является также устройство для обеспечения косвенной адресации данных в подсистеме ввода-вывода системы обработки ввода-вывода. Устройство имеет подсистему ввода-вывода, выполненную с возможностью обмена данными с устройством управления системы обработки ввода-вывода. Подсистема ввода-вывода выполняет способ, включающий прием управляющего слова для операции ввода-вывода. Управляющее слово содержит косвенный адрес данных, связанных с операцией ввода-вывода. Косвенный адрес данных содержит начальный адрес списка адресов хранения, совместно описывающих данные, причем этот список содержит два или более несмежных адреса хранения. В соответствии со списком происходит сбор данных. Собранные данные передаются устройству управления.
Объектом изобретения является также способ обеспечения косвенной адресации данных в подсистеме ввода-вывода системы обработки ввода-вывода. Способ включает прием управляющего слова для операции ввода-вывода. Управляющее слово содержит косвенный адрес данных, связанных с операцией ввода-вывода. Косвенный адрес данных содержит начальный адрес списка адресов хранения, совместно описывающих данные, причем этот список содержит два или более несмежных адреса хранения. В соответствии со списком происходит сбор данных. Собранные данные передаются устройству управления в системе обработки ввода-вывода.
Объектом изобретения является также компьютерный программный продукт для обеспечения косвенной адресации данных в подсистеме ввода-вывода системы обработки ввода-вывода. Компьютерный программный продукт содержит материальный машиночитаемый носитель информации, который считывается устройством обработки и на котором хранятся команды, выполняемые устройством обработки данных для осуществления способа. Способ включает прием управляющего слова для операции ввода-вывода. Управляющее слово содержит косвенный адрес выходных пользовательских данных после операции ввода-вывода. Косвенный адрес данных содержит начальный адрес списка адресов хранения с общим описанием адресов хранения выходных пользовательских данных, причем этот список содержит два или более несмежных адреса хранения. В ответ на операцию ввода-вывода, выполняемую в устройстве управления, принимают от устройства управления системы обработки ввода-вывода выходные пользовательские данные. Выходные пользовательские данные хранятся в подсистеме ввода-вывода по определенному адресу в соответствии со списком.
Другие изделия, устройства и/или способы, описанные в вариантах осуществления, станут ясны специалистам в данной области техники после ознакомления со следующими далее чертежами и подробным описанием. Подразумевается, что все такие дополнительные изделия, устройства и/или способы включены в настоящее описание, входят в объем настоящего изобретения и охраняются прилагаемой формулой изобретения.
Краткое описание чертежей
Предмет, рассматриваемый в качестве изобретения, конкретно охарактеризован и заявлен в отличительной части формулы изобретения, прилагаемой к описанию. Описанные выше и другие задачи, признаки и преимущества изобретения станут ясны из следующего далее подробного описания при рассмотрении в сочетании с сопровождающими его чертежами, на которых:
на фиг.1 показан один из вариантов осуществления системы обработки ввода-вывода, в которой реализована и использована одна или несколько особенностей настоящего изобретения,
на фиг.2А - один из примеров известного из уровня техники управляющего слова канала,
на фиг.2Б - один из примеров известной из уровня техники канальной программы управляющего слова канала,
на фиг.3 - один из вариантов осуществления известного из уровня техники протокола передачи данных, используемого при обмене данными между каналом и устройством управления для выполнения показанной на фиг.2Б канальной программы управляющего слова канала,
на фиг.4 - один из вариантов осуществления канальной программы слова управления передачей согласно одной из особенностей настоящего изобретения,
на фиг.5 - один из вариантов осуществления протокола передачи данных, используемого при обмене данными между каналом и устройством управления для выполнения показанной на фиг.4 канальной программы слова управления передачей согласно одной из особенностей настоящего изобретения,
на фиг.6 - один из вариантов осуществления известного из уровня техники протокола передачи данных, используемого при обмене данными между каналом и устройством управления для выполнения четырех команд записи канальной программы управляющего слова канала,
на фиг.7 - один из вариантов осуществления протокола передачи данных, используемого при обмене данными между каналом и устройством управления для обработки четырех команд записи канальной программы слова управления передачей согласно одной из особенностей настоящего изобретения,
на фиг.8 - один из вариантов осуществления устройства управления и канальной подсистемы согласно одной из особенностей настоящего изобретения,
на фиг.9 - один из вариантов осуществления слова транспортного косвенного адреса данных (СлТКАД или TIDAW, от английского - transport mode indirect data address word) согласно одной из особенностей настоящего изобретения,
на фиг.10 - один из вариантов осуществления способа обеспечения фрагментированной косвенной адресации данных в подсистеме ввода-вывода и
на фиг.11 - один из вариантов осуществления изделия, в котором реализована одна или несколько особенностей настоящего изобретения.
В подробном описании в порядке примеры со ссылкой на чертежи пояснены предпочтительные варианты осуществления настоящего изобретения, а также его преимущества и признаки.
Осуществление изобретения
Согласно одной из особенностей настоящего изобретения облегчается обработка ввода-вывода. В одном из примеров обработка ввода-вывода облегчается за счет сокращения обмена данными между компонентами системы обработки ввода-вывода, используемой для осуществления обработки ввода-вывода. Например, сокращается число обменов данными и последовательностей обменов данными между связным адаптером ввода-вывода, таким как канал, и устройством управления. Это достигается за счет того, что от связного адаптера ввода-вывода устройству управления в виде единого объекта передают множество команд для выполнения устройством управления, а устройство управления в виде единого объекта передает получаемые из команд данные, если они существуют.
Множество команд включают в блок, именуемый в изобретении блоком управления командами передачи (БУКП или ТССВ, от английского - transport command control block), адрес которого указан в слове управления передачей (СУП). СУП передают из операционной системы (ОС) или другой прикладной программы связному адаптеру ввода-вывода, который в свою очередь пересылает БУКП в командном сообщении устройству управления для обработки. Устройство управления обрабатывает каждую из команд в отсутствие контроля состояния этих отдельных команд со стороны связного адаптера ввода-вывода. Множество команд также именуются канальной программой, грамматический разбор и выполнение которой осуществляется в устройстве управления, а не в связном адаптере ввода-вывода.
В одном из примеров осуществления СУП для операции ввода-вывода содержит ссылки с указанием адреса управляющих данных (например, БУКП) и пользовательских данных, связанных с операцией ввода-вывода. В одном из примеров осуществления в ссылках указан косвенный адрес данных, именуемый в изобретении списком транспортных косвенных адресов данных (СпТКАД). СпТКАД представляет собой список адресов, по которым размещены данные; эти адреса именуются в изобретении словами транспортного косвенного адреса данных (СлТКАД). В существующих системах с емкостью страниц 4 килобайта объем СпТКАД не может превышать четыре килобайта, и тем самым число непрерывных СлТКАД, которые могут быть включены в единый СпТКАД, ограничено 256 (объем каждого СпТКАД составляет 16 байт). В результате, общий объем данных, которые могут быть переданы за одну операцию ввода-вывода, ограничен одним мегабайтом, если емкость страниц составляет 4 килобайта, объем каждого СпТКАД составляет 16 байт, и СпТКАД должен помещаться на одной 4-килобайтовой странице. В одном из примеров осуществления настоящего изобретения это ограничение устранено за счет того, что в СлТКАД указан начальный адрес следующего СлТКАД, имеющего другой адрес хранения, который может находиться на другой странице. В СлТКАД используется флаг, указывающий, содержит ли адрес в СлТКАД адрес данных или адрес продолжения списка СлТКАД. За счет этого СлТКАД, образующие единый СпТКАД, могут иметь несмежные адреса храпения и, следовательно, в единый СпТКАД может быть включено более 256 СлТКАД. Это позволяет увеличить объем данных, передаваемых за одну операцию ввода-вывода. Например, в одном из примеров осуществления, в котором поле счета в СУП рассчитано на четыре байта, за одну операцию ввода-вывода может быть передано около четырех гигабайт (четыре гигабайта минус один байт) данных.
Далее, со ссылкой на фиг.1 описан один из примеров системы обработки ввода-вывода, в которой реализована и используется одна или несколько особенностей настоящего изобретения. В систему 100 обработки ввода-вывода входит хост-система 101, которая дополнительно имеет, например, основную память 102, один или несколько центральных процессоров (ЦП) 104, блок 106 управления памятью и канальную подсистему 108. Хост-системой 101 может являться вычислительная система широких возможностей, такая как мэйнфрейм или сервер. В систему 100 обработки ввода-вывода также входит одно или несколько устройств 110 управления и одно или несколько устройств 112 ввода-вывода, каждое из которых описано далее.
В основной памяти 102 хранятся данные и программы, которые могут вводиться из устройств 112 ввода-вывода. Например, в основной памяти 102 может храниться одна или несколько операционных систем (ОС) 103, выполняемых одним или несколькими ЦП 104. Например, один ЦП 104 в качестве различных образцов виртуальной машины способен выполнять операционную систему 103 Linux и операционную систему 103 z/OS. Основная память 102 является непосредственно адресуемой и обеспечивает высокоскоростную обработку данных ЦП 104 и канальной подсистемой 108.
ЦП 104 является центром управления системы 100 обработки ввода-вывода. Он имеет средства задания последовательностей и обработки для выполнения команд, операций прерывания, временных функций, начальной загрузки программ и других машинозависимых функций. ЦП 104 связан с блоком 106 управления памятью посредством соединения 114, такого как двунаправленная или однонаправленная шина.
Блок 106 управления памятью связан с основной памятью 102 посредством соединения 116, такого как шина, с ЦП 104 посредством соединения 114 и с канальной подсистемой 108 посредством соединения 118. Блок 106 управления памятью управляет, например, организацией очередей и выполнением запросов, осуществляемых ЦП 104 и канальной подсистемой 108.
В одном из примеров осуществления канальная подсистема 108 обеспечивает интерфейс связи между хост-системой 101 и устройствами 110 управления. Канальная подсистема 108 связана с блоком 106 управления памятью, как описано выше, и с каждым из устройств 110 управления посредством соединения 120, такого как последовательный канал. Соединение 120 может быть реализовано в форме оптической линии связи с применением одномодовых или многомодовых волноводов в волоконнно-оптическом канале. Канальная подсистема 108 распределяет поток информации между устройствами 112 ввода-вывода и основной памятью 102. Она освобождает ЦП 104 от задачи обмена данными непосредственно с устройствами 112 ввода-вывода и позволяет осуществлять обработку данных одновременно с обработкой ввода-вывода. В канальной подсистеме 108 используется одна или несколько трасс 122 каналов в качестве линий связи при управлении потоком информации в устройства 112 ввода-вывода или из устройств 112 ввода-вывода. В ходе обработки ввода-вывода канальная подсистема 108 также выполняет функции управления трассами с целью проверки доступности трасс каналов, выбора доступной трассы 122 канала и инициирования выполнения операции с устройствами 112 ввода-вывода.
Каждая трасса 122 имеет канал 124 (в одном из примеров каналы 124 находятся в канальной подсистеме 108, как показано на фиг.1), одно или несколько устройств 110 управления и одно или несколько соединений 120. В другом примере в состав трассы 122 канала также может входить один или несколько динамических коммутаторов (не показаны). Динамический коммутатор связан с каналом 124 и устройством 110 управления и обеспечивает способность физического межсоединения любых двух линий, подсоединенных к коммутатору. В другом примере также может быть предусмотрено множество систем и, следовательно, множество канальных подсистем (не показаны), подсоединенных к устройству 110 управления.
Канальная подсистема 108 также имеет подканалы (не показаны). Для каждого устройства 112 ввода-вывода, доступного программе посредством канальной подсистемы 108, предусмотрен и выделен один подканал. Подканал (например, структура данных, такая как таблица) обеспечивает логический внешний вид устройства для программы. Каждый подканал обеспечивает информацию, касающуюся соответствующего устройства 112 ввода-вывода и его подсоединения к канальной подсистеме 108. Подканал также обеспечивает информацию, касающуюся операций ввода-вывода и других функций с участием соответствующего устройства 112 ввода-вывода. Подканал является средством, с помощью которого канальная подсистема 108 предоставляет информацию о соответствующих устройствах 112 ввода-вывода ЦП 104, которые получают эту информацию путем выполнения команд ввода-вывода.
Канальная подсистема 108 связана с одним или несколькими устройствами 110 управления. Каждое устройство 110 управления обеспечивает логику работы и управления одним или несколькими устройствами 112 ввода-вывода и путем использования обобщенных средств адаптирует характеристики каждого устройства 112 ввода-вывода к канальному интерфейсу, обеспечиваемому каналом 124. Обобщенные средства обеспечивают выполнение операций ввода-вывода, указания, касающиеся состояния устройства 112 ввода-вывода и устройства 110 управления, управление выдержкой времени передачи данных по трассе 122 канала и некоторые уровни управления устройством 112 ввода-вывода.
Каждое устройство 110 управления посредством соединения 126 (например, шины) подсоединено к одному или нескольким устройствам 112 ввода-вывода. Устройства 112 ввода-вывода принимают информацию или сохраняют информацию в основной памяти 102 и/или другой памяти. Примеры устройств 112 ввода-вывода включают в том числе устройства считывания с карт и перфораторы, накопители на магнитной ленте, запоминающие устройства с прямым доступом, дисплеи, клавиатуры, принтеры, координатно-указательные устройства, устройства дистанционной обработки данных, связные контроллеры и оборудование с использованием датчиков.
Один или несколько из упомянутых компонентов системы 100 обработки ввода-вывода дополнительно описаны в публикации "IBM(R) z/Architecture Principles of Operation", № SA22-7832-05, 6-е издание, апрель 2007 г.; патенте US 5461721 "System For Transferring Data Between I/O devices And Main Or Expanded Storage Under Dynamic Control Of Independent Indirect Address Words (IDAWS)", выданном на имя Cormier и др. 24 октября 1995 г.; и патенте US 5526484 "Method And System For Pipelining The Processing Of Channel Command Words", выданном на имя Casper и др. 11 июня 1996 г., каждый из которых в порядке ссылки во всей полноте включен в настоящую заявку. IBM является зарегистрированным товарным знаком компании "International Business Machines Corporation" (Армонк, штат Нью-Йорк, США). Другие используемые в описании наименования могут являться зарегистрированными товарными знаками, товарными знаками или названиями изделий компании "International Business Machines Corporation" или других компаний.
В одном из вариантов осуществления для обмена данными между устройствами 112 ввода-вывода и памятью 102 используются управляющие слова канала (УСК). УСК указывает выполняемую команду и содержит другие поля управления обработкой. Один из примеров УСК описан со ссылкой на фиг.2А. УСК 200 содержит, например, код 202 команды с указанием выполняемой команды (например, считывания, считывания в обратном направлении, управления, обнаружения и записи); множество флагов 204, используемых для управления операцией ввода-вывода; для команд передачи данных поле 206 счета с указанием числа байтов в области памяти, которое определено в УСК для передачи; и адрес 208 данных с указанием размещения данных в основной памяти при использовании прямой адресации или обрабатываемого спискам (например, непрерывного списка) слов измененного косвенного адреса данных (СлИКАД или MIDAW, от английского - modified indirect data address words) при использовании измененной косвенной адресации данных. Изменение косвенного адреса дополнительно описано в патентной заявке US 11/464613 "Flexibly Controlling The Transfer Of Data Between Input/Output Devices And Memory", поданной Brice и др. 15 августа 2006 г., которая во всей полноте в порядке ссылки включена в настоящую заявку.
Одно или несколько последовательно выполняемых УСК образуют канальную программу, также именуемую в изобретении канальной программой УСК. Канальную программу УСК настраивает, например, операционная система или другое программное обеспечение. Программное обеспечение настраивает УСК и получает адреса памяти, выделенной канальной программе. Один из примеров канальной программы УСК описан со ссылкой на фиг.2Б. Канальная программа 210 УСК содержит, например, УСК 212 определения экстента, которое имеет указатель 214 размещения в памяти данных 216 определения экстента, используемых с командой определения экстента. В этом примере за командой определения экстента следует переход 218 в канальной программе (ПКП или TIC, от английского - transfer in channel) для отнесения канальной программы к другой области памяти (например, прикладной области), в которой содержится одно или несколько других УСК, таких как УСК 217 размещения записи, которое имеет указатель 219 данных 220 размещения записи, и одно или несколько УСК 221 записи. Каждое УСК 221 записи имеет указатель 222 области 224 данных. Область данных содержит адрес прямого доступа к данным или список слов адреса данных (например, СлИКАД или слов независимого косвенного адреса данных (СлНКАД или IDAW, от английского - Independent Indirect Address Words) для косвенного доступа к данным. Кроме того, канальная программа 210 УСК имеет в канальной подсистеме заданную область, обусловленную адресом устройства и называемую подканалом 226 состояния, которую получают в результате выполнения канальной программы УСК.
Далее со ссылкой на фиг.3, а также фиг.2Б описана обработка канальной программы УСК. В частности, на фиг.3 показан один из примеров различных обменов данными и последовательностей операций, которые осуществляются между каналом и устройством управления при выполнении канальной программы УСК. В этом примере протоколом передачи данных, используемым для связи, является FICON (Fibre Connectivity). Сведения о FICON приведены в публикации "Fibre Channel Single Byte Command Code Sets-3 Mapping Protocol (FC-SB-3), Til/Project 1357-D/Rev. 1.6, INCITS (март 2003 г.), которая во всей полноте в порядке ссылки включена в настоящую заявку.
Как показано на фиг.3, на шаге 304 начала обмена данными с устройством 302 управления канал 300 передает команду определения экстента и сопутствующие ей данные устройству 302 управления. Из УСК 212 определения экстента (фиг.2Б) вызывают команду, и извлекают данные из области 216 данных определения экстента. Канал 300 использует ПКП 218, чтобы определить местонахождение УСК размещения записи и записать УСК. На шаге 306 вызывают команду и данные размещения записи (фиг.3) из УСК 217 размещения записи (фиг.2Б) и данных 220 размещения записи. На шаге 308 вызывают команду и данные записи (фиг.3) из УСК 221 записи и области 224 данных (фиг.2Б). В каждом случае их передают устройству 302 управления.
На шаге 310 устройство 302 управления начинает обмен данными с каналом 300 в ответ на начатый каналом 300 обмен данными. Это может происходить до или после выполнения шага 306 вызова команды и данных размещения записи и/или шага 308 вызова команды и данных записи. Одновременно с началом обмена каналу 300 пересылают ответ (CMR). В CMR содержится указание для канала 300 о том, что устройство 302 управления является активным и действующим.
На шаге 312 устройство 302 управления передает каналу 300 информацию о состоянии и завершает обмен. В ответ канал 300 сохраняет данные, анализирует информацию о состоянии и завершает обмен на шаге 314, что служит указанием для устройства 302 управления о том, что информация о состоянии была принята.
Для обработки описанной канальной программы УСК записи 4 килобайт данных необходимо два начатых и завершенных обмена данными и шесть последовательностей. Общее число обменов между каналом и устройством управления и последовательностей сокращается за счет сжатия множества команд канальной программы в БУКП. Канал, например показанный на фиг.1 канал 124, использует СУП, чтобы определить местоположение БУКП, а также местоположения доступа и сохранения информации о состоянии и данных, касающихся выполнения канальной программы. СУП интерпретируется каналом, при этом его не передает и не видит устройство управления.
Далее со ссылкой на фиг.4 описан один из примеров канальной программы записи 4 килобайт данных, такой как показана на фиг.2Б, но содержащей БУКП вместо отдельного собственного УСК. Показано, что канальная программа 400, именуемая в изобретении канальной программой СУП, содержит СУП 402, указывающий размещение в памяти БУКП 404, а также размещение в памяти области 406 данных или СпТКАД 410 (т.е. списка слов транспортного косвенного адреса данных (СлТКАД), аналогичного СлИКАД), в котором указана область 406 данных и область 408 информации о состоянии. В нулевом СлТКАД 412, первом СлТКАД 414 и втором СлТКАД 416 (собирательно СлТКАД 412-416) могут быть указаны различные местоположения в области 406 данных для сбора или хранения данных. В СлТКАД 412-416 могут быть указаны несмежные блоки данных или непрерывные блоки данных. СлТКАД 412-416 в СпТКАД 410 могут быть размещены в памяти последовательно (смежно) или фрагментарно (несмежно) по отношению друг к другу. Хотя в СпТКАД 410 показаны только три СлТКАД 412-416, подразумевается, что в СпТКАД 410 может входить любое число СлТКАД.
Далее со ссылкой на фиг.5 описана обработка канальной программы СУП. Протоколом передачи данных, используемым в этих целях, является, например, протокол волоконно-оптического канала (FCP, от английского - Fibre Channel Protocol). В частности, используются три фазы протокола передачи данных FCP, что позволяет использовать поддерживающие FCP шинные адаптеры хост-компьютера для осуществления обмена данными под управлением УСК. FCP и его фазы дополнительно описаны в публикации "Information Technology - Fibre Channel Protocol for SCSI, Third Version (FCP-3)", T10 Project 1560-D, 4-e пересмотренное издание, 13 сентября 2005 г., которая в порядке ссылки во всей полноте включена в настоящую заявку.
Как показано на фиг.5, канал 500 начинает обмен данными с устройством 502 управления и передает устройству 502 управления БУКП 504. В одном из примеров устройству 502 управления передают БУКП 504 и начальную последовательность в команде FCP, именуемой элементом информации (ЭИ) FCP_CMND или ЭИ команд передачи. Устройство 502 управления передает каналу 500 ЭИ 510 готовности к передаче (XFER_RDY), когда оно готово к приему данных команд записи, принятых в БУКП 504. В ответ на прием ЭИ 510 XFER_RDY канал 500 передает устройству 502 управления данные 506, например, посредством ЭИ FCP_Data. Устройство 502 управления выполняет множество команд БУКП 504 (например, команду определения экстента, команду размещения записи, команду записи в виде слов управления устройствами (СУУ или DCW, от английского - device control words)) и записывает данные 506, принятые от канала 500. Оно также предоставляет информацию о состоянии и завершает обмен па шаге 508. В качестве одного из примеров информацию о конечном состоянии передают в FCP-кадре состояния, который имеет активный бит, например, в байте 10 или 11 полезной нагрузки ЭИ FCP_RSP, который также именуется ЭИ ответа на передачу. Полезная нагрузка ЭИ FCP_RSP может использоваться для пересылки информации о конечном состоянии FICON вместе с дополнительной информацией о состоянии.
Вариант осуществления протокола передачи данных, представленный на фиг.5, используется, если разрешена передача XFER_RDY. В варианте осуществления, показанном на фиг.5, канал 500 не может передать устройству 502 управления данные 506, пока они не будут запрошены устройством 502 управления посредством ЭИ 510 XFER_RDY. В одном из альтернативных вариантов осуществления передача XFER_ RDY не разрешается, и устройство управления не передает каналу 500 ЭИ 510 XFER_RDY. Следовательно, чтобы передать данные 506, каналу 500 не требуется ожидать, когда устройство 502 управления запросит данные 506. Этот альтернативный вариант осуществления, в котором не разрешается передача XFER_RDY, может использоваться для улучшения характеристик связи, когда канал 500 и устройство 502 управления географически расположены на большом расстоянии друг от друга (например, более двадцати километров, более пятидесяти километров). Если только не указано иное, в описании предполагается, что передача XFER_RDY разрешена.
В одном из дополнительных примеров записи 4 килобайт пользовательских данных канал 500 использует следующие фазы протокола передачи данных FCP.
1. Передают БУКП, содержащийся в ЭИ FCP_CMND, и начальную последовательность устройству 502 управления.
2. Ожидают ЭИ XFER_RDY с указанием того, что устройство управления готово к приему данных.
3. Передают ЭИ данных и начальную последовательность устройству 502 управления.
4. Передают информацию о конечном состоянии в FCP-кадре состояния, который имеет активный бит, например, в байте 10 или 11 полезной нагрузки ЭИ FCP_RSP. Для передачи информации о конечном состоянии FICON вместе с дополнительной информацией о состоянии используется поле FCP_RSP_INFO или поле уточненного состояния.
При выполнении показанной на фиг.4 канальной программы СУП начинают и завершают только один обмен данными (смотри также фиг.5) вместо двух обменов в случае канальной программы УСК, показанной на фиг.2Б (смотри также фиг.3). Кроме того, в случае канальной программы СУП используется четыре последовательности обмена данными (смотри фиг.4-5) по сравнению с шестью последовательностями в случае канальной программы УСК (смотри фиг.2Б-3).
Число обменов и последовательностей в канальной программе СУП остается одинаковым даже в случае использования дополнительных команд. Сравним, например, обмен данными в случае показанной на фиг.6 канальной программы УСК и обмен данными в случае показанной на фиг.7 канальной программы СУП. В показанной на фиг.6 канальной программе УСК каждую из команд (например, команду определения экстента и данные 600, команду размещения записи и данные 601, команду записи и данные 602, команду записи и данные 604, команду размещения записи и данные 606, команду записи и данные 608, команду записи и данные 620) передают от канала 610 устройству управления 612 в отдельных последовательностях. Для этой канальной программы УСК требуется осуществить по две операции начала и завершения обмена данными (например, операции 622, 624 начала обмена и операции 626, 628 завершения обмена), и использовать десять последовательностей обмена данными. Для сравнения в показанной на фиг.7 канальной программе СУП используются четыре последовательности и один обмен данными для выполнения такой же задачи, как и в показанной на фиг.6 канальной программе УСК.
Как показано на фиг.7, канал 700 начинает обмен данными с устройством 702 управления и передает устройству 702 управления БУКП 704. БУКП 704 содержит команду определения экстента, две команды размещения записи и четыре команды записи в СУУ, как это описано выше. По аналогии с примером, проиллюстрированным на фиг.5, устройство 702 управления может использовать ЭИ 710 XFER_RDY, чтобы уведомить канал 700 о своей готовности к приему данных при условии, что передача XFER_RDY не запрещена. После приема ЭИ 710 XFER_RDY канал 700 за одну последовательность передает устройству 702 управления 16 килобайт данных 706. Через каждые 4 килобайта канал 700 вводит в 16-килобайтовую последовательность данных 706 циклический избыточный код (ЦИК). Ввод ЦИК через каждые 4 килобайта позволяет устройству 702 управления пошагово проверять 16 килобайт данных, а не помещать все 16 килобайт в буфер для проверки до завершения команд записи в БУКП 704. Кроме того, устройство 702 управления предоставляет каналу 700 информацию о состоянии и завершает обмен 708. Таким образом, в показанной на фиг.7 канальной программе СУП требуется значительно меньший обмен данными для передачи такого же объема данных, как и в показанной на фиг.6 канальной программе УСК, при этом обеспечивается пошаговая проверка данных посредством ввода множества ЦИК в поток выходных данных, поступающих от канала 700.
Рассмотрим фиг.8, на которой более подробно проиллюстрирован один из вариантов осуществления канала 124 в канальной подсистеме 108 и устройства 110 управления, которые показаны на фиг.1 и служат для обеспечения выполнения канальной программы СУП. Устройство 110 управления имеет управляющую логику 802 контроллера для проведения грамматического разбора и обработки сообщений, содержащих БУКП, таких как показанный на фиг.7 БУКП 704, а также данных, принимаемых от канала 124 посредством соединения 120. Управляющая логика 802 контроллера способна извлекать СУУ и управляющие данные из БУКП, принимаемого в устройстве 110 управления, с целью управления определенным устройством, например устройством 112 ввода-вывода, посредством соединения 126. Управляющая логика 802 контроллера передает устройству 112 ввода-вывода команды и данные устройства и принимает от устройства 112 ввода-вывода информацию о состоянии и другую информацию обратной связи. Когда управляющая логика 802 контроллера принимает данные, такие как первая контрольная граница блока 16-килобайтовой последовательности данных 706, показанной на фиг.7, управляющая логика 802 контроллера записывает эти данные в буфер 804 данных для временного хранения, пока не будет принят ЦИК для проверки контрольной границы блока, после чего данные могут быть переданы устройству 112 ввода-вывода. Этот процесс продолжается для каждой контрольной границы блока, пока не завершится операция ввода-вывода.
Устройство 110 управления может дополнительно иметь другие элементы очереди или запоминающие элементы (не показаны) для хранения дополнительного сообщения или информации о состоянии, касающейся обмена данными между каналом 124 и устройством 112 ввода-вывода.
Канал 124 в канальной подсистеме 108 имеет элементы поддержки обмена данными с устройством 110 управления. Например, канал 124 может иметь управляющую логику 806 канала для сопряжения с логикой 812 сбора данных. Логика 812 сбора данных описана далее со ссылкой на фиг.10. В одном из примеров осуществления обменом данными между канальной подсистемой 108 и устройством 110 управления управляет управляющая логика 806 канала. Управляющая логика 806 канала может быть напрямую сопряжена с управляющей логикой 802 контроллера посредством соединения 120 для передачи команд и приема ответов, таких как команды передачи и ответные ЭИ. В качестве альтернативы, между управляющей логикой 806 канала и управляющей логикой 802 контроллера могут помещаться интерфейсы обмена сообщениями и/или дополнительные буферы (не показаны). В регистрах 814 канальной подсистемы могут содержаться заданные значения, которые обеспечивают информации о конфигурации и состоянии, а также динамическую информацию о состоянии, обновляемую по мере передачи команд и приема ответов. Регистрами 814 канальной подсистемы могу являться специализированные аппаратные регистры и/или виртуальные регистры, созданные с использованием отображения в памяти. В одном из вариантов осуществления регистры 814 канальной подсистемы содержат показанные на фиг.4 СлТКАД 410 и СлТКАД 412-416 в качестве отображаемых в памяти регистров.
На фиг.9 представлен один из примеров СлТКАД 900. СлТКАД 900 обеспечивает косвенную адресацию данных, используемых в канальной программе СУП, таких как СлТКАД 412-416, показанные на фиг.4. СлТКАД 900 содержит флаги 902, счетчик 904 и адрес 906. Каждое поле (т.е. флаги 902, счетчик 904 и адрес 906) в формате СлТКАД 900 закреплено за конкретным байтовым адресом для поддержки грамматического разбора полей. Хотя на фиг.9 показано одно расположение полей в СлТКАД 900, подразумевается, что порядок расположения полей может быть изменен, и могут использоваться альтернативные расположения.
В одном из примеров осуществления флаги 902 помимо других флагов включают флаг последнего СлТКАД и флаг переноса-перехода в канальной программе (Т-ПКП). Флаг последнего СлТКАД указывает, что соответствующее СлТКАД является последним СлТКАД в СлТКАД в соответствии с определением СлИКАД. Когда счетчик 904 достигает ноля при установке флага последнего СлТКАД, передача данных в соответствующей операции ввода-вывода завершается. Флаг Т-ПКП указывает, содержатся ли в адресе 906 данные или адрес следующего СлТКАД в СлТКАД. В одном из примеров осуществления после установки флага Т-ПКП адресом 906 в СлТКАД является адрес следующего СлТКАД в СлТКАД. Следовательно, адрес 906 может использоваться для доступа из текущего СлТКАД к следующему СлТКАД, имеющему несмежный адрес хранения. Таким образом, СлТКАД может содержать более 256 записей, что превышает максимальное число допустимых слов косвенного адреса данных в существующих реализациях. В одном из примеров осуществления после установки флага Т-ПКП четыре младших бита в адресе 906 должны быть установлены на ноль, поскольку 16-байтовый СлТКАД должен находиться на границе 16-байтового адреса. Когда флаг Т-ПКП не установлен, адресом 906 в СлТКАД является адрес части данных, которая является частью данных, собираемых для операции ввода-вывода. Объем данных указывается в поле 904 счета. Если флаг последнего СлТКАД и флаг Т-ПКП не установлены, следующее СлТКАД имеет следующий адрес хранения (например, непосредственно следует за текущим СлТКАД).
Далее со ссылкой на фиг.10 и на систему 100 обработки ввода-вывода, показанную на фиг.1, описаны примеры осуществления процесса 1000 сбора данных для операции ввода-вывода. На шаге 1002 канальная подсистема 108 принимает управляющее слово для операции ввода-вывода (например, СУП). Управляющее слово содержит косвенный адрес данных с указанием начального адреса списка адресов хранения (например, СлТКАД, содержащего множество СлТКАД), которые являются частью данных, используемых в операции ввода-вывода. В примерах осуществления данными являются пользовательские данные (например, входные или выходные данные операции ввода-вывода). В альтернативных примерах осуществления данными являются управляющие данные (например, БУКП). В одном из примеров осуществления список адресов хранения содержит два или более несмежных адреса хранения.
На шаге 1004 осуществляют сбор данных согласно командам, находящимся в канальной подсистеме 108. Сбор происходит на основании содержимого списка. В одном из примеров осуществления каждый элемент списка (например, каждое СлТКАД) содержит как адрес хранения, так и флаг Т-ПКП, чтобы показать, является ли адрес хранения местонахождением части данных, или он указывает местонахождение другой части списка, содержащей дополнительные адреса хранения. Этим способом единый СлТКАД может размещаться на множестве страниц, что устраняет любые ограничения на длину СлТКАД. Если флаг Т-ПКП указывает, что адрес хранения является местонахождением части данных (например, флаг Т-ПКП не установлен), осуществляют доступ к этим данным по адресу хранения и добавляют их к данным. Это добавление новых данных может осуществляться любым способом, известным из техники, таким как слияние с уже собранными данными, присоединение к уже собранным данным и т.д.
Если флаг Т-ПКП указывает, что текущий адрес хранения является местонахождением другой части списка, обработка продолжается путем осуществления доступа к новому СлТКАД по указанному адресу хранения. Осуществляют доступ к данным по адресу хранения, указанному в новом СлТКАД, и добавляют их к данным. В одном из примеров осуществления СлТКАД имеет счетчик 904, указывающий объем данных для считывания (или записи) по каждому адресу хранения. Если установлен флаг последнего СлТКАД, сбор данных завершается. В противном случае осуществляют доступ к следующему СлТКАД, и сбор данных продолжается.
На шаге 1006 канальная подсистема 108 передает данные устройству 110 управления.
Технические результаты, достигаемые в примерах осуществления, включают обеспечение фрагментированной косвенной адресации данных в подсистеме ввода-вывода. За счет того, что список адресов хранения (СлТКАД) помещается на множестве 4-килобайтовых страницах, число СлТКАД может быть неограниченным, и, следовательно, одной операции ввода-вывода может соответствовать больший объем данных. При обмене большими объемами данных могут быть сокращены коммуникационные накладные расходы за счет исключения дополнительного квитирования связи и других задержек, сопутствующих обмену множеством сообщений меньшего объема.
В следующих далее примерах описано, как могут использоваться примеры осуществления для выполнения других операций помимо перемещения крупных блоков данных.
Примеры осуществления могут использоваться, чтобы облегчить задание операционной системой префиксов канальной программы. Например, когда канальная программа передается операционной системе, операционная система может изменить канальную программу путем добавления, замены или изменения УСК или СУУ. В одном из примеров осуществления это означает создание СлТКАД БУКП, в котором первое СлТКАД указывает область хранения первой части измененного БУКП. Второе СлТКАД указывает оставшуюся часть не измененного БУКП.
Примеры осуществления также могут использоваться, чтобы облегчить задание гипервизором префиксов канальных программ. Если гипервизору требуется изменить канальную программу, ему приходится создавать СлТКАД, содержащий на один элемент больше, чем СлТКАД, переданный гостем. Если СлТКАД, переданный гостем, уже имеет максимальный размер (256 СлТКАД), гипервизор может внести собственные изменения путем создания СлТКАД БУКП, который содержит два СлТКАД, одно из которых содержит Т-ПКП, указывающий первое СлТКАД из СлТКАД, переданного гостем.
Т-ПКП СлТКАД также способны уменьшать потребности операционных систем в памяти. Если необходимо изменить канальную программу, содержащую СлТКАД БУКП, для создания СлТКАД и Т-ПКП требуется меньший объем памяти, чем в случае выделения памяти для пользовательских СлТКАД БУКП плюс одно дополнительное СлТКАД.
Как описано выше, изобретение может быть осуществлено в форме компьютеризованных процессов и устройств для практической реализации этих процессов. Предусмотрены примеры осуществления изобретения в форме компьютерного программного кода, выполняемого одним или несколькими элементами сети. В вариантах осуществления описан показанный на фиг.11 компьютерный программный продукт 1100 на применимом в компьютере носителе 1102 с логикой 1104 компьютерного программного кода, содержащей команды, воплощенные на материальных носителях, таких как изделие. Примеры изделий для использования в качестве применимого в компьютере носителя 1102 могут включать гибкие дискеты, ПЗУ на компакт-дисках, накопители на жестких дисках, флэш-память универсальной последовательной шины (USB) или любой другой машиночитаемый носитель информации, при этом после загрузки в компьютер и выполнения компьютером логики 1104 компьютерного программного кода компьютер становится устройством для практического осуществления изобретения.
Предусмотрены варианты осуществления логики 1104 компьютерного программного кода, которая, например, хранится на носителе информации, загружается в компьютер и/или выполняется компьютером или передается посредством какой-либо передающей среды, такой как электропроводка или кабельная проводка, оптическое волокно или посредством электромагнитного излучения, при этом после загрузки в компьютер и выполнения компьютером логики 1104 компьютерного программного кода компьютер становится устройством для практического осуществления изобретения. При реализации на основе универсального микропроцессора сегменты логики 1104 компьютерного программного кода задают конфигурацию микропроцессора с целью создания конкретных логических схем.
Хотя изобретение описано со ссылкой на примеры осуществления, специалистам в данной области техники ясно, что в него могут быть внесены различные изменения, и его элементы могут быть заменены эквивалентами в пределах объема изобретения. Кроме того, могут быть внесено множество усовершенствований, чтобы адаптировать конкретную ситуацию или материал к идеям изобретения в пределах его основного объема. Таким образом, подразумевается, что изобретение не ограничено частными раскрытыми вариантами осуществления в качестве лучшего способа его реализации и включает все варианты осуществления, входящие в объем прилагаемой формулы изобретения. Кроме того, термины первый, второй и т.д. не означают какой-либо порядок или значимость, а используются для того, чтобы отличить один элемент от другого. Помимо этого неопределенные артикли (в тексте оригинала) означают не ограничение количества, а наличие по меньшей мере одного из упоминаемых элементов.