Команды сохранения/сохранения блока данных для связи с адаптерами

Иллюстрации

Показать все

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

Реферат

Область техники

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

Уровень техники

Вычислительная среда может содержать устройства ввода-вывода одного или нескольких типов, включая адаптеры различных типов. Адаптером одного из типов является адаптер на основе шины межсоединения периферийных компонентов (PCI) или адаптер на основе шины PCI Express (PCIe). Этот адаптер содержит одно или несколько адресных пространств, используемых для обмена данными между адаптером и системой, к которой относится адаптер.

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

Краткое изложение сущности изобретения

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

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

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

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

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

Краткое описание чертежей

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

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

на фиг.1Б - один из вариантов осуществления записи в таблице устройств, находящейся в проиллюстрированном на фиг.1A концентраторе ввода-вывода и используемой в соответствии с одной из особенностей настоящего изобретения,

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

на фиг.2 - один из примеров адресных пространств функции адаптера в соответствии с одной из особенностей настоящего изобретения,

на фиг.3A - один из примеров записи в таблице функций, используемой в соответствии с одной из особенностей настоящего изобретения,

на фиг.3Б - один из вариантов осуществления дескриптора функции, используемого в соответствии с одной из особенностей настоящего изобретения;

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

на фиг.4B - один из вариантов осуществления поля, используемого проиллюстрированной на фиг.4A командой загрузки данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.4C - один из вариантов осуществления другого поля, используемого проиллюстрированной на фиг.4A командой загрузки данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.5A и 5Б - один из вариантов осуществления логики выполнения операции загрузки данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.6A - один из вариантов осуществления команды сохранения данных шины PCI, используемой в соответствии с одной из особенностей настоящего изобретения,

на фиг.6Б - один из вариантов осуществления поля, используемого проиллюстрированной на фиг.6A командой сохранения данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.6B - один из вариантов осуществления другого поля, используемого проиллюстрированной на фиг.6A командой сохранения данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.7A и 7Б - один из вариантов осуществления логики выполнения операции сохранения данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.8A - один из вариантов осуществления команды сохранения блока данных шины PCI, используемой в соответствии с одной из особенностей настоящего изобретения,

на фиг.8Б - один из вариантов осуществления поля, используемого проиллюстрированной на фиг.8A командой сохранения блока данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.8B - один из вариантов осуществления другого поля, используемого проиллюстрированной на фиг.8A командой сохранения блока данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.8Г - один из вариантов осуществления еще одного поля, используемого проиллюстрированной на фиг.8A командой сохранения блока данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

на фиг.9A и 9Б - один из вариантов осуществления логики выполнения операции сохранения блока данных шины PCI в соответствии с одной из особенностей настоящего изобретения,

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

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

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

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

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

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

на фиг.15Б - один из вариантов осуществления блока перехода проиллюстрированной на фиг.14 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,

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

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

Подробное описание осуществления изобретения

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

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

Далее со ссылкой на фиг.1A будет описан один из вариантов осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения. В одном из примеров вычислительной средой 100 является сервер System z®, предлагаемый International Business Machines Corporation. Основой сервера System z® является z/Architecture®, предлагаемая International Business Machines Corporation. Подробности, касающиеся z/Architecture®, описаны в публикации IBM №SA22-7832-07 под названием "z/Architecture-Principles of Operation" (февраль 2009 г.). IBM®, System z® и z/Architecture® являются зарегистрированными товарными знаками International Business Machines Corporation (Армонк, штат Нью-Йорк, США). Другие названия, используемые в заявке, могут являться зарегистрированными товарными знаками, товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.

В одном из примеров вычислительная среда 100 содержит один или несколько центральных процессоров (ЦП) 102, связанных с системной памятью 104 (иначе называемой основной памятью) посредством контроллера 106 памяти. Для доступа к системной памяти 104 центральный процессор 102 передает запрос чтения или записи, в котором содержится адрес, используемый для доступа к системной памяти. Поскольку адрес, содержащийся в запросе, обычно не может непосредственно использоваться для доступа к системной памяти, он преобразуется в адрес, который может непосредственно использоваться для доступа к системной памяти. Адрес преобразуется посредством механизма 108 трансляции (XLATE). Например, адрес преобразуется из виртуального адреса в действительный или абсолютный адрес с использованием, например, динамической трансляции адресов (DAT).

Запрос, содержащий адрес (при необходимости транслированный), принимается контроллером 106 памяти. В одном из примеров контроллер 106 памяти состоит из аппаратного обеспечения и используется для посредничества при доступе к системной памяти и для обеспечения непротиворечивости памяти. Это посредничество осуществляется применительно к запросам, принимаемым от ЦП 102, а также запросам, принимаемым от одного или нескольких адаптеров 110. Подобно центральным процессорам адаптеры передают системной памяти 104 запросы на получение доступа к системной памяти.

В одном из примеров адаптером 110 является адаптеры на основе шины межсоединения периферийных компонентов (PCI) или адаптер на основе шины PCI Express (PCIe), содержащей одну или несколько функций шины PCI. Функция шины PCI передает запрос, который маршрутизируется в концентратор (хаб) 112 ввода-вывода (например, концентратор шины PCI) посредством одного или нескольких коммутаторов (например, коммутаторов шины PCIe) 114. В одном из примеров концентратор ввода-вывода состоит из аппаратного обеспечения, включающего один или несколько конечных автоматов, и связан с контроллером 106 памяти посредством шины 120 ввода-вывода и памяти.

Концентратор ввода-вывода содержит, например, корневой комплекс 116, который принимает запрос от коммутатора. В запросе содержится адрес ввода-вывода, который передается блоку 118 трансляции и защиты адресов, который осуществляет доступ к информации, используемой для запроса. В качестве примера, в запросе может содержаться адрес ввода-вывода, используемый для выполнения операции прямого доступа к памяти (DMA) или для запроса инициируемого сообщениями прерывания (MSI). Блок 118 трансляции и защиты адресов осуществляет доступ к информации, используемой для DMA или запроса MSI. В качестве одного из конкретных примеров, в случае операции DMA может быть получена информация для трансляции адреса. Затем транслированный адрес пересылается контроллеру памяти для осуществления доступа к системной памяти.

Как описано со ссылкой на фиг.1Б, в одном из примеров информация, которая используется для передаваемого адаптером для запроса DMA или MSI, извлекается из записи 130 в таблице 132 устройств, хранящейся в концентраторе ввода-вывода (например, в блоке трансляции и защиты адресов). В записи в таблице устройств содержится информация для адаптера, при этом каждому адаптеру в таблице устройств соответствует по меньшей мере одна запись. Например, в таблице устройств предусмотрена одна запись на адресное пространство (в системной памяти), выделенное адаптеру. В случае запроса, поступающего от адаптера (например, функции 138 шины PCI), для определения местоположения записи в таблице устройств используется идентификатор запросчика, содержащийся в запросе.

Как показано на фиг.1Б, в одном из дополнительных вариантов осуществления вычислительной среды помимо или вместо одного или нескольких ЦП 102 с контроллером 106 памяти связан комплекс централизованной обработки данных. В этом примере комплекс 150 централизованной обработки данных содержит, например, один или несколько разделов или зон 152 (например, логических разделов LP1-LPn), один или несколько центральных процессоров (например, CP1-CPm) 154 и гипервизор 156 (например, диспетчер логических разделов), каждый из которых описан далее.

Каждый логический раздел 152 способен действовать как отдельная система. Иными словами, каждый логический раздел может независимо переустанавливаться, при желании в него может осуществляться начальная загрузка операционной системы или гипервизора (такого как z/VM® компании International Business Machines Corporation, Армонк, штат Нью-Йорк, США), и он способен работать с различными программами. Операционная система, гипервизор или прикладная программа, действующая в логическом разделе, выглядит имеющей доступ целиком ко всей системе, но доступной является лишь ее часть. Комбинация аппаратного обеспечения и лицензионного внутреннего кода (также именуемого микрокодом или милликодом) не позволяет программе в логическом разделе мешать программе в другом логическом разделе. За счет этого в одном или множестве физических процессоров в режиме квантования времени могут действовать несколько различных логических разделов. В этом конкретном примере каждый логический раздел имеет резидентную операционную систему (OC) 158, которая может различаться в одном или нескольких логических разделах. В одном из вариантов осуществления операционной системой 158 является операционная система z/OS® или zLinux компании International Business Machines Corporation, Армонк, штат Нью-Йорк, США. z/OS® и z/VM® являются зарегистрированными товарными знаками International Business Machines Corporation, Армонк, штат Нью-Йорк, США.

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

Логическими разделами 152 управляет гипервизор 156, реализованный посредством аппаратно-программного обеспечения, выполняемого процессорами 154. Логические разделы 152 и гипервизор 156 содержат одну или несколько программ, постоянно хранящихся в соответствующих частях центральной памяти, связанной с центральными процессорами. Одним из примеров гипервизора 156 является администратор ресурсов процессора/системы (PR/SM) компании International Business Machines Corporation, Армонк, штат Нью-Йорк, США.

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

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

Как описано выше, адаптеры способны передавать процессорам запросы различных операций, таких как прямой доступ к памяти, инициируемые сообщениями прерывания и т.д. Кроме того, процессоры способны передавать запросы адаптерам. Например, как показано на фиг.1Б, процессор 102 способен передавать запрос доступа к функции 138 адаптера. Запрос маршрутизируется от процессора функции адаптера посредством концентратора 112 ввода-вывода и одного или нескольких коммутаторов 114. В этом варианте осуществления контроллер памяти не показан. Тем не менее, концентратор ввода-вывода может быть связан с процессором напрямую или посредством контроллера памяти.

В качестве примера, операционная система 140, выполняемая в процессоре, передает функции адаптера команду с запросом конкретной операции. В этом примере команды, передаваемые операционной системой, определяются инфраструктурой ввода-вывода. Иными словами, поскольку инфраструктура ввода-вывода основана на шине PCI или PCIe (которые в обоих случаях именуются в описании шиной PCI, если не указано иное), командами являются команды шины PCI. В число примеров команд шины PCI входят загрузка данных шины PCI (PCI Load), сохранение данных шины PCI (PCI Store) и сохранение блока данных шины (PCI Store Block). Хотя в этом примере инфраструктура ввода-вывода и команды основаны на шине PCI, в других вариантах осуществления могут использоваться другие инфраструктуры и соответствующие команды.

В одном из конкретных примеров команды направляются в конкретное местоположение в адресном пространстве функции адаптера. Например, как показано на фиг.2, функция 138 адаптера содержит запоминающее устройство 200, которое определяется как множество адресных пространств, включающих, например, конфигурационное пространство 202 (например, конфигурационное пространство шины PCI для функции шины PCI); область 204 ввода-вывода (например, область ввода-вывода шины PCI; и одну или несколько областей 206 памяти (например, область памяти шины PCI). В других вариантах осуществления может быть предусмотрено меньше, больше или другие адресные пространства. Команды имеют целью конкретное адресное пространство и конкретное местоположение в адресном пространстве. За счет этого гарантируется, что конфигурация (например, операционная система, LPAR, процессор, гость и т.д.), передающая команду, имеет полномочия на доступ к функции адаптера.

Для облегчения обработки команд используется информация, хранящаяся в одной или нескольких структурах данных. Одной из таких структур данных, содержащих информацию, касающуюся адаптеров, является таблица 300 функций, хранящаяся, например, в защищенной памяти. Как показано на фиг.3A, в одном из примеров в таблице 300 функций содержится одна или несколько записей 302 в таблице функций (FTE). В одном из примеров в таблице функций содержится одна запись на функцию адаптера. В каждой записи 302 в таблице функций содержится информация для использования при обработке данных, которая связана с функцией адаптера. В одном из примеров в записи 302 в таблице функций содержится, например:

номер 308 экземпляра: в этом поле указан конкретный экземпляр дескриптора функции, соответствующий записи в таблице функций;

индекс 1…n 310 записи в таблице устройств (DTE): может существовать один или несколько индексов таблицы устройств, каждым из которых является индекс в таблице устройств для определения местоположения записи в таблице устройств (DTE). Для каждой функции адаптера существует одна или несколько записей в таблице устройств, каждая из которых содержит информацию, связанную с функцией адаптера, включая информацию, используемую для обработки запросов функции адаптера (например, запросов DMA, запросов MSI), и информацию, касающуюся запросов, связанных с функцией адаптера (например, команд шины PCI). Каждой записи в таблице устройств соответствует одно адресное пространство в системной памяти, присвоенное функции адаптера. Функция адаптера может иметь одно или несколько адресных пространств в системной памяти, присвоенных функции адаптера;

индикатор 312 занятости: в этом поле указано, занята ли функция адаптера;

индикатор 314 состояния постоянной ошибки: в этом поле указано, находится ли функция адаптера в состоянии постоянной ошибки;

индикатор 316 инициированного восстановления: в этом поле указано, инициировано ли восстановление для функции адаптера;

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

разрешающий индикатор 320: в этом поле указано, разрешена ли функция адаптера (например, 1 = разрешена, 0 = заблокирована);

идентификатор 322 запросчика (RID): это - идентификатор функции адаптера, содержащий, например, номер шины, номер устройства и номер функции. Это поле используется, например, для доступа к конфигурационному пространству функции адаптера.

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

Индексный регистр (BAR) (1-n) 324: в этом поле содержится множество целых чисел без знака, обозначаемых как BAR0-BARn и соответствующих первоначально заданной функции адаптера, при этом их значения также хранятся в индексных регистрах, соответствующих функции адаптера. В каждом BAR указан начальный адрес области памяти или области ввода-вывода в функции адаптера, а также указан тип адресного пространства, то есть является ли оно, например, 64- или 32-разрядной областью памяти или 32-разрядной областью ввода-вывода.

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

Размер 1…n 326: в этом поле содержится множество целых чисел без знака, обозначаемых как SIZE0-SIZEn. Значение поля размера, когда оно является ненулевым, отображает размер каждого адресного пространства, при этом каждая запись соответствует ранее описанному BAR.

Далее описаны дополнительные подробности, касающиеся поля BAR и поля размера.

1. Когда для функции адаптера не реализован BAR, значение поля BAR и значение соответствующего ему поля размера в обоих случаях сохраняются как нулевые.

2. Когда в поле BAR представлено пространство адресов ввода-вывода или 32-разрядное адресное пространство памяти, значение соответствующего поля размера является ненулевым и отображает размер адресного пространства.

3. Когда в поле BAR представлено 64-разрядное адресное пространство памяти,

a. в поле BARn представлены младшие разряды адреса;

б. в следующем по порядку поле BARn+1 представлены старшие разряды адреса;

в. значение соответствующего поля SIZEn является ненулевым и отображает размер адресного пространства;

г. значение соответствующего поля SIZEn+1 не является значащим и сохраняется как нулевое.

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

Указатель 330 состояния: указывает, например, заблокированы ли операции загрузки/сохранения, а также содержит другую информацию.

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

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

Далее со ссылкой на фиг.3Б будут описаны дополнительные подробности, касающиеся дескриптора функции. В одном из примеров дескриптор 350 функции содержит разрешающий индикатор 352, который указывает, активирован ли дескриптор функции шины PCI, номер 354 функции шины PCI, который указывает функцию (статический идентификатор, который в одном из вариантов осуществления является индексом в таблице функций); и номер 356 экземпляра, который указывает конкретный экземпляр этого дескриптора функции. Например, при каждой активации функции числовое значение номера экземпляра увеличивается с целью отображения нового номера экземпляра.

В соответствии с одной из особенностей настоящего изобретения, чтобы получить доступ к функции адаптера, конфигурация передает функции адаптера запрос, который выполняется процессором. В приведенных примерах конфигурацией является операционная система, но в других примерах она может представлять собой систему, процессор, логический раздел, гостя и т.д. Эти запросы передаются посредством конкретных команд доступа к адаптеру. Примеры команд включают загрузку данных шины PCI, сохранение данных шины PCI и сохранения блока данных шины PCI. Эти команды определяются архитектурой адаптера (например, шины PCI). Дополнительные подробности, касающиеся этих команд, описаны далее. Например, со ссылкой на фиг.4A-5Б описан один из вариантов осуществления команды загрузки данных шины PCI; со ссылкой на фиг.6A-7Б описан один из вариантов осуществления команды сохранения данных шины PCI; и со ссылкой на фиг.8A-9Б описан один из вариантов осуществления команды сохранения блока данных шины PCI.

Рассмотрим сначала фиг.4A, на которой представлен один из вариантов осуществления команды загрузки данных шины PCI. Показано, что команда 400 загрузки данных шины PCI содержит, например, код 402 операции с указанием команды загрузки данных шины PCI; первое поле 404 с указанием местоположения, в котором будут загружены данные, вызванные из функции адаптера; и второе поле 406 с указанием местоположения, в котором содержится различная информация, касающаяся функции адаптера, из которой должны быть загружены данные. Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.

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

В одном из вариантов осуществления в поле 2 указана пара общих регистров, в которых содержится различная информация. Как показано на фиг.4Б, в содержимое регистров входит, например:

активированный дескриптор 410: это поле представляет собой активированный дескриптор функции адаптера, из которой должны быть загружены данные;

адресное пространство 412: в этом поле указано адресное пространство в функции адаптера, из которой должны быть загружены данные;

смещение 414 в адресном пространстве: в этом поле указано смещение в указанном адресном пространстве, из которого должны быть загружены данные;

поле 416 длины: в этом поле указана длина операция загрузки (например, число загружаемых байтов); и

поле 418 состояния: в этом поле указан применимый код состояния, когда команда завершается заданным кодом условия.

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

Рассмотрим один из вариантов осуществления логики, соответствующей команде загрузки данных шины PCI, который описан со ссылкой на фиг.5A и 5Б. В одном из примеров, команда отдается операционной системой (или другой конфигурацией) и выполняется процессором (например, аппаратно-программным обеспечением), в котором выполняется операционная система. В приведенных примерах команды и функции адаптера основаны на шине PCI. Тем не менее, в других примерах может использоваться отличающаяся архитектура адаптера и соответствующие команды.

Чтобы отдать команду, операционная система указывает для команды следующие операнды (например, в одном или нескольких регистрах, указанных в команде): дескриптор функции шины PCI, адресное пространство шины PCI (PCIAS), смещение в адресном пространстве шины PCI и длину загружаемых данных. После успешного завершения команды загрузки данных шины PCI данные загружаются в местоположение (например, регистр), указанное в команде.

Как показано на фиг.5A, сначала на шаге 500 запроса определяется, установлено ли средство, рассчитанное на команду загрузки данных шины PCI. Это определяется, например, путем проверки индикатора, хранящегося, например, в блоке управления. Если средство не установлено, на шаге 502 распознается исключительная ситуация. В противном случае на шаге 504 запроса определяется, упорядочены ли операнды. Например, если некоторые операнды должны находиться в четных/нечетных парах регистров, определяется, выполнено ли это требование. Если операнды не упорядочены, на шаге 506 распознается исключительная ситуация. В противном случае, если средство установлено, а операнды упорядочены, на шаге 508 запроса определяется, активирован ли дескриптор, указанный в операндах команды загрузки данных шины PCI. В одном из примеров это определяется путем проверки разрешающего индикатора в дескрипторе. Если дескриптор не активирован, на шаге 510 распознается исключительная ситуация.

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

Если конфигурацией, отдающей команду, является гость, после этого на шаге 514 запроса определяется, сконфигурирована ли функция на использование гостем. Если это не разрешено, на шаге 516 распознается исключительная ситуация. Этот запрос может не учитываться, если конфигурацией не является гость, или могут проверяться другие полномочия, если они указаны (В одном из примеров, в системе z/Architecture® посредством команды начала выполнения в режиме интерпрет