RU2546561C2 - Преобразование инициируемого сообщениями прерывания в уведомление о генерированном адаптером ввода-вывода событии - Google Patents

Преобразование инициируемого сообщениями прерывания в уведомление о генерированном адаптером ввода-вывода событии Download PDF

Info

Publication number
RU2546561C2
RU2546561C2 RU2012147704/08A RU2012147704A RU2546561C2 RU 2546561 C2 RU2546561 C2 RU 2546561C2 RU 2012147704/08 A RU2012147704/08 A RU 2012147704/08A RU 2012147704 A RU2012147704 A RU 2012147704A RU 2546561 C2 RU2546561 C2 RU 2546561C2
Authority
RU
Russia
Prior art keywords
adapter
function
interrupt
field
pci bus
Prior art date
Application number
RU2012147704/08A
Other languages
English (en)
Other versions
RU2012147704A (ru
Inventor
СИТТМАНН Густав III
КРАДДОК Дейвид
ГРЕГГ Томас
ФАРРЕЛЛ Марк
ИСТОН Джанет
Норман ЛЕЙС Эрик
Original Assignee
Интернэшнл Бизнес Машинз Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интернэшнл Бизнес Машинз Корпорейшн filed Critical Интернэшнл Бизнес Машинз Корпорейшн
Publication of RU2012147704A publication Critical patent/RU2012147704A/ru
Application granted granted Critical
Publication of RU2546561C2 publication Critical patent/RU2546561C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

Область техники
Настоящее изобретение относится в целом к обработке прерываний в вычислительной среде, более точно к обработке прерываний, генерируемых адаптерами вычислительной среды.
Уровень техники
Инициируемое сообщениями прерывание (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'.
Используемая в описании терминология имеет целью описание лишь частных вариантов осуществления, а не ограничение изобретения. Подразумевается, что используемые в описании формы единственного числа включают также формы множественного числа, если из контекста ясно не следует иное. Дополнительно подразумевается, что термины "содержит" и/или "содержащий", используемые в описании, означают присутствие указанных признаков, чисел, шагов, операций, элементов и/или компонентов, но не исключают присутствие или добавление одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и/или их групп.

Claims (8)

1. Способ управления запросами прерывания в вычислительной среде, включающий следующие шаги:
определение (601) в таблице, находящейся в концентраторе ввода-вывода, связанном с адаптером, местонахождения в памяти вектора разрядов адаптерного прерывания (AIBV), который входит в массив из одного или нескольких AIBV, и суммарного разряда адаптерного прерывания (AISB) из массива AISB в ответ на выполнение заданной командой изменения управления функцией шины PCI (MPFC) операции регистрации адаптерных прерываний, в которой указан дескриптор функции адаптера;
прием (603) запроса прерывания от адаптера; и
установка (605) в AIBV концентратором ввода-вывода индикатора генерированного адаптером события и установка (606) в AISB индикатора, указывающего, что в AIBV установлен индикатор, в ответ на принятый запрос.
2. Способ по п. 1, дополнительно включающий представление прерывания операционной системе в ответ на запрос прерывания.
3. Способ по п. 2, в котором запрос прерывания отображает множество инициируемых сообщениями прерываний, а прерывание, представленное операционной системе, входит в уведомление операционной системы о генерированном адаптером ввода-вывода событии.
4. Способ по п. 2, дополнительно включающий получение, в ответ на представление прерывания, одного или нескольких индикаторов AIBV для одного или нескольких адаптеров с указанием по меньшей мере одной причины прерывания для каждого адаптера.
5. Способ по п. 4, в котором получение индикаторов включает получение множества индикаторов AIBV с указанием множества причин прерывания, которые соответствуют множеству запросов прерывания.
6. Способ по п. 5, в котором получение индикаторов включает использование AISB при получении одного или нескольких индикаторов AIBV в одном или нескольких AIBV.
7. Способ по п. 1, в котором установка индикатора в AIBV включает:
использование идентификатора принятого от адаптера запроса с целью
получения записи в таблице устройств, которая содержит значение, указывающее число прерываний, разрешенных для адаптера;
определение того, не превышает ли номер вектора, указанный в запросе, разрешенное для адаптера число прерываний;
если определено, что номер вектора не превышает разрешенное число прерываний, использование одного или нескольких параметров записи в таблице устройств для определения местонахождения начального положения AIBV; и
использование номера вектора для установки индикатора в AIBV.
8. Система для управления запросами прерывания в вычислительной среде, содержащая средство, приспособленное для осуществления всех шагов способа по любому предшествующему пункту.
RU2012147704/08A 2010-06-23 2010-11-08 Преобразование инициируемого сообщениями прерывания в уведомление о генерированном адаптером ввода-вывода событии RU2546561C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/821,175 2010-06-23
US12/821,175 US8572635B2 (en) 2010-06-23 2010-06-23 Converting a message signaled interruption into an I/O adapter event notification
PCT/EP2010/067023 WO2011160707A1 (en) 2010-06-23 2010-11-08 Converting a message signaled interruption into an i/o adapter event notification

Publications (2)

Publication Number Publication Date
RU2012147704A RU2012147704A (ru) 2014-05-20
RU2546561C2 true RU2546561C2 (ru) 2015-04-10

Family

ID=43982256

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2012147704/08A RU2546561C2 (ru) 2010-06-23 2010-11-08 Преобразование инициируемого сообщениями прерывания в уведомление о генерированном адаптером ввода-вывода событии

Country Status (22)

Country Link
US (2) US8572635B2 (ru)
EP (1) EP2430558B1 (ru)
JP (1) JP5719435B2 (ru)
KR (1) KR101455011B1 (ru)
CN (1) CN102906722B (ru)
AU (1) AU2010355798B2 (ru)
BR (1) BR112012033821B1 (ru)
CA (1) CA2800629C (ru)
DK (1) DK2430558T3 (ru)
ES (1) ES2535333T3 (ru)
HK (1) HK1180796A1 (ru)
HR (1) HRP20150385T1 (ru)
HU (1) HUE024981T2 (ru)
IL (1) IL223589B (ru)
MX (1) MX2012014861A (ru)
PL (1) PL2430558T3 (ru)
PT (1) PT2430558E (ru)
RU (1) RU2546561C2 (ru)
SG (1) SG186080A1 (ru)
SI (1) SI2430558T1 (ru)
WO (1) WO2011160707A1 (ru)
ZA (1) ZA201209699B (ru)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5108975B2 (ja) * 2008-04-28 2012-12-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法
US8615645B2 (en) * 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8510599B2 (en) * 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8495217B2 (en) * 2010-09-30 2013-07-23 International Business Machines Corporation Mechanism for preventing client partition crashes by removing processing resources from the client logical partition when an NPIV server goes down
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103253A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
US8966148B2 (en) * 2012-06-01 2015-02-24 International Business Machines Corporation Providing real-time interrupts over Ethernet
US8984201B2 (en) 2012-06-01 2015-03-17 International Business Machines Corporation Providing I2C bus over Ethernet
US9152588B2 (en) 2012-10-16 2015-10-06 Apple Inc. Race-free level-sensitive interrupt delivery using fabric delivered interrupts
US9009377B2 (en) * 2012-11-01 2015-04-14 Apple Inc. Edge-triggered interrupt conversion in a system employing level-sensitive interrupts
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
EP2972798B1 (en) 2013-03-15 2020-06-17 Intel Corporation Method and apparatus for guest return address stack emulation supporting speculation
US9465768B2 (en) * 2014-03-14 2016-10-11 International Business Machines Corporation PCI function measurement block enhancements
US10187323B2 (en) * 2016-09-02 2019-01-22 Pivotal Software, Inc. On-demand resource provisioning
DE102017108219A1 (de) 2017-04-18 2018-10-18 Infineon Technologies Ag Steuersystem und Verfahren des Speicherzugriffs
DE102017108216A1 (de) * 2017-04-18 2018-10-18 Infineon Technologies Ag Steuersystem und Verfahren des Speicherzugriffs
CN110597537B (zh) * 2019-08-29 2022-12-13 桂林理工大学南宁分校 一种物联网节点安全更新升级方法
US11573775B2 (en) 2020-06-17 2023-02-07 Bank Of America Corporation Software code converter for resolving redundancy during code development
US11347500B2 (en) 2020-06-17 2022-05-31 Bank Of America Corporation Software code converter for resolving conflicts during code development
US11782685B2 (en) 2020-06-17 2023-10-10 Bank Of America Corporation Software code vectorization converter

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2195013C2 (ru) * 2001-02-01 2002-12-20 Научно-исследовательский институт химического машиностроения Способ многоуровневой обработки запросов прерывания и многоуровневая система для его осуществления

Family Cites Families (228)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4028668A (en) 1975-12-22 1977-06-07 Honeywell Information Systems, Inc. Apparatus for selectively addressing sections and locations in a device controller's memory
US4323963A (en) 1979-07-13 1982-04-06 Rca Corporation Hardware interpretive mode microprocessor
US4271468A (en) 1979-11-06 1981-06-02 International Business Machines Corp. Multiprocessor mechanism for handling channel interrupts
EP0090804A1 (en) 1981-10-13 1983-10-12 International Business Machines Corporation Method and apparatus for measurements of channel operation
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5282274A (en) 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5170472A (en) 1991-03-28 1992-12-08 International Business Machines Corp. Dynamically changing a system i/o configuration definition
US5465355A (en) 1991-09-04 1995-11-07 International Business Machines Corporation Establishing and restoring paths in a data processing I/O system
JPH05165715A (ja) 1991-12-12 1993-07-02 Nec Corp 情報処理装置
JPH0821015B2 (ja) 1992-01-20 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータならびにそのシステム再構成化装置および方法
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5600805A (en) 1992-06-15 1997-02-04 International Business Machines Corporation Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems
US5265240A (en) 1992-07-24 1993-11-23 International Business Machines Corporation Channel measurement method and means
US5465332A (en) 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
JP2500101B2 (ja) 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5535352A (en) 1994-03-24 1996-07-09 Hewlett-Packard Company Access hints for input/output address translation mechanisms
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
GB2303951B (en) 1994-06-28 1999-04-28 Intel Corp PCI to ISA interrupt protocol converter and selection mechanism
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5901312A (en) 1994-12-13 1999-05-04 Microsoft Corporation Providing application programs with unmediated access to a contested hardware resource
US5802590A (en) 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
US5586268A (en) 1995-03-03 1996-12-17 Advanced System Products, Inc. Multiple peripheral adapter device driver architecture
JPH08263424A (ja) 1995-03-20 1996-10-11 Fujitsu Ltd コンピュータ装置
US5671365A (en) * 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5960213A (en) 1995-12-18 1999-09-28 3D Labs Inc. Ltd Dynamically reconfigurable multi-function PCI adapter device
US5974440A (en) 1996-03-25 1999-10-26 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for interrupt handling during virtual task operation
US5819053A (en) 1996-06-05 1998-10-06 Compaq Computer Corporation Computer system bus performance monitoring
US5761448A (en) 1996-08-30 1998-06-02 Ncr Corporation Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration
US5838960A (en) 1996-09-26 1998-11-17 Bay Networks, Inc. Apparatus for performing an atomic add instructions
US5995745A (en) 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
US5826084A (en) 1997-03-25 1998-10-20 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation
US6349379B2 (en) 1997-04-30 2002-02-19 Canon Kabushiki Kaisha System for executing instructions having flag for indicating direct or indirect specification of a length of operand data
KR100263672B1 (ko) 1997-05-08 2000-09-01 김영환 가변적인 페이지 크기를 지원하는 어드레스 변환장치
US5914730A (en) 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
US6067595A (en) 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6078970A (en) 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6023736A (en) 1997-12-19 2000-02-08 International Business Machines Corporation System for dynamically configuring I/O device adapters where a function configuration register contains ready/not ready flags corresponding to each I/O device adapter
US6021458A (en) 1998-01-21 2000-02-01 Intel Corporation Method and apparatus for handling multiple level-triggered and edge-triggered interrupts
US6223299B1 (en) 1998-05-04 2001-04-24 International Business Machines Corporation Enhanced error handling for I/O load/store operations to a PCI device via bad parity or zero byte enables
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6460094B1 (en) 1998-07-08 2002-10-01 Microsoft Corporation Peripheral device configured to detect the type of interface to which it is connected and configuring itself accordingly
US6615305B1 (en) 1998-08-27 2003-09-02 Intel Corporation Interrupt pacing in data transfer unit
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6408347B1 (en) 1998-12-10 2002-06-18 Cisco Technology, Inc. Integrated multi-function adapters using standard interfaces through single a access point
US6397350B1 (en) 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US6519645B2 (en) 1999-02-19 2003-02-11 International Business Machine Corporation Method and apparatus for providing configuration information using a queued direct input-output device
US6349380B1 (en) 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6557035B1 (en) 1999-03-30 2003-04-29 International Business Machines Corporation Rules-based method of and system for optimizing server hardware capacity and performance
US6330656B1 (en) 1999-03-31 2001-12-11 International Business Machines Corporation PCI slot control apparatus with dynamic configuration for partitioned systems
US6578191B1 (en) 1999-05-17 2003-06-10 International Business Machines Corporation Method and apparatus for dynamic generation of adapters
US6330647B1 (en) 1999-08-31 2001-12-11 Micron Technology, Inc. Memory bandwidth allocation based on access count priority scheme
US6772097B1 (en) 1999-09-30 2004-08-03 Intel Corporation Retrieving I/O processor performance monitor data
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6970992B2 (en) 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US6651126B1 (en) 1999-10-29 2003-11-18 Texas Instruments Incorporated Snapshot arbiter mechanism
US7509391B1 (en) 1999-11-23 2009-03-24 Texas Instruments Incorporated Unified memory management system for multi processor heterogeneous architecture
US6529978B1 (en) 2000-02-23 2003-03-04 International Business Machines Corporation Computer input/output (I/O) interface with dynamic I/O adaptor processor bindings
US6963940B1 (en) 2000-03-30 2005-11-08 International Business Machines Corporation Measuring utilization of individual components of channels
US6581130B1 (en) 2000-04-04 2003-06-17 Hewlett Packard Development Company, L.P. Dynamic remapping of address registers for address translation between multiple busses
US6629175B1 (en) 2000-04-14 2003-09-30 International Business Machines Corporation Efficient adapter context switching
US6772264B1 (en) 2000-05-22 2004-08-03 International Business Machines Corporation Enabling a docking station for ISA adapters
US6715011B1 (en) 2000-05-31 2004-03-30 International Business Machines Corporation PCI/PCI-X bus bridge with performance monitor
US6654818B1 (en) 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6704831B1 (en) 2000-11-16 2004-03-09 Sun Microsystems, Inc. Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US6611883B1 (en) 2000-11-16 2003-08-26 Sun Microsystems, Inc. Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US6658521B1 (en) 2000-12-22 2003-12-02 International Business Machines Corporation Method and apparatus for address translation on PCI bus over infiniband network
US6721839B1 (en) 2000-12-27 2004-04-13 International Business Machines Corporation Method of mapping multiple address spaces into single PCI bus
TW499795B (en) 2001-03-19 2002-08-21 Realtek Semiconductor Corp PCI extended function interface and the PCI device using the same
US6792492B1 (en) 2001-04-11 2004-09-14 Novell, Inc. System and method of lowering overhead and latency needed to service operating system interrupts
US6820164B2 (en) 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
US20020161907A1 (en) 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US6968446B1 (en) 2001-08-09 2005-11-22 Advanced Micro Devices, Inc. Flags handling for system call instructions
US6842870B2 (en) 2001-09-20 2005-01-11 International Business Machines Corporation Method and apparatus for filtering error logs in a logically partitioned data processing system
US6880021B2 (en) * 2001-09-28 2005-04-12 International Business Machines Corporation Intelligent interrupt with hypervisor collaboration
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US20040025166A1 (en) 2002-02-02 2004-02-05 International Business Machines Corporation Server computer and a method for accessing resources from virtual machines of a server computer via a fibre channel
US6901537B2 (en) 2002-02-27 2005-05-31 International Business Machines Corporation Method and apparatus for preventing the propagation of input/output errors in a logical partitioned data processing system
US6907510B2 (en) 2002-04-01 2005-06-14 Intel Corporation Mapping of interconnect configuration space
US7302692B2 (en) 2002-05-31 2007-11-27 International Business Machines Corporation Locally providing globally consistent information to communications layers
US7197585B2 (en) 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
US7054972B2 (en) 2002-12-13 2006-05-30 Lsi Logic Corporation Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system
US7065598B2 (en) 2002-12-20 2006-06-20 Intel Corporation Method, system, and article of manufacture for adjusting interrupt levels
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
US7073002B2 (en) 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
US7107382B2 (en) 2003-04-03 2006-09-12 Emulex Design & Manufacturing Corporation Virtual peripheral component interconnect multiple-function device
US7139940B2 (en) 2003-04-10 2006-11-21 International Business Machines Corporation Method and apparatus for reporting global errors on heterogeneous partitioned systems
US7281075B2 (en) 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7000036B2 (en) 2003-05-12 2006-02-14 International Business Machines Corporation Extended input/output measurement facilities
US7290070B2 (en) 2003-05-12 2007-10-30 International Business Machines Corporation Multiple logical input/output subsystem facility
US6996638B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Method, system and program products for enhancing input/output processing for operating system images of a computing environment
US7127599B2 (en) 2003-05-12 2006-10-24 International Business Machines Corporation Managing configurations of input/output system images of an input/output subsystem, wherein a configuration is modified without restarting the input/output subsystem to effect a modification
US7177961B2 (en) 2003-05-12 2007-02-13 International Business Machines Corporation Managing access, by operating system images of a computing environment, of input/output resources of the computing environment
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7130938B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Method, system and program products for identifying communications adapters of a computing environment
US7174550B2 (en) 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
US7134052B2 (en) 2003-05-15 2006-11-07 International Business Machines Corporation Autonomic recovery from hardware errors in an input/output fabric
US6931460B2 (en) 2003-05-19 2005-08-16 Emulex Design & Manufacturing Corporation Dynamically self-adjusting polling mechanism
US7420931B2 (en) 2003-06-05 2008-09-02 Nvidia Corporation Using TCP/IP offload to accelerate packet filtering
US8417852B2 (en) 2003-06-05 2013-04-09 Nvidia Corporation Uploading TCP frame data to user buffers and buffers in system memory
EP1489491A1 (en) 2003-06-19 2004-12-22 Texas Instruments Incorporated Dynamically changing the semantic of an instruction
US7013358B2 (en) 2003-08-09 2006-03-14 Texas Instruments Incorporated System for signaling serialized interrupts using message signaled interrupts
US7979548B2 (en) 2003-09-30 2011-07-12 International Business Machines Corporation Hardware enforcement of logical partitioning of a channel adapter's resources in a system area network
US7552436B2 (en) 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7146482B2 (en) 2003-11-25 2006-12-05 International Business Machines Corporation Memory mapped input/output emulation
US7277968B2 (en) 2004-01-23 2007-10-02 International Business Machines Corporation Managing sets of input/output communications subadapters of an input/output subsystem
US7107384B1 (en) 2004-03-01 2006-09-12 Pericom Semiconductor Corp. Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths
US7530071B2 (en) 2004-04-22 2009-05-05 International Business Machines Corporation Facilitating access to input/output resources via an I/O partition shared by multiple consumer partitions
US7209994B1 (en) 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US20050289271A1 (en) 2004-06-29 2005-12-29 Martinez Alberto J Circuitry to selectively produce MSI signals
US20060005083A1 (en) 2004-06-30 2006-01-05 International Business Machines Corporation Performance count tracing
US7496706B2 (en) 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
US7418572B2 (en) 2004-08-18 2008-08-26 International Business Machines Corporation Pretranslating input/output buffers in environments with multiple page sizes
TWI252397B (en) 2004-09-17 2006-04-01 Ind Tech Res Inst Method and apparatus of built-in self-diagnosis and repair in a memory with syndrome identification
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US7334107B2 (en) 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7340582B2 (en) 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US7373446B2 (en) 2004-11-05 2008-05-13 Microsoft Corporation Method and system for dynamically patching an operating system's interrupt mechanism
US7296120B2 (en) 2004-11-18 2007-11-13 International Business Machines Corporation Mechanism that provides efficient multi-word load atomicity
US7188346B2 (en) 2004-11-29 2007-03-06 International Business Machines Corporation Method, system and program product for correlating data between operating environments
US7284112B2 (en) 2005-01-14 2007-10-16 International Business Machines Corporation Multiple page size address translation incorporating page size prediction
US7886086B2 (en) 2005-02-03 2011-02-08 International Business Machines Corporation Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability
US7562366B2 (en) 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
US7464191B2 (en) 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US7260664B2 (en) 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO adapter that supports virtualization
US7493425B2 (en) 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US20060195617A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US7475166B2 (en) 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US7567567B2 (en) 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
US7260663B2 (en) 2005-04-07 2007-08-21 International Business Machines Corporation System and method for presenting interrupts
US7200704B2 (en) 2005-04-07 2007-04-03 International Business Machines Corporation Virtualization of an I/O adapter port using enablement and activation functions
US7478178B2 (en) 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing
US7225287B2 (en) 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
US7516252B2 (en) 2005-06-08 2009-04-07 Intel Corporation Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7631097B2 (en) 2005-07-21 2009-12-08 National Instruments Corporation Method and apparatus for optimizing the responsiveness and throughput of a system performing packetized data transfers using a transfer count mark
US8028154B2 (en) 2005-07-29 2011-09-27 Broadcom Corporation Method and system for reducing instruction storage space for a processor integrated in a network adapter chip
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US20070073955A1 (en) 2005-09-29 2007-03-29 Joseph Murray Multi-function PCI device
US7882489B2 (en) 2005-11-22 2011-02-01 International Business Machines Corporation Integrated code generation for adapter-specific property template
US20070136554A1 (en) 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US7328296B1 (en) 2006-01-03 2008-02-05 Emc Corporation Interrupt processing system
US7398343B1 (en) 2006-01-03 2008-07-08 Emc Corporation Interrupt processing system
US7673116B2 (en) 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7849232B2 (en) 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US7739422B2 (en) 2006-03-21 2010-06-15 International Business Machines Corporation Method to improve system DMA mapping while substantially reducing memory fragmentation
US7412589B2 (en) 2006-03-31 2008-08-12 International Business Machines Corporation Method to detect a stalled instruction stream and serialize micro-operation execution
US8621120B2 (en) 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US7613847B2 (en) 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US7954099B2 (en) 2006-05-17 2011-05-31 International Business Machines Corporation Demultiplexing grouped events into virtual event queues while in two levels of virtualization
JP4961833B2 (ja) 2006-05-19 2012-06-27 日本電気株式会社 クラスタシステム、負荷分散方法、最適化クライアントプログラム、及び調停サーバプログラム
TW200801952A (en) 2006-06-02 2008-01-01 Via Tech Inc Method for setting up a peripheral component interconnect express (PCIE)
US7546398B2 (en) 2006-08-01 2009-06-09 International Business Machines Corporation System and method for distributing virtual input/output operations across multiple logical partitions
US7496707B2 (en) 2006-08-22 2009-02-24 International Business Machines Corporation Dynamically scalable queues for performance driven PCI express memory traffic
US8725914B2 (en) 2006-08-28 2014-05-13 International Business Machines Corporation Message signaled interrupt management for a computer input/output fabric incorporating platform independent interrupt manager
US7627723B1 (en) 2006-09-21 2009-12-01 Nvidia Corporation Atomic memory operators in a parallel processor
US20080126652A1 (en) 2006-09-27 2008-05-29 Intel Corporation Managing Interrupts in a Partitioned Platform
US7552298B2 (en) 2006-09-28 2009-06-23 Broadcom Corporation Method and system for deferred pinning of host memory for stateful network interfaces
JP2008090375A (ja) 2006-09-29 2008-04-17 Hitachi Ltd 割込み制御システム、およびこれを利用した記憶制御システム
US9135951B2 (en) 2006-10-10 2015-09-15 Qualcomm Incorporated System and method for dynamic audio buffer management
US7587575B2 (en) 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US20080091868A1 (en) 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
US20080098197A1 (en) 2006-10-20 2008-04-24 International Business Machines Corporation Method and System For Address Translation With Memory Windows
JP2008123298A (ja) 2006-11-13 2008-05-29 Canon Inc 情報処理方法及びシステム
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
US7529860B2 (en) 2006-12-19 2009-05-05 International Business Machines Corporation System and method for configuring an endpoint based on specified valid combinations of functions
US7984454B2 (en) 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US7617340B2 (en) 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
US20080168208A1 (en) 2007-01-09 2008-07-10 International Business Machines Corporation I/O Adapter LPAR Isolation In A Hypertransport Environment With Assigned Memory Space Indexing a TVT Via Unit IDs
JP5119686B2 (ja) 2007-03-06 2013-01-16 日本電気株式会社 情報処理装置および設定方法
EP2075696A3 (en) 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes
US7617345B2 (en) 2007-07-02 2009-11-10 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US20090024823A1 (en) 2007-07-20 2009-01-22 Wenjeng Ko Overlayed separate dma mapping of adapters
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US8762999B2 (en) 2007-09-27 2014-06-24 Oracle America, Inc. Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
JP2009088962A (ja) 2007-09-28 2009-04-23 Panasonic Corp 通信アダプタ、通信装置および通信方法
US8141094B2 (en) 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US7913030B2 (en) 2007-12-28 2011-03-22 Sandisk Il Ltd. Storage device with transaction logging capability
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8037221B2 (en) 2008-01-16 2011-10-11 International Business Machines Corporation Dynamic allocation of DMA buffers in input/output adaptors
US7996628B2 (en) 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8332846B2 (en) 2008-02-28 2012-12-11 Sony Mobile Communications Ab Selective exposure to USB device functionality for a virtual machine by filtering descriptors
US20090276774A1 (en) 2008-05-01 2009-11-05 Junji Kinoshita Access control for virtual machines in an information system
US7743189B2 (en) 2008-05-05 2010-06-22 International Business Machines Corporation PCI function south-side data management
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
US8359408B2 (en) 2008-06-30 2013-01-22 Intel Corporation Enabling functional dependency in a multi-function device
US9262357B2 (en) 2008-09-29 2016-02-16 International Business Machines Corporation Associating process priority with I/O queuing
JP5352848B2 (ja) * 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US8321615B2 (en) 2009-12-18 2012-11-27 Intel Corporation Source core interrupt steering
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US8914619B2 (en) 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2195013C2 (ru) * 2001-02-01 2002-12-20 Научно-исследовательский институт химического машиностроения Способ многоуровневой обработки запросов прерывания и многоуровневая система для его осуществления

Also Published As

Publication number Publication date
JP5719435B2 (ja) 2015-05-20
IL223589B (en) 2018-02-28
SG186080A1 (en) 2013-01-30
ES2535333T3 (es) 2015-05-08
KR20130032358A (ko) 2013-04-01
CN102906722B (zh) 2015-07-08
ZA201209699B (en) 2015-06-24
AU2010355798B2 (en) 2014-05-15
CA2800629A1 (en) 2011-12-29
US8601497B2 (en) 2013-12-03
PT2430558E (pt) 2015-05-20
BR112012033821A2 (pt) 2017-10-24
US8572635B2 (en) 2013-10-29
AU2010355798A1 (en) 2012-12-20
HRP20150385T1 (en) 2015-06-19
EP2430558A1 (en) 2012-03-21
KR101455011B1 (ko) 2014-10-27
SI2430558T1 (sl) 2015-07-31
MX2012014861A (es) 2013-01-25
US20120221757A1 (en) 2012-08-30
EP2430558B1 (en) 2015-03-25
RU2012147704A (ru) 2014-05-20
PL2430558T3 (pl) 2015-06-30
HUE024981T2 (en) 2016-02-29
US20110321061A1 (en) 2011-12-29
WO2011160707A1 (en) 2011-12-29
DK2430558T3 (en) 2015-04-27
CA2800629C (en) 2018-03-13
CN102906722A (zh) 2013-01-30
HK1180796A1 (en) 2013-10-25
JP2013533543A (ja) 2013-08-22
BR112012033821B1 (pt) 2020-11-03

Similar Documents

Publication Publication Date Title
RU2546561C2 (ru) Преобразование инициируемого сообщениями прерывания в уведомление о генерированном адаптером ввода-вывода событии
RU2547705C2 (ru) Трансляция адресов ввода-вывода в адреса ячеек памяти
RU2526287C2 (ru) Управление скоростью, с которой обрабатываются запросы на прерывание, формируемые адаптерами
RU2556418C2 (ru) Определение форматов трансляции для функций адаптера во время выполнения
RU2523194C2 (ru) Измерительное средство для функций адаптера
EP2430552B1 (en) Multiple address spaces per adapter
EP2430536B1 (en) Controlling access by a configuration to an adapter function
RU2522314C1 (ru) Команды сохранения/сохранения блока данных для связи с адаптерами
RU2562372C2 (ru) Активация/деактивация адаптеров вычислительной среды
CN113412473A (zh) 具有中断表的用于多级虚拟化的定向中断

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20191109