ОПРЕДЕЛЕНИЕ ФОРМАТОВ ТРАНСЛЯЦИИ ДЛЯ ФУНКЦИЙ АДАПТЕРА ВО ВРЕМЯ ВЫПОЛНЕНИЯ Российский патент 2015 года по МПК G06F12/10 G06F13/28 

Описание патента на изобретение RU2556418C2

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

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

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

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

Публикация США №2007/0136554 А1, опубликованная 14 июня 2007 (под авторством Biran и др.), "Memory Operations in a Virtualized System," Виртуальная память выделяется и связывается с экземпляром операционной системы. Виртуальная память транслируется в один или более действительных адресов, причем один или более действительных адресов не требуют дальнейшей трансляции. Адаптер ввода-вывода делается видимым одному или более действительным адресам. Экземпляру операционной системы предоставляются один или более действительных адресов для осуществления доступа к виртуальной памяти, связанной с экземпляром операционной системы. Защита и трансляция адреса может выполняться адаптером ввода-вывода или экземпляром операционной системы.

В публикации США No. 2008/0091915 А1, опубликованной 17 апреля 2008 (под авторством Moerti и др.), "Apparatus and Method for Communicating With a Memory Registration Enabled Adapter Using Cached Address Translations", предоставляются устройство и способ для связи с адаптером с возможностью регистрации памяти, таким как канальный адаптер хоста InfiniBand™. С помощью устройства и способа службы драйверов устройств могут запускаться драйвером устройства для инициализации записей трансляции адреса в структуре данных трансляции адреса корневого комплекса. Адрес структуры данных буфера данных драйвера устройства и модификаторы регистрации могут передаваться драйвером устройства службам драйвера устройства. Службы драйвера устройства могут создавать записи структуры данных трансляции адреса в структуре данных трансляции адреса, связанной с корневым комплексом, и записи трансляции адреса регистрации памяти (MR) в структуре данных трансляции адреса MR адаптера. Структура данных трансляции адреса MR затем может использоваться операциями ввода-вывода, чтобы обходить структуру данных трансляции адреса, связанную с корневым комплексом.

Патент США №7493425, выданный 17 февраля 2009 (на имя Arndt и др.), "Method, System and Program Product for Differentiating Between Virtual Hosts on Bus Transactions and Associating Allowable Memory Access for an Input/Output Adapter that Supports Virtualization", описывает способ, систему и компьютерный программный продукт, который позволяет образу системы в рамках виртуального сервера с множества системных образов сохранять изолированность от других системных образов, одновременно прямо открывая часть своей связанной системной памяти, или всю системную память, разделенному адаптеру PCI без необходимости анализа и проверки каждой операции ввода-вывода компонентом, которому дается поручение менеджером LPAR.

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

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

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

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

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

ФИГ.3В представляет собой изображение одного варианта осуществления различных подробностей регистрации адресного пространства DMA для адаптера, в соответствии с одной особенностью настоящего изобретения;

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

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

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

ФИГ.5В представляет собой изображение примеров различных CPU DAT-совместимых форматов, используемых в соответствии с одной или более особенностями настоящего изобретения;

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

ФИГ.6А - один из вариантов осуществления команды Modify PCI Function Controls, используемой согласно одной из особенностей настоящего изобретения;

ФИГ.6Б - один из вариантов осуществления поля, используемого командой Modify PCI Function Controls, проиллюстрированной на ФИГ.6А согласно одной из особенностей настоящего изобретения;

ФИГ.6В представляет собой изображение одного варианта осуществления другого поля, используемого командой Modify PCI Function Controls, представленной на ФИГ.6А, в соответствии с одной особенностью настоящего изобретения;

ФИГ.6Г представляет собой изображение одного варианта осуществления содержимого блока информации о функциях (FIB) в соответствии с одной особенностью настоящего изобретения;

ФИГ.7 - один из вариантов осуществления общего представления логики команды Modify PCI Function Controls согласно одной из особенностей настоящего изобретения;

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

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

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

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

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

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

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

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

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

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

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

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

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

Далее будет описан один из вариантов осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения согласно ФИГ.1. В одном из примеров вычислительной средой 100 является сервер System z®, предлагаемый International Business Machines Corporation. Основой сервера System z® является z/Architecture®, предлагаемая International Business Machines Corporation. Подробности, касающиеся z/Architecture®, описаны в публикации IBM® под названием "z/Architecture-Principles of Operation", публикация IBM № SA22-7832-07 (февраль 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) через один или более коммутаторов 114 (например, коммутаторов PCI). В одном из примеров концентратор ввода-вывода состоит из аппаратного обеспечения, включающего один или несколько конечных автоматов.

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

Концентратор ввода-вывода содержит, например, корневой комплекс 116, который принимает запрос от коммутатора. Запрос содержит адрес ввода/вывода, который может быть нужно транслировать, и поэтому корневой комплекс предоставляет адрес на блок 118 защиты и трансляции адреса. Этот блок, например, представляет собой аппаратный блок, используемый для трансляции, при необходимости, адреса ввода-вывода в адрес, прямо используемый для доступа к системной памяти 104, как более подробно описывается ниже.

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

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

Кроме того, в одном примере системная память 104 содержит таблицы 202 трансляции адреса, используемые для трансляции адреса из адреса, который прямо не используется для доступа к системной памяти, в адрес, который используется прямо. В одном варианте осуществления имеется одна или более таблиц трансляции адреса, приписанных к адресному пространству DMA, и эти одна или более таблиц трансляции адреса настроены на основании, например, размера адресного пространства, к которому они приписаны, размера самих таблиц трансляции адреса и/или размера страницы (или другого блока памяти), к которой необходимо осуществлять доступ.

В одном примере имеется иерархия таблиц трансляции адреса. Например, как показано на ФИГ.2, имеется таблица 202а первого уровня (например, таблица сегментов), на которую указывает указатель 218 IOAT (описанный ниже), и вторая таблица 202b более низкого уровня (например, таблица страниц), на которую указывает запись 206а таблицы первого уровня. Один или более битов полученного адреса 204 используются для индексации в таблице 202а, чтобы определять положение конкретной записи 206а, которая указывает конкретную таблицу 202b более низкого уровня. Затем один или более других битов адреса 204 используются для определения положения конкретной записи 206b в этой таблице. В этом примере эта запись предоставляет адрес, используемый для определения положения верной страницы, а дополнительные биты в адресе 204 используются для определения конкретного положения 208 на странице для выполнения передачи данных. То есть, адрес в записи 206b и выбранные биты полученного адреса 204 PCI используются, чтобы предоставлять адрес, прямо используемый для доступа к системной памяти. Например, прямо используемый адрес образуется из соединения старших битов адреса в записи 206b (например, битов 63:12, в примере 4-Кб страницы) и выбранных младших битов из полученного адреса PCI (например, битов 11:0 для 4-Кб страницы).

В одном примере адресное пространство DMA конкретному адаптеру назначает операционная система. Это назначение выполняется посредством процесса регистрации, который вызывает инициализацию (например, посредством надежного программного обеспечения) записи 210 таблицы устройств для этого адаптера. Эта запись таблицы устройств находится в таблице 211 устройств, расположенной в концентраторе 112 ввода-вывода. Например, таблица 211 устройств находится в блоке защиты и трансляции адреса концентратора ввода-вывода.

В одном примере запись (DTE) 210 таблицы устройств содержит ряд полей наподобие следующих:

формат 212: Это поле содержит множество битов для указания различной информации, включая, например, формат трансляции адреса таблицы верхнего уровня таблиц трансляции адреса. CPU DAT-совместимый, расширенного адреса ввода-вывода, обходной, без извлечения, и т.п. Форм;

Размер 213 страницы: Это поле указывает размер страницы (или другого блока памяти), к которому должен осуществляться доступ;

базовый адрес 214 PCI и ограничение 216 PCI: Эти значения предоставляют диапазон, используемый для определения адресного пространства DMA и проверки допустимости полученного адреса (например, адреса PCI); и

Указатель IOAT (трансляции адреса ввода-вывода) 218: Это поле содержит указатель на таблицу трансляции адреса наивысшего уровня, используемую для адресного пространства DMA.

В других вариантах осуществления в DTE может содержаться больше, меньше информации или другая информация.

В одном варианте осуществления запись таблицы устройств, которая должна использоваться в конкретной трансляции, определяется с помощью идентификатора (RID) реквестора, расположенного в запросе, подаваемом функцией 220 PCI, связанной с адаптером (и/или частью адреса). ID реквестора (например, 16-битное значение, определяющее, например, номер шины, номер устройства и номер функции) включается в запрос, как и адрес ввода-вывода (например, 64-битный адрес PCIe), который должен использоваться для доступа к системной памяти. Запрос, включая RID и адрес ввода-вывода, предоставляется, например, на ассоциативную память (САМ) 230 посредством, например, коммутатора 114, который используется для предоставления индексного значения. Например, в САМ содержится множество записей, каждая из которых соответствует индексу в таблице устройств. Каждая запись в САМ содержит значение RID. Если, например, принятый RID соответствует значению, содержащемуся в записи в САМ, для определения местоположения записи в таблице устройств используется соответствующий индекс из таблицы устройств. То есть, выход САМ используется для индексации в таблице 211 устройств, чтобы определять положение записи 210 таблицы устройств. Если соответствия нет, полученный пакет отклоняется без осуществления доступа к системной памяти. (В других вариантах осуществления САМ или другой поиск не требуется, и RID используется в качестве индекса).

После этого, поля в записи таблицы устройств используются, чтобы убеждаться в допустимости адреса и настройки таблиц трансляции адреса. Например, поступающий в запросе адрес проверяется аппаратным обеспечением концентратора ввода-вывода (например, блоком защиты и трансляции адреса), чтобы убедиться, что он находится в пределах границ, определенных базовым адресом 214 PCI и ограничением 216 PCI, хранящимися в записи таблицы устройств, определенной с помощью RID запроса, предоставившего адрес. Это гарантирует, что адрес находится в пределах ранее зарегистрированного диапазона, для которого таблицы трансляции адреса настроены правильно.

В одном варианте осуществления, чтобы получить адрес системной памяти (т.е. адрес, прямо используемый для доступа к системной памяти), сначала выполняется процесс регистрации. Этот процесс регистрации регистрирует конкретное адресное пространство и, таким образом, связанные таблицы трансляции адреса, с конкретным реквестором, таким как конкретная функция адаптера. Один пример обзора этого процесса регистрации описывается со ссылкой на фиг.3А.

Обращаясь к фиг.3А, сначала на этапе 300 операционная система, выполняющаяся в одном из центральных процессоров, соединенных с системной памятью, определяет размер и местоположение адресного пространства, к которому должен осуществлять доступ адаптер. В одном примере размер адресного пространства определяется базовым адресом PCI и ограничением PCI, установленными операционной системой. Операционная система определяет основание и ограничение с помощью одного или более критериев. Например, если операционная система хочет, чтобы адреса PCI прямо отображались на виртуальные адреса ЦП, то база и ограничение устанавливаются таким образом. В еще одном примере, если желательным является дополнительное изолирование между адаптерами и/или образами операционной системы, то используемые адреса выбираются так, чтобы предоставлять ненакладывающиеся и раздельные адресные пространства. Местоположение также определяется операционной системой и основывается, например, на характеристиках адаптера.

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

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

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

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

С собственным подключением адаптеров ввода-вывода к, например. System z®, применяется трансляция адреса ввода-вывода (IOAT), чтобы обеспечивать защиту и изолирование доступа DMA к системной памяти адаптером. Однако существуют классы адаптеров, которые не нуждаются в таком дополнительном уровне защиты, включая описанные выше. Таким образом, для этих адаптеров может быть выбран формат обхода;

b) Формат без извлечения, в котором адрес, включенный в начальный запрос от адаптера, используется без извлечения каких-либо таблиц трансляции. Этот формат может быть выбран, когда память является непрерывной, размер страницы известен и адрес предназначен для ограниченной области (например, страницы в 4 Кб или 1 Мб), в которой не требуется извлечение никаких таблиц трансляции из системной памяти. Адрес, используемый для доступа к системной памяти (т.е. получающийся в результате адрес, когда выбирается формат без извлечения), получается из адреса указателя IOAT. Например, для страницы размером 4 Кб, младшие биты адреса PCI (например, биты 11:0) соединяются со старшими 52 битами указателя IOAT, чтобы получать итоговый адрес, используемый для доступа к системной памяти;

c) CPU DAT-совместимый формат, в котором таблицы трансляции, используемые для трансляции адресов ввода-вывода, совместимы с таблицами трансляции, используемыми для трансляций CPU DAT. To есть, должны использоваться таблицы трансляции адреса, которые подобны и совместимы с тем, что уже используется для динамической трансляции адреса ЦП. Это обеспечивает легкость использования для тех операционных систем, которые знакомы с использованием таблиц этих типов; позволяет разделять таблицы между ЦП и адаптером ввода-вывода; и придает определенной операционной системе (например, z/VM®) эффективность при обработке пространств DMA ее гостей с постраничной организацией. Доступны различные CPU DAT-совместимые форматы, как более подробно описывается ниже со ссылкой на фиг.5В;

d) Формат трансляции расширенных адресов ввода-вывода, в котором для трансляций адресов ввода-вывода используются таблицы трансляции расширенных адресов. При этом формате таблицы трансляции адреса предназначаются для операций ввода-вывода и могут быть больше по размеру, чем обычно используемые при трансляции адреса ЦП. Например, могут быть 1-Мб или даже более крупные таблицы страниц и/или другие таблицы трансляции. Кроме того, размеры различных уровней таблиц трансляции, включая таблицы страниц, могут отличаться друг от друга, и они могут отличаться от самих страниц. Увеличение традиционных размеров уменьшает транзакции шины и помогает улучшать кэширование трансляции ввода-вывода. Размер таблицы страниц и других таблиц трансляции, как и размер страницы, определяют, сколько уровней трансляции необходимо. Примеры различных форматов трансляции расширенных адресов ввода-вывода описываются более подробно ниже со ссылкой на фиг.5Г.

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

Обращаясь к фиг.3Б, в этом примере, на этапе запроса 310 сначала осуществляется определение, является ли адаптер, для которого выполняется регистрация, надежным адаптером. Это определение осуществляется, например, проверкой указания в структуре данных (например, хранящейся в памяти). Если операционная система решает, что адаптер является надежным, то на этапе 312 осуществляется дальнейшее определение, должна ли быть обойдена трансляция. Например, операционная система определяет, на основании, например, хранящегося индикатора, является ли приемлемым обход. Если операционная система решает, что трансляция должна быть обойдена, то на этапе 313 выбирается формат обхода, и адрес, предоставленный реквестором, прямо используется для доступа к системной памяти.

Возвращаясь к этапу запроса 310, если, однако, адаптер не является надежным адаптером, или если обход не должен быть выбран на этапе 312, то на этапе запроса 314 осуществляется дальнейшее определение, должен ли быть выбран формат без извлечения. Для этого выбора операционная система рассматривает, например, является ли память непрерывной, и размер страницы (или другого раздела памяти). Если конфигурация позволяет формат без извлечения, то при условии прохождения любых проверок на правильность, на этапе 316 выбирается формат без извлечения. Следовательно, получающийся в результате адрес запроса PCI получается прямо из адреса указателя IOAT.

Возвращаясь к этапу запроса 314, если формат без извлечения не выбран, то на этапе запроса 318 осуществляется дальнейшее определение, должен ли запрос использовать таблицы трансляции адресов CPU DAT-совместимости. И снова операционная система рассматривает свои структуры и адресуемость, принимая решение, хочет ли она CPU DAT-совместимый формат. Если он является желаемым форматом, и при условии прохождения любых проверок на правильность, на этапе 320 выбирается CPU DAT-совместимый формат. В частности, в этом примере, один CPU DAT-совместимый формат выбирается из одного или более доступных форматов, которые описываются ниже.

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

Однако если на все эти запросы получается отрицательный ответ, то на этапе 326 конкретный формат выбирается операционной системой от имени реквестора. Например, может выбираться формат по умолчанию. Этот формат по умолчанию может быть CPU DAT-совместимым форматом или форматом трансляции расширенных адресов ввода-вывода, или даже другим форматом, таким как таблицы трансляции адреса, которые установлены только для ввода-вывода, но ближе связаны с таблицами формата CPU DAT. Существует множество вариантов. Кроме того, хотя в этом примере запросы, представленные на фиг.3Б расположены в конкретном порядке, в других примерах они могут быть в отличающихся порядках.

Согласно ФИГ.3А, впоследствии, при условии, что таблицы трансляции адреса необходимы, на этапе 304 создаются одна или более таблиц трансляции адреса, чтобы покрывать это адресное пространство DMA. В одном примере создание включает построение таблиц и размещение надлежащих адресов в табличных записях. В качестве примера, одна из таблиц трансляции адреса является таблицей 4-Кб страниц, имеющей 512 64-битных записей, и каждая запись включает адрес 4-Кб страницы, совместимый с назначенным адресным пространством.

После этого на этапе 306 адресное пространство DMA регистрируется для адаптера, как более подробно описывается со ссылкой на фиг.3В. В этом примере предполагается, что имеется одна функция PCI на адаптер, а поэтому один ID реквестора на адаптер. Эта логика выполняется, например, центральным процессором, связанным с системной памятью, с учетом запроса операционной системы.

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

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

Дополнительно, на этапе 356 указатель трансляции (IOAT) адреса ввода-вывода, используемый, чтобы указывать на таблицу трансляции адреса наивысшего уровня (или страницу, в случае без извлечения), если имеется, сохраняется в записи таблицы устройств. На этом регистрация завершается.

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

В одном варианте осуществления сначала на этапе 400 на концентраторе ввода-вывода получается запрос DMA. Например, функция PCI подает запрос, который направляется на концентратор PCI посредством, например, коммутатора PCI. Используя в запросе ID реквестор, на этапе 402 определяется положение соответствующей записи таблицы устройств. После этого на этапе запроса 404 осуществляется определение, является ли запись таблицы устройств допустимой. В одном примере допустимость определяется проверкой бита допустимости в самой записи. Этот бит устанавливается, например, с учетом выполнения запроса функции активации операционной системой. Если активирован, бит устанавливается, например, в единицу (т.е., допустимый); иначе он остается нулевым (т.е., недопустимым). В еще одном примере бит может устанавливаться, когда завершается процесс регистрации.

Если запись таблицы устройств является недопустимой, на этапе 405 предоставляется ошибка. Иначе на этапе запроса 406 осуществляется дальнейшее определение, является ли адрес PCI, предоставленный в запросе, меньшим, чем базовый адрес PCI, хранящийся в записи таблицы устройств. Если да, то адрес находится за пределами допустимого диапазона, и на этапе 407 предоставляется ошибка. Однако если адрес PCI больше базового адреса или равен ему, то на этапе запроса 408 осуществляется другое определение, больше ли адрес PCI, чем предельное значение PCI в записи таблицы устройств. Если адрес PCI больше, чем ограничение, то на этапе 409 снова предоставляется ошибка, поскольку адрес находится за пределами допустимого диапазона. Однако если адрес находится в пределах допустимого диапазона, то обработка продолжается.

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

Возвращаясь к этапу запроса 410, если формат не указывает обход, то на этапе запроса 412 осуществляется следующий запрос, указывает ли формат возможность прямого доступа к памяти на основании указателя IOAT, не требуя какого-либо извлечения таблиц трансляции адреса. Если никакое извлечение не указано, то на этапе 414 получающийся в результате адрес получается из указателя IOAT, и в извлечении таблиц трансляции адреса из системной памяти нет необходимости. Получающийся в результате адрес отправляется на контроллер памяти и используется для определения положения страницы и конкретной записи на странице. Например, если размер страницы составляет 4 Кб, то биты 11:0 используются как смещение от указателя IOAT. Концентратор ввода-вывода на этапе 426 продолжает обработку, чтобы делать возможным извлечение/сохранение данных в этой записи страницы.

Возвращаясь к этапу запроса 412, с другой стороны, если использование таблиц трансляции необходимо, то на этапе 416 формат, предоставленный в записи таблицы устройств, используется для определения типа таблицы трансляции (например, CPU DAT-совместимая или трансляция расширенного адреса ввода-вывода) и для определения битов адреса PCI в адресе, который необходимо использовать для трансляции адреса. Например, если формат указывает формат трансляции расширенного адреса ввода-вывода с 4-Кб страницами и 4-Кб таблицами трансляции адреса, которые описаны ниже, и таблица верхнего уровня является таблицей первого уровня с 4-Кб страницами, то биты 29:21 адреса используются для индексации внутри таблицы первого уровня; биты 20:12 используются для индексации внутри таблицы страниц; и биты 11:0 используются для индексации внутри страницы. Используемые биты зависят от того, сколько битов необходимо для индексации внутри таблицы или страницы данного размера. Например, для 4-Кб страницы с адресацией на уровне байтов для адресации 4096 байтов используются 12 битов; а для 4-Кб таблицы страниц с 512 записями, по 8 байтов каждая, для адресации 512 записей используется 9 бит, и т.д.

Затем, на этапе 418 концентратор PCI извлекает соответствующую запись таблицы трансляции адреса. Например, сначала с помощью указателя IOAT записи таблицы устройств определяется положение таблицы трансляции наивысшего уровня. Затем биты адреса (те, которые находятся после старших битов, используемых для проверки допустимости, а не трансляции; например, после битов 29:21 в приведенном выше примере) используются, чтобы определять положение конкретной записи в этой таблице.

Затем на этапе запроса 420 осуществляется определение на основании, например, формата, предоставленного в записи таблицы устройств, имеет ли найденная запись трансляции адреса верный формат. Например, формат в записи таблицы устройств сравнивается с форматом, указанным в записи трансляции адреса. Если они равны, то формат в записи таблицы устройств является допустимым. Если нет, на этапе 422 указывается ошибка; иначе обработка продолжается на этапе запроса 424 определением того, является ли эта таблица последней, подлежащей обработке. То есть, осуществляется определение, имеются ли другие таблицы трансляции адреса, необходимые для получения действительного или абсолютного адреса, или же было определено положение записи таблицы нижнего уровня. Это определение осуществляется на основании предоставленного формата и размера уже обработанных таблиц. Если это не последняя таблица, то обработка продолжается на этапе 418. Иначе концентратор ввода-вывода продолжает обработку, чтобы на этапе 426 делать возможным извлечение или сохранение данных по транслированному адресу. Например, концентратор ввода-вывода направляет определенный адрес, который определен на основании начального адреса и выбранного формата трансляции, на контроллер памяти (или прямо в память), который использует его, чтобы извлекать и/или сохранять данные из памяти DMA/в память DMA.

Дальнейшие подробности относительно использования таблиц трансляции и различных форматов трансляции описываются со ссылкой на фиг.5А-5Г. В одном примере, как показано со ссылкой на фиг.5А-5Б, число уровней трансляции, а следовательно и число извлечений, требующихся для выполнения трансляции, уменьшается, например, путем игнорирования старших битов адреса во время трансляции и использованием только младших битов, чтобы проходить таблицы трансляции. Обозначение старших битов и младших битов основано, например, на размере адресного пространства DMA, приписанного к адаптеру. Использование частичного адреса по сравнению с полным адресом дополнительно показано в следующих примерах.

В начале, согласно ФИГ.5А приводится пример, в котором весь адрес используется для трансляции адреса/доступа к памяти. При этом способе существующего уровня техники необходимы шесть уровней таблиц трансляции, включая таблицу страниц. На начало таблицы наивысшего уровня (например, в этом примере, - таблицы 5 уровня) указывает указатель IOAT, и затем биты адреса PCI используются для определения положения записи в таблице. Запись каждой таблицы трансляции указывает на начало таблицы трансляции более низкого уровня или на страницу (например, запись в таблице 5 уровня указывает на начало таблицы 4 уровня, и т.д.).

В этом примере адресное пространство DMA (DMAAS) имеет размер 6 Мб, и каждая таблица занимает 4 Кб, имея максимум 512 8-байтных записей (кроме таблицы 5 уровня, которая поддерживает только 128 записей на основании размера адреса). Адрес составляет, например, 64 бита: FFFF С000 0009 С600. На начало таблицы 5 уровня указывает указатель IOAT, и биты 63:57 адреса PCI используются для индексирования в таблице 5 уровня, чтобы определять положение начала таблицы 4 уровня; биты 56:48 адреса PCI используются для индексации в таблице 4 уровня, чтобы определять положение начала таблицы 3 уровня; биты 47:39 используются для индексации в таблице 3 уровня, чтобы определять положение начала таблицы 2 уровня; биты 38:30 используются для индексации в таблице 2 уровня, чтобы определять положение начала таблицы 1 уровня; биты 29:21 используются для индексации в таблице 1 уровня, чтобы определять положение начала таблицы страниц; биты 20:12 используются для индексации в таблице страниц, чтобы определять положение начала страницы; и биты 11:0 используются, чтобы определять положение записи в 4-килобитной странице. Таким образом, в этом примере, все биты адреса используются для трансляции/доступа. Это отличается от примера, представленного на фиг.5Б, в котором адресное пространство имеет тот же размер (например, 6 мегабайт), и адрес тот же, но способ трансляции игнорирует некоторые биты адреса во время трансляции. В этом примере биты 63:30 адреса игнорируются при трансляции. Указатель IOAT указывает на начало таблицы 1 уровня, и биты 29:21 адреса PCI используются для индексации в таблице 1 уровня, чтобы определять положение начала таблицы страниц; биты 20:12 используются для индексации в соответствующей таблице страниц, чтобы определять положение начала страницы; а биты 11:0 используются для индексации в 4-Кб странице.

Как показано, таблица 500 первого уровня содержит 3 записи 502, каждая из которых предоставляет адрес к одной из трех таблиц 504 страниц. Число необходимых таблиц страниц, а следовательно и число таблиц другого уровня, зависит, например, от размера адресного пространства DMA, размера таблиц трансляции и/или размера страниц. В этом примере адресное пространство DMA составляет 6 Мб, и каждая таблица страниц составляет 4 Кб, имея до 512 записей. Следовательно, каждая таблица страниц может отображать до 2 Мб памяти (4 Кб % 512 записей). Таким образом, для 6-Мб адресного пространства нужны три таблицы страниц. Таблица 1 уровня может содержать три записи, по одной для каждой таблицы страниц, и поэтому в этом примере никакие таблицы трансляции адреса дополнительных уровней не нужны.

Кроме того, как описано выше, для трансляции адреса могут использоваться различные форматы таблиц трансляции адреса, и могут существовать изменения в форматах. Например, могут существовать различные CPU DAT-совместимые форматы, примеры которых описываются со ссылкой на фиг.5В. Как показано, в качестве примеров, один CPU DAT-совместимый формат является CPU DAT-совместимым форматом 550 с 4-Кб страницей, а другой является CPU DAT-совместимым форматом 552 с 1-Мб страницей. Число показанных битов является числом битов адреса, используемых для индексации в этой странице или таблице (или другого определения положения записи в этой странице или таблице). Например, 12 бит 554 адреса PCI используются как байтовое смещение в 4-Кб странице 556; 8 бит 558 используются как индекс в таблице 560 страниц; 11 бит 562 используются как индекс в таблице 564 сегментов, и т.д. Под обозначенной таблицей трансляции адреса располагается максимальный размер адресного пространства, поддерживаемого этой таблицей трансляции адреса.

Например, таблица 560 страниц поддерживает 1-Мб адресное пространство DMA; таблица 564 сегментов поддерживает 2-Гб адресное пространство DMA, и т.д. На этой фигуре, также как и на фиг.5Г, К= килобайты, М= мегабайты, G= гигабайты, Т= терабайты, Р= петабайты и Е= экзабайты.

Как показано, по мере увеличения размера страницы число уровней таблиц трансляции уменьшается. Например, для 4-Кб страницы 556 нужна таблица страниц, но она не нужна для 1-Мб страницы. Возможные другие примеры и варианты.

Различные примеры форматов трансляции расширенного адреса ввода-вывода представлены на фиг.5Г. Например, показаны следующие форматы: 4-Кб таблица 570 трансляции адреса с 4-Кб страницами; 1-Мб таблицы трансляции 572 адреса с 4-Кб страницами; и 1-Мб таблицы 574 трансляции адреса с 1-Мб страницами. Как и в случае CPU DAT-совместимых форматов, число перечисленных битов представляет собой те биты, которые используются для определения положения записи в конкретной таблице. Например, под номером ссылки 576, 12 битов представляют собой смещение в 4-Кб странице. Аналогично, под номером ссылки 578, 9 битов используются для индексации в таблице страниц ввода-вывода. Эта таблица страниц ввода-вывода допускает адресное пространство DMA, которое имеет размер 2 мегабайта. Существует много других примеров.

В одной конкретной реализации, чтобы выполнить регистрацию адресного пространства DMA в адаптер, используется команда, называемая командой Modify PCI Function Controls (MPFC). Например, операционная система определяет, какой формат трансляции адреса она хочет использовать, создает таблицы трансляции адреса для этого формата, а затем подает команду MPFC с этим форматом, включенным в качестве операнда команды. В одном примере формат и другие операнды команды включаются в информационный блок функции (описывается ниже), который является операндом команды. Информационный блок функции затем используется для обновления DTE, и, в одном варианте осуществления, - необязательно записи таблицы функций (FTE), которая включает рабочие параметры адаптера.

Один вариант осуществления подробностей, относящихся к этой команде, и конкретно к процессу регистрации, описывается со ссылкой на фиг.6А-9. Как показано на фиг.6А, команда 600 Modify PCI Function Controls содержит, например, код 602 операции, указывающий команду Modify PCI Function Controls; первое поле 604, указывающее местоположение, в котором находится различная информация, касающаяся функции адаптера, для которой устанавливаются рабочие параметры; и второе поле 606, указывающее местоположение, из которого извлекается блок информации о функциях PCI (FIB). Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.

В одном из вариантов осуществления в поле 1 указан регистр общего назначения, в котором содержится различная информация. Как показано на ФИГ.6Б, в содержимом регистре содержится, например, дескриптор 610 функции, который идентифицирует дескриптор функции адаптера, от имени которого выполняется команда изменения; адресное пространство 612, указывающее адресное пространство в системной памяти, соответствующее функции адаптера, указанной дескриптором функции; управление 614 операцией, которое определяет операцию, выполняемую для функции адаптера; и указатель 616 состояния, который указывает состояние команды при ее выполнении с использованием заданного кода.

В одном из вариантов осуществления дескриптор функции содержит, например, разрешающий индикатор, указывающий, активирован ли дескриптор, номер функции, указывающий функцию адаптера (это статический идентификатор, который может использоваться для индексации в таблице функций); и номер экземпляра, указывающий конкретный экземпляр этого дескриптора функции. Для каждой функции адаптера предусмотрен один дескриптор функции, который используется для определения местоположения записи в таблице функций (FTE). Каждая запись в таблице функций содержит рабочие параметры и/или другую информацию, связанную с функцией адаптера. В качестве одного из примеров, запись в таблице функций содержит:

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

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

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

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

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

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

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

идентификатор реквестора (RID): это идентификатор функции адаптера, содержащий, например, номер шины, номер устройства и номер функции.

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

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

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

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

Дополнительные подробности относительно BAR и Size описаны ниже.

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

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

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

а. Поле BARn представляет младшие биты адреса.

b. Последующее поле BARn+1 представляет старшие биты адреса.

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

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

Информация внутренней маршрутизации: Эта информация используется для выполнения конкретной маршрутизации к адаптеру. Она включает, например, информацию адресации узла, схемы процессора и концентратора.

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

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

Согласно ФИГ.6В, в одном примере, поле 2 указывает логический адрес 620 блока (FIB) информации о функциях PCI, который содержит информацию относительно связанной функции адаптера. Информационный блок функции используется для обновления записи таблицы устройств и/или записи таблицы функций (или другого местоположения), связанной с функцией адаптера. Информация сохраняется в FIB во время инициализации и/или конфигурации адаптера, и/или с учетом конкретных событий.

Дополнительные подробности относительно информационного блока (FIB) функции описываются со ссылкой на ФИГ.6Г. В одном варианте осуществления информационный блок 650 функции содержит следующие поля:

Формат 651: Это поле определяет формат FIB.

Управление 652 перехватом: Это поле используется для указания того, приводит ли гостевое выполнение конкретных команд гостем страничного режима к перехвату команд.

Указание 654 ошибки: это поле содержит указание состояния ошибки для прямого доступа к памяти и прерываний адаптера. Когда бит установлен (например, 1), во время выполнения прямого доступа к памяти или прерывания адаптера для функции адаптера были обнаружены одна или более ошибок.

Загрузка/сохранение блокирована 656: это поле указывает, блокированы ли операции загрузки/сохранения.

Достоверность 658 функции PCI: это поле включает управление активацией функции адаптера. Когда бит установлен (например, 1), считается, что функция адаптера для операций ввода-вывода активирована.

Адресное пространство зарегистрировано 660: это поле включает управление активацией прямого доступа к памяти для функции адаптера. Когда поле установлено (например, 1), прямой доступ к памяти активирован.

Размер 661 страницы: это поле указывает размер страницы или другого блока памяти для обращения посредством обращения к памяти DMA.

Базовый адрес 662 PCI (РВА): это поле представляет собой базовый адрес для адресного пространства в системной памяти, назначенного для функции адаптера. Он представляет младший виртуальный адрес, который позволено использовать функции адаптера для прямого доступа к памяти к определенному адресному пространству DMA.

Адресное ограничение PCI (PAL) 664: Это поле представляет старший виртуальный адрес, который позволено использовать функции адаптера для доступа в пределах определенного адресного пространства DMA.

Указатель (IOAT) 666 трансляции адресов ввода-вывода: указатель трансляции адресов ввода-вывода указывает первую из любых таблиц трансляции, используемых трансляцией виртуальных адресов PCI, или он может прямо указывать абсолютный адрес кадра памяти, который является результатом трансляции.

Подкласс 668 прерывания (ISC): Это поле содержит подкласс прерывания, используемый для того, чтобы представлять прерывания адаптера для функции адаптера.

Число прерываний (NOI) 670: это поле указывает число отличных кодов прерываний, принятых для функции адаптера. Это поле также определяет размер, в битах, битового вектора прерываний адаптера, указанного полями адреса битового вектора прерываний адаптера и сдвига битового вектора прерываний адаптера.

Адрес 672 битового вектора прерываний адаптера (AIBV): это поле определяет адрес битового вектора прерываний адаптера для функции адаптера. Этот вектор используется при обработке прерываний.

Сдвиг 674 битового вектора прерываний адаптера: Это поле определяет сдвиг первого бита битового вектора прерываний адаптера для функции адаптера.

Адрес 676 суммарного бита прерываний адаптера (AISB): это поле предоставляет адрес, указывающий суммарный бит прерываний адаптера, который необязательно используется при обработке прерываний.

Сдвиг 678 суммарного бита прерываний адаптера: Это поле предоставляет сдвиг в суммарном битовом векторе прерываний адаптера.

Адрес 680 блока (FMB) измерения функции: это поле предоставляет адрес блока измерения функции, используемого для того, чтобы собирать измерения относительно функции адаптера.

Ключ 682 блока измерения функции: это поле содержит ключ доступа для доступа к блоку измерения функции.

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

Маркер 686 авторизации команд: Это поле используется, чтобы определять, авторизирован ли гость постраничного режима сохранения выполнять команды PCI без вмешательства хоста.

В одном из примеров в системе z/Architecture® посредством команды Start Interpretive Execution (SIE) в режиме интерпретации на уровне 2 выполняется гость со страничной организацией. Например, гипервизор логического разбиения (LPAR) выполняет команду SIE, чтобы начать логическое разбиение в физической постоянной памяти. Если операционной системой при этом логическом разбиении является z/VM®, она передает команду SIE для выполнения своих гостевых (виртуальных) машин в своем V=V (виртуальном) запоминающем устройстве. Следовательно, гипервизор LPAR использует уровень-1 SIE, а гипервизор z/VM® использует уровень-2 SIE; и

формат 687 трансляции адреса: Это поле указывает выбранный формат для трансляции адреса таблицы трансляции наивысшего уровня, которая должна использоваться в трансляции (например, указание таблицы наивысшего уровня (например, таблицы сегментов, области 3rd, и т.п.) и указание выбранного формата (например, CPU DAT совместимый, расширенный формат трансляции адреса ввода-вывода, формат обхода, формат без извлечения)).

Информационный блок функции, указанный в команде Modify PCI Function Controls используется для того, чтобы изменять выбранную запись таблицы устройств, запись таблицы функций и/или другие элементы управления встроенного программного обеспечения, связанные с функцией адаптера, указанной в команде. Путем изменения записи таблицы устройств, записи таблицы функций и/или других элементов управления встроенного программного обеспечения адаптеру предоставлены определенные сервисы. Эти сервисы включают, например, прерывания адаптера; трансляции адреса; переустановку состояния ошибки; переустановку блокирования загрузки/сохранения; установку параметров измерения функции; и установку управления перехвата.

Один вариант осуществления логики, связанной с командой Modify PCI Function Controls описывается со ссылкой на ФИГ.7. В одном примере команда подается операционной системой (или другой конфигурацией) и выполняется процессором (например, встроенным программным обеспечением), выполняющим операционную систему. В примерах, приведенных в данном документе, команда и функции адаптера основаны на PCI. Однако в других примерах может использоваться другая архитектура адаптера и соответствующие команды.

В одном примере операционная система предоставляет команде (например, в одном или более регистрах, указанных командой) следующие операнды: дескриптор функции PCI; идентификатор адресного пространства DMA; управление операцией; и адрес информационного блока функции.

Согласно ФИГ.7 вначале на этапе запроса 700 осуществляется определение, установлено ли средство, допускающее команду Modify PCI Function Controls. Это определение осуществляется, например, путем проверки указателя, хранящегося, например, в блоке управления. Если средство не установлено, на этапе 702 предоставляется исключительная ситуация. В противном случае на этапе запроса 704 осуществляется определение, была ли команда выдана гостем страничного режима сохранения (или другим гостем). Если да, на этапе 706 операционная система хоста эмулирует операцию для этого гостя.

В противном случае на этапе запроса 708 осуществляется определение, точно ли выровнены один или несколько операндов. Например, осуществляется определение, находится ли адрес информационного блока функции на границе двойного слова. В одном примере это необязательно. Если операнды не выровнены, то на этапе 710 предоставляется исключительная ситуация. В противном случае на этапе 712 осуществляется определение, доступен ли информационный блок функции. Если нет, то на этапе 714 предоставляется исключительная ситуация. В противном случае на этапе 716 осуществляется определение, активирован ли дескриптор, предоставленный в операндах команды Modify PCI Function Controls. В одном примере это определение осуществляется путем проверки указателя активации в дескрипторе. Если дескриптор не активирован, то на этапе 718 предоставляется исключительная ситуация.

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

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

Затем на этапе запроса 730 осуществляется определение, активирована ли функция. В одном примере это определение осуществляется путем проверки указателя активации в записи таблицы функций. Если она не активирована, то на этапе 732 предоставляется исключительная ситуация.

Если функция активирована, то на этапе запроса 734 осуществляется определение того, активно ли восстановление. Если восстановление активно, как определяется указателем восстановления в записи таблицы функций, то на этапе 736 предоставляется исключительная ситуация. Однако если восстановление не активно, то на этапе запроса 738 осуществляется дальнейшее определение того, занята ли функция. Это определение осуществляется путем проверки указателя занятости в записи таблицы функций. Если функция занята, то на этапе 740 предоставляется ситуация занятости. В случае ситуации занятости команда может быть повторена, а не прекращена.

Если функция не занята, то на этапе запроса 742 осуществляется дополнительное определение того, является ли достоверным формат информационного блока функции. Например, поле формата FIB проверяется для того, чтобы определить, поддерживается ли этот формат системой. Если он недостоверный, то на этапе 744 предоставляется исключительная ситуация. Если формат информационного блока функции достоверный, то на этапе запроса 746 осуществляется следующее определение того, является ли достоверным управление операцией, определенное в операндах команды. То есть является ли управление операцией одним из управлений операций, определенных для этой команды. Если оно недостоверно, то на этапе 748 предоставляется исключительная ситуация. Однако если управление операцией достоверно, то обработка продолжается с конкретным определяемым управлением операцией.

Одно управление операцией, которое может быть определено, представляет собой операцию регистрации параметров трансляции адреса ввода-вывода, используемую в управлении трансляциями адреса для адаптера. Этой операцией параметры функции PCI, относящиеся к трансляции адреса ввода-вывода, устанавливаются в DTE, FTE и/или другом месте из соответствующих параметров FIB, который является операндом для команды. Эти параметры включают, например, базовый адрес PCI; ограничение адреса PCI (также называемое ограничением PCI или ограничением); формат трансляции адреса; размер страницы; и указатель трансляции адреса ввода-вывода, которые являются операндами для этой операции. Также имеются подразумеваемые операнды, включая начальный адрес DMA (SDMA) и конечный адрес DMA (EDMA), которые хранятся в месте, доступном для процессора, выполняющего команду.

Один вариант осуществления логики для установки рабочих параметров для трансляции адреса ввода-вывода описывается со ссылкой на фиг.8. Сначала на этапе запроса 800 осуществляется определение, является ли базовый адрес PCI в FIB больше, чем ограничение PCI в FIB. Если сравнение базового адреса и ограничения указывает, что базовый адрес больше ограничения, то на этапе 802 распознается исключительная ситуация. Однако если базовый адрес меньше или равен ограничению, то на этапе запроса 804 осуществляется дальнейшее определение, являются ли формат трансляции адреса и размер страницы достоверными. Если они недостоверные, то на этапе 806 предоставляется исключительная ситуация. Однако если они достоверны, то на этапе запроса 808 осуществляется дальнейшее определение, превышает ли размер адресного пространства (на основании базового адреса и ограничения) способность трансляции. В одном примере размер адресного пространства сравнивается с максимальной возможной способностью трансляции на основании формата таблицы верхнего уровня. Например, если таблица верхнего уровня является DAT-совместимой таблицей сегментов, максимальная способность трансляции составляет 2 гигабайта.

Если размер адресного пространства превышает способность трансляции, то на этапе 810 предоставляется исключительная ситуация. Иначе на этапе запроса 812 осуществляется дальнейшее определение, является ли базовый адрес меньше начального адреса DMA. Если да, то на этапе 814 предоставляется исключительная ситуация. В противном случае на этапе запроса 816 осуществляется другое определение, является ли ограничение адреса большим, чем конечный адрес DMA. Если да, то на этапе 818 предоставляется исключительная ситуация. В одном примере начальный адрес DMA и конечный адрес DMA основаны на общесистемной политике.

После этого на этапе запроса 820 осуществляется определение, доступно ли достаточно ресурсов, если таковые нужны, для выполнения трансляции адреса ввода-вывода. Если нет, то на этапе 822 предоставляется исключительная ситуация. В противном случае на этапе запроса 824 осуществляется дальнейшее определение, были ли параметры трансляции адреса ввода-вывода уже зарегистрированы в FTE и DTE. Это определяется проверкой значений параметров в FTE/DTE. Например, если значения в FTE/DTE равны нулю или другому определенному значению, то регистрация выполнена не была. Чтобы определить положение FTE, используется дескриптор, предоставленный в команде, а чтобы определить положение DTE, используется индекс устройства в FTE.

Если функция адаптера уже была зарегистрирована для трансляции адреса, то на этапе 826 предоставляется исключительная ситуация. Если нет, то на этапе запроса 828 осуществляется определение, является ли достоверным определенное адресное пространство DMA (т.е. является ли оно адресным пространством, для которого была активирована DTE). Если нет, то на этапе 830 предоставляется исключительная ситуация. Если все проверки успешны, то на этапе 832 параметры трансляции помещаются в запись таблицы устройств и, необязательно, в соответствующую запись таблицы функций (или другое указанное местоположение). Например, параметры функции PCI, относящиеся к трансляции адреса ввода-вывода, копируются из информационного блока функции и помещаются в DTE/FTE. Эти параметры включают, например, базовый адрес PCI, ограничение адреса PCI, формат трансляции, размер страницы и указатель трансляции адреса ввода-вывода. Эта операция активирует доступы DMA к определенному адресному пространству DMA. Она активирует трансляцию адреса ввода-вывода для функции адаптера.

Другое управление операцией, которое может быть определено командой Modify PCI Function Controls, - это операция отмены регистрации параметров трансляции адреса ввода-вывода, пример которой описывается со ссылкой на фиг.9. Этой операцией параметры функции, относящиеся к трансляции адреса ввода-вывода, переустанавливаются в нули. Эта операция деактивирует доступы DMA к определенному адресному пространству DMA и вызывает очистку записей буфера ассоциативной трансляции ввода-вывода для этого адресного пространства DMA. Она деактивирует трансляцию адреса.

Согласно фиг.9, в одном варианте осуществления на этапе запроса 900 осуществляется определение, не зарегистрированы ли параметры трансляции адреса ввода-вывода. В одном примере это определение осуществляется путем проверки значений соответствующих параметров в FTE или DTE. Если эти поля равны нулю или некоторому определенному значению, они не зарегистрированы. Следовательно, на этапе 902 предоставляется исключительная ситуация. Если они зарегистрированы, то на этапе запроса 904 осуществляется определение, является ли достоверным адресное пространство DMA. Если оно недостоверно, то на этапе 906 предоставляется исключительная ситуация. Если адресное пространство DMA достоверно, то на этапе 908 параметры трансляции в записи таблицы устройств и, необязательно, в соответствующей записи таблицы функций сбрасываются.

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

В описанных в данном документе вариантах осуществления адаптеры являются адаптерами PCI. PCI, как используется в данном документе, относится к любым адаптерам, реализованным в соответствии со спецификациями на основе PCI, как определено в Peripheral Component Interconnect Special Interest Group (PCI-SIG) (www.pcisig.com/home), включая, без ограничения, PCI или PCIe. В одном конкретном примере Peripheral Component Interconnect Express (PCIe) представляет собой стандарт взаимосвязи на уровне компонентов, который определяет двунаправленный протокол связи для выполнения транзакций между адаптерами ввода-вывода и хост-системами. Осуществление связи PCIe инкапсулируется в пакетах в соответствии со стандартом PCIe для передачи по шине PCIe. Транзакции, возникающие в адаптерах ввода-вывода и завершающиеся в хост-системах, называются направленными вверх транзакциями. Транзакции, возникающие в хост-системах и завершающиеся в адаптерах ввода-вывода, называются направленными вниз транзакциями. Топология PCIe основана на однонаправленных соединениях точка-точка, которые соединяются попарно (например, одно направленное вверх соединение, одно направленное вниз соединение)с образованием шины PCIe. Стандарт PCIe поддерживается и обнародуется организацией PCI-SIG.

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

Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемая среда может быть машиночитаемой запоминающей средой. Машиночитаемая запоминающая среда может быть, например, без ограничения, электронной, магнитной, оптической, электромагнитной, инфракрасной или полупроводниковой системой, аппаратом или устройством, или любым подходящим сочетанием вышеуказанного. Более конкретные примеры (не исчерпывающий список) машиночитаемых запоминающих сред включают следующее: электрическое соединение, имеющее один или несколько проводов, съемную дискету для компьютера, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СПЗУ или флэш-память), оптоволокно, постоянное запоминающее устройство на съемном диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое подходящее сочетание вышеуказанного. В контексте этого документа машиночитаемая запоминающая среда может быть любой материальной средой, которая может содержать или хранить программу для использования посредством системы, аппарата или устройства выполнения команд или в связи с ними.

Как показано на ФИГ.10, в одном примере компьютерный программный продукт 1000 содержит, например, одну или несколько машиночитаемых запоминающих сред 1002 для хранения в них машиночитаемых средств или логики 1004 программного кода, чтобы обеспечивать и продвигать одну или более особенностей настоящего изобретения.

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

Компьютерный программный код для выполнения операций, обеспечивающих особенности настоящего изобретения, может быть написан на любом сочетании одного или нескольких языков программирования, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционные процедурные языки программирования, такие как язык программирования С, ассемблер или подобные языки программирования. Программный код может полностью выполняться на компьютере пользователя, частично на компьютере пользователя, в качестве автономного пакета программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью удаленном компьютере или сервере. В последнем случае удаленный компьютер может быть соединен с компьютером пользователя посредством сети любого типа, включая локальную вычислительную сеть (LAN) или глобальную вычислительную сеть (WAN), или соединение может осуществляться с внешним компьютером (например, по сети Интернет с помощью Интернет-провайдера).

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

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

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

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

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

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

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

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

Хотя выше описаны различные варианты осуществления, они являются лишь примерами. Например, вычислительные среды других архитектур могут содержать и использовать одну или несколько особенностей настоящего изобретения. В качестве примеров, серверы, отличающиеся от серверов System z, такие как серверы Power Systems или другие серверы, поставляемые International Business Machines Corporation, или серверы других компаний могут включать, использовать или получать преимущества от одной или более особенностей настоящего изобретения. Кроме того, хотя в приведенном в данном документе примере адаптеры и концентратор PCI рассматриваются как часть сервера, в других вариантах осуществления они не обязательно должны рассматриваться как часть сервера, а могут просто рассматриваться как соединенные с системной памятью и/или другими компонентами вычислительной среды. Не требуется, чтобы вычислительная среда была сервером. Также, хотя описаны таблицы трансляции, могут использоваться любые структуры данных, и подразумевается, что термин "таблица" включает все такие структуры данных. Кроме того, хотя адаптеры и основаны на PCI, одна или более особенностей настоящего изобретения могут использоваться с другими адаптерами или другими компонентами ввода-вывода. Адаптер и адаптер PCI являются лишь примерами. Более того, могут использоваться адресные пространства и таблицы адресов другого размера, не отходя от сути настоящего изобретения. Также с использованием одной или нескольких особенностей настоящего изобретения могут транслироваться и другие типы адресов. Кроме того, могут использоваться и другие типы форматов трансляции. Более того, DTE может содержать больше или меньше информации, или другую информацию. Возможны многие другие изменения.

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

Устройства ввода-вывода или I/O устройства (включая без ограничения клавиатуры, экраны, устройства указания, DASD, ленту, CD диски, DVD диски, флэш-устройства и другие среды памяти, и т.п.) могут подключаться к системе или прямо, или посредством промежуточных контроллеров ввода-вывода. Сетевые адаптеры также могут подключаться к системе, чтобы позволять системе обработки данных соединяться с другими системами обработки данных или удаленным принтерам или запоминающим устройствам посредством промежуточных частных или общих сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь некоторыми из доступных типов сетевых адаптеров.

ФИГ.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 загрузки/сохранения обычно осуществляет доступ под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении), или с использованием их сочетания.

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

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

Для команд и операндов, хранимых в памяти, могу быть предусмотрены отдельные кэши. Информация в кэше содержится в форме непрерывных байтов на целочисленной границе, называемой блоком кэша или строкой кэша (или для краткости строкой). Одна модель может предоставлять команду EXTRACT CACHE ATTRIBUTE, которая возвращает размер строки кэша в байтах. Одна модель также может предоставлять команду PREFETCH DATA и команду PREFETCH DATA RELATIVE LONG для предварительного извлечения данных из запоминающего устройства в кэш данных или команд или для освобождения данных из кэша.

Запоминающее устройство рассматривается как длинная горизонтальная строка битов. Для большинства операций доступ к запоминающему устройству осуществляется последовательно слева направо. Строка битов подразделяется на блоки из восьми битов. Восьмибитный блок называется байтом, который является основным конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется уникальным неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют последовательные адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой беззнаковые двоичные целые числа, содержащие 24, 31 или 64 бита.

Информация между запоминающим устройством и ЦП или канальной подсистемой передается по одному байту или группой байтов за один раз. Если не оговорено иное, например, в архитектуре z/Architecture® группа байтов в запоминающем устройстве адресуется посредством крайнего левого байта группы. Число байтов в группе подразумевается или прямо определяется операцией, которую необходимо выполнить. Используемая в работе ЦП группа байтов называется полем. В каждой группе байтов, например, в z/Architecture®, биты последовательно нумеруются слева направо. В z/Architecture® крайние левые биты иногда именуются "старшими" битами, а крайние правые биты - "младшими" битами. Однако номера битов не являются адресами запоминающего устройства. Обращаться по адресу можно только к байтам. Чтобы работать с отдельными битами байта в запоминающем устройстве, осуществляется доступ ко всему байту. Биты в байте пронумерованы слева направо от 0 до 7 (например, в z/Architecture®). Биты в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-битных адресов или от 1 до 31 или от 33 до 63 в случае 31-битных адресов, и от 0 до 63 в случае 64-битных адресов. В любом другом формате фиксированной длины из множества байтов биты, образующие формат, последовательно нумеруются, начиная с 0. В целях обнаружения ошибок, и предпочтительно их исправления, с каждым байтом или группой байтов может передаваться один или несколько контрольных битов. Такие контрольные биты генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда длина хранящегося поля операнда подразумевается кодом операций команды, говорят, что поле имеет фиксированную длину, которая может составлять один, два, четыре, восемь или шестнадцать байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, говорят, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине приращениями в один байт (или для некоторых команд с шагом в два байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути к запоминающему устройству может быть больше длины сохраняемого поля.

Некоторые единицы информации должны находиться на целочисленной границе в запоминающем устройстве. Применительно к единице информации граница называется целочисленной, когда адрес запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтов на целочисленной границе даются особые названия. Полуслово представляет собой группу из 2 идущих подряд байтов на двухбайтной границе и является основным структурным блоком команд. Слово представляет собой группу из 4 идущих подряд байтов на четырехбайтной границе. Двойное слово представляет собой группу из 8 идущих подряд байтов на восьмибайтной границе. Учетверенное слово представляет собой группу из 16 идущих подряд байтов на 16-байтной границе. Когда адреса запоминающего устройства обозначают полуслова, слова, двойные слова и учетверенные слова, двоичное представление адреса содержит один, два, три или четыре крайних правых нулевых бита, соответственно. Команды должны находиться на двухбайтных целочисленных границах. Хранящиеся операнды большинства команд не содержат требования выравнивания на границах.

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

В одном варианте осуществления изобретение может быть реализовано на практике программным обеспечением (иногда называемым лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., любое из чего будет согласоваться с настоящим изобретением). Как показано на ФИГ.11, к программному коду программного обеспечения, которое воплощает настоящее изобретение, обычно получает доступ процессор 5001 хост-системы 5000 из запоминающих устройств 5011 долговременной памяти, таких накопитель на CD-диске, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код программного обеспечения может быть воплощен в любой из множества известных сред для использования с системой обработки данных, такой как дискета, накопитель на жестких дисках или CD-диск. Код может распределяться в таких средах или может распределяться пользователям из компьютерной памяти 5002 или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для использования пользователями таких других систем.

Программный код включает операционную систему, которая управляет функцией и взаимодействием различных компонентов компьютера и одной или нескольких прикладных программ. Обычно программный код подкачивается по частям из запоминающего устройства 5011 в относительно более быстродействующее запоминающее устройство 5002 компьютера, где он доступен для обработки процессором 5001. Методы и способы для воплощения программного кода в памяти, в физических средах и/или распределения программного кода через сети хорошо известны, и более подробно в данном документе обсуждаться не будут. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски (CD), DVD, магнитную ленту и т.п.) часто называют "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

ФИГ.12 представляет собой изображение характерной рабочей станции или серверной аппаратной системы, в которой настоящее изобретение может быть реализовано на практике. Система 5020, представленная на ФИГ.12, содержит характерную базовую компьютерную систему 5021, такую как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину, используемую для соединения и связи процессора (-ов) 5026 и других компонентов системы 5021 в соответствии с известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может содержать накопитель на жестких дисках (например, включающий любое из магнитного накопителя, CD -диска, DVD-диска и флэш-памяти) или, например, накопитель на магнитной ленте. Система 5021 также может содержать адаптер пользовательского интерфейса, который соединяет микропроцессор 5026 через шину с одним или несколькими интерфейсными устройствами, такими как клавиатура 5024, мышь 5023, принтер/сканнер 5030 и/или другие интерфейсные устройства, которые могут быть любыми устройствами пользовательского интерфейса, такими как сенсорный экран, клавиатура цифрового ввода и т.п. Шина также соединяет устройство 5022 отображения, такое как ЖК-экран или монитор, с микропроцессором 5026 посредством адаптера устройства отображения.

Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с маркерным доступом, сеть Ethernet или модемы. Альтернативно система 5021 может поддерживать связь с помощью беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (LAN) или глобальной вычислительной сети (WAN), или система 5021 может быть клиентом в клиент/серверной распределенной системе с другим компьютером, и т.п. Все эти конфигурации, а также соответствующее коммуникационное аппаратное и программное обеспечение, известны в данной области техники.

ФИГ.13 представляет собой изображение сети 5040 обработки данных, в которой настоящее изобретение может быть реализовано на практике. Сеть 5040 обработки данных может содержать множество отдельных сетей, таких как беспроводная сеть и проводная сеть, каждая из которых может содержать множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, она может содержать одну или несколько сетей LAN, где LAN может содержать множество интеллектуальных рабочих станций, соединенных с хост-процессором.

Также согласно ФИГ.13 сети также могут содержать мэйнфреймы или серверы, такие как шлюзовый компьютер (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюзовый компьютер 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при соединении одного сетевого протокола с другим. Шлюз 5046 предпочтительно может быть соединен линией связи с другой сетью (например, сетью Интернет 5047). Шлюз 5046 также может быть прямо соединен с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 посредством линии связи. Шлюзовый компьютер может быть реализован с использованием сервера IBM eServer System z, поставляемым на рынок International Business Machines Corporation.

Одновременно на ФИГ.12 и ФИГ.13 представлен программный код программного обеспечения, который может реализовывать настоящее изобретение, может быть доступен процессору 5026 системы 5020 из долговременных запоминающих сред 5027, таких как накопитель на CD-дисках или накопитель на жестких дисках. Программный код программного обеспечения может быть воплощен в любой из множества известных сред для использования с системой обработки данных, такой как дискета, жесткий диск или CD-диск. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для использования пользователями таких других систем.

Альтернативно программный код может быть осуществлен в памяти 5025 с доступом к нему процессором 5026 с применением процессорной шины. Такой программный код содержит операционную систему, которая управляет функцией и взаимодействием различных компонентов компьютера и одной или нескольких прикладных программ 5032. Программный код обычно подкачивается по частям из запоминающих сред 5027 в быстродействующую память 5025, где он доступен для обработки процессором 5026. Методы и способы осуществления программного кода программного обеспечения в памяти, в физических средах и/или распределения кода программного обеспечения посредством сетей хорошо известны, и в данном документе подробнее обсуждаться не будут. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски (CD), DVD-диски, магнитную ленту и т.п.) часто называют "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующий и менее объемный, чем другие кэши процессора), представляет собой низший (L1 или уровень один) кэш, а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3, если имеется 3 уровня). Кэш низшего уровня часто делится на кэш команд (I-Cache), хранящий машинные команды, подлежащие выполнению, и кэш данных (D-Cache), содержащий операнды, хранимые в памяти.

ФИГ.14 представляет собой изображение иллюстративного варианта осуществления процессора для процессора 5026. Обычно, чтобы буферизировать блоки памяти с целью повышения производительности процессора, используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, хранящий строки кэша данных памяти, которые предположительно будут использоваться. Типичные строки кэша содержат 64, 128 или 256 байтов данных памяти. Отдельные кэши используются часто для кэширования команд, а не кэширования данных. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения, хорошо известными в данной области техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, содержащей 4 уровня кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем 5 уровня (L5), поскольку оно обычно является более быстродействующими и содержит лишь часть энергонезависимого запоминающего устройства (DASD, лента и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые постранично перемещаются в основное запоминающее устройство 5025 и из него операционной системой.

Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды, подлежащей выполнению. Счетчик команд в процессоре z/Architecture® является 64-битным и может быть усечен до 31 или 24 битов с целью поддержки предыдущих ограничений адресации. Счетчик команд обычно воплощен в PSW (слове статуса программы) компьютера, так что он сохраняется при переключении контекста. Таким образом, работающая программа, имеющая значение счетчика команд, может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы сохраняет значение счетчика команд, пока программа неактивна, и программный счетчик (в PSW) операционной системы используется, пока выполняется операционная система. Обычно счетчик команд увеличивается на величину, равную числу байтов текущей команды. RISC-команды (вычисления с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (вычисления со сложным набором команд) обычно имеют переменную длину. Команды IBM z/Architecture® являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Счетчик 5061 команд изменяется, например, или операцией переключения контекста, или операцией выбранного перехода команды перехода. В операции переключения контекста текущее значение счетчика команд сохраняется в слове статуса программы вместе с другой информацией о состоянии выполняемой программы (такой как коды состояний), и загружается новое значение счетчика команд, указывающее на команду нового программного модуля, который необходимо выполнить. Операция выбранного перехода выполняется, чтобы позволить программе принимать решения или выполнять цикл в программе путем загрузки результата команды перехода в счетчик 5061 команд.

Обычно для извлечения команд от имени процессора 5026 используется блок 5055 извлечения команд. Блок извлечения или извлекает "следующие последовательные команды", целевые команды команд выбранного перехода, или первые команды программы, следующей за переключением контекста. В современных блоках извлечения команд часто применяют методы предварительного извлечения, чтобы эмпирически осуществлять предварительное извлечение команд на основании вероятности того, что предварительно извлеченные команды могли бы быть использованы. Например, блок извлечения может осуществлять извлечение 16 байтов команды, которая содержит следующую последовательную команду, и дополнительных байтов других последовательных команд.

Затем извлеченные команды выполняются процессором 5026. В одном варианте осуществления извлеченная команда(-ы) передается блоку 5056 диспетчеризации блока извлечения. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 извлечения команд и выполняет арифметические операции с операндами в соответствии с кодом операции команды. Операнды подаются на блок 5057 выполнения предпочтительно или из памяти 5025, структурированных регистров 5059 или из ближайшего поля выполняемой команды. Сохраненные результаты выполнения хранятся или в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).

Процессор 5026 обычно имеет один или несколько блоков 5057, 5058, 5060 для выполнения функции команды. Согласно ФИГ.15А блок 5057 выполнения может сообщаться со структурированными регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065 посредством интерфейсной логики 5071. Блок 5057 выполнения может применять несколько регистровых схем 5067, 5068, 5069, чтобы хранить информацию, с которой будет работать арифметическое логическое устройство (ALU) 5066. ALU выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ (XOR), циклический сдвиг и смещение. ALU предпочтительно поддерживает специализированные операции, зависящие от структуры. Другие схемы могут обеспечивать другие структурированные средства 5072, содержащие, например, коды ситуаций и логику поддержки восстановления. Обычно результат операции ALU хранится в схеме 5070 выходного регистра, которая может направлять результат ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание предназначено лишь обеспечить характерное понимание одного варианта осуществления.

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

Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, где третий операнд может быть третьим регистром или одним из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (ALU) 5066, способное выполнять ряд логических функций, таких как смещение, циклический сдвиг. И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любую из сложения, вычитания, умножения, деления. Некоторые ALU 5066 разработаны для скалярных операций, а некоторые - для плавающей точки. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). IBM z/Architecture® имеет обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до 1 или дополнения до 2. Число в форме дополнения до 2 выгодно в том смысле, что ALU не нужно поддерживать процедуру вычитания, поскольку и отрицательное, и положительное значение в форме дополнения до 2 в ALU требует только сложения. Числа обычно описаны в сокращенном виде, в котором 12-битное поле определяет адрес блока из 4096 байтов и обычно описывается, например, как 4-кбайтный (килобайтный) блок.

Согласно ФИГ.15Б информация команды перехода для выполнения команды перехода обычно передается блоку 5058 перехода, который часто применяет алгоритм предсказания переходов, такой как таблица 5082 истории переходов, чтобы предсказывать исход перехода до завершения других условных операций. Цель текущей команды перехода извлекается и выполняется по предположению до завершения условных операций. Когда условные операции завершаются, выполненные по предположению команды перехода или завершаются, или отбрасываются на основании ситуаций условной операции и предположенного исхода. Типичная команда перехода может проверять коды ситуаций и переход к целевому адресу, если коды ситуаций отвечают требованию перехода команды перехода, причем целевой адрес может рассчитываться на основании нескольких чисел, включая, например, числа из полей регистра или непосредственного поля команды. Блок 5058 перехода может применять ALU 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 перехода может поддерживать связь, например, с регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации или другими схемами 5073.

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

Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может предоставлять непосредственный операнд, использующий значение части команды, может предоставлять одно или несколько регистровых полей, прямо указывающих или на регистры общего назначения, или на регистры особого назначения (например, регистры с плавающей точкой). Команда может использовать подразумеваемые регистры, идентифицируемые полем кода операции как операнды. Команда может использовать для операндов ячейки памяти. Ячейка памяти операнда может предоставляться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения z/Architecture®, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются, чтобы предоставлять, например, адрес операнда в памяти. Под ячейкой в данном документе понимается местоположение в основной памяти (основном запоминающем устройстве), если не указано иное.

Согласно ФИГ.15В процессор осуществляет доступ к запоминающему устройству с помощью блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другую ячейку памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая по порядку не соответствует последовательности команд, однако блок 5060 загрузки/сохранения должен поддерживать для программ видимость того, что команды выполнялись по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, устройства ALU 5085 и управляющую логику 5090, чтобы вычислять адреса памяти и обеспечивать формирование последовательности конвейера для сохранения порядка операций. Некоторые операции могут не сохранять порядок, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы операции с нарушенным порядком казались программе выполненными по порядку, как хорошо известно в данной области техники.

Предпочтительно адреса, которые "видит"" прикладная программа, часто называют виртуальными адресами. Виртуальные адреса иногда называют "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что они перенаправляются в местоположение в физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простую префиксацию виртуального адреса величиной сдвига, трансляцию виртуального адреса посредством одной или нескольких таблиц трансляции, причем таблицы трансляции предпочтительно содержат, по меньшей мере, таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись, указывающую на таблицу страниц. В z/Architecture® предоставляется иерархия трансляции, включающая первую таблицу области, вторую таблицу области, третью таблицу области, таблицу сегментов и необязательную таблицу страниц. Эффективность трансляции адресов часто повышается за счет использования буфера (TLB) ассоциативной трансляции, который содержит записи, отображающие виртуальный адрес для соответствующего местоположения в физической памяти. Записи создаются, когда DAT транслирует виртуальный адрес с помощью таблиц трансляции. Последующее использование виртуального адреса может затем использовать запись быстродействующего TLB, а не медленный последовательный доступ к таблице трансляции. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения, включая LRU (наиболее давней по использованию).

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

Блоки 5054 ввода-вывода (ФИГ.14) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, диски, принтеры, устройства отображения и сети. Блоки ввода-вывода часто представляются компьютерной программе драйверами программного обеспечения. В мэйнфреймах, таких как System z® производства IBM®, канальные адаптеры и адаптеры открытых систем являются блоками ввода-вывода мэйнфрейма, которые обеспечивают связь между операционной системой и периферийными устройствами.

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

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

Более конкретно, в мэйнфрейме структурированные машинные команды используются программистами, сегодня, как правило, программистами, работающими на языке С, часто посредством приложения-компиллятора. Эти команды, хранящиеся в запоминающей среде, могут выполняться в исходном формате на сервере z/Architecture® IBM® или в другом случае в машинах, реализующих другие архитектуры. Они могут эмулироваться в существующих и будущих мэйнфрейм серверах IBM® и на других машинах IBM® (например, серверах Power Systems и серверах System x®). Они могут выполняться на машинах, работающих на Linux на широком ряде машин, использующих аппаратное обеспечение производства IBM®, Intel®, AMD и других. Помимо выполнения на этом аппаратном обеспечении под z/Architecture®, может использоваться Linux, а также машины, которые используют эмуляцию посредством Hercules (см. www.hercules-390.org) или FSI (Fundamental Software, Inc) (см. www.funsoft.com), где выполнение, как правило, осуществляется в режиме эмуляции. В режиме эмуляции программное обеспечение эмуляции выполняется собственным процессором, чтобы эмулировать архитектуру эмулируемого процессора.

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

Конкретная эмулируемая команда декодируется, и для выполнения функции отдельной команды вызывается подпрограмма. Функция программного обеспечения эмуляции, эмулирующая функцию эмулируемого процессора, реализуется, например, в подпрограмме или драйвере на языке С или каким-либо другим способом предоставления драйвера для конкретного аппаратного обеспечения, который будет доступен специалистам в данной области техники после понимания описания предпочтительного варианта осуществления. Различные патенты, относящиеся к эмуляции программного и аппаратного обеспечения, включая, без ограничения, патент США на изобретение №5551013 под названием "Multiprocessor for Hardware Emulation", Beausoleil et al.; и патент США на изобретение №6009261 под названием "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", Scaizi et al.; и патент США на изобретение №5574873 под названием "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", Davidian et al.; и патент США на изобретение №6308255 под названием "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", Gorishek et al.; и патент США на изобретение №6463582 под названием "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", Lethin et al.; и патент США на изобретение №5790825 под названием "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", Eric Traut; и многие другие представляют ряд известных способов осуществления эмуляции формата команд управления, разработанного для другой машины, для целевой машины, доступной специалисту в данной области техники.

ФИГ.16 представляет собой изображение примера эмулируемой компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000' хост-архитектуры. В эмулируемой компьютерной хост-системе 5092 хост-процессор (ЦП) 5091 является эмулируемым хост-процессором (или виртуальным хост-процессором) и содержит процессор 5093 эмуляции, имеющий другую собственную архитектуру набора команд, чем у процессора 5091 хост-компьютера 5000'. Эмулируемая компьютерная хост-система 5092 содержит память 5094, доступную для процессора 5093 эмуляции. В иллюстративном варианте осуществления память 5094 разделена на часть памяти 5096 хост-компьютера и часть 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в соответствии с архитектурой хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированного набора команд, имеющих структуру, отличную от структуры команд эмулируемого процессора 5091, собственные команды извлекаются из памяти 5097 подпрограмм эмуляции, и может осуществлять доступ к хост-команде для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд, полученных в подпрограмме последовательности и доступа/декодирования, которая может декодировать хост-команду(-ы), к которой осуществляется доступ, чтобы определять подпрограмму выполнения собственных команд для эмуляции функции хост-команды, к которой осуществляется доступ. Другие средства, которые определены для архитектуры компьютерной хост-системы 5000', могут эмулироваться подпрограммами структурированных средств, включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамического преобразования адреса и ввода-вывода и кэш процессора. Подпрограммы эмуляции также могут получать преимущество от функций, доступных в процессоре 5093 эмуляции (таких как регистры общего назначения и динамическая трансляция виртуальных адресов), чтобы улучшать производительность подпрограмм эмуляции. Также может предоставляться специальное аппаратное обеспечение и механизмы разгрузки, чтобы помогать процессору 5093 эмулировать функции хост-компьютера 5000'.

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

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

Похожие патенты RU2556418C2

название год авторы номер документа
ТРАНСЛЯЦИЯ АДРЕСОВ ВВОДА-ВЫВОДА В АДРЕСА ЯЧЕЕК ПАМЯТИ 2010
  • Дейвид Краддок
  • Томас Грегг
  • Дан Грейнер
  • Эрик Норман Лейс
RU2547705C2
ИЗМЕРИТЕЛЬНОЕ СРЕДСТВО ДЛЯ ФУНКЦИЙ АДАПТЕРА 2010
  • Питер Кеннет Швед
  • Дейвид Краддок
  • Томас Грегг
  • Бет Гленденнинг
  • Эрик Норман Лейс
  • Стивен Гленн Уилкинс
  • Фрэнк Уилльям Брайс Джр.
RU2523194C2
АКТИВАЦИЯ/ДЕАКТИВАЦИЯ АДАПТЕРОВ ВЫЧИСЛИТЕЛЬНОЙ СРЕДЫ 2010
  • Дан Грейнер
  • Чарлз Гейни
  • Дейвид Краддок
  • Антони Конески
  • Бет Гленденинг
  • Марк Фаррел
  • Томас Грегг
  • Угочукву Ньоку-Чарлз
RU2562372C2
УПРАВЛЕНИЕ СКОРОСТЬЮ, С КОТОРОЙ ОБРАБАТЫВАЮТСЯ ЗАПРОСЫ НА ПРЕРЫВАНИЕ, ФОРМИРУЕМЫЕ АДАПТЕРАМИ 2010
  • Густав Зитманн, Iii
  • Дейвид Краддок
  • Томас Грегг
  • Доналд Уилльям Шмидт
  • Брентон Франсуа Белмар
  • Марк Фаррел
  • Деймиан Лео Осисек
  • Ричард Тарша
  • Джанет Истон
RU2526287C2
ПРЕОБРАЗОВАНИЕ ИНИЦИИРУЕМОГО СООБЩЕНИЯМИ ПРЕРЫВАНИЯ В УВЕДОМЛЕНИЕ О ГЕНЕРИРОВАННОМ АДАПТЕРОМ ВВОДА-ВЫВОДА СОБЫТИИ 2010
  • Густав Ситтманн Iii
  • Дейвид Краддок
  • Томас Грегг
  • Марк Фаррелл
  • Джанет Истон
  • Эрик Норман Лейс
RU2546561C2
КОМАНДЫ СОХРАНЕНИЯ/СОХРАНЕНИЯ БЛОКА ДАННЫХ ДЛЯ СВЯЗИ С АДАПТЕРАМИ 2010
  • Дан Грейнер
  • Дейвид Краддок
  • Томас Грегг
  • Марк Фаррелл
RU2522314C1
Связанное с выбранными архитектурными функциями администрирование обработки 2015
  • Гшвинд Михаэль Карл
  • Гейни Чарлз
RU2665243C2
СРАВНЕНИЕ И ЗАМЕНА ПОЗИЦИИ ТАБЛИЦЫ ДИНАМИЧЕСКОЙ ТРАНСЛЯЦИИ АДРЕСА 2012
  • Дан Ф. Грейнер
  • Роберт Р. Роджерс
  • Густав Э. Зиттманн
RU2550558C2
КОНФИГУРАЦИЯ АРХИТЕКТУРНОГО РЕЖИМА В ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ 2015
  • Гшвинд Михаэль Карл
RU2664413C2
ОБЩАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАГРУЗКИ ДЛЯ УПРАВЛЯЮЩЕЙ СЕРВИСНОЙ ПРОГРАММЫ, СПОСОБНОЙ К ИНИЦИАЛИЗАЦИИ ВО МНОЖЕСТВЕННЫХ АРХИТЕКТУРАХ 2015
  • Гшвинд Михаэль Карл
RU2665238C2

Иллюстрации к изобретению RU 2 556 418 C2

Реферат патента 2015 года ОПРЕДЕЛЕНИЕ ФОРМАТОВ ТРАНСЛЯЦИИ ДЛЯ ФУНКЦИЙ АДАПТЕРА ВО ВРЕМЯ ВЫПОЛНЕНИЯ

Изобретение относится к вычислительной технике. Технический результат заключается в облегчении предоставления адреса, используемого при доступе к системной памяти. Способ облегчения доступа к памяти включает осуществляемую с учетом выполнения команды Modify PCI Function Controls (MPFC), которая определяет дескриптор для определения положения адаптера, указатель для определения положения одной или нескольких таблиц трансляции и поле формата, которое указывает выбранный формат трансляции из множества доступных форматов трансляции, установку формата трансляции в выбранный формат трансляции, связанный с помощью дескриптора с адаптером; динамически выполняемое при поступлении запроса от адаптера получение указания формата трансляции, установленного командой MPFC, который должен использоваться при предоставлении адреса, используемого для доступа к памяти, при этом указанный формат трансляции предварительно регистрируют для адаптера, причем запрос имеет начальный адрес, который должен использоваться при предоставлении адреса, используемого для доступа к памяти; и определение адреса прямого доступа к памяти (DMA), используемого для доступа к памяти, на основании полученного формата трансляции и начального адреса, при этом начальный адрес сгенерирован адаптером; и сохранение или извлечение данных адаптера по адресу DMA. 3 н. и 11 з.п. ф-лы, 26 ил.

Формула изобретения RU 2 556 418 C2

1. Способ облегчения доступа к памяти, включающий следующие этапы:
осуществляемая с учетом выполнения команды Modify PCI Function Controls (MPFC), которая определяет дескриптор для определения положения адаптера, указатель для определения положения одной или нескольких таблиц трансляции и поле формата, которое указывает выбранный формат трансляции из множества доступных форматов трансляции, установка формата трансляции в выбранный формат трансляции, связанный с помощью дескриптора с адаптером;
динамически выполняемое при поступлении запроса от адаптера получение указания формата трансляции, установленного командой MPFC, который должен использоваться при предоставлении адреса, используемого для доступа к памяти, при этом указанный формат трансляции предварительно регистрируют для адаптера, причем запрос имеет начальный адрес, который должен использоваться при предоставлении адреса, используемого для доступа к памяти; и
определение адреса прямого доступа к памяти (DMA), используемого для доступа к памяти, на основании полученного формата трансляции и начального адреса, при этом начальный адрес сгенерирован адаптером; и
сохранение или извлечение данных адаптера по адресу DMA.

2. Способ по п. 1, отличающийся тем, что множество доступных форматов трансляции включает один или более из следующих форматов:
выбранный совместимый с динамической трансляцией адреса центрального процессора формат (CPU DAT), выбранный формат трансляции расширенного адреса ввода-вывода (I/O), который использует одну или несколько таблиц трансляции расширенного адреса, формат обхода, в котором осуществляют обход трансляции адреса, или формат без извлечения, в котором таблицы трансляции адреса не извлекают.

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

4. Способ по п. 3, отличающийся тем, что формат обхода выбирают на основании того, что адаптер является надежным адаптером.

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

6. Способ по п. 2, отличающийся тем, что получение получает указание, что формат трансляции является выбранным CPU DAT-совместимым форматом, и при этом определение определяет адрес, используя начальный адрес и одну или несколько CPU DAT-совместимых таблиц трансляции.

7. Способ по п. 6, отличающийся тем, что CPU DAT-совместимый формат включает один из 4-Кб CPU DAT-совместимого формата или 1-Мб CPU DAT-совместимого формата.

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

9. Способ по п. 8, отличающийся тем, что выбранный формат трансляции расширенного адреса ввода-вывода включает один из формата 4-Кб таблиц трансляции адреса с 4-Кб страницами, формата 1-Мб таблиц трансляции адреса с 4-Кб страницами или формата 1-Мб таблиц трансляции адреса с 1-Мб страницами.

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

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

12. Способ по п. 1, отличающийся тем, что формат трансляции, зарегистрированный для адаптера, отличается от другого формата трансляции, зарегистрированного для другого адаптера.

13. Система для облегчения доступа к памяти, содержащая средства, приспособленные для выполнения всех этапов способа по любому из предыдущих пунктов.

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

Документы, цитированные в отчете о поиске Патент 2015 года RU2556418C2

Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок 1923
  • Григорьев П.Н.
SU2008A1
Колосоуборка 1923
  • Беляков И.Д.
SU2009A1
US 7487341 B2, 03.02.2009
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок 1923
  • Григорьев П.Н.
SU2008A1
US 6049857 A1, 11.04.2000
РЕАЛИЗАЦИЯ УПРАВЛЕНИЯ ДОСТУПОМ К ПАМЯТИ С ИСПОЛЬЗОВАНИЕМ ОПТИМИЗАЦИЙ 2004
  • Пейнадо Маркус
  • Инглэнд Пол
RU2364932C2

RU 2 556 418 C2

Авторы

Дейвид Краддок

Томас Грегг

Дан Грейнер

Эрик Норман Лейс

Доналд Уилльям Шмидт

Даты

2015-07-10Публикация

2010-11-08Подача