Код документа: RU2546561C2
Область техники
Настоящее изобретение относится в целом к обработке прерываний в вычислительной среде, более точно к обработке прерываний, генерируемых адаптерами вычислительной среды.
Уровень техники
Инициируемое сообщениями прерывание (MSI) является одним из способов, которым функция адаптера, такая как функция шины взаимодействия периферийных компонентов (PCI), генерирует прерывание центрального процессора (ЦП), чтобы уведомить операционную систему о возникновении какого-либо события или о присутствии какого-либо состояния. MSI является альтернативой, заменяющей выделенный вывод прерываний в каждом устройстве. Когда функция адаптера сконфигурирована на использование MSI, она запрашивает прерывание путем выполнения MSI-операции записи заданного числа байтов данных в особый адрес. Комбинация этого особого адреса и уникального значения данных именуется вектором MSI.
Некоторые функции адаптера поддерживают только один вектор MSI; другие функции адаптеров поддерживают множество векторов MSI. Для функций, которые поддерживают множество векторов MSI, используется одинаковый особый адрес с различными значениями данных.
Во многих вычислительных платформах драйвер устройства автоматически конфигурируется как обработчик прерываний, привязанный к вектору MSI. Тем самым вектор MSI эффективно привязывается к записи в векторе прерываний ЦП. Соответственно, когда функция адаптера поддерживает множество векторов MSI и сконфигурирована на использование множества векторов MSI, она расходует соответствующее число записей в векторе прерываний ЦП.
В заявке US 2007/0271559 A1 на имя Easton и др. под названием "Virtualization of Infiniband Host Channel Adapter Interruptions", опубликованной 22 ноября 2007 г., описаны способ, система, программный продукт, способ и структура компьютерных данных для обеспечения двух уровней виртуализации сервера. Первый гипервизор позволяет множеству логических разделов совместно использовать набор ресурсов и обеспечивает первый уровень виртуализации. Второй гипервизор позволяет множеству независимых виртуальных машин совместно использовать ресурсы, которые выделены одному логическому разделу, и обеспечивает второй уровень виртуализации. Все события для всех виртуальных машин в пределах одного логического раздела группируются в очередь принадлежащих одному разделу событий для приема уведомлений о событии от совместно используемых ресурсов этого одного логического раздела. Машина оповещает о запросе прерывания для сгруппированных событий из очереди принадлежащих одному разделу событий с целью разделения сгруппированных событий из очереди принадлежащих одному разделу событий на отдельные виртуализированные очереди событий, которые распределяются из расчета на каждую виртуальную машину.
В заявке US 2005/0289271 A1 на имя Martinez и др. под названием "Circuitry to Selectively Produce MSI Signals", опубликованной 29 декабря 2005 г., в некоторых вариантах осуществления описана микросхема, содержащая схему регистра состояния, связанную с проводниками и служащую для приема сигналов прерывающих событий и передачи сигналов источника, которые соответствуют сигналам прерывающих событий. Микросхема также содержит схему управляющего регистра для передачи активирующих источник сигналов выборочным источникам прерываний и логическую схему повторной активации, связанную с проводниками и служащую для приема сигналов прерывающих событий и передачи сигнала повторной активации. Микросхема дополнительно содержит первую логическую схему для приема сигналов источника, активирующих источник сигналов и сигнала повторной активации и генерирования сигнала первоначального прерывания и логическую схему генерирования импульсов сигнала инициируемого сообщениями прерывания (MSI) для приема сигнала первоначального прерывания и передачи сигнала MSI в ответ на него. Также описаны и заявлены другие варианты осуществления.
В патенте US 7562366 под названием "Transmit Completion Event Batching", выданном 14 июля 2009 г. на имя Pope и др., описан способ управления очередью передачи данных для применения в хост-машине и устройстве сопряжения с сетью. В общих чертах, хост-машина записывает дескрипторы буфера данных в очередь дескрипторов передачи, а устройство сопряжения с сетью записывает события с целью уведомления хост-машины о завершении им обработки буфера передаваемых данных. Каждый из дескрипторов события завершения передачи уведомляет хост-машину о завершении обработки одного из множества буферов передаваемых данных.
В публикации "Chapter 6: Configuration Space" in: PCI-SIG: "PCI Local Bus Specification Revision 3.0", 3 февраля 2004 г., ХР002638677, стр.213-254 описано устройство PCI, имеющее память, в которой хранится конфигурационное пространство.
В заявке US 2006/195617 A1 на имя Arndt Richard L и др., поданной 31 августа 2006 г., описан хорошо известный номер функции подключенного к шине устройства (BDF, от английского - Bus-Device Function).
Раскрытие изобретения
Согласно одной из особенностей настоящего изобретения предложено средство, облегчающее управление запросами прерывания, поступающими от адаптеров.
Преодоление недостатков известного уровня техники и обеспечение преимуществ достигается за счет предложенного способа по п.1 и соответствующей системы и компьютерного программного продукта для управления запросами прерывания в вычислительной среде.
Краткое описание чертежей
Одна или несколько особенностей настоящего изобретения конкретно охарактеризованы и отдельно заявлены в формуле изобретения, следующей за описанием. Перечисленные выше и другие задачи, признаки и преимущества изобретения станут ясны из следующего далее подробного описания в сочетании с сопровождающими его чего чертежами, на которых:
на фиг.1 проиллюстрирован один из вариантов осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.2 - один из вариантов осуществления дополнительных подробностей показанных на фиг.1 системной памяти и концентратора ввода-вывода согласно одной из особенностей настоящего изобретения,
на фиг.3A-3Б - примеры распределения векторов разрядов адаптерных прерываний согласно одной из особенностей настоящего изобретения,
на фиг.3В-3Г - примеры распределения суммарных разрядов адаптерных прерываний согласно одной из особенностей настоящего изобретения,
на фиг.4 - один из вариантов осуществления общего представления логики, выполняемой во время инициализации с целью конфигурирования функции адаптера для уведомления о генерированном адаптером ввода-вывода событии согласно одной из особенностей настоящего изобретения,
на фиг.5 - один из вариантов осуществления логики, выполняемой с целью регистрации, обеспечивающей преобразование инициируемого сообщениями прерывания (MSI) в уведомление о генерированном адаптером ввода-вывода событии согласно одной из особенностей настоящего изобретения;
на фиг.6A - один из вариантов осуществления логики с целью преобразования запроса MSI в уведомление о генерированном адаптером ввода-вывода событии согласно одной из особенностей настоящего изобретения;
на фиг.6Б - один из вариантов осуществления логики с целью представления операционной системе уведомления о генерированном адаптером ввода-вывода событии согласно одной из особенностей настоящего изобретения,
на фиг.7A - один из вариантов осуществления команды изменения управления функцией шины PCI (Modify PCI Function Controls), используемой согласно одной из особенностей настоящего изобретения,
на фиг.7Б - один из вариантов осуществления поля, используемого проиллюстрированной на фиг.7A командой изменения управления функцией шины PCI согласно одной из особенностей настоящего изобретения,
на фиг.7B - один из вариантов осуществления другого поля, используемого проиллюстрированной на фиг.7A командой изменения управления функцией шины PCI согласно одной из особенностей настоящего изобретения,
на фиг.7Г - один из вариантов осуществления содержимого блока информации о функциях (function information block (FIB)), используемого согласно одной из особенностей настоящего изобретения,
на фиг.8 - один из вариантов осуществления общего представления логики команды изменения управления функцией шины PCI согласно одной из особенностей настоящего изобретения,
на фиг.9 - один из вариантов осуществления логики, связанной с операцией регистрации адаптерных прерываний, которая может быть задана командой изменения управления функцией шины PCI согласно одной из особенностей настоящего изобретения,
на фиг.10 - один из вариантов осуществления логики, связанной с операцией отмены регистрации адаптерных прерываний, которая может быть задана командой изменения управления функцией шины PCI согласно одной из особенностей настоящего изобретения,
на фиг.11A - один из вариантов осуществления команды вызова логического процессора (Call Logical Processor), используемой согласно одной из особенностей настоящего изобретения,
на фиг.11Б - один из вариантов осуществления блока запроса, используемого проиллюстрированной на фиг.11A командой вызова логического процессора для операции формирования списков согласно одной из особенностей настоящего изобретения,
на фиг.11B - один из вариантов осуществления блока ответа для проиллюстрированной на фиг.11Б операции формирования списков согласно одной из особенностей настоящего изобретения,
на фиг.11Г - один из вариантов осуществления записи в списке функций, используемой согласно одной из особенностей настоящего изобретения,
на фиг.12A - один из вариантов осуществления блока запроса, используемого проиллюстрированной на фиг.11A командой вызова логического процессора для операции запроса функции согласно одной из особенностей настоящего изобретения,
на фиг.12Б - один из вариантов осуществления блока ответа для проиллюстрированной на фиг.12A операции запроса функции согласно одной из особенностей настоящего изобретения,
на фиг.13A - один из вариантов осуществления блока запроса, используемого проиллюстрированной на фиг.11A командой для операции запроса группы функций согласно одной из особенностей настоящего изобретения,
на фиг.13Б - один из вариантов осуществления блока ответа для проиллюстрированной на фиг.13A операции запроса группы функций согласно одной из особенностей настоящего изобретения,
на фиг.14 - один из вариантов осуществления компьютерного программного продукта, в котором содержится одна или несколько особенностей настоящего изобретения,
на фиг.15 - один из вариантов осуществления хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.16 - один из дополнительных примеров компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.17 - другой пример компьютерной системы, представляющей собой компьютерную сеть, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.18 - один из вариантов осуществления различных элементов компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.19A - один из вариантов осуществления блока выполнения проиллюстрированной на фиг.18 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.19Б - один из вариантов осуществления блока перехода проиллюстрированной на фиг.18 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.19B - один из вариантов осуществления блока загрузки/сохранения проиллюстрированной на фиг.18 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения, и
на фиг.20 - один из вариантов осуществления эмулируемой хост-компьютерной системы, эмулируемой хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения.
Подробное описание осуществления изобретения
Согласно одной из особенностей настоящего изобретения предложено средство преобразования запроса инициируемого сообщениями прерывания (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 №SA22-7832-07 под названием "z/Architecture-Principles of Operation" (февраль 2009 г.). IBM®, System z® и z/Architecture® являются зарегистрированными товарными знаками International Business Machines Corporation (Армонк, штат Нью-Йорк, США). Другие названия, используемые в заявке, могут являться зарегистрированными товарными знаками, товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.
В одном из примеров вычислительная среда 100 содержит один или несколько центральных процессоров (ЦП) 102, связанных с системной памятью 104 (иначе называемой основной памятью) посредством контроллера 106 памяти. Для доступа к системной памяти 104 центральный процессор 102 передает запрос чтения или записи, в котором содержится адрес, используемый для доступа к системной памяти. Поскольку адрес, содержащийся в запросе, обычно не может непосредственно использоваться для доступа к системной памяти, он транслируется в адрес, который может непосредственно использоваться для доступа к системной памяти. Адрес преобразуется посредством механизма 108 трансляции (XLATE). Например, адрес транслируется из виртуального адреса в действительный или абсолютный адрес с использованием, например, динамической трансляции адреса (DAT).
Запрос, содержащий адрес (при необходимости транслированный), принимается контроллером 106 памяти. В одном из примеров контроллер 106 памяти состоит из аппаратного обеспечения и используется для арбитража при доступе к системной памяти и для обеспечения непротиворечивости памяти. Этот арбитраж осуществляется применительно к запросам, принимаемым от ЦП 102, а также запросам, принимаемым от одного или нескольких адаптеров 110. Подобно центральным процессорам адаптеры передают системной памяти 104 запросы на получение доступа к системной памяти.
В одном из примеров адаптером 110 является адаптер шины межсоединения периферийных компонентов (PCI) или адаптер на основе шины PCI Express (PCIe), содержащей одну или несколько функций шины PCI. Функция шины PCI передает запрос, который маршрутизируется в концентратор 112 ввода-вывода (например, концентратор шины PCI) посредством одного или нескольких коммутаторов (например, коммутаторов шины PCIe) 114. В одном из примеров концентратор ввода-вывода состоит из аппаратного обеспечения, включающего один или несколько конечных автоматов.
Концентратор ввода-вывода содержит, например, корневой комплекс 116, который принимает запрос от коммутатора. В запросе содержится адрес ввода-вывода, который используется, например, для осуществления прямого доступа к памяти (DMA) или передачи запроса инициируемого сообщениями прерывания (MSI). Этот адрес предоставляется блоку 118 трансляции и защиты адресов, который осуществляет доступ к информации, используемой для DMA или запроса MSI.
В случае DMA блок 118 трансляции и защиты адресов может транслировать адрес в адрес, применимый для доступа к системной памяти. Затем инициированный адаптером запрос, содержащий транслированный адрес, предоставляется контроллеру 106 памяти посредством, например, шины 120 ввода-вывода и памяти. Контроллер памяти осуществляет арбитраж и в соответствующее время пересылает системной памяти запрос с транслированным адресом.
В случае запроса MSI блок 118 трансляции и защиты адресов получает информацию для облегчения преобразования запроса MSI в уведомление о генерированном адаптером ввода-вывода событии. Поскольку описанные варианты осуществления относятся к обработке прерываний, дополнительные подробности, касающиеся концентратора ввода-вывода и системной памяти в том, что касается обработки прерываний, описаны со ссылкой на фиг.2. Хотя на фиг.2 не показан контроллер памяти, он может использоваться. Концентратор ввода-вывода может быть связан с системной памятью 104 и/или процессором 254 напрямую или посредством контроллера памяти.
Как показано на фиг.2, в одном из примеров системная память 104 содержит одну или несколько структур данных, применимых для облегчения обработки прерываний. В этом примере системная память 104 содержит вектор 200 разрядов адаптерного прерывания (AIBV, от английского - Adapter Interruption Bit Vector) и необязательный суммарный разряд 202 адаптерного прерывания (AISB, от английского - Adapter Interruption Summary Bit), соответствующий конкретному адаптеру. Для каждого адаптера может иметься AIBV и соответствующий AISB.
В одном из примеров вектор 200 разрядов адаптерного прерывания представляет собой одномерный битовый массив из одного или нескольких разрядов в основном запоминающем устройстве, привязанных к адаптеру (например, функции шины PCI). Разряды в векторе разрядов адаптерного прерывания отображают номера векторов MSI. Разряд, который приравнен в AIBV к единице, указывает состояние или тип события для соответствующего адаптера. В примере с функцией шины PCI каждый разряд в соответствующем AIBV отображает вектор MSI. Соответственно, если функция шины PCI поддерживает только вектор MSI, ее AIBV содержит один разряд; если функция шины PCI поддерживает множество векторов MSI, ее AIBV содержит по одному разряду на вектор MSI. В примере, проиллюстрированном на фиг.2, функция шины PCI поддерживает множество векторов MSI (например, 3), и, соответственно, AIBV 200 содержит множество разрядов (например, 3). Каждый разряд соответствует конкретному событию, например, когда для нулевого разряда AIBV установлено значение, равное единице, он обозначает завершенную операцию; когда для единичного разряд AIBV установлено значение, равное единице, он соответствует событию ошибки; и т.д. Как показано, в этом примере установлен единичный бит.
В одном из частных вариантов осуществления с целью указания AIBV для функции шины PCI используется определенная команда (например, команда изменения управления функцией шины PCI). В частности, команда передается операционной системой и указывает идентификатор функции шины PCI, адрес ячейки основного запоминающего устройства в области, в которой содержится AIBV, смещение от этой ячейки до первого разряда AIBV и число разрядов, входящих в AIBV. В частности, с помощью этой команды параметры адаптерного прерывания копируются из блока информации о функциях, в котором хранится такая информация (например, полученная в результате инициализации и/или конфигурирования) в запись в таблице устройств адаптера (описанную далее) и/или запись в таблице функций (описанную далее).
В одном из примеров идентификатором функции шины PCI является дескриптор функции. Дескриптор функции включает, например, разрешающий индикатор, который указывает, активирован ли дескриптор функции шины PCI; номер функции шины PCI, который указывает функцию (является статическим идентификатором); и номер экземпляра, указывающий конкретный экземпляр этого дескриптора функции. Например, при каждом активировании дескриптора функции номер экземпляра увеличивается, и указывается новый номер экземпляра. Дескриптор функции используется для обнаружения записи в таблице функций, в которой содержится одна или несколько записей. Например, в качестве индекса в таблице функций для обнаружения конкретной записи в таблице функций используется один или несколько разрядов дескриптора функции. Запись в таблице функций содержит информацию о соответствующей функции шины PCI. Например, она может содержать различные индикаторы состояния соответствующей функции адаптера и один или несколько индексов записей в таблице устройств, которые используются для обнаружения записей в таблице устройств для этой функции адаптера. (В одном из вариантов осуществления дескриптором для операционной системы является просто непрозрачный идентификатор адаптера.)
AIBV может находиться на любой байтовой границе и любой битовой границе. Это позволяет операционной системе гибко упаковывать AIBV множества адаптеров в смежный битовый и байтовый диапазон. Например, как показано на фиг.3A, в одном из примеров операционная система выделила общую область памяти в местоположении X, содержащую пять смежных AIBV. Адаптеры, соответствующие каждому AIBV, обозначены буквами A-E. Случай, когда каждый разряд AIBV отображает адаптер, дополнительно обозначен числами 0-n. Свободные разряды обозначены буквой "u" нижнего регистра.
Один из дополнительных примеров проиллюстрирован на фиг.3Б. В этом примере операционная система выделила три однозначно определяемые области памяти в местоположениях X, Y и Z, содержащие AIBV для пяти адаптеров ввода-вывода. Область памяти в местоположении X содержит AIBV для адаптеров A и B, область памяти в местоположении Y содержит AIBV только для адаптера C, а область памяти в местоположении Z содержит AIBV для адаптеров D и E. Случай, когда каждый разряд AIBV отображает адаптер ввода-вывода, дополнительно обозначен числами 0-n. Свободные разряды обозначены буквой "u".
Как показано на фиг.2, помимо AIBV, в этом примере адаптер имеет AISB 202, который содержит один разряд, соответствующий адаптеру. AISB, равный единице, указывает, что в качестве значения одного или нескольких разрядов AIBV, который соответствует AISB, установлена единица. AISB является необязательным, и может быть предусмотрен один AISB для каждого адаптера, один AISB каждого выбранного адаптера или один AISB для группы адаптеров.
В одном из частных случаев реализации функции шины PCI с целью указания AISB для функции шины PCI используется определенная команда (например, команда изменения управления функцией шины PCI). В частности, команда передается операционной системой и указывает идентификатор функции шины PCI (например, дескриптор), адрес ячейки основного запоминающего устройства в области, в которой содержится AISB, смещение от этой ячейки до AISB и управление разрешением суммарного уведомления об адаптерном прерывании с указанием суммарного разряда.
AISB может находиться на любой байтовой границе и любой битовой границе. Это позволяет операционной системе гибко упаковывать AISB множества адаптеров в смежный битовый и байтовый диапазон. В одном из примеров, проиллюстрированных на фиг.3B, операционная система выделила общую область памяти в местоположении X, содержащую девять смежных AISB. Адаптеры, соответствующие каждому AISB, обозначены буквами A- I. Свободные разряды обозначены буквой "u" нижнего регистра.
Один из дополнительных примеров распределения проиллюстрирован на фиг.3Г, где операционная система выделила три однозначно определяемых адреса хранения AISB в местоположениях X, Y и Z, в которых содержатся AISB каждого из трех адаптеров. Адаптеры, соответствующие каждому AISB, обозначены буквами A-C. Свободные разряды обозначены буквой "u" нижнего регистра.
Кроме того, программа также может выделить один AISB множеству функций шины PCI. В этом случае множество AIBV соответствует одному суммарному разряду. Соответственно, таким AISB является тот, который указывает, что операционной системе следует просмотреть множество AIBV.
Как показано на фиг.2, в одном из примеров AIBV и AISB указаны в адресах, которые содержатся в записи 206 в таблице 208 устройств, находящейся в концентраторе 112 ввода-вывода. В одном из примеров таблица 208 устройств находится в блоке трансляции и защиты адресов концентратора ввода-вывода.
Таблица 208 устройств содержит одну или несколько записей 206, каждая из которых закреплена за конкретной функцией адаптера 210. Запись 206 содержит несколько полей, которые могут быть заполнены с использованием, например, упомянутых выше команд. Значения одного или нескольких из полей зависят от политики и/или конфигурации. Примеры полей включают:
поле 214 подкласса прерываний (ISC): указывает подкласс прерываний. В поле ISC указан маскируемый класс адаптерного прерывания, для которого может быть установлен приоритет его обработки операционной системой,
поле 216 адреса AIBV (@): указывает, например, абсолютный адрес начала ячейки запоминающего устройства, в которой хранится AIBV для конкретной функции адаптера, которая соответствует этой записи в таблице устройств,
поле 218 смещения AIBV: указывает смещение в ячейке основного запоминающего устройства к началу AIBV,
поле 220 адреса AISB (@): указывает, например, абсолютный адрес начала ячейки запоминающего устройства, в которой хранится AISB для этой функции шины PCI, если операционная система указала AISB,
поле смещения AISB: указывает смещение в ячейке основного запоминающего устройство к AISB,
поле 224 управления разрешением суммарного уведомления об адаптерном прерывании (Enable) 224: указывает, имеется ли AISB,
поле 226 числа прерываний (NOI) 226: указывает максимальное число векторов MSI, допустимых для этой функции шины PCI, при этом ноль означает их отсутствие.
В других вариантах осуществления записи в таблице устройств (DTE) могут содержать больше, меньше или другую информацию.
В одном из вариантов осуществления местоположение записи в таблице устройств, которую использует адаптер для конкретного запроса прерывания, определяют с использованием идентификатора запросчика (RID) (и/или части адреса), содержащегося в запросе, передаваемом адаптером (например, функцией 210 шины PCI). В запросе содержится идентификатор запросчика (например, 16-разрядное значение, указывающее, например, номер шины, номер устройства и номер функции), а также адрес, используемый для прерывания. Запрос, содержащий RID и адрес, передается, например, посредством коммутатора 114, например, ассоциативной памяти (САМ) 230, которая используется для получения заданного значения. Например, в САМ содержится множество записей, каждая из которых соответствует индексу в таблице устройств. Каждая запись в САМ содержит значение RID. Если, например, принятый RID соответствует значению, содержащемуся в записи в САМ, для определения местонахождения записи в таблице устройств используется соответствующий индекс из таблицы устройств. Иными словами, выводимые из САМ данные используются для индексации в таблице 208 устройств. Если соответствие отсутствует, принятый пакет отбрасывается. (В других вариантах осуществления не требуется САМ или другое средство поиска, и RID используется в качестве индекса.) Обнаруженная DTE используется при обработке запроса прерывания, как описано в изобретении.
Чтобы запросить прерывание, функция адаптера 210 передает пакет концентратору ввода-вывода. В этом пакете содержится адрес 232 MSI и сопутствующие данные 234. Концентратор ввода-вывода сравнивает по меньшей мере часть принятого адреса со значением в регистре 250 сравнения MSI. В случае соответствия запрашивается прерывание (например, MSI) в противоположность операции DMA. Причина запроса (т.е. тип произошедшего события) указывается в сопутствующих данных 234. Например, для указания конкретного вектора прерывания (т.е. вектора MSI), который указывает причину (событие), используется один или несколько младших разрядов данных.
Согласно одной из особенностей настоящего изобретения запрос прерывания, принимаемый от адаптера, преобразуется в уведомление о генерированном адаптером ввода-вывода событии. Иными словами, устанавливается один или несколько индикаторов (например, один или несколько AIBV и необязательно AISB), и у операционной системы запрашивается прерывание, если оно уже не запрошено. В одном из вариантов осуществления множество запросов прерывания (например, MSI) от одного или нескольких адаптеров, объединяются в один запрос прерывания, передаваемый операционной системе, но с указанием соответствующих AIBV и AISB. Например, если концентратор ввода-вывода, который уже принял запрос MSI, в свою очередь передал запрос прерывания процессору и прерывание все еще отложено (например, по той или иной причине запрос прерывания не был передан операционной системе (например, прерывания заблокированы)), то, если концентратор принимает один или несколько других MSI, он не запрашивает дополнительные прерывания. Множество запросов MSI заменяются и отображаются единственным запросом прерывания. Тем не менее, устанавливается один или несколько AIBV и необязательно один или несколько AISB.
Дополнительные подробности преобразования MSI (или другого адаптерного запроса прерывания) в уведомление о генерированном адаптером ввода-вывода событии описаны далее со ссылкой на фиг.4-6Б. В частности, на фиг.4 показана различная осуществляемая инициализация; на фиг.5 показан процесс регистрации; на фиг.6А показана логика преобразования MSI в уведомление о генерированном адаптером событии; и на фиг.6Б показана логика представления уведомления о генерированном адаптером ввода-вывода событии операционной системе.
Как показано на фиг.4, в одном из примеров для преобразования запроса MSI в уведомление о генерированном адаптером ввода-вывода событии осуществляется определенная инициализация. Во время инициализации операционная система выполняет ряд шагов конфигурирования адаптера на уведомление о генерированном адаптером событии посредством запроса MSI. В этом примере конфигурируется функция шины PCI, хотя в других вариантах осуществления это могут быть другие адаптеры, включая функции адаптеров других типов.
В одном из вариантов осуществления сначала на шаге 400 определяются функции шины PCI в конфигурации. В одном из примеров для получения списка функций шины PCI, относящихся к запрашивающей конфигурации (например, относящихся к конкретной операционной системе) используется команда (например, команда запроса списка, передаваемая операционной системой). Эта информация извлекается из структуры данных конфигурации, в которой она содержится.
Затем на шаге 402 выбирается одна из функций шины PCI и определяется адрес MSI, который должен использоваться для функции шины PCI, и число векторов MSI, поддерживаемых функцией шины PCI. Адрес MSI определяется на основании характеристик концентратора ввода-вывода и системы, в которой он установлен. Число поддерживаемых векторов MSI зависит от политики и является конфигурируемым.
Кроме того, на шаге 410 выделяется AIBV, а также AISB, если он имеется. В одном из примеров операционная система определяет местоположение AIBV с целью обеспечения эффективной обработки одного или нескольких адаптеров, обычно исходя из класса адаптера. Например, AIBV для адаптеров памяти могут находиться вблизи друг друга. Выделенные AIBV и AISB очищаются путем установки на нуль, и определяется операция регистрации адаптерного прерывания (например, с использованием команды изменения управления функцией шины PCI). Эта операция служит для регистрации на шаге 412 AIBV, AISB, ISC числа прерываний (векторов MSI) и управления разрешением суммарного уведомления об адаптерном прерывании, как подробнее описано далее. После этого на шаге 414 считывается/записывается конфигурационное пространство функции шины PCI. В частности, записываются показания счетчика адреса MSI и вектора MSI в соответствии предыдущими показаниями.
После этого на шаге 416 запроса определяется, содержатся ли в списке дополнительные функции. Если это так, обработка продолжается на шаге 402. В противном случае, обработка в режиме инициализации завершается.
Дополнительные подробности регистрации различных параметров описаны со ссылкой на фиг.5. Сначала выбирается запись в таблице устройств (DTE), соответствующая функции шины PCI, для которой осуществляется инициализация. Этот выбор делается, например, управляющим программно-аппаратным обеспечением, которое выбирает доступную запись из таблицы устройств. После этого на шаге 502 в записи в таблице устройств сохраняются различные параметры. Например, для ISC, адреса AIBV, смещения AIBV, адреса AISB, смещения AISB, управления разрешением и числа прерываний (N01) устанавливаются значения, полученные в результате конфигурирования функции. На этом процесс регистрации завершается.
В контексте настоящего изобретения аппаратно-программное обеспечение содержит, например, микрокод, милликод и/или макрокод процессора. Оно содержит, например, команды аппаратного уровня и/или структуры данных, используемые при реализации высокоуровневого машинного кода. В одном из вариантов осуществления оно содержит, например, собственный код, который обычно представляет собой микрокод, содержащий выверенное программное обеспечение или характерный для базового аппаратного обеспечения и управляющий доступом операционной системы к аппаратному обеспечению системы.
Когда в процессе работы функция шины PCI желает генерировать MSI, она обычно предоставляет операционной системе определенную информацию, описывающую состояние. Это приводит к выполнению одного или нескольких шагов с целью преобразования генерированного функцией шины PCI запроса MSI в уведомление операционной системы о генерированном адаптером ввода-вывода событии. Это описано со ссылкой на фиг.6A.
Как показано на фиг.6A, сначала на шаге 600 регистрируется описание события, в связи с которым запрашивается прерывание. Например, функция шины PCI регистрирует описание события в одной или нескольких предусмотренных для адаптеров структурах регистрации описаний событий, хранящихся, например, в системной памяти. Может регистрироваться тип события, а также дополнительная информация. Кроме того, на шаге 601 функцией шины PCI инициируется запрос с указанием адреса MSI и номера вектора MSI, а также идентификатора запросчика. Этот запрос принимается концентратором ввода-вывода, который в ответ на шаге 602 использует содержащийся в запросе идентификатор запросчика для определения местонахождения записи в таблице устройств для функции шины PCI. Концентратор ввода-вывода на шаге 603 запроса сравнивает по меньшей мере часть адреса, содержащегося в запросе, со значением в регистре сравнения MSI. Если они неодинаковы, MSI не запрашивается. Тем не менее, если они одинаковы, вместо операции прямого доступа к памяти указан адрес MSI и запрошено MSI.
После этого на шаге 604 запроса определяется, является ли номер вектора MSI, указанный в запросе, меньшим или равным числу прерываний (NOI), допустимому для этой функции. Если номер вектора MSI является большим, чем NOI, сообщается об ошибке. В противном случае, концентратор ввода-вывода задает функцию установки разряда для установки соответствующего разряда AIBV в запоминающем устройстве. Соответствующий разряд определяется на шаге 605 путем сложения номера вектора MSI и смещения AIBV, указанного в записи в таблице устройств, и сдвига этого числа разрядов от адреса AIBV, указанного в записи в таблице устройств. Кроме того, если был указан AISB, концентратор ввода-вывода на шаге 606 использует функцию установки разряда для установки AISB с использованием адреса AISB и смещения AISB, указанного в записи в таблице устройств.
Далее в одном из вариантов осуществления определяется (например, ЦП или концентратором ввода-вывода), ожидает ли уже ответа какой-либо запрос прерывания. Для этого используется индикатор ожидания. Например, на шаге 608 проверяется индикатор 252 ожидания (фиг.2), хранящийся в памяти процессора 254, доступной для процессоров вычислительной среды, которые могут обрабатывать прерывание (например, ЦП 102 на фиг.1). Если он не установлен, его устанавливают (например, на 1) на шаге 610. Если он уже установлен, обработка завершается, и не запрашивается другое прерывание. Соответственно, последующие запросы прерывания охватываются одним уже ожидающим ответа запросом.
В одном из частных примеров может быть предусмотрен один индикатор ожидания для каждого подкласса прерываний, и, соответственно, проверяемым индикатором является индикатор ожидания для подкласса прерываний, соответствующего запрашивающей функции.
Как показано на фиг.6Б, на шаге 640 запроса один или несколько процессоров асинхронно проверяют индикатор ожидания. В частности, каждый процессор, которому разрешен ISC (и зона в другом варианте осуществления), осуществляет опрос с целью обнаружения индикатора ISC, когда, например, этому процессору (т.е. его операционной системе) разрешены прерывания. Если один из процессоров определяет, что индикатор установлен, на шаге 642 он по согласованию с другими процессорами, которым разрешен тот же ISC (и зона в другом варианте осуществления), решает представить прерывание. Если на шаге 640 запроса определено, что индикатор ожидания не установлен, процессоры, которым разрешен ISC, продолжают опрос с целью обнаружения установленного индикатора.
В ответ на представление прерывания операционной системе на шаге 642 операционная система на шаге 643 запроса определяет, зарегистрированы ли какие-либо AISB. Если это не так, операционная система на шаге 645 обрабатывает установленные AIBV, как описано далее. В противном случае операционная система на шагах 644, 645 обрабатывает любые установленные AISB и AIBV. Например, она проверяет, установлены ли какие-либо AISB. Если это так, она использует AISB для определения местонахождения одного или нескольких AIBV. Например, операционная система запоминает местонахождения AISB и AIBV. Кроме того, она запоминает, какой адаптер отображает каждый AISB и AIBV. Соответственно, она может поддерживать своего рода блок управления или другую структуру данных, в которой указаны местонахождения AISB и AIBV и связь между AISB, AIBV и идентификатором адаптеров. Она использует этот блок управления для облегчения определения местонахождения AIBV на основании соответствующего ему AISB. В одном из дополнительных вариантов осуществления AISB не используется. В этом случае для определения местонахождения конкретного AIBV используется блок управления.
После определения местонахождения одного или нескольких AIBV операционная система просматривает AIBV и обрабатывает любые установленные AIBV. Она обрабатывает прерывание способом, соответствующим представленному событию (например, указанному состоянию). Например, в случае адаптера памяти в событие может быть указано, что завершена какая-либо операция. В таком случае операционная система проверяет состояние, сохраненное адаптером, чтобы определить, успешно ли завершена операция, а также уточнить подробности операции. В случае считывания из памяти это служит показателем того, что данные, считанные из адаптера, теперь доступны в системной памяти и могут быть обработаны.
Если в процессе операции преобразования обнаруживается ошибка, в одном из вариантов осуществления вместо преобразования запроса MSI в уведомление о генерированном адаптером событии привлекается внимание системного аппаратно-программного обеспечения.
Далее описаны дополнительные подробности, касающиеся команды изменения управления функцией шины PCI, используемой для регистрации адаптерных прерываний. Как показано на фиг.7A, команда 700 изменения управления функцией шины PCI содержит, например, код 702 операции, указывающий команду изменения управления функцией шины PCI; первое поле 704, указывающее местоположение, в котором находится различная информация, касающаяся функции адаптера, для которой устанавливаются рабочие параметры; и второе поле 706, указывающее местоположение, из которого осуществляется выборка блока информации о функциях шины PCI (FIB). Содержимое местоположений, указанных в полях 1 и 2, дополнительно описано далее.
В одном из вариантов осуществления в поле 1 указан общий регистр, в котором содержится различная информация. Как показано на фиг.7Б, в содержимом регистре содержится, например, дескриптор 710 функции, который идентифицирует функцию адаптера, от имени которого выполняется команда изменения; адресное пространство 712, указывающее адресное пространство в системной памяти, соответствующее функции адаптера, указанной дескриптором функции; управляющая программа 714, которая определяет операцию, выполняемую для функции адаптера; и указатель 716 состояния, который указывает состояние команды при ее выполнении с использованием заданного кода.
В одном из вариантов осуществления дескриптор функции содержит, например, разрешающий индикатор, указывающий, активирован ли дескриптор, номер функции, указывающий функцию адаптера (это статический идентификатор, который может использоваться для индексации в таблице функций); и номер экземпляра, указывающий конкретный экземпляр этого дескриптора функции. Для каждой функции адаптера предусмотрен один дескриптор функции, который используется для определения местонахождения записи в таблице функций (FTE). Каждая запись в таблице функций содержит рабочие параметры и/или другую информацию, связанную с функцией адаптера. В качестве одного из примеров, запись в таблице функций содержит:
номер экземпляра: в этом поле указан конкретный экземпляр дескриптора функции адаптера, соответствующий записи в таблице функций;
индекс 1…n записи в таблице устройств (DTE): может существовать один или несколько индексов таблицы устройств, каждым из которых является индекс в таблице устройств для определения местонахождения записи в таблице устройств (DTE). Для каждой функции адаптера существует одна или несколько записей в таблице устройств, каждая из которых содержит информацию, связанную с функцией адаптера, включая информацию, используемую для обработки запросов функции адаптера (например, запросов DMA, запросов MSI), и информацию, касающуюся запросов, связанных с функцией адаптера (например, команд шины PCI). Каждой записи в таблице устройств соответствует одно адресное пространство в системной памяти, присвоенное функции адаптера. Функция адаптера может иметь одно или несколько адресных пространств в системной памяти, присвоенных функции адаптера;
индикатор занятости: в этом поле указано, занята ли функция адаптера;
индикатор состояния постоянной ошибки: в этом поле указано, находится ли функция адаптера в состоянии постоянной ошибки;
индикатор инициированного восстановления: в этом поле указано, инициировано ли восстановление для функции адаптера;
индикатор полномочий: в этом поле указано, имеет ли операционная система, пытающаяся управлять функцией адаптера, полномочия для этого;
разрешающий индикатор: в этом поле указано, разрешена ли функция адаптера (например, 1=разрешена, 0=заблокирована);
идентификатор запросчика (RID): это идентификатор функции адаптера, содержащий, например, номер шины, номер устройства и номер функции.
В одном из примеров это поле используется для доступа к конфигурационному пространству функции адаптера (память адаптера может быть определена как адресные пространства, содержащие, например, конфигурационное пространство, область ввода-вывода и/или одну или несколько областей памяти). В одном из примеров доступ к конфигурационному пространству может осуществляться путем указания конфигурационного пространства в команде, которую операционная система (или другая конфигурация) передает функции адаптера. В команде указано смещение в конфигурационном пространстве и дескриптор функции, используемый для определения местонахождения соответствующей записи в таблице функций, которая содержит RID. Аппаратно-программное обеспечение принимает команду и определяет, что она предназначена для конфигурационного пространства. Соответственно, для генерирования запроса концентратору ввода-вывода используется RID, а концентратор ввода-вывода создает запрос для доступа к адаптеру. Местоположение функции адаптера определяется на основании RID, а смещение определяет смещение в конфигурационном пространстве функции адаптера.
Индексный регистр (BAR) (1-n): в этом поле содержится множество целых чисел без знака, обозначаемых как BAR0-BARn и соответствующих первоначально заданной функции адаптера, при этом их значения также хранятся в индексных регистрах, соответствующих функции адаптера. В каждом BAR указан начальный адрес области памяти или области ввода-вывода в функции адаптера, а также указан тип адресного пространства, то есть является ли оно, например, 64- или 32-разрядной областью памяти или 32-разрядной областью ввода-вывода.
В одном из примеров он используется для доступа к области памяти и/или области ввода-вывода функции адаптера. Например, смещение, указанное в команде доступа функции адаптера, суммируется со значением в индексном регистре, соответствующем адресному пространству, указанному в команде, чтобы получить адрес для использования с целью доступа к функции адаптера. Идентификатор адресного пространства, содержащийся в команде, идентифицирует адресное пространство в функции адаптера для доступа и соответствующий BAR для использования;
размер 1…n: в этом поле содержится множество целых чисел без знака, обозначаемых как SIZE0 -SIZEn. Значение поля размера, когда оно является ненулевым, отображает размер каждого адресного пространства, при этом каждая запись соответствует ранее описанному BAR.
Далее описаны дополнительные подробности, касающиеся поля BAR и поля размера.
1. Когда для функции адаптера не реализован BAR, значение поля BAR и значение соответствующего ему поля размера в обоих случаях сохраняются как нулевые.
2. Когда в поле BAR представлено пространство адресов ввода-вывода или 32-разрядное адресное пространство памяти, значение соответствующего поля размера является ненулевым и отображает размер адресного пространства.
3. Когда в поле BAR представлено 64-разрядное адресное пространство памяти,
а) в поле BARn представлены младшие разряды адреса;
б) в следующем по порядку поле BARn+1 представлены старшие разряды адреса;
в) значение соответствующего поля SIZEn является ненулевым и отображает размер адресного пространства;
г) значение соответствующего поля SIZEn+1 не является значащим и сохраняется как нулевое.
Информация о внутренней маршрутизации: эта информация используется для осуществления конкретной маршрутизации до адаптера. Она содержит, например, информацию об узлах, микросхемах процессора и адресации концентратора.
Указатель состояния: указывает, например, заблокированы ли операции загрузки/сохранения или находится ли адаптер в состоянии ошибки, а также содержит другую информацию.
В одном из примеров индикатор занятости, индикатор состояния постоянной ошибки и индикатор инициированного восстановления устанавливаются на основании мониторинга, осуществляемого аппаратно-программным обеспечением. Кроме того, индикатор полномочий устанавливается, например, на основании политики; а информация BAR основана на информации о конфигурации, обнаруженной во время прохода шины процессором (например, аппаратно-программным обеспечением процессора). Значения полей могут устанавливаться на основании конфигурации, инициализации и/или событиях. В других вариантах осуществления запись в таблице функций может содержать больше информации или другую информацию. Включаемая информация может зависеть от операций, поддерживаемых или обеспечиваемых функцией адаптера.
Как показано на фиг.7B, в одном из примеров в поле 2 указан логический адрес 720 блока информации о функциях шины PCI (FIB), в котором содержится информация, касающаяся соответствующей функции адаптера. Блок информации о функциях используется для обновления записи в таблице устройств и/или записи в таблице функций (или другом местоположении), связанной с функцией адаптера. Во время инициализации и/или конфигурирования адаптера информация хранится в FIB и/или зависит от конкретных событий.
Дополнительные подробности, касающиеся блока информации о функциях (FIB), описаны со ссылкой на фиг.7Г. В одном из вариантов осуществления блок 750 информации о функциях содержит следующие поля:
поле 751 формата: в этом поле указан формат FIB;
поле 752 управления перехватом: это поле используется, чтобы указывать, приводит ли выполнение конкретных команд гостем со страничной организацией к перехвату команд;
поле 754 указания ошибки: в этом поле содержится указательный разряд состояния ошибки при прямом доступе к памяти и адаптерных прерываниях. Когда установлено значение разряда (например, 1), обнаруживается одна или несколько ошибок во время прямого доступа к памяти или адаптерного прерывания функции адаптера;
поле 756 блокирования загрузки/сохранения: в этом поле указано, заблокированы ли операции загрузки/сохранения;
контрольное 758 поле функция шины PCI: в этом поле содержится программа, разрешающая функцию адаптера. Когда установлено значение разряда (например, 1), считается, что функция адаптера разрешена для выполнения операций ввода-вывода;
поле 760 регистрации адресного пространства: в этом поле содержится программа, разрешающая функции адаптера прямой доступ к памяти. Когда установлено значение разряда (например, 1), разрешается прямой доступ к памяти;
поле 761 размера страницы: в этом поле указан размер страницы или другого блока памяти для доступа посредством DMA;
поле 762 базового адреса шины PCI (РВА): в этом поле содержится базовый адрес для адресного пространства, присвоенного функции адаптера в системной памяти. Он представляет собой низший виртуальный адрес, который разрешено использовать функции адаптера с целью доступа в заданном адресном пространстве DMA;
предел 764 адреса шины PCI (PAL): в этом поле указан высший виртуальный адрес, который разрешено использовать функции адаптера с целью доступа в заданном адресном пространстве DMA;
поле 766 указателя трансляции адреса ввода-вывода (IOAT): указатель трансляции адреса ввода-вывода указывает первую из любых таблиц преобразования, используемых при трансляции виртуального адреса шины PCI, или он может непосредственно указывать кадр запоминающего устройства, получаемый в результате трансляции абсолютного адреса;
поле 768 подкласса прерываний (ISC): в этом поле содержится подкласс прерываний, используемый для представления адаптерных прерываний функции адаптера;
поле 770 числа прерываний (NOI): в этом поле указано число отдельных кодов прерывания, допустимых для функции адаптера. В этом поле также указан размер в разрядах вектора разрядов адаптерного прерывания, который указан в поле адреса вектора разрядов адаптерного прерывания и в полях смещения вектора разрядов адаптерного прерывания;
поле 772 адреса вектора разрядов адаптерного прерывания (AIBV): в этом поле указан адрес вектора разрядов адаптерного прерывания для функции адаптера. Этот вектор используется при обработке прерываний;
поле 774 смещения в векторе разрядов адаптерного прерывания: в этом поле указано смещение первого разряда в векторе разрядов адаптерного прерывания для функции адаптера;
поле 776 адреса суммарного разряда адаптерного прерывания (AISB): в этом поле содержится адрес, указывающий суммарный разряд адаптерного прерывания, который необязательно используется при обработке прерываний;
поле 778 смещения суммарного разряда адаптерного прерывания: в этом поле указано смещение в векторе суммарных разрядов адаптерного прерывания;
поле 780 адреса блока вычислений функции (FMB): в этом поле содержится адрес блока вычислений функции, используемого для сбора данных, касающихся функции адаптера;
поле 782 ключа блока вычислений функции: в этом поле содержится ключ доступа к блоку вычислений функции;
поле 784 управления уведомлением о суммарных разрядах: в этом поле указано, используется ли вектор суммарных разрядов;
поле 786 маркера авторизации команд: это поле используется, чтобы определять, уполномочен ли гость со страничной организацией режима записи в память выполнять команды шины PCI без вмешательства хоста.
В одном из примеров в системе z/Architecture® посредством команды начала выполнения в режиме интерпретации (Start Interpretive Execution) (SIE)) на уровне 2 выполняется гостевая программа со страничной организацией. Например, гипервизор логического разбиения (LPAR) выполняет команду SIE, чтобы начать логическое разбиение в физической постоянной памяти. Если операционной системой при этом логическом разбиении является z/VM®, она передает команду выполнения в режиме интерпретации (SIE) программ своих гостевых (виртуальных) машин в своем V=V (виртуальном) запоминающем устройстве. Соответственно, гипервизор LPAR использует SIE уровня 1, а гипервизор z/VM® использует SIE уровня 2, и
поле 787 формата трансляции адреса: в этом поле указан формат трансляции адреса, выбранный из таблицы преобразования высшего уровня, для использования при трансляции (например, указана таблица высшего уровня (например, таблица сегментов, 3-я область и т.д.)).
Блок информации о функциях, указанный в команде изменения управления функцией шины PCI, используется для изменения выбранной записи в таблице устройств, записи в таблице функций и/или других аппаратно-программных средств управления, соответствующих функции адаптера, указанной в команде. Путем изменения записи в таблице устройств, записи в таблице функций и/или других аппаратно-программных средств управления адаптеру предоставляются определенные услуги. Эти услуги включают, например, адаптерные прерывания; трансляцию адреса; переустановку состояния ошибки; переустановку поля блокирования загрузки/сохранения; установку параметров вычислений функции; и установку управления перехватом.
Далее со ссылкой на фиг.8 описан один из вариантов осуществления логики, соответствующей команде изменения управления функцией шины PCI. В одном из примеров команда передается операционной системой (или другой конфигурацией) и выполняется процессором (например, аппаратно-программным обеспечением), выполняющим операционную систему. В проиллюстрированных примерах команда и функции адаптера основаны на шине PCI. Тем не менее, в других примерах может использоваться отличающаяся архитектура адаптера и соответствующие команды.
В одном из примеров в операционной системе содержатся следующие операнды команды (например, в одном или нескольких регистрах, указанных командой): дескриптор функции шины PCI; идентификатор адресного пространства DMA; управляющая программа; и адрес блока информации о функциях.
Как показано на фиг.8, сначала на шаге 800 запроса определяется, установлено ли средство, рассчитанное на команду изменения управления функцией шины PCI. Это определяется, например, путем проверки индикатора, хранящегося, например, в блоке управления. Если средство не установлено, на шаге 802 распознается исключительная ситуация. В противном случае на шаге 804 запроса определяется, была ли передана команда гостем со страничной организацией режима записи в память (PSM) (или другим гостем). Если это так, на шаге 806 операционная хост-система будет эмулировать работу этого гостя.
В противном случае на шаге 808 запроса определяется, упорядочен один или несколько из операндов. Например, определяется, находится ли адрес блока информации о функциях на границе двойного слова. В одном из примеров это необязательно. Если операнды не упорядочены, на шаге 810 распознается исключительная ситуация. В противном случае на шаге 812 запроса определяется, доступен ли блок информации о функциях (FIB). Если это не так, на шаге 814 распознается исключительная ситуация. В противном случае на шаге 816 запроса определяется, разблокирован ли дескриптор, содержащийся в операндах команды изменения управления функцией шины PCI. В одном из примеров это определяется путем проверки разрешающего индикатора в дескрипторе. Если дескриптор не разблокирован, на шаге 818 распознается исключительная ситуация.
Если дескриптор разблокирован, на шаге 820 дескриптор используется для определения местонахождения записи в таблице функций. Иными словами, по меньшей мере часть дескриптора используется в качестве индекса в таблице функций с целью определения местонахождения записи в таблице функций, соответствующей функции адаптера, для которой должны быть установлены рабочие параметры.
На шаге 822 запроса определяется, найдена ли запись в таблице функций. Если это не так, на шаге 824 распознается исключительная ситуация. В противном случае, если на шаге 826 запроса определено, что конфигурацией, передающей команду, является гость, на шаге 828 распознается исключительная ситуация (например, прерывание на хосте). Этот запрос может не учитываться, если конфигурацией не является гость, или могут проверяться другие полномочия, если они указаны.
Далее на шаге 830 запроса определяется, разблокирована ли функция. В одном из примеров это определяется путем проверки разрешающего индикатора в записи в таблице функций. Если она не разблокирована, на шаге 832 распознается исключительная ситуация.
Если функция разблокирована, на шаге 834 запроса определяется, инициировано ли восстановление. Если восстановление инициировано, на что указывает индикатор восстановления в записи в таблице функций, на шаге 836 распознается исключительная ситуация. Тем не менее, если восстановление не инициировано, на шаге 838 запроса дополнительно определяется, занята ли функция. Это определяется путем проверки индикатора занятости в записи в таблице функций. Если функция занята, на шаге 840 распознается состояние занятости. В случае состоянии занятости вместо отбрасывания команды может быть повторена попытка ее выполнения.
Если функция не занята, на шаге 842 запроса дополнительно определяется, достоверен ли формат блока информации о функциях. Например, проверяется поле формата FIB, чтобы определить, поддерживается ли формат системой. Если он недостоверен, на шаге 844 распознается исключительная ситуация. Если формат блока информации о функциях достоверен, на шаге 846 запроса дополнительно определяется, достоверна ли управляющая программа, указанная в операндах команды. Иными словами, является ли управляющая программа одной из управляющих программ, указанных для этой команды. Если она недостоверна, на шаге 848 распознается исключительная ситуация. Тем не менее, если управляющая программа достоверна, обработка продолжается с использованием указанной конкретной управляющей программы.
В одном из примеров управляющей программой является операция регистрации адаптерных прерываний, которая используется для управления адаптерными прерываниями. С помощью этой управляющей программы параметры функции адаптера, имеющие отношение к адаптерным прерываниям, устанавливаются в записи в таблице устройств на основании соответствующего содержания блока информации о функциях.
Далее со ссылкой на фиг.9 описан один из вариантов осуществления логики, соответствующей этой операции. В качестве одного из примеров, операнды для этой операции, которые получают от блока информации о функциях, включают, в частности: подкласс прерываний (ISC); разрешенное число прерываний (N01); смещение вектора разрядов адаптерного прерывания (AIBVO); суммарное уведомление (S); смещение вектора суммарного разряда адаптерного прерывания (ABVSO); адрес вектора разрядов адаптерного прерывания (AIBV); и адрес вектора суммарного разряда адаптерного прерывания (AISB).
Как показано на фиг.9, сначала на шаге 900 запроса определяется, превышает ли число прерываний (NOI), указанное в FIB, зависящий от модели максимум. Если это так, на шаге 902 распознается исключительная ситуация. Тем не менее, если число прерываний не превышает зависящий от модели максимум, на шаге 904 запроса дополнительно определяется, превышает ли число прерываний в сумме со смещением вектора разрядов адаптерного прерывания (NOI+AIBVO) зависящий от модели максимум. Если это так, на шаге 906 распознается исключительная ситуация. Если сумма NOI и AIBVO не превышает зависящий от модели максимум, на шаге 908 запроса дополнительно определяется, перекрывает ли адрес AIBV плюс NOI 4-килобайтовую границу. Если это так, на шаге 910 распознается исключительная ситуация. В противном случае, на шаге 912 определяется, имеются ли достаточные ресурсы из числа любых необходимых ресурсов. Если достаточных ресурсов не имеется, на шаге 914 распознается исключительная ситуация.
В противном случае, на шаге 916 определяется, зарегистрированы ли уже адаптерные прерывания для этой функции. В одном из вариантов осуществления это определяется путем проверки одного или нескольких из параметров (например, в DTE/FTE). В частности, проверяются связанные с прерываниями параметры, такие как NOI. Если поля заполнены, то адаптер для осуществления прерываний. Если адаптер уже зарегистрирован, на шаге 918 распознается исключительная ситуация. В противном случае получают от FIB параметры прерывания и помещают их в запись в таблице устройств и необязательно в соответствующую запись в таблице функций (FTE) (или другое заданное местоположение). На шаге 920 в DTE также устанавливается разрешающий индикатор MSI. Иными словами, на основании информации, извлеченной из блока информации о функциях, в DTE и необязательно FTE устанавливаются параметры функции шины PCI, относящиеся к адаптерному прерыванию. Эти параметры включают, в частности, ISC, NOI, AIBVO, S, AIBVSO, адрес AIBV и адрес AISB.
В дополнение к сказанному, другой управляющей программой, которая может быть указана, является операция отмены регистрации адаптерных прерываний, один из примеров которой описан со ссылкой на фиг.10. С помощью этой операции переустанавливаются параметры функции адаптера, относящиеся к адаптерному прерыванию.
Как показано на фиг.10, сначала на шаге 1000 запроса определяется, зарегистрирован ли адаптер, указанный дескриптором функции, для осуществления прерываний. Если это не так, на шаге 1002 распознается исключительная ситуация. В противном случае на шаге 1004 запроса параметры прерывания в запись в таблице функций (или другом местоположении) и соответствующая запись в таблице устройств устанавливают на нуль. В одном из примеров эти параметры включают ISC, NOI, AIBVO, S, AIBSO, адрес AIBV и адрес AISB.
Как описано выше, для получения информации функции адаптера в одном из вариантов осуществления используется команда вызова логического процессора. Один из вариантов осуществления этой команды проиллюстрирован на фиг.11A. Как показано, в одном из примеров команда 1100 вызова логического процессора (CLP) содержит код 1102 операции, указывающий, что она является командой вызова логического процессора, и указатель команды 1104. В одном из примеров этим указателем является адрес блока запроса, который описывает команда для выполнения, при этом информация в блоке запроса зависит от команды. Примеры блоков запроса и соответствующих блоков ответа для различных команд описаны со ссылкой на фиг.11Б-13Б.
Рассмотрим сначала фиг.11Б, на которой проиллюстрирован блок запроса для команды формирования списка функций шины PCI. Команда формирования списка функций шины PCI используется для получения списка функций шины PCI, которые соответствуют запрашивающей конфигурации (например, запрашивающей операционной системе). Блок 1120 запроса содержит ряд параметров, таких как, в частности:
поле 1122 длины: в этом поле указана длина блока запроса,
поле 1124 кода команды: в этом поле указана команды формирования списка функций шины PCI, и
поле 1126 возобновления маркера: это поле является целым числом, которое используется для начала выполнения новой команды формирования списка функций шины PCI или возобновления выполнения предыдущей команды формирования списка функций шины PCI, как подробнее описано далее.
Когда в поле возобновления маркера в блоке запроса команд содержится, в частности, нулевое значение, запрашивается новый список функций шины PCI.
Когда в поле возобновления маркера, в частности, ненулевое значение, которое извлечено из предыдущей команды формирования списка функций шины PCI, запрашивается продолжение предыдущего списка функций шины PCI.
В ответ на передачу и обработку команды вызова логического процессора для команды формирования списка функций шины PCI передается блок ответа. Один из вариантов осуществления блока ответа проиллюстрирован на фиг.11B. В одном из примеров блок 1150 ответа для команды формирования списка функций шины PCI содержит:
поле 1152 длины: в этом поле указана длина блока ответа;
поле 1154 кода ответа: в этом поле указано состояние команды;
поле 1156 списка функций шины PCI: в этом поле указан список из одной или нескольких функций шины PCI, доступных для запрашивающей операционной системы;
поле 1158 возобновления маркера: в этом поле указано, запрашивается ли продолжение предыдущего списка функций шины PCI. В одном из примеров, когда поле возобновление маркера в блоке запроса и поле возобновление маркера в блоке ответа имеют нулевое значение, все функции шины PCI, соответствующие запрашивающей конфигурации, представлены в списке функций шины PCI; если поле возобновление маркера в блоке запроса содержит нулевое значение, а поле возобновления маркера в блоке ответа содержит ненулевое значение, могут существовать дополнительные функции шины PCI, соответствующие запрашивающей конфигурации, которые не были представлены в списке; если поле возобновления маркера в блоке запроса содержит ненулевое значение, а поле возобновления маркера в блоке ответа содержит нулевое значение, в списке представлены, начиная с момента возобновления, остающиеся функции шины PCI, соответствующие запрашивающей конфигурации; когда поля возобновления маркера как в блоке запроса, так и в блоке ответа содержат, начиная с момента возобновления, ненулевое значение, могут существовать дополнительные функции шины PCI, соответствующие запрашивающей конфигурации, которые не были представлены ни в одном соответствующем списке функций шины PCI. Поле возобновление маркера является действительным в течение неопределенного времени после получения, но может являться недействительным по разнообразным зависящим от модели причинам, включая истечение времени загрузки системы;
поле 1160 зависящих от моделей данных: в этом поле содержатся данные, которые зависят от системы;
поле 1162 числа функций шины PCI: в этом поле указано максимальное число функций шины PCI, поддерживаемых средством, и
поле 1164 размера записи: в этом поле указан размер каждой записи в списке функций шины PCI.
Дополнительные подробности, касающиеся списка функций шины PCI, описаны со ссылкой на фиг.11Г. В одном из примеров список функций шины PCI содержит множество записей, при этом в каждой записи 1156 содержится следующая информация, такая как, например:
поле 1170 идентификатора устройства: в этом поле указан адаптер ввода-вывода, относящийся к соответствующей функции шины PCI;
поле 1172 идентификатора изготовителя: в этом поле указан изготовитель адаптер ввода-вывода, относящегося к соответствующей функции функций шины PCI;
поле 1174 идентификатора функции: в этом поле содержится постоянный идентификатор функции шины PCI;
поле 1176 дескриптора функции: в этом поле указана функция шины PCI. Хранящимся дескриптором функции шины PCI является общий дескриптор, когда заданный разряд дескриптора равен нулю, и разрешенный дескриптор, когда разряд равен единице. Если функция шины PCI выключена, хранится общий дескриптор функции шины PCI. Если функция шины PCI включена, хранится разрешенный дескриптор функции шины PCI. В одном из примеров дескриптор функции шины PCI не является постоянным вне IPL в отличие от идентификатора функции шины PCI, который является постоянным и установлен на заданный срок службы конфигурации ввода-вывода; и
поле 1178 состояния конфигурации: в этом поле указано состояние функции шины PCI. Когда значением этого индикатора является ноль, состоянием является состояние ожидания, а когда единица, состоянием является сконфигурированное состояние. В состоянии ожидания дескриптором функции шины PCI является общий дескриптор функции шины PCI, а в сконфигурированном состоянии им является общий или разрешенный дескриптор функции шины PCI в зависимости от того, включена ли функция шины PCI.
После получения списка функций адаптера может быть получена информация, касающаяся атрибутов выбранной функции, указанных заданным дескриптором функции шины PCI. Эта информация может быть получена путем передачи команды CLP с командой запроса функции.
Далее со ссылкой на фиг.12А описан один из вариантов осуществления блока запроса для команды запроса функции шины PCI. В одном из примеров блок 1200 запроса содержит, в частности:
поле 1202 длины: в этом поле указана длина блока запроса;
поле 1204 кода команды: в этом поле указана команды запроса функции шины PCI; и
поле 1206 дескриптора функции: в этом поле содержится дескриптор функции шины PCI (например, общий или разрешенный), указывающий функцию шины PCI, которая должна быть запрошена.
В ответ на передачу команды вызова логического процессора для команды запроса функции шины PCI передается блок ответа. Один из вариантов осуществления блока ответа проиллюстрирован на фиг.12Б. В одном из примеров блок 1250 ответа содержит следующее:
поле 1252 длины: в этом поле указана длина блока ответа;
поле 1254 кода ответа: в этом поле указано состояние команды;
поле 1256 идентификатора группы функций: в этом поле указан идентификатор группы функций шины PCI. Идентификатор группы функций шины PCI используется для привязки группы функций шины PCI к набору атрибутов (также называемых в описании характеристиками). Все функции шины PCI с одинаковым идентификатором группы функций шины PCI имеют одинаковый набор атрибутов;
поле 1258 идентификатора функции: идентификатор функции шины PCI является постоянным идентификатором функции шины PCI, который изначально задан дескриптором функции тины PCI и установлен на заданный срок службы конфигурации ввода-вывода;
поле 1260 адаптера физического канала: значение этого поля отображает зависящий от модели идентификатор местоположения физического адаптер ввода-вывода, который соответствует функции шины PCI;
поле 1262 индексных регистров (BAR) (1-n): в этом поле содержится множество целых чисел без знака, обозначаемых как BAR0-BARn и соответствующих первоначально заданной функции шины PCI, при этом их значения также хранятся в индексных регистрах, соответствующих функции шины PCI. В каждом BAR указан начальный адрес области памяти или области ввода-вывода в адаптере, а также указан тип адресного пространства, то есть является ли оно, например, 64- или 32-разрядной областью памяти или 32-разрядной областью ввода-вывода;
поле 1264 размера 1…n: в этом поле содержится множество целых чисел без знака, обозначаемых как SIZE0-SIZEn. Значение поля размера, когда оно является ненулевым, отображает размер каждого адресного пространства, при этом каждая запись соответствует ранее описанному BAR;
поле 1266 начала доступного DMA: в этом поле содержится адрес, указывающий начало области адресов шины PCI, доступных для операций DMA;
поле 1268 окончания доступного DMA: в этом поле содержится значение, указывающее окончание области адресов шины PCI, доступных для операций DMA.
Помимо атрибутов, касающихся конкретной функции адаптера, также могут быть получены атрибуты, касающиеся группы, в которую входит эта функция. Эти общие атрибуты могут быть получены путем передачи команды CLP с командой запроса группы функций шины PCI. Эта команда используется для получения набора характеристик, которые поддерживаются для группы из одной или нескольких функций шины PCI, указанных заданным идентификатором группы функций шины PCI. Идентификатор группы функций шины PCI используется для объединения группы функций шины PCI с одинаковым набором характеристик. Один из вариантов осуществления блока запроса для команды запроса группы функций шины PCI описан со ссылкой на фиг.13A. В одном из примеров блок запроса 1300 содержит следующее:
поле 1302 длины: в этом поле указана длина блока запроса;
поле 1304 кода команды: в этом поле указана команда запроса группы функций шины PCI; и
поле 1306 идентификатора группы функций: в этом поле указан идентификатор группы функций шины PCI, для которых должны быть получены атрибуты.
В ответ на передачу и обработку команды вызова логического процессора для команды запроса группы функций шины PCI передается блок ответа. Один из вариантов осуществления блока ответа проиллюстрирован на фиг.13Б. В одном из примеров блок 1350 ответа содержит:
поле 1352 длины: в этом поле указана длина блока ответа;
поле 1354 кода ответа: в этом поле указано состояние команды;
поле 1356 числа прерываний: в этом поле указано максимальное число последовательных номеров векторов MSI (т.е. индикаторов события прерывания), которое поддерживается шиной PCI для каждой функции шины PCI в заданной группе функций шины PCI. В одном из примеров возможные допустимые значения числа прерываний находятся в интервале от нуля до 2048;
поле 1358 версии: в этом поле указана версия спецификации на шину PCI, которая поддерживается шиной PCI, к которой относится группа функций шины PCI, указанных заданным идентификатором группы функций шины PCI;
поле 1362 кадра: в этом поле указаны размеры кадра (или страницы), которые поддерживаются при трансляции адреса ввода-вывода;
поле 1364 интервала обновления измерительного блока: в этом поле содержится значение, указывающее приблизительный временной интервал (например, в миллисекундах) обновления измерительного блока функции шины PCI;
поле 1366 маски адресного пространства DMA: в этом поле содержится значение, используемое для указания того, какие разряды в адресе шины PCI используются для идентификации адресного пространства DMA; и
поле 1368 адреса MSI: в этом поле содержится значение, которое должно использоваться для запросов инициируемых сообщениями прерываний.
С помощью описанных выше команд запроса списка и функций извлекается информация, например, из таблицы функций. В момент инициализации или после "горячей" коммутации адаптера аппаратно-программное обеспечение осуществляет проход шины, чтобы определить местонахождение адаптера, и определяет его базовые характеристики. Аппаратно-программное обеспечение сохраняет эту информацию в записи в таблице функций (FTE) для каждого адаптера. Доступность адаптера определяется, исходя из политики, установленной системным администратором, и также указывается аппаратно-программным обеспечением в FTE. Затем с помощью команд запроса списка и функций эта информация может быть извлечена и сохранена в соответствующих блоках ответа, доступных для операционной системы.
Кроме того, информация о группах основана на заданной инфраструктуре ввода-вывода системы и возможностях аппаратно-программного обеспечения и концентратора ввода-вывода. Она может храниться в FTE или любом другом удобном местоположении для дальнейшей выборки во время обработки запроса. В частности, информация извлекается с помощью команды запроса группы функций и сохраняется в блоке ответа, доступном для операционной системы.
Выше было подробно описано средство преобразования инициируемого сообщениями прерывания шины PCI в уведомление операционной системы о генерированном адаптером ввода-вывода событии. Оно обеспечивает запрос прерывания с малым временем ожидания; доставку MSI от относительно большого числа функций шины PCI операционной системе; и сохранение "изюминки" указания вектора MSI с возможностью встраивания MSI в архитектуру уведомления о генерированном адаптером событии. Оно приспособлено к тому, чтобы концентратор ввода-вывода мог подсоединяться к относительно большому числу функций шины PCI, и устраняет затруднение, связанное с осуществлением каждый раз записи в вектор MSI, генерирующий единое прерывание.
В описанных вариантах осуществления адаптерами являются адаптеры на основе шины PCI. В контексте настоящего изобретения шина PCI означает любые адаптеры, реализованные согласно спецификации на шины PCI, установленной Специальной группой по межсоединению периферийных компонентов (PCI-SIG), включая без ограничения шины PCI или PCIe. В одном из частных примеров шина PCI Express (PCIe) является стандартом межсоединений на уровне компонентов, определяющим протокол двусторонней связи для транзакций между адаптерами ввода-вывода и хост-системами. Связь посредством шины PCIe оформлена в пакеты согласно стандарту PCIe на передачу посредством шины PCIe. Транзакции, исходящие из адаптеров ввода-вывода и заканчивающиеся в хост-системах, именуются восходящими транзакциями. Транзакции, исходящие из хост-систем и заканчивающиеся в адаптерах ввода-вывода, именуются нисходящими транзакциями. Топология шины PCIe основана на двухточечных однонаправленных каналах, которые объединены в пары (например, из одного канала восходящей связи и одного канала нисходящей связи), образующие шину PCIe. Стандарт PCIe определяется и публикуется PCI-SIG.
Как учтут специалисты в данной области техники, особенности настоящего изобретения могут быть воплощены в виде системы, способа или компьютерного программного продукта. Соответственно, особенности настоящего изобретения могут принимать форму целиком аппаратного варианта осуществления, целиком программного варианта осуществления (содержащего аппаратно-программное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или варианта осуществления, сочетающего программные и аппаратные особенности, которые все могут в целом именоваться в описании "схемой", "модулем" или "системой". Кроме того, особенности настоящего изобретения могут принимать форму компьютерного программного продукта, воплощенного в одной или нескольких машиночитаемых сред, в которых воплощен машиночитаемый программный код.
Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая запоминающая среда. Машиночитаемой запоминающей средой может являться, например, без ограничения электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, аппаратура или устройство или любое применимое сочетание перечисленного. Более конкретные примеры (неисчерпывающий список) машиночитаемой запоминающей среды включают: электрическое соединение, содержащее один или несколько проводов, портативный компьютерный диск, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ или флэш-память), оптическое волокно, портативное постоянное запоминающее устройство на компакт-диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое применимое сочетание перечисленного. В контексте настоящего документа машиночитаемой запоминающей средой может являться любая материальная среда, в которой содержится или хранится программа для использования системой, аппаратурой или устройством выполнения команд или применительно к ним.
Как показано на фиг.14, в одном из примеров компьютерный программный продукт 1400 содержит, например, одну или несколько машиночитаемых запоминающих сред 1402 для хранения в них машиночитаемого программного кода или логики 1404 для обеспечения и реализации одной или нескольких особенностей настоящего изобретения.
Программный код, воплощенный в машиночитаемой среде, может передаваться с использованием соответствующей среды, включая без ограничения беспроводную, проводную среду, оптоволоконный кабель, ВЧ-среду и т.д. или любое применимое сочетание перечисленного.
Компьютерный программный код для выполнения операций, обеспечивающих особенности настоящего изобретения, может быть записан на одном или нескольких языках программирования в любом сочетании, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционных процедурных языках программирования, таких как "C" и языки ассемблера или аналогичные языки программирования. Программный код может целиком выполняться в пользовательском компьютере, частично в пользовательском компьютере, в качестве автономного пакета программного обеспечения, частично в пользовательском компьютере и частично в удаленном компьютере или целиком в удаленном компьютере или сервере. В случае последнего сценария удаленный компьютер может быть соединен с пользовательским компьютером посредством сети любого типа, включая локальную вычислительную сеть (ЛВС) или глобальную вычислительную сеть (ГВС), или может быть установлено соединение с внешним компьютером (например, по сети Интернет с использованием поставщика услуг Интернет).
Особенности настоящего изобретения описаны со ссылкой на структурные схемы и/или блок-схемы способов, оборудования (систем) и компьютерных программных продуктов согласно вариантам осуществления изобретения. Подразумевается, что каждый блок на структурных схемах и/или блок-схемах и сочетания блоков на структурных схемах и/или блок-схемах могут быть реализованы посредством команд управления компьютерной программой. Эти команды управления компьютерной программой могут передаваться процессору универсального компьютера, специализированного компьютера или другой программируемой аппаратуры для обработки данных с целью формирования механизма, в котором команды, выполняемые посредством процессора компьютера или другого программируемого оборудования обработки данных, создают средство реализации функций/действий, обозначенных блоком или блоками на структурных схемах и/или блок-схемах.
Эти команды управления компьютерной программой также могут храниться в машиночитаемой среде, которая способна предписывать компьютеру, другому программируемому оборудованию обработки данных или другим устройствам действовать конкретным способом, в результате чего команды, хранящиеся на машиночитаемом носителе, формируют продукт, содержащий команды, в которых реализуется функция/действие, обозначенное блоком или блоками на структурных схемах и/или блок-схемах.
Команды управления компьютерной программой также могут загружаться в компьютер, другое программируемое оборудование обработки данных или другие устройства, чтобы инициировать выполнение последовательности оперативных шагов компьютером, другим программируемым оборудованием или другими устройствами с целью формирования реализованного в компьютере процесса, при этом команды, выполняемые компьютером или другим программируемым оборудованием, обеспечивают процессы реализации функций/действий, обозначенных блоком или блоками на структурных схемах и/или блок-схемах.
Приведенные на чертежах структурные схемы и блок-схемы иллюстрируют архитектуру, функциональные возможности и действие возможных вариантов реализации систем, способов и компьютерных программных продуктов согласно различным вариантам осуществления настоящего изобретения. В связи с этим каждым блоком на структурных схемах или блок-схемах может быть представлен определенный модуль, сегмент или часть кода, которая содержит одну или несколько выполняемых команд для реализации заданной логической функции(-й). Следует также отметить, что в некоторых альтернативных вариантах реализации указанные в блоке функции могут выполняться не в том порядке, в котором они представлены на чертежах. Например, функции, указанные двумя последовательно показанными блоками, в действительности, могут выполняться преимущественно одновременно, или функции иногда могут выполняться в обратном порядке в зависимости от соответствующих функциональных возможностей. Следует также отметить, что каждый блок на блок-схемах и/или структурных схемах и сочетания блоков на блок-схемах и/или структурных схемах могут быть реализованы посредством специализированных аппаратных систем, выполняющих заданные функции или действия, или посредством сочетаний специализированных аппаратных систем и компьютерных команд.
Помимо вышесказанного, одна или несколько особенностей настоящего изобретения могут обеспечиваться, предлагаться, применяться, координироваться, обслуживаться и т.д. поставщиком услуг, который предлагает управление пользовательскими средами. Например, поставщик услуг способен создавать, вести, поддерживать и т.д. для одного или нескольких пользователей машинный код и/или вычислительную инфраструктуру, в которой выполняется одна или несколько особенностей настоящего изобретения. В ответ поставщик услуг может получать оплату от пользователя на основании соглашения о подписке и/или абонентской плате в качестве примеров. Дополнительно или в качестве альтернативы, поставщик услуг может получать плату за рекламное содержание, продаваемое одному или нескольким третьим лицам.
Согласно одной из особенностей настоящего изобретения для выполнения одной или нескольких особенностей настоящего изобретения может быть развернуто приложение. В качестве одного из примеров, развертывание приложения включает использование вычислительной инфраструктуры, способной выполнять одну или несколько особенностей настоящего изобретения.
В качестве одной из дополнительных особенностей настоящего изобретения развертывание вычислительной инфраструктуры может включать интегрирование машиночитаемого кода в вычислительную систему, при этом код в сочетании с вычислительной системой способен выполнять одну или несколько особенностей особенности настоящего изобретения.
В качестве еще одной дополнительной особенности настоящего изобретения может быть предложен способ интегрирования вычислительной инфраструктуры, включающий интегрирование машиночитаемого кода в компьютерную систему. Компьютерная система содержит машиночитаемую среду, содержащую одну или несколько особенностей настоящего изобретения. Код в сочетании с компьютерной системой способен выполнять одну или несколько особенностей особенности настоящего изобретения.
Хотя выше описаны различные варианты осуществления, они являются лишь примерами. Например, одна или несколько особенностей настоящего изобретения могут содержаться и использоваться в вычислительных средах других архитектур. Например, одна или несколько особенностей настоящего изобретения могут содержаться, использоваться и/или быть полезными в отличающихся от серверов System z® серверах, таких как серверы Power Systems или другие серверы, предлагаемые International Business Machines Corporation, или одна или несколько особенностей настоящего изобретения могут содержаться, использоваться и/или быть полезными в серверах других компаний. Кроме того, хотя в приведенном в описании примере адаптеры и концентратор шины PCI считаются частью сервера, в других вариантах осуществления они необязательно должны считаться частью сервера, и могут просто считаться связанными с системной памятью и/или другими компонентами вычислительной среды. Вычислительной средой необязательно является сервер. К тому же, хотя адаптеры основаны на шине PCI, одна или несколько особенностей настоящего изобретения применимы с использованием других адаптеров или других компонентов ввода-вывода. Адаптер и адаптер на основе шины PCI являются лишь примерами. Кроме того, одна или несколько особенностей настоящего изобретения применимы к другим схемам прерывания помимо MSI шины PCI. Помимо этого, несмотря на описанные примеры, в которых устанавливаются разряды, в других вариантах осуществления, могут устанавливаться байты или индикаторы другого типа. Более того, в DTE может содержаться больше, меньше или другая информация. Возможно множество других разновидностей.
Кроме того, одна или несколько особенностей настоящего изобретения могут выгодно применяться в вычислительных средах других типов. В качестве примера, может использоваться система обработки данных, применимая для хранения и/или выполнения программного кода и содержащая по меньшей мере два процессора, прямо или косвенно связанных системной шиной с элементами памяти. Элементы памяти включают, например, локальную память, применяемую во время фактического выполнения программного кода, массовую память и кэш-память, которая обеспечивает временное хранение по меньшей мере части программного кода для уменьшения необходимого числа случаев извлечения кода из массовой памяти во время выполнения.
С системой прямой или косвенно посредством промежуточных контроллеров ввода-вывода могут быть связаны устройства ввода-вывода (включая без ограничения, клавиатуры, дисплеи, координатно-указательные устройства, ЗУПД, накопители на магнитной ленте, на компакт-дисках, на многоцелевых компакт-дисках, портативные миниатюрные накопители на жестких дисках и другие запоминающие среды и т.д.). С системой также могут быть связаны сетевые адаптеры, позволяющие системе обработки данных устанавливать связь с другими системами обработки данных или удаленными принтерами или запоминающими устройствами посредством промежуточных частных или общедоступных сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь несколькими из сетевых адаптеров доступных типов.
Рассмотрим фиг.15, на которой представлены характерные компоненты хост-компьютерной системы 5000 для реализации одной или нескольких особенностей настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько ЦП 5001, поддерживающих связь с памятью (т.е. центральной памятью) 5002 компьютера, а также интерфейсы ввода-вывода с запоминающими устройствами 5011 и сетями 5010 для связи с другими компьютерами или SAN и т.п. ЦП 5001 совместим с архитектурой, содержащей структурированный набор команд и структурированные функциональные возможности. ЦП 5001 может выполнять динамическую трансляцию 5003 адреса (DAT) с целью трансляции адресов программ (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 5007 быстрого преобразования адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш-память 5009. Кэш-память 5009 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном из вариантов осуществления блок 5004 выборки команд вызывает из памяти 5002 команду посредством кэш-памяти 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения команд, например, блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 5002, блок 5005 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.
Как было отмечено, в локальном (или основном) запоминающем устройстве компьютерной системы хранится информация, а также адресные, защитные, контрольные и корректирующие записи. Некоторые особенности адресации включают формат адресов, концепцию адресных пространств, различные типы адресов и то, каким образом адрес одного типа преобразуется в адрес другого типа. Некоторые из основных запоминающих устройств имеют постоянно абонированные ячейки. Основное запоминающее устройство обеспечивает систему запоминающим устройством с прямой адресацией и быстрой выборкой данных. В основное запоминающее устройство должны загружаться (из устройств ввода) как данные, так и программы, после чего они могут обрабатываться.
Основное запоминающее устройство может содержать одно или несколько буферных запоминающих устройств меньшей емкости с более быстрой выборкой, иногда называемых кэшами. Кэш обычно физически связан с ЦП или процессором ввода-вывода. Физическая конструкция и использование различных запоминающих сред в целом не сказывается на программе за исключением производительности.
Для команд и операндов, хранимых в памяти, могу быть предусмотрены раздельные кэши. Информация содержится в кэше в форме непрерывных байтов на целочисленной границе, называемой блоком или строкой данных кэша (или для краткости строкой). Согласно одной из моделей может быть предусмотрена команда извлечения атрибута кэша (EXTRACT CACHE ATTRIBUTE), которая выдает размер строки кэша в байтах. Согласно одной из моделей также может быть предусмотрена команда упреждающей выборки данных (PREFETCH DATA) и команда упреждающей выборки данных относительно большой длины (PREFETCH DATA RELATIVE LONG) для упреждающей выборки данных из запоминающего устройства в кэш данных или команд или для высвобождения данных из кэша.
Запоминающее устройство рассматривается как длинная горизонтальная битовая строка. В случае большинства операций доступ к запоминающему устройству последовательно осуществляется слева направо. Битовая строка подразделяется на блоки из восьми разрядов. Восьмиразрядный блок называется байтом и является базовым конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется однозначно определяемым неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют идущие подряд адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой двоичные целые числа без знака, содержащие 24, 31 или 64 разряда.
Обмен информацией между запоминающим устройством и ЦП или канальной подсистемой осуществляется путем передачи одного байта или группы байтов за один раз. Если не оговорено иное, например, в системе z/Architecture® хранящаяся группа байтов адресуется посредством крайнего левого байта из группы. Число байтов в группе подразумевается или прямо оговаривается выполняемой операцией. Используемая в работе ЦП группа байтов называется полем. Разряды в каждой группе байтов, например, в системе z/Architecture® последовательно нумеруются слева направо. Крайние левые разряды в z/Architecture® иногда именуются "старшими" разрядами, а крайние правые разряды - "младшими" разрядами. Тем не менее, номера разрядов не являются адресами ячеек запоминающего устройства. Возможна только адресация байтов. Чтобы оперировать с отдельными разрядами хранящегося байта, осуществляется доступ ко всему байту. Разряды в байте пронумерованы слева направо от 0 до 7 (например, в системе z/Architecture®). Разряды в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-разрядных адресов или от 1 до 31 или от 33 до 63 в случае 31-разрядных адресов и от 0 до 63 в случае 64-разрядных адресов. В любом другом имеющем фиксированную длину формате из множества байтов разряды, образующие формат, последовательно пронумерованы, начиная с 0. В целях обнаружения ошибок и предпочтительно их исправления с каждым байтом или группой байтов может передаваться один или несколько контрольных разрядов. Такие контрольные разряды генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда кодом операций команды подразумевается длина хранящегося поля операнда, считается, что поле имеет фиксированную длину, которая может составлять 1, 2, 4, 8 или 16 байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, считается, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине с шагом в 1 байт (или в случае некоторых команд с шагом в 2 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути доступа к запоминающему устройству может превышать длину сохраняемого поля.
Некоторые хранящиеся единицы информации должны находиться на целочисленной границе. Применительно к единице информации граница называется целочисленной, когда адрес ее ячейки запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтам на целочисленной границе даются особые названия. Полуслово является группой из 2 идущих подряд байтов на двухбайтовой границе и представляет собой базовый конструктивный блок команд. Слово является группой из 4 идущих подряд байтов на четырехбайтовой границе. Двойное слово является группой из 8 идущих подряд байтов на 8-байтовой границе. Учетверенное слово является группой из 16 идущих подряд байтов на 16-байтовой границе. Когда в адресах ячеек запоминающего устройства указаны полуслова, слова, двойные слова и учетверенные слова, в двоичном представлении адреса содержится один, два, три или четыре крайних правых нулевых разряда соответственно. Команды должны находиться на двухбайтовых целочисленных границах. Хранящиеся операнды большинства команд не содержат требования размещения на границах.
В устройствах, в которых реализованы раздельные кэши для команд и операндов, хранимых в памяти, могут происходить значительные задержки, если программа сохраняется в строке кэша, из которой впоследствии осуществляется выборка команд, независимо от того, изменяются ли при сохранении команды, выборка которых впоследствии осуществляется.
В одном из вариантов осуществления изобретение может быть реализовано на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с настоящим изобретением). Как показано на фиг.15, обычно процессор 5001 хост-системы 5000, получает доступ к программному коду системы программного обеспечения, в котором воплощено настоящее изобретение, посредством долговременных запоминающих сред 5011, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 5002 компьютера или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для применения пользователями таких других систем.
Программный код включает операционную систему, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ. Обычно подкачка страниц программного кода осуществляется из запоминающей среды 5011 в относительно быстродействующее запоминающее устройство 5002, в котором он доступен для обработки процессором 5001. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.), часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться цепью обработки данных предпочтительно в компьютерной системе для выполнения цепью обработки данных.
На фиг.16 проиллюстрирована характерная рабочая станция или аппаратная серверная система, в которой может быть на практике реализовано настоящее изобретение. В показанную на фиг.16 систему 5020 входит характерная базовая компьютерная система 5021, такая как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину для соединения процессора(-ов) 5026 и других компонентов системы 5021 и обеспечения связи между ними известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может содержать накопитель на жестких дисках (например, включая любое из следующего: магнитный носитель, компакт-диск, универсальный цифровой диск и флэш-память) или, например, накопитель на магнитной ленте. В систему 5021 также может входить адаптер пользовательского интерфейса, который посредством шины соединяет микропроцессор 5026 с одним или несколькими устройствами сопряжения, такими как клавиатура 5024, мышь 5023, принтер/сканнер 5030 и/или другие устройства сопряжения, которыми могут являться любое пользовательское устройство сопряжения, такое как сенсорный экран, дополнительная цифровая клавиатура и т.д. Шина посредством дисплейного адаптера также соединяет дисплей 5022, такой как ЖК-дисплей или монитор с микропроцессором 5026.
Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с эстафетным доступом, сеть Ethernet или модемы. В качестве альтернативы, система 5021 может поддерживать связь с использованием беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (ЛВС) или глобальной вычислительной сети (ГВС), или системой 5021 может являться клиент, связанный отношениями клиент/сервер с другим компьютером и т.д. Все эти конфигурации, а также соответствующее коммуникационное оборудование и программное обеспечение известны из техники.
На фиг.17 проиллюстрирована сеть 5040 обработки данных, в которой может быть реализовано на практике настоящее изобретение. В сеть 5040 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с хост-процессором.
На фиг.17 также показано, что в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюз 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 5046 предпочтительно может быть связан с другой сетью (например, сетью Интернет 5047) линией связи. Шлюз 5046 также может быть непосредственно связан с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServer™ System z® производства International Business Machines Corporation.
Как показано на фиг.16 и 17, доступ к программному коду системы программного обеспечения, в котором может быть воплощено настоящее изобретение, может осуществлять процессор 5026 системы 5020 посредством долговременных запоминающих сред 5027, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.
В качестве альтернативы, программный код может быть воплощен в памяти 5025 с возможностью доступа к нему для процессора 5026 с использованием процессорной шины. В таком программном коде реализована операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ 5032. Обычно подкачка страниц программного кода осуществляется из запоминающих сред 5027 в быстродействующее запоминающее устройство 5025, в котором он доступен для обработки процессором 5026. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.), часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться цепью обработки данных предпочтительно в компьютерной системе для выполнения цепью обработки данных.
Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующим и менее объемным, чем другие кэши процессора), представляет собой кэш низшего уровня (L1 или уровня 1), а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3 в случае 3 уровней). Кэш низшего уровня часто поделен кэш команд (1-кэш), в котором хранятся машинные команды для выполнения, и кэш данных (D-кэш), в котором хранятся операнды, хранимые в памяти.
На фиг.18 проиллюстрирован один из примеров осуществления процессора 5026. Обычно с целью помещения в буфер блоков памяти и повышения производительности процессора используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, в котором в строках данных кэша хранятся данные в памяти, которые вероятно будут использоваться. Типичные строки данных кэша содержат 64, 128 или 256 байтов данных в памяти. Для кэширования команд и для кэширования данных часто используются раздельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения ("snoop"), хорошо известными из техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, имеющей 4 уровня кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем уровня 5 (L5), поскольку оно обычно является более быстродействующими и представляет собой лишь часть энергонезависимого запоминающего устройство (ЗУПД, ЗУ на ленте и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 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 выполнения функции команды. Как показано на фиг.19А, блок 5057 выполнения посредством интерфейсной логической схемы 5071 может поддерживать связь со структурированными общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065. В блоке 5057 выполнения может применяться несколько регистровых схем 5067, 5068, 5069 для хранения информации, с которой будет работать арифметическое логическое устройство (АЛУ) 5066. АЛУ выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ, поворот и смещение. АЛУ предпочтительно поддерживает зависящие от конструкции специализированные операции. В других схемах могут обеспечиваться другие структурированные средства 5072, включающие, например, коды условия и логическую схему поддержки восстановления. Обычно результат операции АЛУ хранится в схеме 5070 выходного регистра, из которой он может пересылаться целому ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание имеет целью лишь обеспечить понимание одного из вариантов осуществления.
Например, команда сложения выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, а, например, команда с плавающей точкой выполняется блоком вычислений с плавающей точкой, обладающим специализированными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения заданной кодом операции функции применительно к операндам. Например, команда сложения может выполняться блоком 5057 выполнения применительно к операндам, обнаруженным в двух регистрах 5059, указанных в регистровых полях команды.
Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, которым может являться третий регистр или один из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (АЛУ) 5066, способное выполнять ряд логических функций, таких как смещение, поворот. И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любые из следующих функций: сложение, вычитание, умножение, деление. Некоторые АЛУ 5066 рассчитаны на скалярные операции, а некоторые - на операции с плавающей точкой. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). В системе IBM z/Architecture используется обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до единицы или дополнения до двух. Число в форме дополнения до двух выгодно в том смысле, что АЛУ не требуется поддерживать возможность вычитания, поскольку при отрицательной или положительной величине дополнения до двух в АЛУ требуется только сложение. Числа обычно описаны в сокращенном виде, в котором 12-разрядное поле определяет адрес блока из 4096 байтов и обычно описано, например, в виде 4-килобайтового блока.
Как показано на фиг.19Б, содержащаяся в команде перехода информация для выполнения команды перехода обычно передается блоку 5058 перехода, в котором часто применяется алгоритм предсказания переходов, такой как таблица 5082 предыстории переходов (ТПП), для предсказания исхода перехода до завершения других условных операций. Целевой объект текущей команды перехода вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды перехода завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда перехода может предусматривать проверку кодов условий и переход к целевому адресу, если коды условий отвечают требованию команды перехода, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 5058 перехода может применяться АЛУ 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 перехода, например, может поддерживать связь с общими регистрами 5059, декодировать блок 5056 диспетчеризации или другие схемы 5073.
Выполнение группы команд может прерываться по ряду причин, включая, например, переключение контекста, инициированное операционной системой, исключительную ситуацию или ошибку в процессе выполнения программы, приводящую к переключению контекста, сигнал прерывания ввода-вывода, приводящий к переключению контекста, или многопоточный режим работы множества программ (в многопоточной среде). Переключение контекста предпочтительно служит для сохранения информации о состоянии выполняемой в данный момент программы и затем для загрузки информации о состоянии другой вызываемой программы. Информация о состоянии может сохраняться, например, в аппаратных регистрах или в памяти. Информация о состоянии предпочтительно содержит показание счетчика команд, указывающее очередную команду для выполнения, коды условий, сведения о преобразовании данных памяти и содержимое структурированного регистра. Переключение контекста может осуществляться аппаратными схемами, прикладными программами, программами операционной системы или аппаратно-программным кодом (микрокодом, пикокодом или лицензионным внутренним кодом (LIC) по отдельности или в сочетании).
Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может содержать непосредственный операнд, в котором используется значение части команды, может содержать одно или несколько регистровых полей, прямо указывающих регистры общего назначения или регистры особо назначения (например, регистры с плавающей точкой). В команде могут использоваться подразумеваемые регистры, обозначаемые полем кода операции как операнды. В команде могут использоваться ячейки памяти для операндов. Ячейка памяти для операнда может обеспечиваться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения на основе системы z/Architecture, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются с целью получения, например, адреса операнда в памяти. Под ячейкой в данном случае подразумевается ячейка основной памяти (основного запоминающего устройства), если не указано иное.
Как показано на фиг.19B, процессор осуществляет доступ к памяти с использованием блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другую ячейку памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая не соответствует последовательности команд, тем не менее, блок 5060 загрузки/сохранения должен обеспечивать для программ видимость выполнения команды по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, АЛУ 5085 и управляющую логику 5090 для вычисления адресов ячеек запоминающего устройства и обеспечения последовательного потока для сохранения порядка следования операций. Некоторые операции могут выполняться не по порядку, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы выполняемые не по порядку операции выглядели для программы выполненными по порядку, как хорошо известно из техники.
Адреса, которые "видит" прикладная программа, предпочтительно часто именуются виртуальными адресами. Иногда виртуальные адреса именуются "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что их перенаправляют в ячейку физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простое приписывание величины смещения к виртуальному адресу, преобразование виртуального адреса посредством одной или нескольких таблиц перевода, которые предпочтительно содержат, по меньшей мере, таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись с указанием таблицы страниц. В системе z/Architecture предусмотрена иерархия преобразования, в которую входит первая таблица региона, вторая таблица региона, третья таблица региона, таблица сегментов и необязательная таблица страниц. Эффективность преобразования адресов часто повышается за счет использования буфера быстрого преобразования адреса (TLB), который содержит записи, отображающие виртуальный адрес соответствующей ячейки физической памяти. Записи создаются, когда DAT преобразует виртуальный адрес с использованием таблиц перевода. Затем при последующем использовании виртуального адреса может использоваться запись из быстродействующего TLB вместо доступа к таблицам медленного последовательного преобразования. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения наиболее давней по использованию страницы (LRU).
В том случае, когда процессором является процессор мультипроцессорной системы, каждый процессор отвечает за сохранение совместно используемых ресурсов, таких как средства ввода-вывода, кэши, TLB и память, взаимно заблокированных для обеспечения непротиворечивости. Обычно для поддержания непротиворечивости кэшей используются технологии "слежения". Для облегчения совместного использования каждая строка кэша может помечаться в среде слежения как находящаяся в одном из следующих состояний, включающих состояние совместного использования, состояние монопольного использования, измененное состояние, недействительное состояние и т.п.
Блоки 5054 ввода-вывода (фиг.18) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, накопители на дисках, принтеры, дисплеи и сети. Блоки ввода-вывода представлены в компьютерной программе программными драйверами. В мэйнфреймах, таких как System z® производства IBM®, блоки ввода-вывода мэйнфрейма являются адаптерами каналов и адаптерами открытых систем и обеспечивают связь между операционной системой и периферийными устройствами.
Кроме того, одна или несколько особенностей настоящего изобретения могут выгодно применяться в вычислительных средах других типов. В качестве примера, среда может содержать эмулятор (например, программные или другие механизмы эмуляции), в которых эмулируется конкретная архитектура (включая, например, выполнение команд, структурированные функции, такие как преобразование адреса, и структурированные регистры) или ее сокращенная версия (например, в собственной компьютерной системе, имеющей процессор и память). В такой среде за счет одной или нескольких эмулирующих функций эмулятора может быть реализована одна или несколько особенностей настоящего изобретения, несмотря на то, что компьютер, в котором выполняется эмулятор, может иметь архитектуру, отличающуюся от эмулируемых возможностей. В качестве одного из примеров, в режиме эмуляции декодируется конкретная эмулируемая команда или операция, и создается соответствующая эмулирующая функция с целью реализации отдельной команды или операции.
В эмулирующей среде хост-компьютер содержит, например, память для хранения команд и данных; блок выборки команд для выборки команд из памяти и необязательно локальной буферизации выбранных команд; блок декодирования команд для приема команд от блока выборки команд и определения типа команд, которые были выбраны; и блок выполнения команд для выполнения команд. Выполнение может предусматривать загрузку данных из памяти в регистр; сохранение данных из регистра в памяти; или выполнение арифметической или логической операции какого-либо типа, определяемой блоком декодирования. В одном из примеров каждый блок реализован посредством программного обеспечения. Например, выполняемые блоками операции реализованы в виде одной или нескольких подпрограмм в программном обеспечении эмулятора.
В частности, в мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "C" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architecture® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах Power Systems и серверах System x®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel®, AMD™ и других компаний. Помимо выполнения этим аппаратным обеспечением на основе Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию Hercules (http://www.hercules-390.org) или FSI (Fundamental Software, Inc) (www.funsoft.com), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора,
Собственный процессор обычно выполняет эмулирующее программное обеспечение, представляющее собой аппаратно-программное обеспечение или собственную операционную систему для эмуляции эмулируемого процессора. Эмулирующее программное обеспечение отвечает за выборку и выполнение команд архитектуры эмулируемого процессора. Эмулирующее программное обеспечение поддерживает счетчик эмулируемых команд для слежения за границами команд. Эмулирующее программное обеспечение может осуществлять выборку одной или нескольких эмулируемых машинных команд за один раз и преобразование одной или нескольких эмулируемых машинных команд в соответствующую группу собственных машинных команд для выполнения собственным процессором. Эти преобразованные команды могут помещаться в кэш, что позволяет ускорять преобразование. Тем не менее, эмулирующее программное обеспечение должно поддерживать правила архитектуры эмулируемого процессора с тем, чтобы обеспечивать правильную работу операционных систем и приложений, написанных для эмулируемого процессора. Кроме того, эмулирующее программное обеспечение должно обеспечивать ресурсы, указанные архитектурой эмулируемого процессора, включая без ограничения управляющие регистры, регистры общего назначения, регистры с плавающей точкой, функцию динамической трансляции адреса, включая таблицы сегментов и таблицы страниц, например, механизмы прерывания, механизмы переключения контекста, часы истинного времени (TOD) и структурированные интерфейсы с подсистемами ввода-вывода с тем, чтобы операционная система или прикладная программа, рассчитанная на работу в эмулируемом процессоре, могла быть запущена в собственном процессоре, имеющем эмулирующее программное обеспечение.
Конкретная эмулируемая команда декодируется, и вызывается подпрограмма для выполнения функции отдельной команды. Функция эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора, реализуется, в подпрограмме или драйвере на языке "С" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся в описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scaizi и др.; патент US 5574873 под названием "Decoding guest instruction to directly access emulation routines that emulate the guest instructions", выданный на имя Davidian и др.; патент US 6308255 под названием "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", выданный на имя Gorishek и др.; патент US 6463582 под названием "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", выданный на имя Lethin и др.; патент US 5790825 под названием "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions", выданный на имя Eric Traut; и многие другие, проиллюстрированы разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.
На фиг.20 проиллюстрирован один из примеров известной из техники эмулирующей компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000', имеющую хост-архитектуру. Хост-процессором (ЦП) 5091 в компьютерной хост-системе 5092 эмуляции является хост-процессор (или виртуальный хост-процессор) эмуляции, представляющий собой процессор 5093 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 5091 хост-компьютера 5000'. Компьютерная хост-система 5092 эмуляции имеет память 5094, доступную для процессора 5093 эмуляции. В примере осуществления память 5094 разделена на память 5096 хост-компьютера и память 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в зависимости от архитектуры хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 5091 и которые извлекаются из памяти 5097 программ эмуляции, и может осуществлять выборку хост-команды для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную хост-команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной хост-команды. Другие средства, которые предусмотрены в архитектуре компьютерной хост-системы 5000', могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 5093 эмуляции (такие как общие регистры и динамическая трансляция виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 5093 эмуляцию функции хост-компьютера 5000'.
Используемая в описании терминология имеет целью описание лишь частных вариантов осуществления, а не ограничение изобретения. Подразумевается, что используемые в описании формы единственного числа включают также формы множественного числа, если из контекста ясно не следует иное. Дополнительно подразумевается, что термины "содержит" и/или "содержащий", используемые в описании, означают присутствие указанных признаков, чисел, шагов, операций, элементов и/или компонентов, но не исключают присутствие или добавление одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и/или их групп.
Группа изобретений относится к компьютерной технике и может быть использована для обработки прерываний в вычислительной среде. Техническим результатом является облегчение управления запросами прерывания. Описано преобразование одного или нескольких запросов, инициируемых сообщениями прерываний, поступающих от одного или нескольких адаптеров ввода-вывода, в уведомления о генерированном адаптером ввода-вывода событии. Каждое уведомление содержит набор из одного или нескольких конкретных индикаторов в системной памяти и запрос прерывания, при этом первый из индикаторов является индикатором ожидающего ответа запроса адаптерного прерывания. Пока запрос адаптерного прерывания ожидает ответа, последующие запросы, инициируемые сообщениями прерываний, преобразуются в уведомления, но без генерирования дополнительных запросов адаптерного прерывания. 2 н. и 6 з.п. ф-лы, 34 ил.