特許第6231679号(P6231679)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

特許6231679周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理
<>
  • 特許6231679-周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理 図000003
  • 特許6231679-周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理 図000004
  • 特許6231679-周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理 図000005
  • 特許6231679-周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6231679
(24)【登録日】2017年10月27日
(45)【発行日】2017年11月15日
(54)【発明の名称】周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理
(51)【国際特許分類】
   G06F 13/36 20060101AFI20171106BHJP
   G06F 12/06 20060101ALI20171106BHJP
   G06F 13/14 20060101ALI20171106BHJP
【FI】
   G06F13/36 310E
   G06F12/06 515M
   G06F13/14 310D
   G06F13/14 310G
   G06F13/36 520D
   G06F13/36 520B
【請求項の数】24
【全頁数】16
(21)【出願番号】特願2016-528329(P2016-528329)
(86)(22)【出願日】2014年7月22日
(65)【公表番号】特表2016-530618(P2016-530618A)
(43)【公表日】2016年9月29日
(86)【国際出願番号】CN2014082683
(87)【国際公開番号】WO2015010597
(87)【国際公開日】20150129
【審査請求日】2016年3月18日
(31)【優先権主張番号】61/857,031
(32)【優先日】2013年7月22日
(33)【優先権主張国】US
(31)【優先権主張番号】14/315,099
(32)【優先日】2014年6月25日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100146835
【弁理士】
【氏名又は名称】佐伯 義文
(74)【代理人】
【識別番号】100140534
【弁理士】
【氏名又は名称】木内 敬二
(72)【発明者】
【氏名】ノーバート・エギ
(72)【発明者】
【氏名】ロバート・ラサター
(72)【発明者】
【氏名】トーマス・ボイル
(72)【発明者】
【氏名】ジョン・ピーターズ
(72)【発明者】
【氏名】グアンユ・シ
【審査官】 田上 隆一
(56)【参考文献】
【文献】 米国特許出願公開第2010/0088456(US,A1)
【文献】 特開2013−045236(JP,A)
【文献】 国際公開第2012/157103(WO,A1)
【文献】 特開2012−073660(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/36
G06F 12/06
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
リンクプロセッサによってそれぞれ管理され、かつインタードメイン非透過的ブリッジ(NTB)を介して1つ以上の他のドメインに接続された複数のPCIeドメインを含む周辺コンポーネント相互接続エクスプレス(PCIe)ネットワーク内のインタードメインリソース割り振りを管理するための装置であって、
メモリと、
前記メモリと連結された管理プロセッサであって、前記管理プロセッサは、
各ドメインのリンクプロセッサによって報告された前記ドメインの利用可能リソースについての情報を取得し、利用可能リソースについての前記情報は、報告された各利用可能リソースのメモリアドレスを含み、
前記メモリ内に、前記利用可能リソースについての前記取得された情報を記憶し、
前記ドメインの1つの要求プロセッサからリソース要求を受信し、
前記リソース要求に応答して、前記要求プロセッサに、前記利用可能リソースのリソースを割り振り、前記割り振られたリソースは、前記要求プロセッサを有する前記ドメインとは異なるドメインに存在し、
前記メモリから、前記割り振られたリソースのメモリアドレス情報を取得し、
前記要求プロセッサと前記割り振られたリソースとの間のクロスドメインリソースアクセスを可能にするために、前記割り振られたリソースと前記要求プロセッサとの間のトラフィックが、前記割り振られたリソースの前記メモリアドレス情報に基づいて流れることとなる1つ以上のインタードメインNTBをプログラムするよう1つ以上のリンクプロセッサに指示する
ように構成された管理プロセッサと
を備える装置。
【請求項2】
報告された前記利用可能リソースについての前記情報は、各リソースのタイプについての情報を含む、請求項1に記載の装置。
【請求項3】
タイプについての前記情報は、プロセッサのためにロードするドライバを識別するための利用可能リソースのメイク、モデル、またはファンクションについての情報を含む、請求項2に記載の装置。
【請求項4】
前記管理プロセッサは、前記要求プロセッサにロードされるドライバを識別するために、前記要求プロセッサに、前記メモリから取得された前記割り振られたリソースの前記タイプについての情報を送信するようにさらに構成される、請求項2または3に記載の装置。
【請求項5】
各利用可能リソースの前記メモリアドレスは、ベースアドレスと、前記メモリアドレスのサイズを含む、請求項1〜4のいずれか一項に記載の装置。
【請求項6】
報告された前記利用可能リソースについての前記情報は、各利用可能リソースの量情報を含み、該量情報は、ネットワーク帯域幅およびストレージ容量を含む、請求項1〜5のいずれか一項に記載の装置。
【請求項7】
前記管理プロセッサは、前記リソース要求に搬送される要求されるタイプおよび要求量についての情報に基づいて、前記メモリ内に記憶された前記利用可能リソースについての前記情報を検索することによって、前記リソースを割り振る、請求項1〜6のいずれか一項に記載の装置。
【請求項8】
前記管理プロセッサは、レイテンシ、ホップ数、または横断されるNTBの数の点で最も近いリソースを判定するための割り振りアルゴリズムをさらに実行することによって、前記リソースを割り振る、請求項7に記載の装置。
【請求項9】
リンクプロセッサによってそれぞれ管理され、かつインタードメイン非透過的ブリッジ(NTB)を介して1つ以上の他のドメインに接続された複数のPCIeドメインを含む周辺コンポーネント相互接続エクスプレス(PCIe)ネットワーク内のインタードメインリソース割り振りを管理するための方法であって、前記方法は、
各ドメインのリンクプロセッサによって報告された前記ドメインの利用可能リソースについての情報を取得するステップであって、利用可能リソースについての前記情報は、報告された各利用可能リソースのメモリアドレスを含む、ステップと、
メモリ内に、前記利用可能リソースについての前記取得された情報を記憶するステップと、
前記ドメインの1つの要求プロセッサからリソース要求を受信するステップと、
前記リソース要求に応答して、前記要求プロセッサに、前記利用可能リソースのリソースを割り振るステップであって、前記割り振られたリソースは、前記要求プロセッサを有する前記ドメインとは異なる別のドメインに存在する、ステップと、
前記メモリから、前記割り振られたリソースのメモリアドレス情報を取得するステップと、
前記要求プロセッサと前記割り振られたリソースとの間のクロスドメインリソースアクセスを可能にするために、前記割り振られたリソースと前記要求プロセッサとの間のトラフィックが、前記割り振られたリソースの前記メモリアドレス情報に基づいて流れることとなる1つ以上のインタードメインNTBをプログラムするよう1つ以上のリンクプロセッサに指示するステップと
を含む方法。
【請求項10】
報告された前記利用可能リソースについての前記情報は、各リソースのタイプについての情報を含む、請求項9に記載の方法。
【請求項11】
タイプについての前記情報は、プロセッサのためにロードするドライバを識別するための利用可能リソースのメイク、モデル、またはファンクションについての情報を含む、請求項10に記載の方法。
【請求項12】
前記要求プロセッサにロードされるドライバを識別するために、前記要求プロセッサに、前記メモリから取得された前記割り振られたリソースの前記タイプについての情報を送信するステップをさらに含む、請求項10または11に記載の方法。
【請求項13】
各利用可能リソースの前記メモリアドレスは、ベースアドレスと、前記メモリアドレスのサイズを含む、請求項9〜12のいずれか一項に記載の方法。
【請求項14】
報告された前記利用可能リソースについての前記情報は、各利用可能リソースの量情報を含み、該量情報は、ネットワーク帯域幅およびストレージ容量を含む、請求項9〜13のいずれか一項に記載の方法。
【請求項15】
前記リソースは、前記リソース要求に搬送される要求されるタイプおよび要求量についての情報に基づいて、前記メモリ内に記憶された前記利用可能リソースについての前記情報を検索することによって割り振られる、請求項9〜14のいずれか一項に記載の方法。
【請求項16】
前記リソースは、レイテンシ、ホップ数、または横断されるNTBの数の点で最も近いリソースを判定するための割り振りアルゴリズムをさらに実行することによって割り振られる、請求項15に記載の方法。
【請求項17】
コンピュータに請求項9〜16のいずれか一項に記載の方法を実行させるプログラム。
【請求項18】
リンクプロセッサによってそれぞれ管理され、かつ非透過的ブリッジ(NTB)を介して1つ以上の他のドメインに接続された複数のPCIeドメインを含む周辺コンポーネント相互接続エクスプレス(PCIe)ネットワーク内の装置であって、
共有される利用可能リソースについての情報を含むリソース記述子テーブルを記憶するように構成されたメモリと、
前記メモリと連結されたリンクプロセッサとを備えていて、前記リンクプロセッサは、
前記リンクプロセッサによって制御されるドメインの利用可能リソースについての情報を、前記リンクプロセッサによって制御されるドメインに接続されている他のドメイン内の管理プロセッサに送信し、前記ドメインの利用可能リソースについての情報は、各利用可能リソースのメモリアドレス、特にベースアドレスおよび前記メモリアドレスのサイズを含み、
リソース要求を前記他のドメインの管理プロセッサに送信し、
前記管理プロセッサから必要な情報を有する通知を受信し、前記必要な情報は、グローバルリソース可用性テーブルから割り振られたリソースのタイプ、前記リンクプロセッサによって制御されるドメイン内にマッピングされたローカルアドレスであるデバイスのベースアドレス、および/またはリソースIDを含む、
ように構成されている、
装置。
【請求項19】
前記リンクプロセッサは、複数のPCIeドメインの全体の相互接続のための中央コントローラである管理プロセッサになるように、それぞれドメインを管理する複数のリンクプロセッサのうちの1つを選択する選択アルゴリズムを実行するようにさらに構成されている、請求項18に記載の装置。
【請求項20】
前記リンクプロセッサは、前記リンクプロセッサによって制御されるドメイン内のワーカープロセッサ上に生成される計算器エンティティと関連付けられる要求のセットを受信し、前記要求を前記リンクプロセッサによって制御されるドメイン内の利用可能リソースとマッチングさせ、もし前記リンクプロセッサによって制御されるドメイン内のリソースと共に供されえない1つの要求が存在する場合、リソース要求を送信するようにさらに構成されている、請求項18に記載の装置。
【請求項21】
リンクプロセッサによってそれぞれ管理され、かつ非透過的ブリッジ(NTB)を介して1つ以上の他のドメインに接続された複数のPCIeドメインを含む周辺コンポーネント相互接続エクスプレス(PCIe)ネットワーク内のインタードメインリソース割り振りを管理するための方法であって、前記方法は、
リンクプロセッサによって制御されるドメインの利用可能リソースについての情報を、前記リンクプロセッサによって制御されるドメインに接続されている他のドメイン内の管理プロセッサに送信するステップであって、前記ドメインの利用可能リソースについての情報は、各利用可能リソースのメモリアドレスを含む、ステップと、
リソース要求を前記管理プロセッサに送信するステップと、
前記管理プロセッサから必要な情報を有する通知を受信するステップであって、前記必要な情報は、グローバルリソース可用性テーブルから割り振られたリソースのタイプ、前記リンクプロセッサによって制御されるドメイン内にマッピングされたローカルアドレスであるデバイスのベースアドレス、および/またはリソースIDを含む、ステップと
を含む方法。
【請求項22】
前記方法は、複数のPCIeドメインの全体の相互接続のための中央コントローラである管理プロセッサになるように、それぞれドメインを管理する複数のリンクプロセッサのうちの1つを選択する選択アルゴリズムを実行するステップをさらに含む、請求項21に記載の方法。
【請求項23】
前記方法は、前記リンクプロセッサによって制御されるドメイン内のワーカープロセッサ上に生成される計算器エンティティと関連付けられる要求のセットを受信するステップと、前記要求を前記リンクプロセッサによって制御されるドメイン内の利用可能リソースとマッチングさせるステップと、もし前記リンクプロセッサによって制御されるドメイン内のリソースと共に供されえない1つの要求が存在する場合、リソース要求を送信するステップとをさらに含む、請求項21に記載の方法。
【請求項24】
コンピュータに請求項21〜23のいずれか一項に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
〔関連出願の相互参照〕
本出願は、2014年6月25日に出願した、発明の名称を「resource management for peripheral component interconnect express domains」とする米国非仮出願第14/315,099号の優先権と、2013年7月22日に出願した、発明の名称を「Cascading PCI-Express network domains」とする米国仮出願第61/857,031号の優先権を主張するものであり、両出願はその全体が参照により本明細書に組み込まれる。
【0002】
本出願は、一般に周辺コンポーネント相互接続エクスプレス(PCIe)ネットワークに関し、具体的には、PCIeネットワーク上でインタードメインリソース割り振りを管理するための技術に関する。
【背景技術】
【0003】
PCI(Peripheral Component Interconnect)技術の後継としてのPCI-Express(PCIe)は、パーソナルコンピュータ(PC)またはサーバ内で展開されたCPUとそれらの周辺機器とを相互接続するための最も広く使用されている手段である。それは、高スループット、低遅延、パケットベースかつスイッチト相互接続技術である。
【0004】
それぞれがそれ独自のホスト、すなわち、マイクロコンピュータまたはCPUを有する複数のPCIeドメインは、一つまたは複数のPCIe非透過的ブリッジ(NTB)によって相互接続されている。この構成におけるNTBは、それらが接続されたPCIeドメインのアドレス空間との間のアドレス変換を実行するために使用され、それによって、分離されたPCIeドメイン内のノード(すなわち、I/Oデバイス、CPU等)間でデータ転送を実行することができる。
【0005】
PCIeネットワークは、規模と複雑さにおいて成長し続けている。PCIeドメインを横断したリソース管理の必要が生じると予想される。
【発明の概要】
【課題を解決するための手段】
【0006】
本発明の実施形態は、周辺コンポーネント相互接続エクスプレス(PCIe)ネットワーク内のインタードメインリソース割り振りを管理するための装置を提供する。PCIeネットワークは、リンクプロセッサによってそれぞれ管理され、かつ非透過的ブリッジ(NTB)を介して1つ以上の他のドメインに接続された複数のPCIeドメインを含む。装置は、メモリと、メモリに連結された管理プロセッサを含む。管理プロセッサは、各ドメインのリンクプロセッサによって報告されたドメインの利用可能リソースについての情報を取得するように構成される。利用可能リソースについての情報は、報告された各利用可能リソースのメモリアドレスを含む。プロセッサは、利用可能リソースについて取得された情報をメモリ内に記憶し、かつドメインの1つの要求プロセッサからリソース要求を受信するように構成される。リソース要求に応答して、プロセッサは、利用可能リソースのリソースを要求プロセッサに割り振る。割り振られたリソースは、要求プロセッサを有するドメインとは異なるドメインに存在する。プロセッサは、割り振られたリソースのメモリアドレス情報をメモリから取得し、1つ以上のリンクプロセッサに、割り振られたリソースと要求プロセッサとの間のトラフィックが、割り振られたリソースのメモリアドレス情報に基づいて流れることとなる1つ以上のインタードメインNTBをプログラムするように指示し、要求プロセッサと割り振られたリソースとの間のクロスドメインリソースアクセスを可能にする。
【0007】
本発明の別の実施形態は、周辺コンポーネント相互接続エクスプレス(PCIe)ネットワーク内のインタードメインリソース割り振りを管理するための方法を提供する。PCIeネットワークは、リンクプロセッサによってそれぞれ管理され、かつ非透過的ブリッジ(NTB)を介して1つ以上の他のドメインに接続された複数のPCIeドメインを含む。プロセッサは、各ドメインのリンクプロセッサによって報告されたドメインの利用可能リソースについての情報を取得する。利用可能リソースについての情報は、報告された各利用可能リソースのメモリアドレスを含む。プロセッサは、利用可能リソースについて取得された情報をメモリ内に記憶する。プロセッサは、ドメインの1つの要求プロセッサからリソース要求を受信する。リソース要求に応答して、プロセッサは、利用可能リソースのリソースを要求プロセッサに割り振る。割り振られたリソースは、要求プロセッサを有するドメインとは異なる別のドメインに存在する。プロセッサは、割り振られたリソースのメモリアドレス情報をメモリから取得し、1つ以上のリンクプロセッサに、割り振られたリソースと要求プロセッサとの間のトラフィックが、割り振られたリソースのメモリアドレス情報に基づいて流れることとなる1つ以上のインタードメインNTBをプログラムするように指示し、要求プロセッサと割り振られたリソースとの間のクロスドメインリソースアクセスを可能にする。
【0008】
前述の方法は、1つ以上のプロセッサ、メモリ、およびこれらの方法を実行するためのメモリ内に記憶された1つ以上のモジュール、プログラムまたは命令のセットによって実行されてもよい。
【0009】
前述の方法を実行するための命令が、1つ以上のプロセッサにより実行されるよう構成されたコンピュータプログラム製品に含まれてもよい。いくつかの実施形態では、装置は、コンピュータ読み取り可能な記憶媒体(例えば、1つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、または他の不揮発性ソリッドステートメモリデバイス)およびその中に埋め込まれた実行可能なコンピュータプログラムメカニズムを含む。
【図面の簡単な説明】
【0010】
図1】3つの例示的なPCIeドメインを含むPCIeネットワークのブロック図である。
図2】インタードメインNTBを使用したメモリアドレス変換を示す2つのPCIeドメインのブロック図である。
図3】インタードメインNTBを使用したルートID変換を示す2つのPCIeドメインのPCIeネットワークのブロック図である。
図4】PCIeネットワーク内のインタードメインリソース割り振りを管理するための方法のフローチャートである。
【発明を実施するための形態】
【0011】
本願の前述の目的、技術的解決策、および利点をより理解し易くするために、詳細な説明が以下に提供される。実施形態、添付図面に示される実施例が参照される。ブロック図、フローチャート、および/または実施例が1つ以上の機能および/または動作を含む限り、そのようなブロック図、フローチャート、または実施例の中の各機能および/または動作が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせの広い範囲によって個々におよび/または集合的に実装され得ることは、当業者によって理解されるであろう。
【0012】
図1は、1つ以上のNTBを介して相互接続された複数のドメインを示している。例示の目的で、図1に示される3つのPCIeドメイン100、200、300のみが存在する。NTBを介して相互接続されるより多くのPCIeドメインが存在してもよい。ドメイン100、200は、NTB 150を介して接続され、一方で、ドメイン100、300は、NTB 250を介して接続される。図1に示されるドメイン100、200、300は、それぞれリンクプロセッサ101、201、301によって管理される。
【0013】
別のドメインは、別の構成を有する別のデバイスを含んでもよい。例示の目的で、図1に示されるドメイン100、200、および300はそれぞれ、他のドメインに類似したデバイスを含んでおり、かつドメイン100のみが詳細に説明される。ドメイン100は、リンクプロセッサ(例えば、CPU)101、PCIeファブリック103、1つ以上のPCIeI/Oデバイス131-139、および1つ以上のワーカープロセッサ111-119を含む。PCIeファブリック103は、お互いに相互接続された1つまたは複数のPCIeスイッチ(図1には図示せず)を備える。リンクプロセッサ101、PCIe I/Oデバイス131-139、およびワーカープロセッサ111-119は、PCIeファブリック103内のPCIeスイッチの少なくとも1つに接続される。
【0014】
リンクプロセッサ101は、アドレスを、ドメイン100内のPCIeファブリック103に接続されたデバイス(すなわち、ワーカープロセッサ、I/Oデバイス等)に割り当てることを担うドメイン100のルートホストとして機能する。ワーカープロセッサ111、112は、それぞれ非透過的ブリッジ(NTB)121、122を介してPCIeファブリック103に接続される。NTB 121は、異なるメモリドメインの2つのホストであるリンクプロセッサ101およびワーカープロセッサ111の単離を可能にし、さらにリンクプロセッサ101とワーカープロセッサ111との間のステータスおよびデータ交換を可能にする。NTB 121は、リンクプロセッサ101とワーカープロセッサ111のメモリ空間の間でのアドレス変換を提供する。NTB 121を使用すると、ブリッジの両側のデバイスは、他の側からは見えないが、リンクプロセッサ101とワーカープロセッサ111のメモリドメイン間のデータ転送とステータス交換のためにパスが提供される。NTB 121は、BAR(Base Address Register)の2つのセットを有し、1つはリンクプロセッサ101側用、もう1つはワーカープロセッサ111側用である。BARは、NTB 121のもう一方の側のメモリ空間へのアドレス変換ウィンドウを定義するために使用され、かつトランザクションが、ローカルメモリまたはI/Oにマッピングされることを可能する。
【0015】
ワーカープロセッサ119は、透過的ブリッジ(TB)129を介してPCIeファブリック103に接続されており、この場合、それらはエンドポイントとして構成される必要がある。リンクプロセッサ101は、ブリッジおよびエンドデバイスの検出を介してシステムを列挙する。TB 129については、“Type 1”ヘッダを有するコンフィギュレーションステータスレジスタ(CSR)は、リンクプロセッサ101に、このブリッジを越えて、下流にある追加のデバイスとして列挙し続けるように知らせる。エンドポイントデバイスとしてのワーカープロセッサ119は、そのCSR内に“type 0”ヘッダを有し、追加デバイスが下流にないことをイニューマレータ(すなわち、リンクプロセッサ101)に知らせる。CSRは、リンクプロセッサ101から、メモリおよびI/O開口を要求するために使用されるベースBARを含む。
【0016】
PCIeドメイン(例えば、PCIeドメイン100、200、または300)は、それ自身が独立した64ビットアドレス空間を有するPCIeネットワークである。ワーカープロセッサ111、112は、NTB 121、122を介してPCIeドメイン100に接続されている。もしNTBが使用される場合、物理的には、それらは分離されたドメインにある。しかし、この実施形態において、NTBの役割は、PCIeドメイン100からのアドレスをワーカープロセッサのドメインにマッピングすることであり、かつワーカープロセッサ111、112はさらに、リンクプロセッサ101の制御下にあり、従って、ワーカープロセッサ111、112は、論理レベルでPCIeドメイン100の一部として扱われてもよい。図1に示されるように、コンセプトドメインがこの実施形態において使用されるとき、ワーカープロセッサ111、112は、PCIeドメイン100の一部である。
【0017】
図1に示されるようなPCIeドメイン100では、各ノード(例えば、ワーカープロセッサまたはI/Oデバイス)は、2つの独立したアドレスを有している。1つはメモリアドレス(MA)であり、かつもう1つは、8ビットのバス番号、5ビットのデバイス番号、および3ビットのファンクション番号(すなわち、B:D:F)のシーケンスのフォーマットにおけるリクエストID(RID)である。プロセッサが、ノードの1つ、例えば、PCIe I/Oデバイス131-139の1つにデータの読み取りまたは書き込み要求を開始するとき、プロセッサは、そのMAを使用してノードをアドレス指定し(すなわち、パケットの宛先アドレスがノードのMAになることとなる)、かつそのRIDを有するそれ自体をデータのリクエスタとして同定する。ノードがデータ(読み取りの場合)またはデータ受信の確認応答パケット(書き込みの場合)を返信するとき、ノードは、宛先アドレスとしてプロセッサのRIDを使用する。従って、もし要求パケットが2つのドメインの境界上のNTBを横断する場合、両方のアドレス(すなわち、MAおよびRID)は、リモートドメインにおけるアドレス衝突を回避し、かつ正しいノードへのパケット(要求とそれに続く応答または完了確認応答との両方)を得るために、変換されなければならない。なお、PCIeドメイン内のアドレスは、他のPCIeドメインから独立して割り当てられるが、PCIeドメインのアドレス空間は、同一の64ビットアドレス空間であってよい。結果として、パケットがNTBを横断するときに発生する2つのアドレス変換が存在し、1つは、元々発信元ドメイン内のNTBのインターフェースのMAであったパケットのMAを変換し、さらにもう1つの変換は、RIDを変換する。これらの変換メカニズムのいずれも、以下に説明される。
【0018】
図2は、MAアドレス変換のための実施例を示している。アドレス指定およびアクセス可能な利用可能なデバイスが存在することをPCIeシステムに示すために、デバイスは、列挙フェーズ中にそれに割り振られたアドレスを有するBARで構成されている。このレジスタは、NTBの向こう側にアドレス指定されたパケットが存在するときに物理的に書き込まれるものである。PCIeドメイン100は、PCIeドメイン100内のリンクプロセッサ101(図2には図示せず)によって割り当てられたMA“A1”を有するノードA 118を含む。NTB 150を介してPCIeドメイン100に接続されたPCIeドメイン200は、PCIeドメイン200内のリンクプロセッサ201(図2には図示せず)によって割り当てられたメモリアドレス B2を有するノードB 218を含む。
【0019】
ドメイン内の要求ノードが、別のドメイン内のアクセスされるノードにアクセスできるようにするために、アクセスされるノードと同一の長さを有するアドレスが、リクエスタノードのドメイン内のNTB 150において利用可能である必要がある。例えば、PCIeドメイン200内のノードB 218からPCIeドメイン100内のノードA 118(アドレスA1)にアクセスするためには、A1と同一の長さを有するPCIeドメイン200内のアドレスA2が、NTB 150におけるPCIeドメイン100内のアドレスA1にマッピング可能であるべきである。PCIeドメイン200内のノードは、A1に変換され、かつNTB 150によってノードA 118に転送されることとなるアドレスA2にデータパケットを送信することによって、ノードA 118にアクセスしてもよい。同様に、PCIeドメイン100からPCIeドメイン200内のノードB218(アドレスB2)にアクセスするために、PCIeドメイン100内のB2と同一の長さを有するアドレスB1が、PCIeドメイン200内のアドレスB2にマッピングされる。MAは、ベースアドレスレジスタ(BAR)を介して実装される。
【0020】
具体的には、実施形態として、NTB 150は、PCIeドメイン100内のノードA 118の実アドレスA1に関連するA2のためのアドレス変換テーブルに変換エントリを保持する。もし、NTB 150のA2宛のパケットが受信された場合、パケット内の宛先アドレスは、アドレス変換テーブル内のA2に関連したアドレスであるA1に置き換えられる。同様に、NTB 150はまた、PCIeドメイン200内のノードB 218の実アドレスB2に関連したB1のためのアドレス変換テーブル内の変換エントリを保持する。もし、NTB 150のB1宛のパケットが受信された場合、パケット内の宛先アドレスは、アドレス変換テーブル内のB1に関連したアドレスであるアドレスB2に置き換えられる。アドレステーブルとアドレステーブルは、同一テーブルの異なる部分であってもよい。
【0021】
上述したように、応答または完了パケットは、データパケット内に検出されるRIDに基づいてリクエスタにルートバックされる。従って、もしドメインが横断される場合、RIDは、応答/完了パケットが適切なNTBに、かつ最終的には元のリクエスタノードにルートバックされることが確実となるように変換される必要がある。RIDアドレスの変換は、MAとは異なる方法で実行される。図3に示される実施例において、PCIeドメイン100内のノードA 118のRIDはA:B:Cであり、一方、PCIeドメイン200の側のNTBのインターフェースのRIDはU:V:Wである。ノードB 218宛のNTB 150にデータパケットが到達したとき、ノードA 118からリクエスタパケット内のRIDが、NTB 150に維持されるRID変換テーブルに挿入される。ノードA 118のRIDは、RID変換テーブル内のインデックスXと関連している。データパケットのための変換されたRIDは、NTBの8ビットポートアドレスと、RID変換テーブルからのインデックスXを連結することによって作成される。すなわち、PCIeドメイン200に転送されるデータパケットのための変換されたRIDアドレスはU:Xであり、ここで、Xは8ビット長である。いくつかの実施形態において、Xは5ビット長であり、かつB:D:Fアドレスの真ん中5ビットの部分(すなわち、“D”の部分のみ)とのみ置き換えられ、すなわち、この場合、新たなアドレスはU:X:Cとなり、ここで、Cは元のRIDのファンクションの値である。
【0022】
一旦、パケットがPCIeドメイン200内の宛先ノードB 218に到着し、かつノードB 218によって処理されると、応答パケットが作成され、かつU:X(または、上述で提供された代替的な実施例におけるU:X:C)に宛てられ、BUSアドレスUがNTB 150に属するとき、パケットをNTB 150に導く。一旦、パケットがNTB 150によって受信されると、NTB 150はRID変換テーブルを検索し、かつRID変換テーブルに維持されるXとA:B:Cとの間の関係に基づいてアドレスU:Xを変換してA:B:Cに戻す。次いで、NTB 150は、RID A:B:Cをターゲットにすることによって、ノードA 118にパケットを転送する。
【0023】
別のポリシーに基づいて、PCIeドメイン100、200、および300は、リモートドメインからのプロセッサが所定のドメイン内のリソースにアクセスできるようにしてもよい。ポリシーは、リソースの可用性、またはセントラルポリシーに基づくリソースの一部量の強制的な共有等に基づいてもよい。この目的のために、PCIeドメイン100、200、および300のリンクプロセッサは、リソース記述子テーブル105、205、および305をそれぞれ構成し、かつそのメモリ内にそれを記憶する。リソース記述子テーブルは、共有される利用可能なリソースについての情報を含んでいる。リソース記述子テーブル205、305は、リンクプロセッサ101、201、301から受信したテーブルをマージすることによってグローバルリソース可用性テーブル110を構成し、かつリモートドメイン内のプロセッサにリソースを割り当てるためのこの集約データを使用する管理プロセッサ101に転送される。管理プロセッサ101は、割り当てられたリソースと要求プロセッサとの間のトラフィックが、リソースと要求プロセッサとの間の通信を可能となるよう流れることとなるインタードメインNTBをプログラムするために、グローバルリソース可用性テーブル110から必要な情報を取得する。
【0024】
図1および4に示されるように、ステップ401において、PCIeドメイン100のためのリンクプロセッサ101は、インタードメインNTB 150を介して、PCIeドメイン200内のリンクプロセッサ201と通信チャネルを確立する。1つの実現形態において、インタードメインNTB 150内に存在するドアベルレジスタ(単数または複数)と通信チャネルが確立されてもよい。ドアベルレジスタは、非透過的ブリッジの一方の側から他方の側への割り込みを送信するために使用される。同様に、別の通信チャネルが、リンクプロセッサ101と、PCIeドメイン300内のリンクプロセッサ301との間に確立されてもよい。
【0025】
一旦、制御メッセージングのための通信チャネルが確立されると、リンクプロセッサ101、201、301は、管理プロセッサとなるそれらから1つを選択する選択アルゴリズムを実行してもよい。管理プロセッサは、現在の実施形態におけるPCIeドメイン100、PCIeドメイン200、およびPCIeドメイン300を意味する複数のドメインの全体の相互接続のための中央コントローラである。この選択アルゴリズムは、例えば、(1)PCIeネットワーク全体におけるすべてのノードに対して最小平均距離(すなわち、ホップ数またはレイテンシ)を有するリンクプロセッサ、(2)少なくとも利用されるリンクプロセッサ、または(3)リモートドメインと共有されるリソースの最大量を有するリンクプロセッサを選択してもよい。例示の目的で、この実施形態において、リンクプロセッサ101が、上述のアルゴリズムの1つを使用して、図1に示される複数のドメインの相互接続の管理プロセッサとして選択される。この実施例において、管理プロセッサは、リンクプロセッサの1つにおいて実行されている論理的なエンティティであり、管理プロセッサは、例えば、接続されたドメインのリンクプロセッサに接続されたプロセッサであるリンクプロセッサのいずれかから物理的に独立しているスタンドアロンシステムであってもよい。
【0026】
この管理プロセッサ101、すなわち図示された実施形態におけるリンクプロセッサ101は、ドメイン内のリソースを、別のドメイン内のノードに割り当てることを担う。リソースは、TX/RXキューを介したネットワークリンクの一部または全体、ディスク/ソリッドステートドライブ(SSD)パーティションまたはディスク全体あるいは複数のディスクの形式のストレージボリューム、拡張メモリの一部量等であってもよい。管理プロセッサ101は、複数のドメインを横断したリソースアクセスを可能にするためインタードメインNTB(単数または複数)がどのようにプログラムされるかを制御することも担う。例えば、インタードメインNTBにおけるBARのサイズ、およびインタードメインNTBのアドレス変換テーブルエントリにロードされるアドレス値である。アドレス変換テーブルにロードされる正しい値は、パケットがNTBを介して通過し、かつリモートドメイン内の正しいデバイスに到達できるようにする。
【0027】
ステップ403において、ドメイン100、200、300のリンクプロセッサ101、201、301は、管理プロセッサ101とリソース情報を共有する。共有される各リソースについての情報は、少なくとも以下の情報、すなわち、(1)ドメインID、(2)リソースのタイプ、(3)リソースID、(4)ベースアドレスおよびメモリアドレスのサイズ、(5)量情報、(6)追加情報の一部を含む。リソースのタイプは、ネットワーキング、ストレージ、メモリ、グラフィックスプロセッシングユニット(GPU)、フィールド・プログラマブル・ゲート・アレイ(FPGA)等であってもよい。あるいは、リソースのタイプは、より具体的な情報、例えば、メイク、モデル、またはファンクションについての情報を含んでもよく、それは単にリソースのタイプについてではなく、どのドライバをリモートプロセッサ上にロードするかを識別するために使用されてもよい。デバイス内のリソースIDは、デバイスタイプに応じて、それは仮想関数、チャネル、キュー等であってよい。デバイス内に利用可能な複数のリソース(例えば、ネットワーク帯域幅のフラクションまたはトラフィッククラスまたはハードディスクのパーティション等)が存在する場合、かつこれらは一般的に、キュー、チャネルまたは仮想関数によって表される。リソースIDは、デバイス内の特定のリソースの正確なアドレス(すなわち、ベースアドレスからのオフセット)を計算するために使用されてもよい。
【0028】
追加情報は、要求され得るリソースの粒度を含んでもよく、その粒度情報は、要求に対してどれくらいの量のリソースを戻すかを定義してもよい。追加情報は、必要な期間更新を含んでもよい。期間更新は、更新要求が、設定された期間内に到達しなかった場合に、自動的にリソースを解放するために使用されてもよい。追加情報は、排他的、共有、静的、または動的であり得る使用インジケータを含んでもよい。排他的は、リソースが、シングルプロセッサによってのみ使用される状況を表しており、一方で共有は、リソースアクセスが複数のプロセッサ間で多重化されることを意味してもよい。静的は、リソースがプロセッサに静的に割り当てられ、かつ常にシングルプロセッサの占有にある場合を表しており、一方で動的は、それを使用したいときにリソースはプロセッサで利用可能であるが、プロセッサがそれを使用しないときには、リソースは一時的に別のプロセッサで利用できるようにされてもよいことを意味している。
【0029】
利用可能なリソースの情報は、メッセージパッシングプロトコルを介して、またはデータが書き込まれる管理プロセッサのメモリ内に、インタードメインNTBのドアベルを介して、またはダイレクトメモリアクセス(DMA)メカニズムを介してメッセージキューを作成することによって、構造化されたリソース記述子テーブル105、205、305として、選択された管理プロセッサ101に送信されてもよい。管理プロセッサが、PCIeドメイン100のリンクプロセッサ101でもある図1に示される管理プロセッサ101のような特定のドメインのリンクプロセッサとなる場合、管理プロセッサ101それ自体が、PCIeドメイン100のリソース情報を取得することが可能である。
【0030】
ステップ405において、管理プロセッサ101は、相互接続されているドメイン100、200、300のリンクプロセッサ101、201、301から受信されたリソース記述子テーブル105、205、305に基づいてグローバルリソース可用性テーブル110またはデータベースを構成する。表1は、管理プロセッサ101によって構成されたメモリ102内に記憶された例示的なグローバルリソース可用性テーブル110を示す。
【0031】
【表1】
【0032】
管理プロセッサ101は、ドメイン100、200、300の1つから到達するリソース要求に適切なリソースを割り振ってもよい。表1に記載されている情報は、単なる一例である。リンクプロセッサ(101、201、301)から管理プロセッサ101に送信される利用可能リソースについての情報は、表1に示されるよりも多くの情報を含んでもよく、または表1に記載された情報の一部のみを含んでもよい。
【0033】
管理プロセッサ101は、最終的にはリンクプロセッサ201と、別のドメインにある割り振られたリソースとの間のクロスドメインリソースアクセスを可能にするインタードメインNTB(単数または複数)をプログラムすることに関与するリンクプロセッサと連携する。
【0034】
ステップ407において、実施例として、計算エンティティ(すなわち、仮想マシン/コンテナ/アプリケーション/タスク/ジョブ等)がPCIeドメイン200内のワーカープロセッサ212上に生成されるとき、要求のセットは、各リソースタイプ(すなわち、ネットワーキング、ストレージ、リモートメモリ、GPU、FPGA等)のどれだけが、所定の計算エンティティに割り振られる必要があるのかを記述するものと関連付けられる。要求のセットは、要求をPCIeドメイン200内の利用可能リソースとマッチングさせようとするPCIeドメイン200のリンクプロセッサ201に伝達される。もし、例えばPCIeドメイン200内のリソースと共に供されえない1つの要求が存在する場合、リンクプロセッサ201は、供されていない必要なリソースを要求するために、リソース要求を管理プロセッサ101に送信する。
【0035】
ステップ409において、リソース要求を受信した後、管理プロセッサ101は、グローバルリソース可用性(すなわち、表1)において維持されるリソース情報を検索し、かつリソース要求によって搬送された要求されるタイプおよび要求される量情報に基づいて1つ以上のリソースを割り振る。要求されるタイプ情報は、所望のリソースタイプ(例えば、ネットワーキング、ストレージ、遠隔メモリ、GPU、FPGA等)またはメイク、モデル、若しくはファンクションについての特定の情報を含んでもよい。要求されるタイプ情報が所望のリソースタイプを含む場合、管理プロセッサは、要求されたものと同一のタイプのリソースを検索してもよい。要求されるタイプ情報がメイク、モデル、またはファンクションについての情報を含む状況においては、ポリシーによって決まる。管理プロセッサ101は、同一のメイク、モデル、またはファンクションのリソースを検索するのみでもよい。または、管理プロセッサ101は、まず最初に同一のメイク、モデル、またはファンクションのリソースを検索してもよく、次いで、もしこれが検出されない場合は、管理プロセッサは、同一のタイプの他のリソースを検索し続けてもよく、あるいは、管理プロセッサ101は、メイク、モデル、またはファンクション情報についての情報に対して特別考慮することなく同一タイプのリソースを検索してもよい。
【0036】
リソース要求の量の要件を満たすために、管理プロセッサ101は、少なくとも残りのリソース(例えば、ネットワーク帯域幅、ストレージ容量等)の量が多いリソースを検索するのみでもよい。要求されるタイプおよび要求される量について考慮することに加えて、管理プロセッサ101は、リソース要求に対して適切なリソースを検索することを目的とするリソース割り振りアルゴリズムをさらに実行してもよい。リソース割り振りアルゴリズムは、ネットワークの異なる規則および条件並びにグローバルリソース可用性テーブルに維持されたリソースに基づいてもよい。例えば、割り振りアルゴリズムは、レイテンシまたはホップ数または横断されるNTBの数、ネットワーク負荷(例えば、一定レベル以下、例えば50%以下で利用されているパス、または10Gbpsのような利用可能な帯域幅の所定の量を有するパスを介してアクセス可能なリソースを選択する)、リソース利用(例えば、10GのNICがより多くの利用可能な帯域幅を有する1つを選択する場合に、例えば、利用が低レベルであってもリソースが同一タイプであるデバイスを優先する)等の点で最も近いリソースを選択してもよい。
【0037】
ステップ411において、一旦、管理プロセッサ101が、リソース要求のためにリソースを割り振ると、それはNTB(単数または複数)をプログラミングするためのアドレス情報(すなわち、ベースアドレスおよびアドレス長)を取得する。管理プロセッサ101は、ワーカープロセッサが管理プロセッサ101によって割り振られたこれらのリソースにアクセスできるようNTBをプログラムするために、アドレス情報で作用されるインタードメインNTBをプログラムすることができるリンクプロセッサに指示する。作用されるNTBは、PCIeドメイン200内のワーカープロセッサ212と、割り振られたリソースとの間のトラフィックが流れることとなるNTBを意味する。例えば、PCIeドメイン300における拡張メモリ(EM)が、PCIeドメイン200内のワーカープロセッサ212からのリソース要求に役立つために、割り振られてもよい。ワーカープロセッサ212がPCIeドメイン300にあるEMにアクセスできるようにするために、PCIeドメイン100およびPCIeドメイン200に接続しているNTB 150と、PCIeドメイン100およびPCIeドメイン300に接続しているNTB 250は、プログラムされる必要があるNTBである。
【0038】
NTBの側のリンクプロセッサは、NTBをプログラムすることができるであろう。NTB 150は、管理プロセッサ101(リンクプロセッサ)、またはNTBの他の側のプロセッサ201によってプログラムされてもよい。NTB 250は、管理プロセッサ101またはNTB 250の他の側のリンクプロセッサ301によってプログラムされてもよい。従って、管理プロセッサは、それ自体によってNTB 150およびNTB 250をプログラムしてもよく、またはリンクプロセッサ201にNTB 150をプログラムするように、かつ、リンクプロセッサ301にNTB 250をプログラムするように指示してもよい。グローバルリソース可用性テーブルからのアドレス情報(すなわち、ベースアドレスおよびアドレス長)を用いて、NTBおよびNTBは、ワーカープロセッサ212が、PCIeドメイン300におけるEMにアクセスすることができるようにプログラムされてもよい。
【0039】
ステップ413において、一旦、NTB 150、250がプログラムされると、管理プロセッサ101は、結果的に要求プロセッサに通知することとなる必要な情報を有する要求プロセッサのドメイン内のリンクプロセッサ201に通知し、かつ要求プロセッサ(ワーカープロセッサ212)によって必要とされる必要な情報を提供する。必要な情報は、グローバル可用性テーブルから割り振られたリソースのタイプ、デバイスのベースアドレス(デバイスの要求プロセッサのドメイン内にマッピングされたローカルアドレス)、および/またはリソースIDを含んでもよい。割り振られたリソースのタイプは、例えば、Intel 82599またはBroadcom BCMxyzであってもよく、本実施形態では、EMである。割り振られたリソースのタイプは、要求プロセッサに適切なドライバをロードするように促してもよい。リソースIDは、どのリソースのキュー/チャネル/VFがアクセス可能であるかを識別してもよい。
【0040】
一旦、計算エンティティがそのジョブを完了すると、リンクプロセッサに通知され、結果的に、管理プロセッサ101に通知される。管理プロセッサ101は、プログラムされたNTBをクリアにすることを含む、以前に割り振られたリモートリソースを解放するために必要な措置をとる。
【0041】
本発明の実施形態は、複数のPCIeドメインの相互接続全体に対する利用可能リソースについての情報を収集し、かつPCIeドメイン内のリソースを別のPCIeドメイン内のノードに割り当てるために管理プロセッサを使用する。複数のPCIeドメインのリソースは、効率的に利用されてもよい。
【0042】
当業者は、本明細書の実施形態で説明した実施例との組み合わせで、ユニットおよびアルゴリズムステップは、電子ハードウェア、またはコンピュータソフトウェアと電子ハードウェアの組み合わせによって実装されることができることを理解すべきである。機能がハードウェアまたはソフトウェアによって実行されるか否かは、技術的解決策の特定のアプリケーションと設計制約条件に依存する。当業者は、各特定のアプリケーションについて説明した機能を実装するための別の方法を使用することができ、かつ説明される機能を実装するための別の方法は、本出願の範囲外とみなされるべきではない。
【0043】
ソフトウェア機能ユニットの形式で実装され、かつ別個の製品として販売されまたは使用されるとき、機能は、コンピュータ読み取り可能な記憶媒体に格納されてもよい。このような理解に基づいて、本質的に、本願の技術的解決策、または従来技術に寄与する部分、または技術的解決策の部分は、ソフトウェア製品の形式で実装されてもよい。コンピュータソフトウェア製品は、コンピュータデバイス、またはより具体的には、メモリと一緒のコンピュータデバイス(コンピューティングデバイスは、パーソナルコンピュータ、サーバ、またはネットワークデバイス等であってもよい)内の1つ以上のプロセッサに、本願の各実施形態で説明した方法のステップのすべてまたは一部を実行するように指示する命令または複数の命令を含んでもよい。記憶媒体は、プログラムコードを記憶することができる、Uディスク、リムーバブルハードディスク、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光ディスクのような任意の媒体を含む。
【符号の説明】
【0044】
100 PCIeドメイン
101 管理/リンクプロセッサ
102 メモリ
103 PCIeファブリック
105 リソース記述子テーブル
110 グローバルリソース可用性テーブル
111 ワーカープロセッサ
112 ワーカープロセッサ
118 ノードA
119 ワーカープロセッサ
121 NTB
122 NTB
129 TB
131 PCIe I/Oデバイス
132 PCIe I/Oデバイス
139 PCIe I/Oデバイス
150 NTB
200 PCIeドメイン
201 リンクプロセッサ
205 リソース記述子テーブル
212 ワーカープロセッサ
218 ノードB
250 NTB
300 PCIeドメイン
301 リンクプロセッサ
305 リソース記述子テーブル
図1
図2
図3
図4