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

Классы МПК:G06F9/312 управление операциями загрузки, обращения к запоминающему устройству и установки в исходное состояние
Автор(ы):, , ,
Патентообладатель(и):ИНТЕРНЭШНЛ БИЗНЕС МАШИНЗ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2010-11-08
публикация патента:

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

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

Формула изобретения

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

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

первое поле с указанием первого местоположения, в котором находятся данные для сохранения в адаптере,

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

выполнение машинной команды, включающее:

использование дескриптора функции с целью получения соответствующей адаптеру записи в таблице функций;

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

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

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

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

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

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

6. Компьютерная система по п.1, в которой команда реализована на основании архитектуры адаптера.

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

поле кода операции с указанием сохранения блока данных для команды адаптера,

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

второе поле с указанием второго местоположения, включающего смещение в адресном пространстве,

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

выполнение машинной команды, включающее:

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

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

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

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

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

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

первое поле с указанием первого местоположения, в котором находятся данные для сохранения в адаптере;

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

выполнение машинной команды, включающее:

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

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

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

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

11. Способ по п.10, в котором адресным пространством для доступа является конфигурационное пространство, а адресом данных является смещение, указанное в команде, при этом смещение определяет номер регистра в конфигурационном пространстве.

Описание изобретения к патенту

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если функция активирована, на шаге 522 запроса определяется, достоверно ли адресное пространство. Например, определяется, является ли адресное пространство указанным адресным пространством функции адаптера и адресным пространством, применимым для данной команды. Если адресное пространство недостоверно, на шаге 524 распознается исключительная ситуация. В противном случае на шаге 526 запроса определяется, заблокирована ли команда загрузки/сохранения. В одном из примеров это определяется путем проверки указателя состояния в записи в таблице функций. Если команда загрузки/сохранения заблокирована, на шаге 528 распознается исключительная ситуация.

Тем не менее, если команда загрузки/сохранения не заблокирована, на шаге 530 запроса определяется, инициировано ли восстановление. В одном из примеров это определяется путем проверки индикатора инициированного восстановления в записи в таблице функций. Если восстановление инициировано, на шаге 532 распознается исключительная ситуация. В противном случае на шаге 534 запроса определяется, занята ли функция. Это определяется путем проверки индикатора занятости в записи в таблице функций. Если функция занята, на шаге 536 распознается состояние занятости. В случае состояния занятости вместо отбрасывания команды может быть повторена попытка ее выполнения.

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

Как показано на фиг.5Б, на шаге 550 запроса аппаратно-программное обеспечение определяет, предназначена ли команда загрузки для конфигурационного адресного пространства функции адаптера. Иными словами, исходя из конфигурации памяти функции адаптера, определяется, является ли указанное в команде адресное пространство конфигурационным пространством. Если это так, аппаратно-программное обеспечение осуществляет различную обработку с целью передачи запроса концентратору, связанному с функцией адаптера; затем на шаге 552 концентратор маршрутизирует запрос функции.

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

Если на шаге 550 запроса определено, что указанное адресное пространство не является конфигурационным пространством, на шаге 554 аппаратно-программное обеспечение еще раз осуществляет различную обработку, чтобы передать запрос концентратору. Аппаратно-программное обеспечение использует дескриптор для выбора записи в таблице функций, из которой он извлекает информацию для определения местоположения соответствующего концентратора. Он также вычисляет адрес данных для использования при операции загрузки. Этот адрес вычисляется путем суммирования начального адреса BAR (того BAR, который соответствует идентификатору адресного пространства, указанному в команде), извлеченного из записи в таблице функций, и смещения, указанного в команде. Этот вычисленный адрес данных передается концентратору. Затем концентратор использует этот адрес, чтобы включить его в пакет запроса, такой как пакет запроса считывания DMA, который через шину PCI поступает в функцию адаптера.

После приема на шаге 552 или 554 запроса функция адаптера вызывает запрошенные данные из указанного местоположения (т.е. по адресу данных) и на шаге 556 передает эти данные в виде ответа на запрос. Ответ пересылается от функции адаптера концентратору ввода-вывода. После приема ответа концентратор пересылает его процессору-инициатору. Затем процессор-инициатор извлекает данные из пакета и загружает их в местоположении, указанном в команде (например, в поле 1 404). Операция загрузки данных шины PCI завершается указанием успешного выполнения (например, путем установки кода условия на ноль).

Помимо команды загрузки, предусматривающей извлечение данных из функции адаптера и их сохранение в указанном местоположении, другой командой, которая может выполняться, является команда сохранения. Команда сохранения предусматривает сохранение данных в указанном местоположении в функции адаптера. Рассмотрим один из вариантов осуществления команды сохранения данных шины PCI, который описан со ссылкой на фиг.6A. Показано, что команда 600 сохранения данных шины PCI содержит, например, код 602 операции с указанием команды сохранения данных шины PCI; первое поле 604 с указанием местоположения, в котором находятся данные для сохранения в функции адаптера; и второе поле 606 с указанием местоположения, в котором содержится различная информация, касающаяся функции адаптера, в которой должны быть сохранены данные. Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.

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

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

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

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

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

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

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

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

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

Как показано на фиг.7A, сначала на шаге 700 запроса определяется, установлено ли средство, рассчитанное на команду сохранения данных шины PCI. Это определяется, например, путем проверки индикатора, хранящегося, например, в блоке управления. Если средство не установлено, на шаге 702 распознается исключительная ситуация. В противном случае на шаге 704 запроса определяется, упорядочены ли операнды. Например, если некоторые операнды должны находиться в четных/нечетных парах регистров, определяется, выполнено ли это требование. Если операнды не упорядочены, на шаге 706 распознается исключительная ситуация. В противном случае, если средство установлено и операнды упорядочены, на шаге 708 запроса определяется, активирован ли дескриптор, указанный в операндах команды сохранения данных шины PCI. В одном из примеров это определяется путем проверки разрешающего индикатора в дескрипторе. Если дескриптор не активирован, на шаге 710 распознается исключительная ситуация.

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

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

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

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

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

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

Как показано на фиг.7Б, на шаге 750 запроса аппаратно-программное обеспечение определяет, предназначена ли команда сохранения для конфигурационного адресного пространства функции адаптера ли. Иными словами, исходя из конфигурации памяти функции адаптера, определяется, является ли указанное в команде адресное пространство конфигурационным пространством. Если это так, аппаратно-программное обеспечение осуществляет различную обработку с целью передачи запроса концентратору, связанному с функцией адаптера; затем на шаге 752 концентратор маршрутизирует запрос функции.

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

Если на шаге 750 запроса определено, что указанное адресное пространство не является конфигурационным пространством, на шаге 754 аппаратно-программное обеспечение еще раз осуществляет различную обработку, чтобы передать запрос концентратору. Аппаратно-программное обеспечение использует дескриптор для выбора записи в таблице функций, из которой он извлекает информацию для определения местоположения соответствующего концентратора. Он также вычисляет адрес данных для использования при операции сохранения. Этот адрес вычисляется путем суммирования начального адреса BAR, извлеченного из записи в таблице функций, и смещения, указанного в команде. Этот вычисленный адрес данных передается концентратору. Затем концентратор использует этот адрес, чтобы включить его в пакет запроса, такой как пакет запроса записи DMA, который через шину PCI поступает в функцию адаптера.

После приема на шаге 752 или 754 запроса функция адаптера на шаге 756 сохраняет запрошенные данные в указанном местоположении (т.е. по адресу данных). Операция сохранения данных шины PCI завершается указанием успешного выполнения (например, путем установки кода условия на ноль).

Помимо команд загрузки и сохранения, обычно предусматривающих загрузку или сохранение максимально, например 8 байтов, другой командой, которая может выполняться, является команда сохранения блока данных. Команда сохранения блока данных предусматривает сохранение более крупных блоков данных (например, из 16, 32, 64, 128 или 256 байтов) в указанном местоположении в функции адаптера; размеры блоков необязательно кратны двум. В одном из примеров, указанное местоположение находится в области памяти функция адаптера (не в области ввода-вывода или конфигурационном пространстве).

Рассмотрим один из вариантов осуществления команды сохранения блока данных шины PCI, который описан со ссылкой на фиг.8А. Показано, что команда 800 сохранения блока данных шины PCI содержит, например, код 802 операции с указанием команды сохранения блока данных шины PCI; первое поле 804 с указанием местоположения, в котором содержится различная информация, касающаяся функции адаптера, в которой должны быть сохранены данные; второе поле 806 с указанием местоположения, включающего смещение в указанном адресном пространстве, в котором должны быть сохранены данные; и третье поле 808 с указанием местоположения, включающего адрес данных в системной памяти для сохранения в функции адаптера. Содержимое местоположений, указанное в полях 1, 2 и 3, дополнительно описано далее.

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

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

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

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

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

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

В одном из примеров, в поле 3, как показано на фиг.8Г, содержится логический адрес 822 в системной памяти первого байта данных для сохранения в функции адаптера.

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

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

Как показано на фиг.9A, на шаге 900 запроса сначала определяется, установлено ли средство, рассчитанное на команду сохранения блока данных шины PCI. Это определяется, например, путем проверки индикатора, хранящегося, например, в блоке управления. Если средство не установлено, распознается исключительная ситуация, на шаге 902. В противном случае, если средство установлено, на шаге 904 запроса определяется, активирован ли дескриптор, указанный в операндах команды сохранения блока данных шины PCI. В одном из примеров это определяется путем проверки разрешающего индикатора в дескрипторе. Если дескриптор не активирован, на шаге 906 распознается исключительная ситуация.

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

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

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

Если функция активирована, на шаге 922 запроса определяется, достоверно ли адресное пространство. Например, определяется, является ли адресное пространство указанным адресным пространством функции адаптера и адресным пространством, применимым для данной команды (т.е. областью памяти). Если адресное пространство недостоверно, на шаге 924 распознается исключительная ситуация. В противном случае на шаге 926 запроса определяется, заблокирована ли команда загрузки/сохранения. В одном из примеров это определяется путем проверки указателя состояния в записи в таблице функций. Если команда загрузки/сохранения заблокирована, на шаге 928 распознается исключительная ситуация.

Тем не менее, если команда загрузки/сохранения не заблокирована, на шаге 930 запроса определяется, инициировано ли восстановление. В одном из примеров это определяется путем проверки индикатора инициированного восстановления в записи в таблице функций. Если инициировано ли восстановление, на шаге 932 распознается исключительная ситуация. В противном случае на шаге 934 запроса определяется, занята ли функция. Это определяется путем проверки индикатора занятости в записи в таблице функций. Если функция занята, на шаге 936 распознается состояние занятости. В случае состоянии занятости вместо отбрасывания команды может быть повторена попытка ее выполнения.

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

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

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

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

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

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

Другие заявки, поданные в тот же день, включают: US _______под названием "Translation Of Input/Output Addresses To Memory Addresses", Craddock и др., (POU920090029US1); US ______под названием "Runtime Determination Of Translation Formats For Adapter Functions", Craddock и др., (POU920100007US1); US ______под названием "Resizing Address Spaces Concurrent To Accessing The Address Spaces", Craddock и др., (POU920100009US1); US ______под названием "Multiple Address Spaces Per Adapter", Craddock и др., (POU920100010US1); US ______под названием "Converting A Message Signaled Interruption Into An I/O Adapter Event Notification", Craddock и др., (POU920100014US1); US ______под названием "Converting A Message Signaled Interruption Into An I/O Adapter Event Notification To A Guest Operating System", Brice и др., (POU920100015US1); US ______под названием "Identification Of Types Of Sources Of Adapter Interruptions", Craddock и др., (POU920100016US1); US ______под названием "Controlling A Rate At Which Adapter Interruption Requests Are Processed", Belmar и др., (POU920100017US1); US ______под названием "Controlling The Selectively Setting Of Operational Parameters For An Adapter", Craddock и др., (POU920100018US1); US ______под названием "Load Instruction for Communicating with Adapters", Craddock и др., (POU920100019US1); US ______под названием "Controlling Access By A Configuration To An Adapter Function", Craddock и др., (POU920100020US1); US ______под названием "Discovery By Operating System Of Information Relating To Adapter Functions Accessible To The Operating System", Coneski и др., (POU920100021 US 1); US ______под названием "Enable/Disable Adapters Of A Computing Environment", Coneski и др., (POU920100022US1); US ______под названием "Guest Access To Address Spaces Of Adapter", Craddock и др., (POU920100023US1); US ______под названием "Managing Processing Associated With Hardware Events", Coneski и др., (POU920100025US1); US ______под названием "Operating System Notification Of Actions To Be Taken Responsive To Adapter Events", Craddock и др., (POU920100026US1); US ______под названием "Measurement Facility For Adapter Functions", Brice и др., (POU920100027US1); US ______под названием "Associating Input/Output Device Requests With Memory Associated With A Logical Partition", Craddock и др., (POU920100045US1); US ______под названием "Scalable I/O Adapter Function Level Error Detection, Isolation, And Reporting", Craddock и др., (POU920100044US1); US ______под названием "Switch Failover Control In A Multiprocessor Computer System", Bayer и др., (POU920100042US1); US ______под названием "A System And Method For Downbound I/O Expansion Request And Response Processing In A PCIe Architecture", Gregg и др., (POU920100040US1); US ______под названием "Upbound Input/Output Expansion Request And Response Processing In A PCIe Architecture", Gregg и др., (POU920100039US1); US ______под названием "А System And Method For Routing I/O Expansion Requests And Responses In A PCIe Architecture", Lais и др. (POU920100038US1); US ______под названием "Input/Output (I/O) Expansion Response Processing In A Peripheral Component Interconnect Express (PCIe) Environment", Gregg и др., (POU920100037US1); US ______под названием "Memory Error Isolation And Recovery In A Multiprocessor Computer System", Check и др., (POU920100041 US 1), и US ______под названием "Connected Input/Output Hub Management", Bayer и др., (POU920100036US1), каждая из которых в порядке ссылки во всей полноте включена в настоящую заявку.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рассмотрим на фиг.11, на которой представлены характерные компоненты хост-компьютерной системы 5000 для реализации одной или нескольких особенностей настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько ЦП 5001, поддерживающих связь с памятью (т.е. центральной памятью) 5002 компьютера, а также интерфейсы ввода-вывода с запоминающими устройствами 5011 и сетями 5010 для связи с другими компьютерами или SAN и т.п. ЦП 5001 совместим с архитектурой, содержащей структурированный набор команд и структурированные функциональные возможности. ЦП 5001 может выполнять динамическую трансляцию 5003 адреса (DAT) для трансляции адресов программ (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 5007 быстрого преобразования адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш-память 5009. Кэш-память 5009 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном из вариантов осуществления блок 5004 выборки команд вызывает из памяти 5002 команду посредством кэшпамяти 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. В целях обнаружения ошибок и предпочтительно их исправления с каждым байтом или группой байтов может передаваться один или несколько контрольных разрядов. Такие контрольные разряды генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда кодом операций команды подразумевается длина хранящегося поля операнда, считается, что поле имеет фиксированную длину, которая может составлять 1, 2, 4, 8 или 16 байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, считается, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине с шагом в 1 байт (или в случае некоторых команд с шагом в 2 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути доступа к запоминающему устройству может превышать длину сохраняемого поля.

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

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

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

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

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

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

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

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

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

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

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

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

Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды для выполнения. Счетчиком команд в процессоре на основе z/Architecture является 64-разрядным, при этом он может быть усечен до 31 или 24 разрядов с целью поддержки ранее существовавших ограничений адресации. Поскольку счетчик команд обычно воплощен в слове состояния программы (ССП, от английского - Program Status Word) компьютера, оно сохраняется при переключении контекста. Соответственно, выполняемая программа с показанием счетчика команд может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). ССП программы поддерживает показание счетчика команд, пока программа неактивна, а во время выполнения операционной системы используется счетчик команд (в ССП) операционной системы. Обычно показание счетчика команд приращивается на величину, равную числу байтов текущей команды. 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 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры ССП и т.п.).

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

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

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

Как показано на фиг.15Б, содержащаяся в команде перехода информация для выполнения команды перехода обычно передается блоку 5058 перехода, в котором часто применяется алгоритм предсказания переходов, такой как таблица 5082 предыстории переходов (ТПП), для предсказания исхода перехода до завершения других условных операций. Целевой объект текущей команды перехода вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды перехода завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда перехода может предусматривать проверку кодов условий и переход к целевому адресу, если коды условий отвечают требованию команды перехода, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 5058 перехода может применяться АЛУ 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 перехода, например, может поддерживать связь с общими регистрами 5059, декодировать блок 5056 диспетчерилации или другие схемы 5073.

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

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

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

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

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

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

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

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

В частности, в мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "C" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architecture ® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах Power Systems и серверах System x®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel ®, AMDкоманды сохранения/сохранения блока данных для связи с адаптерами, патент № 2522314 и других компаний. Помимо выполнения этим аппаратным обеспечением на основе Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию Hercules, UMX или FSI (Fundamental Software, Inc), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.

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

Конкретная эмулируемая команда декодируется, и вызывается подпрограмма для выполнения функции отдельной команды. Функция эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора, реализуется, в подпрограмме или драйвере на языке "C" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся в описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scalzi и др.; патент US 5574873 под названием "Decoding guest instruction to directly access emulation routines that emulate the guest instructions", выданный на имя Davidian и др.; патент US 6308255 под названием "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", выданный на имя Gorishek и др.; патент US 6463582 под названием "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", выданный на имя Lethin и др.; патент US 5790825 под названием "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions", выданный на имя Eric Traut, каждый из которых в порядке ссылки во всей полноте включен в настоящее описание, и многие другие, проиллюстрированы разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.

На фиг.16 проиллюстрирован один из примеров известной из техники эмулирующей компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000', имеющую хост-архитектуру. Хост-процессором (ЦП) 5091 в компьютерной хост-системе 5092 эмуляции является хост-процессор (или виртуальный хост-процессор) эмуляции, представляющий собой процессор 5093 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 5091 хост-компьютера 5000'. Компьютерная хост-система 5092 эмуляции имеет память 5094, доступную для процессора 5093 эмуляции. В примере осуществления память 5094 разделена на память 5096 хост-компьютера и память 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в зависимости от архитектуры хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 5091 и которые извлекаются из памяти 5097 программ эмуляции, и может осуществлять выборку хост-команды для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную хост-команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной хост-команды. Другие средства, которые предусмотрены в архитектуре компьютерной хост-системы 5000', могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 5093 эмуляции (такие как общие регистры и динамическое преобразование виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 5093 эмуляцию функции хост-компьютера 5000'.

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

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

Класс G06F9/312 управление операциями загрузки, обращения к запоминающему устройству и установки в исходное состояние

Наверх