УПРАВЛЕНИЕ РЕСУРСАМИ ДЛЯ ДОМЕНОВ ВЫСОКОПРОИЗВОДИТЕЛЬНОГО МЕЖСОЕДИНЕНИЯ ПЕРИФЕРИЙНЫХ КОМПОНЕНТОВ
RESOURCE CONTROL FOR DOMAINS OF HIGH-PERFORMANCE PERIPHERAL COMPONENT INTERCONNECTION

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Настоящая заявка испрашивает приоритет не-предварительной заявки США № 14/315,099, поданной 25 июня 2014 и озаглавленной “Resource management for peripheral component interconnect express domains”, и испрашивает приоритет предварительной заявки США № 61/857,031, поданной 22 июля 2013 и озаглавленной “Cascading PCI-Express network domains”, обе из которых включены в настоящий документ посредством ссылки во всей своей полноте.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящая заявка, в общем, относится к сети высокопроизводительного межсоединения периферийных компонентов (PCIe), в частности, к технологии для управления междоменным выделением ресурсов в PCIe сети.
УРОВЕНЬ ТЕХНИКИ
[0003] PCI-Express (PCIe), как преемник технологии PCI (межсоединение периферийных компонентов) является наиболее широко используемым средством для соединения центральных процессоров (CPU) и их периферийных устройств, развернутых в персональных компьютерах (PС) или серверах. Оно является технологией с высокой пропускной способностью, малой задержкой, основанной на пакетах и коммутируемых межсоединениях.
[0004] Множество PCIe доменов, каждый со своим собственным хостом, т.е. микрокомпьютером или CPU, соединяются между собой одним или несколькими PCIe непрозрачными мостами (NTB). NTB в этой конфигурации используются для выполнения преобразования адресов между адресными пространствами PCIe доменов, к которым они присоединены, тем самым позволяя выполнять передачи данных между узлами (например, устройствами ввода/вывода (I/O), CPU и т.д.) в разделенных PCIe доменах.
[0005] PCIe сети продолжают расти в размерах и сложности. Ожидается, что будут возникать потребности в управлении ресурсами через PCIe домены.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] Вариант осуществления настоящего изобретения обеспечивает устройство для управления междоменным выделением ресурсов в сети высокопроизводительного межсоединения периферийных компонентов (PCIe). PCIe сеть включает в себя множество PCIe доменов, каждый из которых управляется процессором связи и соединяется с одним или несколькими другими доменами через непрозрачный мост (NTB). Устройство включает в себя память и процессор управления, связанный с памятью. Процессор управления сконфигурирован для получения информации о доступных ресурсах доменов, сообщенных процессором связи каждого домена. Информация о доступных ресурсах включает в себя адрес памяти каждого сообщенного доступного ресурса. Процессор сконфигурирован, чтобы сохранять полученную информацию о доступных ресурсах в памяти и принимать запрос ресурса от запрашивающего процессора одного из доменов. В ответ на запрос ресурса, процессор выделяет ресурс из доступных ресурсов запрашивающему процессору. Выделенный ресурс находится в домене, отличном от домена с запрашивающим процессором. Процессор получает информацию об адресе памяти выделенного ресурса из памяти, инструктирует один или более процессоров связи, чтобы программировать один или несколько междоменных NTB, через которые должен направляться трафик между выделенным ресурсом и запрашивающим процессором в соответствии с информацией об адресе памяти выделенного ресурса, чтобы разрешить междоменный доступ к ресурсу между запрашивающим процессором и выделенным ресурсом.
[0007] Другой вариант осуществления настоящего изобретения относится к способу управления междоменным выделением ресурса в сети высокопроизводительного межсоединения периферийных компонентов (PCIe). PCIe сеть включает в себя множество PCIe доменов, каждый из которых управляется процессором связи и соединяется с одним или несколькими другими доменами через непрозрачный мост (NTB). Процессор получает информацию о доступных ресурсах доменов, сообщенную процессором связи каждого домена. Информация о доступных ресурсах включает в себя адрес памяти каждого сообщенного доступного ресурса. Процессор сохраняет полученную информацию о доступных ресурсах в памяти. Процессор принимает запрос ресурса от запрашивающего процессора одного из доменов. В ответ на запрос ресурса, процессор выделяет ресурс из доступных ресурсов запрашивающему процессору. Выделенный ресурс находится в другом домене, отличном от домена с запрашивающим процессором. Процессор получает информацию об адресе памяти выделенного ресурса из памяти и инструктирует один или несколько процессоров связи программировать один или несколько NTB, через которые должен направляться трафик между выделенным ресурсом и запрашивающим процессором в соответствии с информацией об адресе памяти выделенного ресурса, чтобы разрешить междоменный доступ к ресурсу между запрашивающим процессором и выделенным ресурсом.
[0008] Вышеупомянутые способы могут быть выполнены с помощью одного или нескольких процессоров, памяти и одного или нескольких модулей, программ или наборов инструкций, хранящихся в памяти для выполнения этих способов.
[0009] Инструкции для выполнения вышеупомянутых способов могут быть включены в компьютерный программный продукт, сконфигурированной для исполнения одним или несколькими процессорами. В некоторых вариантах осуществления устройство включает в себя считываемый компьютером носитель для хранения данных (например, одно или более устройств хранения на магнитных дисках, устройства флэш-памяти или другие энергонезависимые устройства твердотельной памяти) и механизм исполняемой компьютерной программы, встроенный в них.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0010] Фиг. 1 представляет собой блок-схему PCIe сети, включающей в себя три примерных PCIe домена.
[0011] Фиг. 2 представляет собой блок-схему двух PCIe доменов, показывающую преобразования адресов памяти с междоменным NTB.
[0012] Фиг. 3 представляет собой блок-схему PCIe сети из двух PCIe доменов, показывающую преобразования ID маршрута с междоменным NTB.
[0013] Фиг. 4 является блок-схемой последовательности операций способа управления междоменным выделением ресурсов в PCIe сети.
ПОДРОБНОЕ ОПИСАНИЕ
[0014] Для того чтобы пояснить вышеупомянутые задачи, технические решения и преимущества настоящей заявки, ниже приведено подробное описание. Ссылки будут даваться на варианты осуществления, примеры которых проиллюстрированы на прилагаемых чертежах. В той мере, в какой блок-схемы, схемы последовательности операций и/или примеры содержат одну или более функций и/или операций, специалистам в данной области техники должно быть понятно, что каждая функция и/или операция в таких блок-схемах, схемах последовательности операций или примерах могут быть реализованы, индивидуально и/или совместно, в широком диапазоне аппаратных средств, программного обеспечения, микропрограммного обеспечения или любой их комбинации.
[0015] Фиг. 1 иллюстрирует несколько доменов, соединенных между собой посредством одного или нескольких NTB. Для иллюстрации, на фиг. 1 показаны только три PCIe домена 100, 200, 300. Может быть больше PCIe доменов, соединенных посредством NTB. Домены 100, 200 соединены через NTB 150, в то время как домены 100, 300 соединены через NTB 250. Домены 100, 200, 300, показанные на фиг. 1, управляются процессорами 101, 201, 301 связи, соответственно.
[0016] Различные домены могут включать в себя различные устройства с различной конфигурацией. Для иллюстрации, каждый из доменов 100, 200 и 300, показанных на фиг. 1, включает в себя устройства, сходные с устройствами в других доменах, и только домен 100 будет описан детально. Домен 100 включает в себя процессор (например, CPU) 101 связи, PCIe инфраструктуру 103, одно или несколько PCIe I/O устройств 131-139 и один или несколько рабочих процессоров 111-119. PCIe инфраструктура 103 содержит один или несколько PCIe коммутаторов (не показаны на фиг. 1), которые взаимосвязаны друг с другом. Процессор 101 связи, PCIe I/O устройства 131-139 и рабочие процессоры 111-119 соединены с по меньшей мере одним из PCIe коммутаторов в PCIe инфраструктуре 103.
[0017] Процессор 101 связи служит в качестве корневого хоста домена 100, который отвечает за назначение адресов устройствам (т.е. рабочим процессорам, I/O устройствам и т.д.), подключенным к PCIe инфраструктуре 103 в домене 100. Рабочие процессоры 111, 112 соединены с PCIe инфраструктурой 103 через непрозрачные мосты (NTB) 121, 122, соответственно. NTB 121 обеспечивает развязку двух хостов разных доменов памяти, процессора 101 связи и рабочего процессора 111, но позволяет выполнять обмен состояниями и данными между процессором 101 связи и рабочим процессором 111. NTB 121 обеспечивает преобразование адресов между пространствами памяти процессора 101 связи и рабочего процессора 111. Благодаря NTB 121, устройства по обе стороны моста не видимы с другой стороны, но обеспечен путь для передачи данных и обмена состояниями между доменами памяти процессора 101 связи и рабочего процессора 111. NTB 121 имеет два набора регистров базовых адресов (BAR), один для стороны процессора 101 связи, а другой для стороны рабочего процессора 111. BAR используются для определения окон преобразования адресов в пространство памяти на другой стороне NTB 121 и позволяют отображать транзакции на локальную память или I/O устройства.
[0018] Рабочий процессор 119 соединен с PCIe инфраструктурой 103 через прозрачный мост (ТВ) 129, и в этом случае он должен быть сконфигурирован в качестве конечной точки. Процессор 101 связи нумерует систему через обнаружение мостов и конечных устройств. Для ТВ 129, регистр состояния конфигурации (CSR) с заголовком “Тип 1” информирует процессор 101 связи, чтобы поддерживать нумерацию за пределами этого моста, так как дополнительные устройства расположены ниже по потоку. Рабочий процессор 119, в качестве конечной точки устройства, имеет заголовок “Тип 0” в своем CSR, чтобы информировать нумератор (т.е. процессор 101 связи), что никакие дополнительные устройства не находятся ниже по потоку. CSR включает в себя базовый BAR, используемый для запроса памяти и I/O устройств от процессора 101 связи.
[0019] PCIe домен (например, PCIe домены 100, 200 или 300) является PCIe сетью со своим собственным независимым 64-битным адресным пространством. Рабочие процессоры 111, 112 соединены с с PCIe доменом 100 через NTB 121, 122. Физически они находятся в раздельных доменах, если используются NTB. Но в этом варианте осуществления задачей NTB является отображение адреса из PCIe домена 100 на домены рабочих процессоров, а рабочие процессоры 111, 112 все еще находятся под управлением процессора 101 связи, таким образом, рабочие процессоры 111, 112 могут интерпретироваться как часть PCIe домена 100 на логическом уровне. Когда понятие домена используется в этом варианте осуществления, как показано на фиг. 1, рабочие процессоры 111, 112 являются частью PCIe домена 100.
[0020] В PCIe домене 100, как показано на фиг. 1, каждый узел (например, рабочий процессор или I/O устройство) имеет два независимых адреса. Одним из них является адрес памяти (MA), а другим является ID запроса (RID) в формате последовательности из 8-битного номера шины (BUS), 5-битного номера устройства (DEVICE) и 3-битного номера функции (FUNCTION) (т.е. B:D:F). Когда процессор инициирует запрос считывания или записи для данных к одному из узлов, например, одному из PCIe I/O устройств 131-139, процессор адресует узел, используя его MA (т.е. адрес места назначения в пакете должен быть МА узла) и идентифицирует себя своим RID как запросчика данных. Когда узел возвращает данные (в случае считывания) или пакет подтверждения приема данных (в случае записи), узел использует RID процессора в качестве адреса места назначения. Таким образом, если пакет запроса пересекает NTB на границе двух доменов, оба адреса (т.е. МА и RID) должны быть преобразованы, чтобы избежать конфликта адресов в удаленном домене и получить пакеты (как запрос, так и последующий ответ или подтверждение завершения) в правильном узле. Отметим, что адреса в PCIe домене присваиваются независимо от других PCIe доменов, но адресные пространства PCIe доменов могут быть тем же самым 64-битным адресным пространством. Как следствие, существует два преобразования адресов, происходящие, когда пакет пересекает NTB, одно преобразует MA пакета, который был первоначально МА интерфейса NTB в исходном домене, а другое преобразование преобразует RID. Оба эти механизма преобразования описаны ниже.
[0021] Фиг. 2 показывает пример для преобразования МА адреса. Для того чтобы указать PCIe системе, что существует доступное устройство, к которому можно адресоваться и получать доступ, устройство сконфигурировано с BAR с адресом, выделенным ему на этапе нумерации. Этот регистр является тем, в который физически записывается, если есть пакет, адресованный той стороне NTB. PCIe домен 100 включает в себя узел A 118 с MA “A1”, присвоенным процессором 101 связи (не показан на фиг. 2) в PCIe домене 100. PCIe домен 200, соединенный с PCIe доменом 100 через NTB 150, включает в себя узел В 218 с адресом B2 памяти, присвоенным процессором 201 связи (не показан на фиг. 2) в PCIe домене 200.
[0022] Для того чтобы позволить узлу запроса в домене получить доступ к узлу доступа в другом домене, адрес той же длины узла доступа должен быть доступен в NTB 150 в домене узла запросчика. Например, для того, чтобы получить доступ к узлу A 118 (адрес A1) в PCIe домене 100 из узла В 118 в PCIe домене 200, адрес A2 в PCIe домене 200, имеющий ту же длину, что и A1, должен быть доступным, чтобы отображаться на адрес A1 в PCIe домене 100 в NTB 150. Узлы в PCIe домене 200 могут получать доступ к узлу A 118 путем посылки пакета данных на адрес А2, который будет преобразован в A1 и отправлен к узлу A 118 посредством NTB 150. Аналогично, для того, чтобы получить доступ к узлу B 218 (адрес В2) в PCIe домене 200 из PCIe домена 100, адрес B1 той же длины, что и B2, в PCIe домене 100 отображается на адрес В2 в PCIe домене 200. МА реализуется посредством регистра базовых адресов (BAR).
[0023] В частности, в качестве одной реализации, NTB 150 поддерживает запись преобразования в таблице преобразования адресов для A2, которая ассоциирована с реальным адресом A1 узла A 118 в PCIe домене 100. Если принимается пакет, предназначенный для А2 NTB 150, то адрес места назначения в пакете заменяется на A1, адрес, ассоциированный с A2 в таблице преобразования адресов. Аналогичным образом, NTB 150 также поддерживает запись преобразования в таблице преобразования адресов для B1, которая ассоциирована с реальным адресом В2 узла В 218 в PCIe домене 200. Если принимается пакет, предназначенный для B1 NTB 150, то адрес места назначения в пакете заменяется на адрес В2, адрес, ассоциированный с B1 в таблице преобразования адресов. Таблица адресов и таблица преобразования адресов могут быть разными частями одной и той же таблицы.
[0024] Как описано выше, пакеты ответа или завершения маршрутизируются назад к запросчику на основе RID, найденного в пакете данных. Таким образом, если домены пересекаются, RID должен быть преобразован, чтобы убедиться, что пакет ответа/завершения маршрутизируется назад к соответствующему NTB и в конечном счете к исходному узлу-запросчику. Преобразование RID адреса осуществляется иным образом, чем MA. В примере, показанном на фиг. 3, RID узла A 118 в PCIe домене 100 имеет вид А:B:C, в то время как RID интерфейса NTB на стороне PCIe домена 200 имеет вид U:V:W. Когда в NTB 150 поступает пакет данных, предназначенный для узла В 218, RID в пакете запросчика от узла A 118 вставляется в таблицу преобразования RID, поддерживаемую в NTB 150. RID узла A 118 ассоциирован с индексом X в таблице преобразования RID. Преобразованный RID для пакета данных создается путем конкатенации 8-битного адреса порта NTB и индекса Х из таблицы преобразования RID. То есть, преобразованный RID адрес для пакета данных, пересылаемого в PCIe домен 200, имеет вид U:X, где Х имеет длину 8 бит. В некоторой реализации, Х имеет длину 5 бит и только заменяет среднюю 5-битную часть адреса B:D:F (т.е. только часть “D”), то есть, в данном случае новый адрес будет иметь вид U:X:С, где С представляет собой значение функции (FUNCTION) исходного RID.
[0025] После того как пакет поступает в предназначенный узел В 218 в PCIe домене 200 и обрабатывается узлом В 218, пакет ответа создается и предназначается для U:X (или U:X:C в альтернативном примере, приведенном выше), что приведет пакет на NTB 150, так как адрес U шины (BUS) принадлежит NTB 150. После того как пакет принят посредством NTB 150, NTB 150 просматривает таблицу преобразования RID и преобразует адрес U:X обратно в A:B:C, основываясь на соотношении между X и A:B:C, поддерживаемом в таблице преобразования RID. Затем NTB 150 пересылает пакет к узлу A 118, целенаправленно на RID А:B:C.
[0026] На основе разных политик, PCIe домены 100, 200 и 300 могут позволять процессорам из удаленных доменов получать доступ к ресурсам в данном домене. Политика может быть основана на доступности ресурсов или вынужденном совместном использовании некоторого количества ресурсов на основе центральной политики и т.д. С этой целью каждый из процессоров связи PCIe доменов 100, 200 и 300 строит таблицу 105, 205 и 305 дескрипторов ресурсов и сохраняет ее в памяти. Таблица дескрипторов ресурсов содержит информацию о ресурсах, доступных для совместного использования. Таблицы 205, 305 дескрипторов ресурсов пересылаются в процессор 101 управления, который создает глобальную таблицу 110 доступности ресурсов путем слияния таблиц, полученных от процессоров 101, 201, 301 связи, и использует эти коллективные данные, чтобы назначать ресурсы для процессоров в удаленных доменах. Процессор 101 управления принимает необходимую информацию из глобальной таблицы 110 доступности ресурсов, чтобы программировать междоменные NTB, через которые должен направляться трафик между назначенным ресурсом и процессором запроса, чтобы позволить устанавливать связь между ресурсом и процессором запроса.
[0027] Как показано на фиг. 1 и 4, на этапе 401, процессор 101 связи для PCIe домена 100 устанавливает канал связи через междоменный NTB 150 с процессором 201 связи в PCIe домене 200. В одной реализации, канал связи может быть установлен с сигнальным регистром(ами), присутствующим(и) в междоменном NTB 150. Сигнальные регистры используются для отправки прерываний от одной стороны непрозрачного моста к другой. Аналогичным образом, другой канал связи может быть установлен между процессором 101 связи и процессором 301 связи в PCIe домене 300.
[0028] После того, как канал связи для управления сообщениями установлен, процессоры 101, 201, 301 связи могут запустить алгоритм выбора, который выбирает один из них, чтобы стать процессором управления - центральным контроллером для всего межсоединения множества доменов, что в данном варианте осуществления означает PCIe домен 100, PCIe домен 200, PCIe домен 300. Этот алгоритм выбора, например, (1) может выбрать процессор связи с наименьшим средним расстоянием (т.е. отсчетом транзитных участков или задержки) до всех узлов во всей PCIe сети, (2) наименее используемый процессор связи или (3) процессор связи с наибольшим количеством ресурсов для совместного использования с удаленными доменами. Для иллюстрации, в этом варианте осуществления процессор 101 связи выбран в качестве процессора управления межсоединением множества доменов, показанных на фиг. 1, с использованием одного из алгоритмов, указанных выше. В этой примерной реализации процессор управления является логическим объектом, исполняемым на одном из процессоров связи, процессор управления может быть автономной системой, физически независимой от любого из процессоров связи, например, процессором, соединенным с процессором связи соединяемых доменов.
[0029] Этот процессор 101 управления, в показанном варианте осуществления процессор 101 связи, отвечает за назначение ресурсов в домене узлам в другом домене. Ресурсы могут быть частью или всей сетью связи с помощью TХ/RХ очередей, объемами хранения в форме раздела диска/твердотельного накопителя (SSD) или всего диска или даже нескольких дисков, некоторым объемом расширенной памяти и т.д. Процессор 101 управления также отвечает за контроль того, каким образом междоменные NTB программируются для разрешения доступа к ресурсам через несколько доменов. Например, размер BAR в междоменном NTB и значения адресов, загружаемых в записи таблицы преобразования адресов междоменного NTB. Корректные значения, загруженные в таблицы преобразования адресов, позволяют пакетам проходить через NTB и достигать корректного устройства в удаленном домене.
[0030] На этапе 403 процессоры 101, 201, 301 связи доменов 100, 200, 300 совместно используют информацию о ресурсах с процессором 101 управления. Информация для каждого совместно используемого ресурса включает в себя по меньшей мере часть из следующей информации: (1) идентификатор (ID) домена; (2) тип ресурса; (3) ID ресурса; (4) базовый адрес и размер адреса памяти; (5) информация об объеме; (6) дополнительная информация. Типом ресурса может быть подключение к сети, хранение, память, графический процессор (GPU), программируемая вентильная матрица (FPGA) и т.д. Или тип ресурса может включать в себя более конкретную информацию, например, информацию о марке, модели или функции, которая хотя и не является именно типом ресурса, но также может быть использована, чтобы идентифицировать, какие драйвера загрузить на удаленном процессоре. ID ресурса в устройстве, в зависимости от типа устройства, может быть виртуальной функцией, каналом, очередью и т.д. В случае, если имеется множеств ресурсов, доступных в устройстве (например, доля сетевой ширины полосы или класс трафика или раздел жесткого диска и т.д.), они, как правило, представлены очередями, каналами или виртуальными функциями. ID ресурса может быть использован для вычисления точного адреса (т.е. смещения от базового адреса) конкретного ресурса в устройстве.
[0031] Дополнительная информация может включать в себя детализацию ресурса, который может быть запрошен, эта информация детализации можно определить, сколько ресурсов должно быть возвращено для запроса. Дополнительная информация может включать в себя необходимый период времени обновления. Период времени обновления может быть использован, чтобы автоматически освобождать ресурс, если запрос обновления не поступил в течение установленного периода времени. Дополнительная информация может включать в себя указатель использования, который может быть исключительным, общим, статическим или динамическим. Исключительный представляют ситуацию, когда ресурс используется только одним процессором, в то время как общий может означать, что доступ к ресурсам мультиплексируется между несколькими процессорами. Статический представляет случай, когда ресурс статически назначен процессору и все время находится в распоряжении этого одного процессора, в то время как динамический означает, что ресурс доступен для процессора, когда ему желательно использовать его, но во время, когда процессор не использует его, ресурс может временно предоставляться другому процессору.
[0032] Информация о доступных ресурсах может быть отправлена выбранному процессору 101 управления в виде структурированной таблицы 105, 205, 305 дескрипторов ресурсов посредством протокола передачи сообщения либо путем создания очереди сообщений в памяти процессора управления, в которую данные записываются посредством механизма сигнализации междоменного NTB или посредством механизма прямого доступа к памяти (DMA). В случае, когда процессор управления является процессором связи конкретного домена, подобно тому, как процессор 101 управления, показанный на фиг. 1, также является процессором 101 связи PCIe домена 100, процессор 101 управления сам способен получать информацию о ресурсах PCIe домена 100.
[0033] На этапе 405 процессор 101 управления формирует глобальную таблицу 110 доступности ресурсов или базу данных на основе таблиц 105, 205, 305 дескрипторов ресурсов, полученных от процессоров 101, 201, 301 связи доменов 100, 200, 300 в межсоединении. Таблица 1 показывает примерную глобальную таблицу 110 доступности ресурсов, сохраненную в памяти 102, построенную процессором 101 управления.
<b>ТАБЛИЦА 1</b>
IDдомена
Тип ресурса
IDресурса
Базовый адрес
Длина адреса
Объем
2
Intel 82599
VF 53
x80005400
32768
1000 Мбит/с
2
BCM 4395
VF 20
x00002040
16384
500 Мбит/с
1
SATA CNT1
CH5
x00506080
65536
15 Гб
3
EM
Q2
x10004000
1073741824
1024 Мб
[0034] Процессор 101 управления может выделять подходящие ресурсы на запрос ресурсов, поступающий из одного из доменов 100, 200, 300. Информация, перечисленная в таблице 1, является только примером; информация о доступных ресурсах, посланная от процессоров связи (101, 201, 301) к процессору 101 управления, может включать в себя больше информации, чем показано в таблице 1, или может включать только часть информации, указанной в таблице 1.
[0035] Процессор 101 управления координирует с процессорами связи, участвующими в программировании междоменных NTB, которые, в конечном счете, будут обеспечивать междоменный доступ к ресурсам между процессором 201 связи и выделенным ресурсом, который находится в другом домене.
[0036] На этапе 407, в качестве примерной реализации, когда вычислительный объект (т.е. виртуальная машина/контейнер/ приложение/задача/задание и т.д.) создается на рабочем процессоре 212 в PCIe домене 200, с ним ассоциируется набор запросов, который описывает, какое количество каждого типа ресурсов (т.е. подключение к сети, хранение, удаленная память, GPU, FPGA и т.д.) требуется выделить данному вычислительному объекту. Набор запросов передается в процессор 201 связи PCIe домена 200, который пытается согласовать запросы с имеющимися ресурсами в PCIe домене 200. Если, например, есть один запрос, который не может быть обслужен с ресурсами внутри PCIe домена 200, процессор 201 связи отправляет запрос ресурса в процессор 101 управления, чтобы запросить необходимый необслуженный ресурс.
[0037] На этапе 409, после приема запроса ресурсов, процессор 101 управления просматривает информацию о ресурсах, поддерживаемую в глобальном наличии ресурсов (т.е. таблице 1), и выделяет один или более ресурсов в соответствии с информацией о запрашиваемом типе и запрашиваемом объеме, переносимой в запросе ресурсов. Информация о запрашиваемом типе может включать в себя желательный тип ресурса (например, подключение к сети, хранение, удаленная память, GPU, FPGA и т.д.) или конкретную информацию о марке, модели или функции. В случае если информация о запрошенном типе включает в себя желательный тип ресурса, процессор управления может осуществлять поиск ресурса такого же типа, как запрашивается. В ситуации, когда информация о запрашиваемом типе включает в себя информацию о марке, модели или функции, зависящей от политики, процессор 101 управления может выполнять поиск только ресурсов той же марки, модели или функции. Или процессор управления 101 может сначала искать ресурсы той же марки, модели или функции, а затем, если это не может быть найдено, процессор управления может продолжать поиск других ресурсов того же типа; или процессор 101 управления может осуществлять поиск ресурсов того же типа, без особого учета информации о марке, модели или функции.
[0038] Для того чтобы выполнить требование объема в запросе ресурсов, процессор 101 управления может выполнять поиск только ресурсов, которые имеют по меньшей мере такой же оставшийся объем ресурсов (например, сетевой ширины полосы, емкости памяти и т.д.). В дополнение к рассмотрению требуемого типа и требуемого объема, процессор 101 управления может дополнительно исполнять алгоритм выделения ресурсов, который нацелен на отыскание подходящего ресурса для запроса ресурсов. Алгоритм выделения ресурсов может быть основан на различных правилах и условиях сети и ресурсах, поддерживаемых в глобальной таблице доступности ресурсов. Например, алгоритм выделения может выбирать ресурс, ближайший с точки зрения задержки или подсчета транзитных участков или количества пересекаемых NTB, сетевой нагрузки (например, выбирая ресурс, который доступен по каналу, который имеет использование ниже определенного уровня, например, ниже 50%, или имеет заданную величину доступной пропускной способности, такой, как 10 Гбит/с), использования ресурсов (например, в пользу устройства с таким же типом ресурса, но более низким уровнем использования, например, в случае 10G NIC, выбирая тот, который имеет большую доступную полосу пропускания) и т.д.
[0039] На этапе 411, когда процессор 101 управления выделил ресурс для запроса ресурсов, он получает информацию адреса (т.е. базовый адрес и длину адреса) для программирования NTB. Процессор 101 управления инструктирует процессоры связи, которые способны программировать задействованные междоменные NTB с адресной информацией, чтобы программировать NTB для обеспечения возможности рабочему процессору получать доступ к этим ресурсам, выделенным процессором 101 управления. Термин “задействованные NTB” означает NTB, через которые должен направляться трафик между рабочим процессором 212 в PCIe домене 200 и выделенным ресурсом. Например, расширение памяти (ЕМ) в PCIe домене 300 может быть выделено, чтобы обслуживать запрос ресурса от рабочего процессора 212 в PCIe домене 200. Для того чтобы позволить рабочему процессору 212 получить доступ к ЕМ, находящемуся в PCIe домене 300, NTB 150, соединяющий PCIe домен 100 и PCIe домен 200, и NTB 250, соединяющий PCIe домен 100 и PCIe домен 300, представляют собой NTB, которые должны программироваться.
[0040] Процессор связи на стороне NTB должен иметь возможность программировать NTB. NTB 150 может быть запрограммирован с помощью процессора 101 управления (процессора связи) или процессора 201 на другой стороне NTB. NTB 250 может быть запрограммирован с помощью процессора 101 управления или процессора 301 связи на другой стороне NTB 250. Таким образом, процессор управления может программировать NTB 150 и NTB 250 самостоятельно или инструктировать процессор 201 связи программировать NTB 150 и процессор 301 связи программировать NTB 250. С использованием адресной информации (т.е. базового адреса и длины адреса) из глобальной таблицы доступности ресурсов, указанные NTB могут быть запрограммированы, чтобы разрешить рабочему процессору 212 получить доступ к ЕМ в PCIe домене 300.
[0041] На этапе 413, после того как NTB 150, 250 были запрограммированы, процессор 101 управления уведомляет процессор 201 связи в домене запрашивающего процессора необходимой информацией, которая в результате уведомляет запрашивающий процессор и обеспечивает необходимую информацию, требуемую запрашивающему процессору (рабочему процессору 212). Необходимая информация может включать в себя тип выделенного ресурса из глобальной таблицы доступности, базовый адрес устройства (отображенной локальный адрес в домене запрашивающего процессора устройства) и/или ID ресурса. Типом выделенного ресурса может быть, например, Intel 82599 или Broadcom BCMxyz, в настоящем варианте осуществления это ЕМ. Тип выделенного ресурса может помочь запрашиваемому процессору загрузить соответствующий драйвер. ID ресурса может определить, какие очередь/канал/VF ресурса доступны.
[0042] После того как вычислительный объект завершает свое задание, процессор связи получает уведомление, которое в результате уведомляет процессор 101 управления. Процессор 101 управления выполняет необходимые действия, чтобы освободить ранее выделенные удаленные ресурсы, включая очистку запрограммированных NTB.
[0043] Вариант осуществления изобретения использует процессор управления для сбора информации о доступных ресурсах для всего межсоединения множества PCIe доменов и назначения ресурсов в PCIe домене узлам в другом PCIe домене. Ресурсы множества PCIe доменов могут быть использованы эффективным образом.
[0044] Специалистам в данной области техники должно быть понятно, что, в сочетании с примерами, описанными в вариантах осуществления, блоки и этапы алгоритма могут быть реализованы посредством электронных аппаратных средств или комбинации компьютерного программного обеспечения и электронных аппаратных средств. Выполняются ли функции аппаратными средствами или программным обеспечением, зависит от конкретных применений и ограничительных условий проектирования технических решений. Специалисты в данной области техники могут использовать различные методы для реализации описанных функций для каждого конкретного применения, и отличающийся метод для реализации описанных функций не должен рассматриваться как выходящий за пределы объема настоящей заявки.
[0045] При реализации в форме функционального блока программного обеспечения и продаже или использовании как отдельного продукта, функции могут быть сохранены на считываемом компьютером носителе данных. Основываясь на таком понимании, технические решения по настоящей заявке по существу, или часть, вносящая вклад в уровень техники, или часть технических решений могут быть реализованы в форме программного продукта. Компьютерный программный продукт может включать в себя инструкцию или инструкции для инструктирования компьютерного устройства или, более конкретно, одного или более процессоров в компьютерном устройстве вместе с памятью (вычислительное устройство может представлять собой персональный компьютер, сервер, сетевое устройство или т.п.), чтобы выполнять все или часть этапов способа, описанного в каждом варианте осуществления настоящей заявки. Носитель хранения данных включает в себя любой носитель, который может хранить программные коды, такой как U-диск, съемный жесткий диск, постоянная память (ROM), оперативная память (RAM), магнитный диск или оптический диск.