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

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

Группа изобретений относится к вычислительной технике и может быть использована для управления обработкой запросов прерывания. Техническим результатом является обеспечение возможности управления скоростью обработки прерываний. Сущность изобретений состоит в том, что контролируются ситуации, при которых прерывания адаптера переводятся в режим ожидания. С учетом прерывания, передаваемого на операционную систему, последующие прерывания подавляются на всех центральных процессорах в конфигурации. Операционная система обрабатывает прерывание, включая проверку и обработку указателей событий, о которых уведомляется, пока операционная система не прекращает блокировку. Это позволяет операционной системе контролировать число ожидающих прерываний и число процессоров, обрабатывающих эти прерывания. 2 н. и 8 з. п. ф-лы, 41 ил. управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287

управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287

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

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

память и

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

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

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

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

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

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

предоставление другого запроса прерывания одной операционной системе из одной или нескольких операционных систем.

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

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

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

5. Компьютерная система по п.4, отличающаяся тем, что способ дополнительно включает:

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

на основании получения запроса прерывания, установку указателя режима ожидания ЦП и указателя режима ожидания концентратора.

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

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

8. Способ управления обработкой прерываний в вычислительной среде, включающий:

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

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

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

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

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

предоставление процессором или другим процессором другого запроса прерывания одной операционной системе из одной или нескольких операционных систем.

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

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

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

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

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

В некоторых вычислительных средах, например, основанных на системе z/Architecture®, предложенной International Business Machines Corporation, Армонк, Нью-Йорк, прерывания, запрошенные адаптерами ввода/вывода (I/O), определяются в качестве подклассов прерывания. Эти подклассы используются, например, для присваивания приоритетов прерываниям для их обработки операционной системой процессора.

Для обработки процессором вычислительной среды прерываний подкласса прерывания (ISC), процессор должен быть приспособлен к этому подклассу. После приспособления процессор может обрабатывать прерывания этого подкласса, но не других подклассов, к которым он не приспособлен. Несколько процессоров могут быть приспособлены к подклассу и, следовательно, несколько процессоров могут одновременно обрабатывать прерывания данного класса.

В патенте США No. 7065598 под названием "Method, System, and Article of Manufacture for Adjusting Interrupt Levels", опубликованном 20 июня 2006 г., на имя Connor и др., предоставляется способ, система и изделие для установки уровней прерывания. Определяется скорость прерываний текущей системы вычислительного устройства, где скорость прерываний текущей системы является суммой скоростей прерываний нескольких сред, генерирующих прерывание. Скорость прерываний текущей системы сравнивается по меньшей мере с одной пороговой скоростью прерываний, относящейся к вычислительному устройству. На основе сравнения для среды, генерирующей прерывание, нескольких сред, генерирующих прерывание, устанавливается уровень замедления прерывания.

В патенте США No. 7398343 под названием "Interrupt Processing System", опубликованном 8 июля 2008 года, на имя Marmash и др., описывается система обработки прерываний, имеющая регистры хранения прерываний, каждый из которых соответствует различному классу прерываний. Очередь записи предоставляет информацию об обслуживании, необходимом регистрам хранения прерываний. Регистр вектора прерываний имеет битовые позиции в соответствии с различными классами прерываний. Очередь чтения на выходе соединена с несколькими регистрами хранения прерываний и регистром вектора прерываний. Логика определения соединяется между схемой разрешения конфликтов, данные в которую загружаются очередями записи и чтения, и процессором для: (а) указания того, произошла ли передача прерывания от схемы разрешения конфликтов записи к процессору; (б) определения класса прерывания такого переданного прерывания; (в) активации одной из битовых позиций в соответствии с определенным классом прерывания в регистре вектора прерывания для сохранения состояния, указывающего требование по обслуживанию для такого определенного класса прерывания; и (г) определения того, были ли переданы данные, сохраненные в регистре вектора прерывания, на процессор посредством очереди чтения и селектора схемы разрешения конфликтов.

В патенте США No. 6615305 под названием "Interrupt Pacing in Data Transfer Unit", опубликованном 2 сентября 2003 г., на имя Olesen и др., раскрываются аппаратура и способ управления количеством прерываний, которое блок передачи данных генерирует для ЦП. Блок, задающий скорость, используется для регистрации предпринятых попыток передачи (событий) данных с блока передачи данных на ЦП и сравнивает это значение с пороговым пределом, определенным пользователем. Если количество событий достигает порогового предела, тогда для ЦП генерируется прерывание.

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

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

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

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

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

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

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

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

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

ФИГ.2B - один из вариантов осуществления записей в гостевой таблице (GAIT) прерываний адаптера, используемой согласно одной из особенностей настоящего изобретения.

ФИГ.2Г - один из вариантов осуществления гостевой области (GISA) состояния прерываний, используемой согласно одной из особенностей настоящего изобретения.

ФИГ.2Д - один из вариантов осуществления записей таблицы (AIFT) переадресации прерываний адаптера, используемых согласно одной из особенностей настоящего изобретения.

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

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

ФИГ.5A - один из вариантов осуществления команды Set Interruption Controls, используемой согласно одной из особенностей настоящего изобретения.

ФИГ.5Б-5Г - примеры содержимого полей, используемых командой Set Interruption Controls, показанной на ФИГ.5A, согласно одной из особенностей настоящего изобретения.

ФИГ.5Д - один из примеров блока (AIPB) параметров прерывания адаптера, используемого согласно одной из особенностей настоящего изобретения.

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

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

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

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

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

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

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

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

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

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

ФИГ.13A - один из вариантов осуществления команды Call Logical Processor, используемой согласно одной из особенностей настоящего изобретения.

ФИГ.13Б - один из вариантов осуществления блока запроса, используемого командой Call Logical Processor, показанной на ФИГ.13A, для выполнения операции списка согласно одной из особенностей настоящего изобретения.

ФИГ.13B - один из вариантов осуществления блока ответа для операции списка, показанной на ФИГ.13Б, согласно одной из особенностей настоящего изобретения.

ФИГ.13Г - один из вариантов осуществления записи списка функций, применимой согласно одной из особенностей настоящего изобретения.

ФИГ.14A - один из вариантов осуществления блока запроса, используемого командой Call Logical Processor, показанной на ФИГ.13A, для выполнения операции функции запроса согласно одной из особенностей настоящего изобретения.

ФИГ.14Б - один из вариантов осуществления блока, ответственного за операцию функции запроса, показанную на ФИГ. 14А, согласно одной из особенностей настоящего изобретения.

ФИГ.15A - один из вариантов осуществления блока запроса, используемого командой Call Logical Processor, показанной на ФИГ.13A, для выполнения групповой операции запроса согласно одной из особенностей настоящего изобретения.

ФИГ.15Б - один из вариантов осуществления блока ответа для групповой операции запроса, показанной на ФИГ.15A, согласно одной из особенностей настоящего изобретения.

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

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

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

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

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

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

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

ФИГ.21B - один из вариантов осуществления блока загрузки/сохранения проиллюстрированной на ФИГ.20, в которой содержится и используется одна или несколько особенностей настоящего изобретения.

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

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

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

В одном из примеров для запроса прерывания адаптер посылает запрос на прерывание (MSI), инициируемое сообщениями. Затем запрос MSI преобразовывается в уведомление о событии адаптера ввода/вывода (I/O), в котором устанавливается один или несколько определенных указателей и осуществляется запрос на представление прерывания операционной системе (или другому программному обеспечению, такому как другие программы и т.д.). В контексте настоящего изобретения термин операционная система включает драйвера устройств операционной системы. В одном из вариантов осуществления множественные запросы прерывания (например, MSI) от одного или нескольких адаптеров объединяются в единичное прерывание для операционной системы, но с установкой соответственных указателей. Например, если концентратор ввода/вывода уже получил запрос MSI, предоставил в свою очередь запрос прерывания ЦП, и это прерывание все еще находится в режиме ожидания, тогда, если концентратор получает один или несколько других MSI, то ЦП не предоставляет дополнительное прерывание. Одно прерывание заменяет и представляет собой множество запросов MSI. Однако один или несколько указателей, связанных с каждым дополнительным запросом, все еще устанавливаются.

В ответ на представление прерывания операционной системе может быть представлено другое прерывание. Это прерывание может быть обработано, как тем же самым ЦП, так и другим ЦП. Таким образом, несколькими ЦП одновременно может обрабатываться несколько запросов.

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

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

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

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

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

При DMA операции блок 118 трансляции и защиты адресов может транслировать адрес адресу, используемому для получения доступа к системной памяти. Затем инициированный адаптером запрос, содержащий транслированный адрес, предоставляется контроллеру 106 памяти посредством, например, шины 120 "ввод-вывод - память". Контроллер памяти осуществляет арбитраж и в соответствующее время пересылает системной памяти запрос с транслированным адресом. При запросе MSI информация в блоке 118 трансляции и защиты адресов получается для облегчения преобразования запроса MSI в уведомление о событии адаптера ввода/вывода, как описано в данной публикации.

В еще одном из вариантов осуществления в дополнение к или вместо одного или нескольких центральных процессоров 102 центральный комплекс обработки данных, показанный на ФИГ.1Б, соединяется с контроллером 106 памяти. В этом конкретном примере центральный комплекс 150 обработки данных обеспечивает поддержку виртуальной машины. Центральный комплекс 150 обработки данных включает, например, одну или несколько виртуальных машин 152, один или несколько центральных процессоров 154 и, по меньшей мере, один гипервизор 156, каждый из которых описывается ниже.

Поддержка виртуальной машины центральным комплексом обработки данных обеспечивает способность работы с большим количеством виртуальных машин, каждая из которых может осуществлять выполнение гостевой операционной системы 158, такой как z/Linux. Каждая виртуальная машина 152 может работать в качестве отдельной системы. То есть, каждая виртуальная машина может независимо быть перезагружена, осуществлять выполнение гостевой операционной системы и работать с различными программами. Операционная система или прикладная программа, запущенная на виртуальной машине, может иметь доступ к полной и окончательной системе, но на практике доступной является только ее часть.

В этом конкретном примере моделью виртуальных машин является V=V модель, в которой память виртуальной машины обеспечивается виртуальной памятью, вместо реальной памяти. Каждая виртуальная машина имеет виртуальную линейную область в памяти. Физические ресурсы принадлежат гипервизору 156, например, VM гипервизору, и совместно используемые физические ресурсы, по мере необходимости, передаются гипервизором гостевым операционным системам для соблюдения их требований по обработке. Эта V=V модель виртуальной машины предполагает, что взаимодействия между гостевыми операционными системами и физическими совместно используемыми машинными ресурсами управляются VM гипервизором, поскольку большое количество гостей обычно препятствует разделению и назначению гипервизором ресурсов аппаратного обеспечения для настроенного гостя. Одна или несколько особенностей V=V модели также описываются в IBM публикации под названием "z/VM: Running Guest Operating Systems", IBM публикация No. SC24-5997-02, опубликованная в октябре 2001 года.

Центральные процессоры 154 являются ресурсами физического процессора, которые могут быть назначены для использования виртуальной машиной. Например, виртуальная машина 152 включает один или несколько логических процессоров, каждый из которых представляет собой все или часть ресурсов 154 физического процессора, которые могут быть динамически назначены для виртуальной машины. Виртуальные машины 152 управляются гипервизором 156. Например, гипервизор может быть реализован в аппаратно-программном обеспечении, работающем на процессорах 154, или может являться частью операционной хост-системы, выполняющейся на машине. В одном из примеров гипервизор 156 является VM гипервизором, таким как z/VM® , предоставленным International Business Machines Corporation, Армонк, Нью-Йорк. Один из вариантов осуществления z/VM® описывается в IBM публикации под названием "z/VM: General Information Manual", IBM публикация No. GC24-5991-05, опубликованная в мае 2003 года.

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

Как показано на ФИГ.1A и 1Б, один или несколько адаптеров могут отправлять прерывания (MSI), инициируемые сообщениями. Эти прерывания преобразовываются в уведомления о событии адаптера ввода/вывода для одной или нескольких операционных систем, в которых устанавливаются указатели и запрашиваются одно или несколько прерываний. Операционная система может являться операционной системой, которая не является гостем или гостевой операционной системой, выполняющаяся хостом (например, z/VM ®). Для облегчения этой обработки в концентраторе ввода/вывода и памяти используются различные структуры данных, как описывается со ссылкой на ФИГ.2А-2Б.

В частности, на ФИГ.2A проиллюстрирован один из вариантов осуществления структур, используемых для предоставления уведомления о событии адаптера операционной системе, которая не является гостевой, а на ФИГ.2Б проиллюстрирован один из вариантов осуществления структур, используемых для предоставления уведомления о событии адаптера гостю. Контроллер памяти на этих фигурах не показан, но может быть использован. Концентратор ввода/вывода может быть соединен с системной памятью и/или процессором 254 напрямую или через контроллер памяти. Как показано на ФИГ.2A, в одном из вариантов осуществления системная память 104 включает одну или несколько структур данных, используемых для облегчения обработки прерывания. В этом примере системная память 104 включает битовый вектор (AIBV) 200 прерывания адаптера и опциональный суммарный бит (AISB) 202 прерывания адаптера, связанные с конкретным адаптером. Для каждого адаптера может существовать AIBV и соответствующий AISB.

В одном из примеров битовый вектор 200 прерывания адаптера является одноразмерным рядом одного или нескольких указателей (например, битов) в основном запоминающем устройстве, которое связывается с адаптером (например, функцией PCI). Биты в битовом векторе прерывания адаптера представляют собой числа вектора MSI. Бит, равный единице, в AIBV указывает на условие или тип события для связанного адаптера. В одном из примеров функции PCI каждый бит в связанном AIBV соответствует вектору MSI. Следовательно, если функция PCI поддерживает только один вектор MSI, тогда AIBV включает единичный бит; если функция PCI поддерживает несколько векторов MSI, тогда AIBV включает по биту на каждый вектор MSI. В примере, проиллюстрированном на ФИГ.2A, функция PCI поддерживает несколько векторов MSI (например, 3) и, следовательно, в AIBV 200 находится несколько бит (например, 3). Каждый из битов соответствует конкретному событию, например, бит 0 AIBV при установке значения, равного единице, указывает на завершенную операцию; бит 1 AIBV при установке значения, равного единице, указывает на событие ошибки; и т.д. Как показано, в этом примере устанавливается бит 1.

В одном из конкретных примеров команда (например, команда Modify PCI Function Controls) используется для указания AIBV для функции PCI. А именно, команда, которая отправляется операционной системой и выполняется процессором, определяет подлинность функции PCI, ячейку основного запоминающего устройства области, которая включает AIBV, смещение из этой ячейки в первый бит AIBV и количество бит, которые включают AIBV. AIBV может находиться на любой байтовой границе или на любой битовой границе. Это обеспечивает гибкость операционной системы для упаковки AIBV нескольких адаптеров в непрерывный диапазон битов и байтов. В одном из примеров проверка подлинности функции PCI включается в обработку функции. Обработка функции включает, например, активацию указателя, который указывает на то, активирована ли обработка функции PCI; номер функции PCI, который определяет функцию (номер является статическим идентификатором и может быть использован в качестве индекса таблицы функции для размещения конкретной записи); и номер экземпляра, который указывает конкретный экземпляр этой обработки функции. Например, во время каждой из активации обработки функции номер экземпляра увеличивается для предоставления нового номера экземпляра. Обработка функции используется для размещения записи таблицы функции в таблице функции, которая включает одну или несколько записей. Например, один или несколько бит обработки функции используются в качестве индекса таблицы функции для размещения конкретной записи таблицы функции. Запись в таблице функций включает информацию о связанной с ней функции PCI. Например, она может включать различные указатели о состоянии связанной с ней функцией адаптера и один или несколько индексов записи таблицы устройства, использующиеся для размещения записей таблицы устройства для этой функции адаптера. Записи в таблице устройств включают информацию, используемую для предоставления определенных услуг соответствующим им функциям адаптера (например, трансляция адреса, обработка прерывания). (Что касается операционной системы, то в одном из вариантов осуществления обработка является обычным неясным идентификатором адаптера.) В этом примере в дополнение к AIBV для адаптера существует AISB 202, который включает единичный указатель (например, бит), связанный с адаптером. AISB, равный единице, указывает на то, что одному или нескольким битам в AIBV, связанном с AISB, было присвоено значение, равное единице. AISB является опциональным, по одному для каждого из адаптеров, по одному для каждого из выбранных адаптеров или по одному на группу адаптеров.

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

Операционная система может назначать единичный AISB для нескольких функций PCI. Это действие связывает несколько AIBV с единичным суммарным битом. Следовательно, такой AISB, равняющийся единице, указывает на то, что операционная система должна осуществлять сканирование нескольких AIBV.

В одном из примеров AIBV и AISB указываются посредством адресов, расположенных в записи 206 таблицы устройства таблицы 208 устройства, расположенной в концентраторе 112 ввода/вывода. В одном из примеров таблица 208 устройства размещается внутри блока трансляции адреса и защиты концентратора ввода/вывода. Таблица 208 устройства включает одну или несколько записей 206, каждая из которых указывается для конкретной функции 210 адаптера. Запись 206 в таблице устройств включает количество полей, которое может быть заполнено, например, посредством вышеупомянутой команды. Значения одного или нескольких полей устанавливаются на основе политики и/или конфигурации. Примеры полей включают:

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

Адрес (@) 216 AIBV: Предоставляет, например, действительный адрес начала ячейки запоминающего устройства, который включает AIBV для конкретной функции адаптера, назначенной для этой записи таблицы устройства.

Сдвиг 218 AIBV: Сдвиг в ячейке основного запоминающего устройства в начало AIBV.

Адрес (@) 220 AISB: Предоставляет, например, действительный адрес начала ячейки запоминающего устройства, который включает AISB для этой функции PCI, если операционная система указала на AISB.

Сдвиг 222 AISB: Сдвиг в ячейке основного запоминающего устройства в AISB.

Управление (активация) 224 возможностью короткого уведомления о прерывании адаптера: Это управление указывает, имеется ли AISB.

Количество прерываний (N01) 226: Указывает максимальное количество векторов MSI, предоставленных для этой функции PCI, где ноль указывает на отказ от предоставления.

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

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

В одном из конкретных вариантов, если запрос прерывания выполняется для гостя (например, гостем со страничной организацией режима записи в память; т.е., гостем V=V) в конкретной области или логическом разделе, тогда запись в таблице устройств также включает поле 228 области, как показано на ФИГ.2Б. Это поле указывает зону, к которой относится гость. В другом варианте осуществления это поле не используется или может быть использовано даже в случаях, если гости не предоставлены (например, для указания зоны или логического раздела, в котором запущена операционная система).

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

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

В одном из примеров хост-память 270 включает, например, передающийся AISB ряд 272 и гостевую таблицу (GAIT) 274 прерываний адаптера. AISB ряд 272 переадресации - это ряд AISB, который используется в сочетании с гостевой таблицей прерываний адаптера для определения того, нацелен ли запрос MSI на гостевую операционную систему или на хост. AISB ряд переадресации включает AISB хост каждой функции PCI, который назначается гостю, и для которого хост, который является наполовину гостевым, запрашивает прерывание уведомления о событии адаптера. Такой ряд размещается в запоминающем устройстве хоста хостом гостя (например, z/VM® ). Гостевая таблица 274 прерываний адаптера используется в сочетании с передающимся AISB рядом для определения того, нацелен ли запрос MSI на хост или на один из его гостей, и, если на гостя, то на какого именно. Соотношение между указателями (например, битами) равняется один к одному в передающемся AISB ряде и GAIT записях. Это означает, что, если бит в передающемся AISB ряду имеет значение, равное единице, и соответствующая GAIT информация содержит передающуюся информацию, то уведомление о событии адаптера находится в состоянии ожидания для адаптера для гостя, связанного с AISB указателем (например, битом) и соответствующей GAIT записью.

Если используется GAIT запись и она включает определенное значение (например, все нули), тогда целью запроса MSI является хост. Если используется GAIT запись, и она не содержит определенного значения, тогда целью запроса MSI является гость. Кроме того, если целью запроса MSI является гость, тогда GAIT запись включает следующую информацию, проиллюстрированную на ФИГ.2B: адрес хоста и сдвиг AISB гостя для функции 290 PCI; адрес хоста и гостевую область (GISA) 291 состояния прерывания; и гостевой подкласс (GISC) 292 прерываний для прерывания адаптера, генерируемого для гостя.

Следующие подробности о гостевой области (GISA) 276 состояния прерываний предоставляются со ссылкой на ФИГ.2Г. В одном из примеров GISA 276 является блоком управления, в котором прерывание гостевого адаптера находится в состоянии ожидания. Согласно одной из особенностей настоящего изобретения он включает, например, маску (SIMM) 277 режима единичного прерывания, которая является маской, имеющей по биту на каждый гостевой подкласс прерываний, и которая используется для указания того, что режим прерывания для подкласса является режимом единичного прерывания, как описывается ниже; маску (NIMM) 279 режима без прерываний, которая является маской, имеющей по биту на каждый гостевой подкласс прерывания, и которая используется для указания того, что режим прерывания для ISC является режимом без прерываний, как описывается ниже; маску (IPM) 281 ожидания прерывания, которая является маской, связанной с гостем, которая включает указатели для множества подклассов (ISC) прерываний; и маску (IAM) 283 сигнала о прерывании, которая является другой маской, соответствующей гостю. В одном из примеров каждый из битов в масках (например, SIMM, NIMM, IPM и IAM масках, описанных в данной публикации) соответствует ISC гостю один к одному. Например, источник или адрес GISA указывается в GAIT 274, а также в описании 280 состояния. Описанием состояния, например, является блок управления, сохраненный хостом, который определяет виртуальный ЦП для гостя интерпретации аппаратного обеспечения/аппаратно-программного обеспечения. Каждым гостем используется уникальный GISA, и в этом варианте осуществления для каждого гостя существует один и только один GISA. Следовательно, если для гостя определяется несколько виртуальных ЦП, то несколько описаний состояния сохраняется хостом, каждое из которых содержит источник адреса одного и того же GISA.

В дополнение к вышесказанному в гостевой памяти (которая является прикрепленной, т.е., фиксированной, не страничной, в хост-памяти) имеется гостевой AISB ряд 282 и гостевой AIBV ряд 284. Гостевой AISB ряд 282 включает несколько указателей 202 (например, AISB), каждый из которых может быть связан с адаптером ввода/вывода. AISB, равняющийся единице, адаптера ввода/вывода указывает, что значение одного или нескольких бит в битовом векторе (AIBV) прерываний адаптера, связанном с адаптером ввода/вывода, равняется единице.

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

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

В одном примере, как показано на ФИГ. 2Д, AIFT запись AIFT 285 включает, например:

Адрес AISB ряда переадресации в запоминающем устройстве 294 раздела (хоста);

Длину 295 AISB ряда переадресации в битах и длину GAIT в GAIT записях;

Адрес GAIT 296 запоминающем устройстве раздела;

Подкласс (ISC) 297 хост прерываний, связанный с запросом MSI, который переадресовывается гостям этого раздела; и

Маску (SIMM) режима единичного прерывания, которая устанавливается, например, командой Set Interruptions Control (SIC), описанной ниже.

Каждый из битов в этой маске представляет собой подкласс прерывания.

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

Согласно ФИГ.2A и/или ФИГ.2Б, функция 210 адаптера отправляет пакет концентратору ввода/вывода для запроса прерывания. Этот пакет имеет адрес 232 MSI и связанные данные 234. Концентратор ввода/вывода сравнивает, по меньшей мере, часть полученного адреса со значением в регистре 250 MSI сравнения. Если совпадение обнаруживается, тогда запрашивается прерывание (например, MSI), в отличие от DMA операции. Причина запроса (т.е. тип возникшего события) указывается в связанных данных 234. Например, один или несколько младших битов данных используются для определения конкретного вектора прерывания (т.е. вектора MSI), который указывает причину (событие).

Запрос прерывания, полученный от адаптера, преобразовывается в уведомление о событии адаптера ввода/вывода. То есть, устанавливается один или несколько указателей (например, один или несколько AIBV и опционально AISB) и запрашивается прерывание для операционной системы (хоста или гостя), если прерывание в режиме ожидания отсутствует. В одном из вариантов несколько запросов прерывания (например, MSI) от одного или нескольких адаптеров объединяются в единичное прерывание для операционной системы, но с соответственными AIBV и AISB указателями. Например, если концентратор ввода/вывода уже получил запрос MSI и, в свою очередь, предоставил запрос прерывания процессору, прерывание находится в режиме ожидания (например, по одной или нескольким причинам прерывание не было представлено операционной системе (например, прерывания не активированы)), тогда ЦП не генерирует дополнительных прерываний при получении концентратором ввода/вывода одного или нескольких других запросов MSI. Одно прерывание заменяет и представляет собой несколько запросов MSI. Однако все еще устанавливаются один или несколько AIBV и опционально один или несколько AISB. Дополнительные подробности о преобразовании MSI (или другого запроса прерывания адаптера) в уведомление о событии адаптера ввода/вывода описываются ниже. Изначально описываются подробности о преобразовании MSI в уведомление о событии адаптера ввода/вывода, которое представляется операционной системе, которая не является гостем. Затем описываются подробности о преобразовании MSI в уведомление о событии адаптера ввода/вывода, которое представляется гостевой операционной системе.

На ФИГ.3 в одном из примеров на этапе 300 выполняется определенная инициализация для преобразования запроса MSI в уведомление о событии адаптера ввода/вывода. Во время инициализации операционная система выполняет некоторое количество этапов для настройки адаптера под уведомление о событии адаптера через запрос MSI. В этом примере настраивается функция PCI, хотя в других вариантах осуществления настраиваться могут другие адаптеры, включая другие типы функций адаптеров.

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

Затем, для каждой из функций PCI в списке осуществляется определение адреса MSI, используемого для функции PCI, и количества векторов MSI, поддерживаемых функцией PCI. Адрес MSI определяется на основе характеристик концентратора ввода/вывода и системы, в которой он устанавливается. Количество поддерживаемых векторов MSI определяется на основе политики и является настраиваемым. Кроме того, для каждой из функций PCI назначается AIBV, а также AISB, если таковые имеются. В одном из примеров операционная система определяет размещение AIBV для обеспечения эффективной обработки одного или нескольких адаптеров, основываясь обычно на классе адаптера. Например, AIBV для адаптеров запоминающего устройства могут размещаться рядом друг с другом. AIBV и AISB назначаются и им присваивается значение нуля, и определяется регистровая операция прерывания адаптера (например, с использованием команды Modify PCI Function Controls). Эта операция регистрирует AIBV, AISB, ISC, количество прерываний (векторов MSI) и управление возможностью короткого уведомления о прерывании адаптера. Эти параметры сохраняются в записи в таблице устройств согласно функции PCI, для которой выполняется инициализация. Затем, записывается пространство конфигурации функции PCI. А именно, подсчет адресов MSI и векторов MSI записывается в адресном пространстве конфигурации функции PCI в соответствии с предыдущей регистрацией. (В одном из примеров функция PCI включает несколько адресных пространств, включая, например, пространство конфигурации, пространство ввода/вывода и одно или несколько пространств памяти.)

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

Например, вначале записывается описание события, в отношении которого запрашивается прерывание. То есть, функция PCI записывает описание события в качестве одной или нескольких структур типа адаптер-конкретное событие-описание-запись, сохраняемых, например, в системной памяти. Эта запись может включать запись типа события, а также запись дополнительной информации. Кроме того, запрос инициируется функцией PCI, определяя количество адресов MSI и векторов MSI, а также ID запросчика. Запрос принимается концентратором ввода/вывода и в ответ на получение запроса в запросе используется ID запросчика для размещения записи в таблице устройств функции PCI. Концентратор ввода/вывода сравнивает, по меньшей мере, часть адреса в запросе со значением в MSI регистре сравнения. Если значения равные, это означает, что был определен адрес MSI, и, таким образом, был запрошен MSI. Затем, осуществляется определение того, меньше или равно значение вектора MSI, определенного в запросе, чем значение количества прерываний (N01), разрешенного для этой функции. Если номер вектора MSI превышает N01, тогда указывается возникновение ошибки. В ином случае, концентратор ввода/вывода отправляет двоичную функцию множества для установки соответствующего AIBV бита в запоминающем устройстве. Соответствующий бит определяется посредством сложения номера вектора MSI и AIBV сдвига, определенного записью в таблице устройств, и замены этого количества бит из AIBV адреса, определенного записью в таблице устройств. Кроме того, если был указан AISB, тогда концентратор ввода/вывода использует двоичную функцию множества для установки AISB с использованием AISB адреса и AISB сдвига из записи в таблице устройств. Далее, в одном из вариантов осуществления осуществляется определение (например, посредством ЦП или концентратора ввода/вывода) того, находится ли запрос прерывания в режиме ожидания. Для осуществления этого определения используется указатель режима ожидания. Например, проверяется указатель 252 режима ожидания (ФИГ.2A, ФИГ.2Б), сохраненный в памяти процессора 254, доступ к которому имеют процессоры вычислительной среды, в которой обрабатывается прерывание. Указатель устанавливается, если ранее не был установлен. Если указатель уже установлен, тогда завершается обработка, а запрос другого запроса прерывания не осуществляется. Следовательно, последующие запросы прерывания заключаются в одном запросе, который уже находится в режиме ожидания.

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

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

Режим всех исключений: При использовании ISC все прерывания адаптера в режиме ожидания для функций адаптера могут быть определены и представлены. Средство блокировки прерываний адаптера относится к режиму всех прерываний для всех ISC при сбросе системы ввода/вывода. Средство блокировки прерывания адаптера относится к режиму всех прерываний для конкретного ISC при успешном завершении, например, команды Set Interruption Controls, которая определяет режим всех прерываний для конкретной ISC.

Режим единичного прерывания: при использовании ISC единичное прерывание в режиме ожидания для функций адаптера может быть определено и представлено. Например, если прерывание адаптера находится в режиме ожидания, тогда режим средства блокировки прерывания адаптера изменяется на режим без прерываний для ISC, который описывается ниже. Средство блокировки прерывания адаптера относится к режиму единичного прерывания для конкретного ISC при успешном завершении, например, команды Set Interruption Controls, которая определяет режим единичного прерывания для конкретной ISC.

Режим без прерываний: запросы прерывания адаптера от адаптеров игнорируются при использовании средства блокировки прерывания адаптера для ISC. Режим без прерываний остается задействованным до тех пор, пока операционная система не отправит команду Set Interruption Controls, которая определяет режим всех прерываний или режим единичного прерывания, или до тех пор, пока выполняется сбор подсистемы ввода/вывода.

В одном из примеров диаграммы перехода состояний, проиллюстрированном на ФИГ.4, изображены различные режимы. Под номером 1 выполняется сброс системы ввода/вывода и все прерывания являются разрешенными. Под номером 2 для ISC устанавливается режим единичного прерывания. Под номером 3 осуществляется указание прерывания адаптера для ISC и переход от режима прерывания к режиму без прерываний. Под номером 4 осуществляется переход от режима без прерываний к режиму единичного прерывания, а под номером 5 осуществляется переход к режиму всех прерываний. Запрос также может быть выполнен от режима единичного прерывания - режиму всех прерываний.

В одном из примеров команда Set Interruption Controls используется для перехода между режимами. Один из вариантов осуществления команды описывается со ссылкой на ФИГ.5А-5Д. В одном из примеров, проиллюстрированном на ФИГ.5A, команда 500 Set Interruption Controls включает код 502 операции, определяющий, что эта команда является командой Set Interruption Controls instruction; первое поле (Поле 1) 504, включающее ячейку (например, регистр), которая определяет управление 510 (ФИГ.5Б) операцией для команды; второе поле (Поле 2) 506, которое указывает ячейку (например, регистр), которая содержит подкласс 520 (ФИГ.5B) прерывания для управления операцией, указанного Полем 1; и третье поле (Поле 3) 508, показанное на ФИГ.5Г, которое включает логический адрес блока (AIPB) 530 параметров прерывания адаптера, описанного ниже.

В одном из примеров управление 510 операцией может быть следующим образом кодировано:

0 - установка режима всех прерываний: Средство блокировки прерывания адаптера устанавливается для обеспечения представления всех прерываний адаптера, запрошенных для указанного ISC.

1 - установка режима единичного прерывания: Средство блокировки прерывания адаптера устанавливается для обеспечения представления запроса единичного прерывания для указанного ISC. Последующие запросы прерывания адаптера для указанного ISC блокируются.

2 - установка управления прерыванием уведомления о событии адаптера:

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

Один из примеров AIPB 530 описывается со ссылкой на ФИГ.5Д. Как проиллюстрировано на ФИГ.5Д, AIPB 530, например, включает:

адрес 532 AISB ряда переадресации: это поле указывает AISB ряд переадресации, который используется в сочетании с гостевой таблицей (GAIT) прерывания адаптера и определенным подклассом (AFI) прерывания переадресации уведомления о событии адаптера для определения того, является ли целью запроса прерывания адаптера, который сигнализируется адаптером ввода/вывода, гость со страничной организацией режима записи в память. Если адрес AISB ряда переадресации равняется нулю, тогда целью запроса прерывания является хост. Если адрес AISB ряда переадресации не равняется нулю, тогда цель запроса прерывания в дальнейшем определяется из AFI и GAIT.

Адрес 534 гостевой таблицы (GAIT) прерывания адаптера: это поле предоставляет адрес GAIT, который используется для определения того, является ли целью запроса прерывания адаптера, который сигнализируется адаптером ввода/вывода, гость со страничной организацией режима записи в память, и, если целью является гость, тогда GAIT также используется для установки гостевых AISB и передачи гостю запросов прерывания адаптера. Подкласс (AFI) 536 прерывания переадресации уведомления о событии адаптера: это поле указывает ISC значение. Прерывание режима ожидания и представительное прерывание этого ISC вызывает процесс переадресации уведомления о событии адаптера, где содержимое AISB ряда переадресации и GAIT используется для дальнейшего определения цели (хоста или гостя) запроса прерывания, поступающего от задействованных адаптеров ввода/вывода, для соответствующего ISC. Если запрос прерывания осуществляется из задействованного адаптера для ISC, указанного AFI полем, тогда целью прерывания может являться гость со страничной организацией режима записи в память, а AISB ряд переадресации и GAIT используются для определения действительной цели (хоста или гостя) любого уведомления о событии адаптера, указанного в AISB ряде переадресации. Если запрос прерывания осуществляется с задействованного адаптера для ISC, отличного от указанного ISC полем AFI, тогда адрес AISB ряда переадресации и GAIT адрес не применяются, а целью запроса прерывания для соответствующего ISC является хост. Длина (FAAL) 538 AISB ряда переадресации: это поле указывает на длину AISB поля переадресации в битах или длину GAIT в блоках GAIT записей.

В ответ на выполнение команды Set Interruption Controls устанавливается одно или несколько управлений прерывания на основе управления операцией, определенного в Поле 1. Если значение управления операции указывает на установку режима всех прерываний или режима единичных прерываний, тогда Поле 2 включает значение, указывающее подкласс прерывания, для которого устанавливается управление прерыванием.

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

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

Один из вариантов осуществления логики, связанной с представлением запросов прерывания адаптера операционной системе, учитывающей режим прерываний, установленный для функции адаптера (например, ISC), описывается со ссылкой на ФИГ.6.

Как показано на ФИГ.6, вначале на этапе 600 процессор представляет прерывание операционной системе. То есть, процессор определяет, что указатель режима ожидания установлен, и представляет прерывание операционной системе. В одном из конкретных примеров имеется два указателя режима ожидания: указатель режима ожидания ЦП, который проверяется процессором (под названием указатель режима ожидания); и указатель концентратора, который устанавливается в ответ на прием запроса прерывания от концентратора. Использование этих двух указателей также описывается ниже.

На этапе запроса 602 в ответ на представление прерывания операционной системе процессор (например, аппаратно-программное обеспечение) определяет, является ли режим управления прерываниями для ISC режимом единичного прерывания. Это определение осуществляется посредством проверки сохраненного значения управления операцией. Если режим прерываний является режимом единичного прерывания, тогда в ответ на представление прерывания операционной системе режим прерываний автоматически переключится на режим без прерываний, этап 604. В этом режиме процессор сбрасывает указатель ЦП (например, устанавливая значение 0), этап 606, но указатель концентратора остается установленным (например, =1), этап 608. Таким образом, не остается прерываний для представления процессору, а концентратору прерывания уже были представлены, поэтому другие прерывания блокируются. Указатели обрабатываются операционной системой. Например, операционная система определяет, имеются ли зарегистрированные AISB. Если нет, тогда операционная система обрабатывает установленные AIBV, как описывается ниже. В ином случае, операционная система обрабатывает любые установленные AISB и AIBV. Например, она проверяет, имеются ли установленные AISB. Если так, тогда они используются для определения расположения AISB и AIBV. Например, операционная система запоминает ячейки AISB и AIBV. Кроме того, операционная система запоминает, для какого адаптера каждый из AISB и AIBV представляется. Следовательно, он может сохранить форму блока управления или другую структуру данных, которая включает ячейки AISB и AIBV, и взаимосвязь между AISB, AIBV и ID (идентификационный номер) адаптера. Этот блок управления используется операционной системой для облегчения размещения AIBV на основе связанного с ним AISB. В одном из других вариантов осуществления AISB не используется. В таком случае, используется блок управления для обнаружения конкретного AIBV. В ответ на обнаружение одного или нескольких AIBV операционная система сканирует AIBV и обрабатывает любые AIBV. Прерывание обрабатывается подобным представлению события (например, предоставляет состояние) образом. Например, с адаптером запоминающего устройства событие может указывать, что операция была завершена. Это приводит к тому, что операционная система проверяет состояние, сохраненное адаптером, для определения того, удачно ли была завершена операция, а также подробностей операции. В случае чтения с запоминающего устройства существует указание о том, что данные, прочтенные из адаптера, в данный момент являются доступными в системной памяти и могут быть обработаны.

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

Если операционная система определяет, что другое прерывание не является необходимым и, следовательно, режим управления не меняется, запрос 612, тогда операционная система продолжает обрабатывать указатели. В ином случае операционная система меняет режим управления на режим единичного прерывания или режим всех прерываний, этап 614. В одном из примеров изменение режима выполняется посредством команды Set Interruption Controls.

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

Возвращаясь к запросу 602, если определяется, что операционная система не находится в режиме единичного прерывания, тогда допускается, что операционная система находится в режиме всех прерываний и процессор сбрасывает как указатель ЦП, так и указатель концентратора (например, на ноль), этап 620. Это позволяет концентратору передачу других прерываний и предоставление других прерываний операционной системе. Операционная система также обрабатывается AISB и AIBV указатели, как описывалось выше, этап 622. На этом обработка завершается.

Как описывалось выше, в дополнение к преобразованию MSI в уведомление о событии адаптера для операционной системы, которая не является гостем, в другом варианте осуществления уведомление о событии адаптера может быть представлено гостю (например, гостю со страничной организацией). Далее будут описаны подробности преобразования запроса MSI в уведомление о событии адаптера для гостя. Как показано на ФИГ.3, вначале выполняется, этап 300, определенная инициализация. В этом примере выполняется инициализация хоста и гостя. Например, во время инициализации хоста (или, если первая функция PCI назначается для гостя) хост определяет AISB ряд переадресации и GAIT. Затем, хост регистрирует ячейки и длины AISB ряда переадресации и GAIT, например, в таблице (AIFT) переадресации прерывания адаптера. В одном из примеров используется команда Set Interruption Controls для регистрации ячеек и длин AISB ряда переадресации.

Далее хост определяет подкласс прерывания хоста, который должен быть назначен PCI адаптерам, назначенным для гостей. В одном из примеров снова используется команда, такая как команда Set Interruption Controls, для определения этой информации. Эта информация также содержится в AIFT записи раздела, в котором запущен хост. На этом инициализация хоста завершается.

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

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

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

Кроме того, AIBV размещается таким же образом, как и AISB, если таковые имеются. AIBV и AISB размещаются и им присваивается нулевое значение, и определяется операция прерывания адаптера регистра. В ответ на запрошенную операцию прерывания адаптера регистра хост перехватывает операцию и выполняет регистрацию. Регистрация включает, например, закрепление гостевого AIBV в запоминающем устройстве хоста (т.е. фиксирование гостевой страницы в хост-памяти и ее изменение на не страничную). Далее, если гость определяет AISB, тогда хост также закрепляет гостевой AISB в запоминающем устройстве хоста. Хост назначает AISB из AISB ряда переадресации и в неявной форме соответствующую запись GAIT для функции PCI. В качестве альтернативы, если AISB и ISC, определенные гостем, являются подобными AISB и ISC, зарегистрированными гостем ранее (для другой функции PCI), тогда хост может использовать подобный AISB ряд переадресации и GAIT запись, назначенные при прошлом запросе. Это действие уменьшает затраты вычислительных ресурсов. Хост копирует гостевой подкласс прерывания в GAIT ряд. Если гость определяет AISB, тогда хост копирует хост-адрес гостевого AISB и его сдвиг в GAIT записи. Хост также копирует определение гостевого GISA из его описания состояния в GAIT запись.

От имени гостя хост выполняет команду, такую как команда Modify PCI Function Controls, для определения операции прерываний адаптера регистра и указания следующей информации: хост-адреса и гостевого сдвига гостевого AIBV; хост-адреса и сдвига AISB хоста, и AISB ряда переадресации, назначенного адаптеру; подкласс хост-прерывания для адаптера и количество MSI, определенное для гостя. В ответ на выполнение команды Modify PCI Function Controls выбирается запись в таблице устройств, соответствующая функции PCI, для которой выполняется инициализация, и различные параметры сохраняются в записи в таблице устройств. Например, гостевой AIBV; выбранный хостом AISB переадресации; ISC хоста и количество прерываний устанавливается, равное полученным значениям при настройке функции. Различная информация также регистрируется в GAIT, включая, например, хост-адрес и сдвиг гостевого AISB, гостевой ISC и адрес GISA для гостя. На этом регистрация завершается.

Следовательно, записывается пространство конфигурации функции PCI. А именно, число адресов MSI и векторов MSI записывается в адресном пространстве конфигурации функции PCI в соответствии с предыдущей регистрацией. На этом гостевая инициализация завершается.

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

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

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

Далее, в одном из вариантов осуществления осуществляется определение (например, посредством ЦП или концентратором ввода/вывода) того, находится ли запрос прерывания в режиме ожидания. То есть, указатель режима ожидания (например, указатель режима ожидания ЦП) проверяется для определения того, установлен ли он. Если он уже установлен, то повторная установка не осуществляется. Один или несколько процессоров асинхронно проверяют указатель режима ожидания. В частности, каждый из процессоров, предназначенных для ISC (и области), обращается к указателю, если, например, для этого процессора активируются прерывания. Если один из процессоров определяет, что указатель установлен, тогда он связывается с другими процессорами для обработки прерывания, этап 304. Для обработки прерывания аппаратно-программное обеспечение использует номер области, определенный в запросе прерывания адаптера, для обнаружения AIFT записи для логического раздела (области). В ответ на обнаружение AIFT записи аппаратно-программное обеспечение проверяет, включает ли AIFT запись определенное значение (например, все нули). Если AIFT запись включает определенное значение, это означает, что в логическом разделе хостом не запущено ни единого гостя, и прерывание адаптера остается в режиме ожидания для логического раздела, определенного номером области (или для операционной системы, если логические разделы не настроены). Затем, это прерывание обрабатывается, как было описано выше согласно представлению прерывания операционной системе, которая не является гостевой.

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

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

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

Однако если GAIT запись не включает определенное значение, это означает, что целью прерывания адаптера является соответствующий гость, и тогда выполняется определенное количество шагов для завершения переадресации уведомления о событии адаптера гостю. Например, если гостевой AISB адрес в GAIT записи не включает определенное значение (например, все нули), тогда гостевой AISB адрес и гостевой AISB сдвиг используются для установки значения гостевого AISB, равного единице. Далее, гостевой подкласс прерывания используется в GISA указании в GAIT записи для перевода прерывания в режим ожидания в GISA для гостя. Согласно одной из особенностей настоящего изобретения в качестве части этого процесса режим прерывания устанавливается для функции адаптера (т.е., ISC). В одном из примеров управление режимом прерывания предоставляется в гостевой области (GISA) состояния прерывания для гостей со страничной организацией. Как было описано выше, гостевая область состояния прерывания - это область, в которой находятся прерывания адаптера в режиме ожидания для гостей со страничной организацией, и согласно одной из особенностей настоящего изобретения GISA может расширяться для включения двух битовых масок - одной для режима (SIMM) единичного прерывания и одной для режима (NIMM) без прерываний. Это позволяет управлять блокировкой прерывания практически неограниченного количества гостей, поскольку состояние записывается в гостевой структуре данных хост памяти, отдельно для каждого гостя, а не в специально назначенном гостевом аппаратном обеспечении, отдельном для каждого гостя. Одна или несколько особенностей настоящего изобретения относятся к гостям без применения специально назначенного аппаратного обеспечения для прерывания.

В этом конкретном примере каждая маска имеет по биту на каждый гостевой подкласс прерывания. Следующее описание представляет собой пример режима прерывания для гостевого ISC:

SIMM.isc=0 - режим всех прерываний;

SIMM.isc=1, NIMM.isc=0 - режим единичного прерывания и

SIMM.isc=1, NIMM.isc=1 - режим без прерываний.

Для установки управления режима единичного прерывания и режима всех прерываний используется команда Set Interruption Controls. Установка осуществляется посредством выполнения обновления со взаимоблокировкой этих масок и маски (IPM) прерывания в режиме ожидания, которая сериализуется против получения доступа к GISA.

Например, для установки режима всех прерываний для заданного ISC в SIMM и NIMM полях GISA устанавливается битовая позиция, индексируемая с использованием ISC, равная нулю. Далее, для установки режима единичного прерывания в SIMM поле устанавливается битовая позиция, индексируемая с использованием ISC, равная единице, а для NIMM поля - равная нулю. Для режима без прерываний в SIMM и NIMM полях устанавливается битовая позиция, индексируемая с использованием ISC, равная единице.

Если прерывание адаптера остается в режиме ожидания для ISC в GISA, тогда следующие биты опрашиваются и обновляются следующим образом:

если SIMM.isc=0 (режим всех прерываний), тогда прерывание остается в режиме ожидания в IPM.isc и выполняется изменение хоста, если IAM.isc осуществляет запрос. SIMM и NIMM биты остаются неизменными. Прерывания, отправленные в режиме всех прерываний, не изменяют режим.

Если SIMM.isc=1 и NIMM.isc=0 (режим единичного прерывания), тогда прерывание остается в режиме ожидания в IPM.isc и выполняется изменение хоста, если IAM.isc осуществляет запрос. В дополнение к этому, в это же время устанавливается NIMM.isc, равное 1. Данное действие отражает переход от режима единичного прерывания к режиму без прерываний при отправке прерывания.

Если SIMM.isc=1 и NIMM.isc=1 (режим без прерываний), тогда запрос прерывания игнорируется. Изменения в IPM, IAM, SIMM или NIMM полях GISA не осуществляются.

Осмотр и обновление SIMM и NIMM включаются в существующее обновление со взаимоблокировкой, используемое для отправки прерывания. Это позволяет убедиться в том, что сохраняется согласованное состояние и сериализация отправки прерываний против другой активности GISA, такой как представление прерывания или SIC прерывание.

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

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

В ответ на установку IPM в GISA процессор, активированный для гостевого ISC, определяет, что этот указатель был установлен и представляет прерывание гостевой операционной системе. Эта обработка описывается далее со ссылкой на ФИГ.7. Вначале прерывание находится в режиме ожидания в GISA, как было описано выше, этап 700. Процессор, осуществляя опрос этого индикатора, определяет, что был установлен бит, и, если процессор активирован, тогда он представляет прерывание операционной системе, этап 702. В ответ на прием этого указателя операционная система начинает обработку любых установленных AISB и AIBV указателей, как было описано выше, этап 704. Во время этой обработки операционная система определяет, должен ли быть изменен режим управления прерываниями, этап 706. То есть, если операционная система продолжит обработку установленных указателей, тогда изменение не будет осуществлено. Однако, если операционная система определит, что другой запрос прерывания находится в режиме ожидания, тогда она изменит режим управления, например, посредством команды Set Interruption Controls, как было описано выше, этап 708. Это действие управляет интенсивностью обработки прерывания.

Дальнейшие подробности о команде Modify PCI Function Controls, используемой для регистрации прерываний адаптера, описываются в настоящем документе. Как показано на ФИГ.9A, команды 900 Modify PCI Function Controls содержит, например, код 902 операции, указывающий команду Modify PCI Function Controls первое поле 904, указывающее местоположение, в котором находится различная информация, касающаяся функции адаптера, для которой устанавливаются рабочие параметры; и второе поле 906, указывающее местоположение, из которого извлекается блок информации о функциях PCI (FIB). Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.

В одном из вариантов осуществления в поле 1 указан регистр общего назначения, в котором содержится различная информация. Как показано на ФИГ.9Б, в содержимом регистре содержится, например, дескриптор 910 функции, который идентифицирует дескриптор функции адаптера, от имени которого выполняется команда изменения; адресное пространство 912, указывающее адресное пространство в системной памяти, соответствующее функции адаптера, указанной дескриптором функции; управление 914 операцией, которое определяет операцию, выполняемую для функции адаптера; и указатель 916 состояния, который указывает состояние команды при ее выполнении с использованием заданного кода.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В противном случае на этапе запроса 1008 осуществляется определение, точно ли выровнены один или несколько операндов. Например, осуществляется определение, находится ли адрес информационного блока функции на границе двойного слова. В одном примере это необязательно. Если операнды не выровнены, то на этапе 1010 предоставляется исключительная ситуация. В противном случае на этапе 1012 осуществляется определение, доступен ли информационный блок функции. Если нет, то на этапе 1014 предоставляется исключительная ситуация. В противном случае на этапе 1016 осуществляется определение, активирован ли дескриптор, предоставленный в операндах команды Modify PCI Function Controls. В одном примере это определение осуществляется путем проверки указателя активации в дескрипторе. Если дескриптор не активирован, то на этапе 1018 предоставляется исключительная ситуация. Если дескриптор активирован, то на этапе 1020 дескриптор используется для того, чтобы определить положение записи таблицы функций. То есть, по меньшей мере, часть дескриптора используется в качестве индекса в таблице функций, чтобы определять положение записи таблицы функций, соответствующей функции адаптера, для которой должны быть установлены рабочие параметры.

На этапе запроса 1022 осуществляется определение, была ли найдена запись таблицы функций. Если нет, то на этапе 1024 предоставляется исключительная ситуация. В противном случае, если на этапе запроса 1026 конфигурация, выдающая команду, является гостем, на этапе 1028 предоставляется исключительная ситуация (например, перехват на хост). Этот запрос может быть проигнорирован, если конфигурация не является гостем, или могут проверяться другие разрешения, если указаны. Затем на этапе запроса 1030 осуществляется определение, активирована ли функция. В одном примере это определение осуществляется путем проверки указателя активации в записи таблицы функций. Если он не активирован, то на этапе 1032 предоставляется исключительная ситуация.

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

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

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

Один вариант осуществления логики, связанной с этой операцией, описывается со ссылкой на ФИГ.11. В качестве одного примера операнды для этой операции, которые получены из информационного блока функции, включают, например: подкласс (ISC) прерывания; число (N01) разрешенных прерываний; сдвиг (AIBVO) битового вектора прерываний адаптера; суммарное (S) уведомление; сдвиг (ABVSO) суммарного битового вектора прерываний адаптера; адрес битового вектора (AIBV) прерываний адаптера и адрес суммарного битового вектора (AISB) прерываний адаптера. Согласно ФИГ.11 сначала на этапе запроса 1100 осуществляется определение, является ли число прерываний (NOI), определенное в FIB, большим, чем зависимый от модели максимум. Если да, то на этапе 902 предоставляется исключительная ситуация. Однако, если число прерываний не превышает зависимый от модели максимум, то на этапе запроса 1104 осуществляется следующее определение, является ли число прерываний, прибавленное к сдвигу битового вектора прерываний адаптера, (NOI+AIBVO) больше, чем зависимый от модели максимум. Если да, то на этапе 1106 предоставляется исключительная ситуация. Если NOI плюс AIBVO не превышает зависимый от модели максимум, то на этапе запроса 1108 осуществляется следующее определение, охватывает ли адрес AIBV плюс NOI границу 4k. Если он охватывает границу 4k, то на этапе 1110 предоставляется исключительная ситуация. В противном случае на этапе 1112 осуществляется определение, имеется ли достаточно ресурсов для любых требующихся ресурсов. Если ресурсов недостаточно, то на этапе 1114 предоставляется исключительная ситуация.

В противном случае на этапе 1116 осуществляется определение, зарегистрированы ли уже прерывания адаптера для этой функции. В одном варианте осуществления это определяется путем проверки одного или более параметров (например, в DTE/FTE). А именно проверяются параметры, связанные с прерываниями, такие как NOI. Если поля заполнены, то адаптер зарегистрирован для прерываний. Если адаптер уже зарегистрирован, то на этапе 1118 предоставляется исключительная ситуация. В противном случае параметры прерываний получают из FIB и помещают в запись таблицы устройства и необязательно в соответствующую запись (FTE) таблицы функций (или другое определенное местоположение). Также на этапе 1120 указатель активации MSI устанавливается в DTE. То есть параметры функции PCI, соответствующие прерыванию адаптера, устанавливаются в DTE и необязательно в FTE на основании информации, извлеченной из информационного блока функции. Эти параметры включают, например, ISC, NOI, AIBVO, S, AIBVSO, адрес AIBV и адрес AISB.

Кроме вышеуказанного другим управлением операцией, которое может определяться, является операция снятия с регистрации прерываний адаптера, пример которой описывается со ссылкой на ФИГ.12. Посредством этой операции параметры функции адаптера, соответствующие прерыванию адаптера, переустанавливаются. Согласно ФИГ.12 сначала на этапе запроса 1200 осуществляется определение, зарегистрирован ли для прерываний адаптер, определенный дескриптором функции. Если нет, то на этапе 1202 предоставляется исключительная ситуация. В противном случае на этапе запроса 1204 параметры прерывания в записи таблицы функций (или другом местоположении) и соответствующей записи таблицы устройств устанавливаются в нули. В одном примере эти параметры включают ISC, NOI, AIBVO, S, AIBSO, адрес AIBV и адрес AISB.

Как описано выше в одном варианте осуществления, для того, чтобы получить информацию относительно функции адаптера, используется команда Call Logical Processor. Один вариант осуществления этой команды представлен на ФИГ.13A. Как показано в одном примере, команда 1300 Call Logical Processor (CLP) содержит код 1302 операции, указывающий, что это команда Call Logical Processor, и указание для команды 1304. В одном примере это указание представляет собой адрес блока запроса, который описывает команду, подлежащую выполнению, а информация в блоке запроса зависит от команды. Примеры блоков запроса и соответствующих блоков ответа для различных команд описываются со ссылкой на ФИГ.13Б-15Б.

Вначале, согласно ФИГ.13Б, предоставляется блок запроса для команды списка функций PCI (list PCI functions). Команда list PCI functions используется для того, чтобы получать список функций PCI, которые приписаны к запрашивающей конфигурации (например, запрашивающей операционной системе). Блок 1320 запроса содержит ряд параметров, как, например:

поле 1322 длины: это поле указывает длину блока запроса.

Код 1324 команды: это поле указывает команду списка функций PCI; и

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

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

С учетом выдачи и обработки команды Call Logical Processor для команды списка функций PCI возвращается блок ответа. Один вариант осуществления блока ответа представлен на ФИГ.13B. В одном примере блок 1350 ответа для команды списка функций PCI содержит:

поле 1352 длины: это поле указывает длину блока ответа.

Код 1354 ответа: это поле указывает состояние команды.

Список 1356 функций PCI: это поле указывает список из одной или нескольких функций PCI, доступных для запрашивающей операционной системы.

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

Зависящие от модели данные 1360: это поле содержит данные, которые зависят от системы.

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

размер 1364 записи: это поле указывает размер каждой записи в списке функций PCI.

Дальнейшие подробности относительно списка функций PCI описываются со ссылкой на ФИГ.13Г. В одном примере список функций PCI включает множество записей, и каждая запись 1356 содержит следующую информацию, например:

ID 1370 устройства: это поле указывает адаптер ввода-вывода, связанный с соответствующей функцией PCI.

ID 1372 поставщика: Это поле идентифицирует производителя адаптера ввода-вывода, связанного с соответствующей функцией PCI;

Идентификатор 1374 функции: это поле содержит постоянный идентификатор функции PCI.

Дескриптор 1376 функции: это поле идентифицирует функцию PCI. Хранимый дескриптор функции PCI представляет собой общий дескриптор, когда определенный бит дескриптора равен нулю, и он является активированным дескриптором, когда этот бит равен единице. Если функция PCI деактивирована, хранится общий дескриптор функции PCI. Если функция PCI активирована, хранится активированный дескриптор функции PCI. В одном примере дескриптор функции PCI не является постоянным за пределами IPL, который отличается от ID функции PCI, который является постоянным и устанавливается на срок существования определения конфигурации ввода-вывода; и состояние 1378 конфигурации: это поле указывает состояние функции PCI. Когда этот указатель равен, например, нулю, состояние является состоянием ожидания, а когда, например, единице, состояние является сконфигурированным. В состоянии ожидания дескриптор функции PCI является общим дескриптором функции PCI, а в сконфигурированном он является или общим, или активированным дескриптором функции PCI в зависимости от того, активирована ли функция PCI.

После получения списка функций адаптера может быть получена информация относительно атрибутов выбранной функции, как указано определенным дескриптором функции PCI. Эта информация может быть получена путем выдачи команды CLP с командой запроса функции.

Один вариант осуществления блока запроса для команды запроса функции PCI описывается со ссылкой на ФИГ.14A. В одном примере блок 1400 запроса содержит, например:

поле 1402 длины: это поле указывает длину блока запроса.

Код 1404 команды: это поле указывает команду query PCI function; и дескриптор 1406 функции: это поле содержит дескриптор функции PCI (например, общий или активированный), который указывает функцию PCI, которую необходимо опросить.

С учетом выдачи команды Call Logical Processor для команды query PCI function, возвращается блок ответа. Один вариант осуществления блока ответа представлен на ФИГ.14Б. В одном примере блок 1250 ответа содержит следующее:

длину 1452: это поле указывает длину блока ответа.

Код 1454 ответа: это поле указывает состояние команды.

ID 1456 группы функций: это поле указывает идентификатор группы функций PCI. Идентификатор группы функций PCI используется для связи группы функций PCI с набором атрибутов (также называемых в данном документе характеристиками). Каждая функция PCI с одинаковым идентификатором группы функций PCI имеет одинаковый набор атрибутов.

ID 1458 функции: ID функции PCI представляет собой постоянный идентификатор функции PCI, изначально определенный дескриптором функции PCI, и устанавливается на срок существования определения конфигурации ввода-вывода.

Адаптер 1460 физического канала: это значение представляет зависимую от модели идентификацию местоположения физического адаптера ввода-вывода, который соответствует функции PCI.

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

Размер 1управление скоростью, с которой обрабатываются запросы на прерывание,   формируемые адаптерами, патент № 2526287 n 1464: Это поле содержит множество беззнаковых целых чисел, указанных как SIZE0-SIZEn. Значение поля Size, когда не равно нулю, представляет размер каждого адресного пространства с каждой записью, соответствующей ранее описанному BAR.

Начало доступных DMA 1466: это поле содержит адрес, который указывает начало диапазона адресов PCI, которые доступны для операций DMA.

Конец доступных DMA 1468: это поле содержит значение, которое указывает конец диапазона адресов PCI, которые доступны для операций DMA.

В дополнение к получению атрибутов относительно конкретной функции адаптера, могут также быть получены атрибуты относительно группы, которая содержит эту функцию. Эти общие атрибуты могут быть получены из выдачи команды CLP с командой запроса группы функций PCI. Эта команда используется, чтобы получать набор характеристик, которые поддерживаются для группы одной или более функций PCI, указанных определенным идентификатором группы функций PCI. Идентификатор группы функций PCI используется для связи группы функций PCI с одним и тем же набором характеристик. Один вариант осуществления блока запроса команды запроса группы функций PCI описывается со ссылкой на ФИГ.15A. В одном примере блок 1500 запроса содержит следующее:

поле 1502 длины: это поле указывает длину блока запроса.

Код 1504 команды: это поле указывает команду запроса группы функций PCI; и

ID 1506 группы функций: это поле определяет идентификатор группы функций PCI, для которого необходимо получить атрибуты.

С учетом выдачи и обработки команды Call Logical Processor с командой запроса группы функций PCI возвращается блок ответа. Один вариант осуществления блока ответа представлен на ФИГ.15Б. В одном примере блок 1550 ответа содержит:

поле 1552 длины: это поле указывает длину блока ответа.

Код 1554 ответа: это поле указывает состояние команды.

Число прерываний 1556: это поле указывает максимальное число последовательных номеров векторов MSI (т.е. указателей событий прерывания), которые поддерживаются средством PCI для каждой функции PCI в определенной группе функций PCI. Возможные достоверные значения числа прерываний находятся, например, в диапазоне от 0 до 2048.

Версия 1558: это поле указывает версию спецификации PCI, которая поддерживается средством PCI, к которому подключается группа функций PCI, указанная определенным идентификатором группы PCI.

Кадр 1562: это поле указывает размеры кадра (или страницы), поддерживаемые для трансляции адресов ввода-вывода.

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

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

адрес 1568 MSI: это значение, которое необходимо использовать для запросов прерывания сигнальных сообщений.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ФИГ.17 представляет собой изображение характерных компонентов хост-компьютерной системы 5000 для реализации одной или нескольких особенностей настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько ЦП 5001, связанных с памятью 5002 (т.е. центральным запоминающим устройством) компьютера, а также интерфейсы ввода-вывода к запоминающим устройствам 5011 и сети 5010 для связи с другими компьютерами или SAN и т.п. ЦП 5001 совместим с архитектурой, имеющей структурированный набор команд и структурированные функциональные возможности. ЦП 5001 может иметь динамическую трансляцию 5003 адреса (DAT) для преобразования программных адресов (виртуальных адресов) в достоверные адреса памяти. DAT обычно содержит буфер 5007 быстрого преобразования адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш 5009. Кэш 5009 может быть иерархическим, имеющим кэш большой емкости, доступный для более чем одного ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых осуществлениях кэши низкого уровня разделяются, чтобы предоставлять отдельные кэши низкого уровня для извлечения команд и доступа к данным. В одном варианте осуществления команда извлекается из памяти 5002 блоком 5004 извлечения команд посредством кэша 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения, например, блок выполнения арифметических команд, блок выполнения с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком выполнения, который осуществляет доступ к операндам из определяемых командами регистров или памяти по мере необходимости. Если доступ (загрузку или сохранение) к операнду необходимо осуществлять из памяти 5002, блок 5005 загрузки/сохранения обычно осуществляет доступ под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении), или с использованием их сочетания.

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

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

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

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

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

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

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

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

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

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

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

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

ФИГ.20 представляет собой изображение иллюстративного варианта осуществления процессора для процессора 5026. Обычно, чтобы буферизировать блоки памяти с целью повышения производительности процессора, используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, хранящий строки кэша данных памяти, которые предположительно будут использоваться. Типичные строки кэша содержат 64, 128 или 256 байтов данных памяти. Отдельные кэши используются часто для кэширования команд, а не кэширования данных. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения, хорошо известными в данной области техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, содержащей 4 уровня кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем 5 уровня (L5), поскольку оно обычно является более быстродействующим и содержит лишь часть энергонезависимого запоминающего устройства (DASD, лента и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые постранично перемещаются в основное запоминающее устройство 5025 и из него операционной системой. Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды, подлежащей выполнению. Счетчик команд в процессоре z/Architecture ® является 64-битным и может быть усечен до 31 или 24 битов с целью поддержки предыдущих ограничений адресации. Счетчик команд обычно воплощен в PSW (слове статуса программы) компьютера, так что он сохраняется при переключении контекста. Таким образом, работающая программа, имеющая значение счетчика команд, может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы сохраняет значение счетчика команд, пока программа неактивна, и программный счетчик (в PSW) операционной системы используется, пока выполняется операционная система. Обычно счетчик команд увеличивается на величину, равную числу байтов текущей команды. RISC-команды (вычисления с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (вычисления со сложным набором команд) обычно имеют переменную длину. Команды IBM z/Architecture® являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Счетчик 5061 команд изменяется, например, или операцией переключения контекста, или операцией выбранного перехода команды перехода. В операции переключения контекста текущее значение счетчика команд сохраняется в слове статуса программы вместе с другой информацией о состоянии выполняемой программы (такой как коды состояний), и загружается новое значение счетчика команд, указывающее на команду нового программного модуля, который необходимо выполнить. Операция выбранного перехода выполняется, чтобы позволить программе принимать решения или выполнять цикл в программе путем загрузки результата команды перехода в счетчик 5061 команд. Обычно для извлечения команд от имени процессора 5026 используется блок 5055 извлечения команд. Блок извлечения или извлекает "следующие последовательные команды", целевые команды команд выбранного перехода, или первые команды программы, следующей за переключением контекста. В современных блоках извлечения команд часто применяют методы предварительного извлечения, чтобы эмпирически осуществлять предварительное извлечение команд на основании вероятности того, что предварительно извлеченные команды могли бы быть использованы. Например, блок извлечения может осуществлять извлечение 16 байтов команды, которая содержит следующую последовательную команду, и дополнительных байтов других последовательных команд. Затем извлеченные команды выполняются процессором 5026. В одном варианте осуществления извлеченная команда(-ы) передается блоку 5056 диспетчеризации блока извлечения. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 извлечения команд и выполняет арифметические операции с операндами в соответствии с кодом операции команды. Операнды подаются на блок 5057 выполнения предпочтительно или из памяти 5025, структурированных регистров 5059 или из ближайшего поля выполняемой команды. Сохраненные результаты выполнения хранятся или в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.). Процессор 5026 обычно имеет один или несколько блоков 5057, 5058, 5060 для выполнения функции команды. Обращаясь к ФИГ.21A, блок 5057 выполнения может сообщаться со структурированными регистрами 5059 общего назначения, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065 посредством интерфейсной логики 5071. Блок 5057 выполнения может применять несколько регистровых схем 5067, 5068, 5069, чтобы хранить информацию, с которой будет работать арифметическое логическое устройство (ALU) 5066. ALU выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ (XOR), циклический сдвиг и смещение. ALU предпочтительно поддерживает специализированные операции, зависящие от структуры. Другие схемы могут обеспечивать другие структурированные средства 5072, содержащие, например, коды ситуаций и логику поддержки восстановления. Обычно результат операции ALU хранится в схеме 5070 выходного регистра, которая может направлять результат ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание предназначено лишь обеспечить характерное понимание одного варианта осуществления. Например, команда ADD выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, тогда как, например, команда с плавающей точкой выполняется блоком выполнения с плавающей точкой, обладающим специальными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения функции, определенной кодом операции, на операндах. Например, команда ADD может выполняться блоком 5057 выполнения на операндах, находящихся в двух регистрах 5059, указанных в регистровых полях команды.

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

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

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

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

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

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

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

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

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

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

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

Класс G06F9/48 инициирование программы; переключение программы, например, прерыванием

способ выполнения изменения программы в режиме онлайн в системе автоматизации -  патент 2432604 (27.10.2011)
системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств -  патент 2406113 (10.12.2010)
интегрирование высоконадежных функций в приложение посредством разложения приложения -  патент 2367006 (10.09.2009)
устройство и способ для выполнения данных -  патент 2364919 (20.08.2009)
система для обеспечения переходов между режимами работы устройства -  патент 2358309 (10.06.2009)
система для вызова привилегированной функции в устройстве -  патент 2342695 (27.12.2008)
способ переключения контекста вычислительного процесса при прерывании программы или переходе к подпрограмме -  патент 2340933 (10.12.2008)
способ переключения контекста задач и процедур в процессоре -  патент 2320002 (20.03.2008)
устройство переключения программ -  патент 2316044 (27.01.2008)
система и способ для защиты от недоверенного кода режима управления с системой с помощью переадресации прерывания режима управления системой и создания контейнера виртуальной машины -  патент 2313126 (20.12.2007)

Класс G06F13/24 с использованием прерывания

Наверх