(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-19
(54)【発明の名称】構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおけるPCIeストリームの配分
(51)【国際特許分類】
G06F 13/36 20060101AFI20241212BHJP
G06F 13/42 20060101ALI20241212BHJP
【FI】
G06F13/36 530B
G06F13/36 310E
G06F13/42 310
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024536026
(86)(22)【出願日】2022-12-23
(85)【翻訳文提出日】2024-07-23
(86)【国際出願番号】 IB2022062739
(87)【国際公開番号】W WO2023126812
(87)【国際公開日】2023-07-06
(32)【優先日】2021-12-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ニッポン ラヴァル
(72)【発明者】
【氏名】フィリップ ン
(72)【発明者】
【氏名】ヤロスワフ マルチェフスキー
(57)【要約】
構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分する方法は、PCIeコントローラが、第1のPCIeデバイスによるリンクを検出することと、PCIeコントローラと第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することと、を含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分する方法であって、
PCIeコントローラが、第1のPCIeデバイスによるリンクを検出することと、
前記PCIeコントローラと前記第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することと、を含む、
方法。
【請求項2】
前記1つ以上のPCIeストリームを配分することは、
前記第1のPCIeデバイスから、前記第1のPCIeデバイスに対して要求されたストリームの数と、前記第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、
前記1つ以上のPCIeストリームは、前記要求されたストリームの数と、前記PCIeレーンの数と、に基づいて配分される、
請求項1の方法。
【請求項3】
前記1つ以上のPCIeストリームは、前記第1のPCIeデバイスによって使用されるレーンの数に比例して配分される、
請求項1の方法。
【請求項4】
前記PCIeコントローラが、第2のPCIeデバイスによる別のリンクを検出することと、
前記PCIeストリームのプールから第2の1つ以上のPCIeストリームを前記第2のPCIeデバイスに配分することと、を含む、
請求項1の方法。
【請求項5】
前記第2の1つ以上のPCIeストリームを配分することは、前記第1の1つ以上のPCIeストリームのうち少なくとも1つを前記第1のPCIeデバイスから前記第2のPCIeデバイスに再配分することを含む、
請求項4の方法。
【請求項6】
前記第1のPCIeデバイスの除去を検出することと、
前記第1の1つ以上のPCIeストリームを解放することと、を含む、
請求項1の方法。
【請求項7】
前記第1の1つ以上のPCIeストリームのうち1つ以上を1つ以上の他のPCIeデバイスに再配分することを含む、
請求項6の方法。
【請求項8】
マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラであって、
第1のPCIeデバイスによるリンクを検出することと、
前記PCIeコントローラと前記第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することと、
を含むステップを実行するように構成されている、
マルチポートPCIeコントローラ。
【請求項9】
前記1つ以上のPCIeストリームを配分することは、
前記第1のPCIeデバイスから、前記第1のPCIeデバイスに対して要求されたストリームの数と、前記第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、
前記1つ以上のPCIeストリームは、前記要求されたストリームの数と、前記PCIeレーンの数と、に基づいて配分される、
請求項8のマルチポートPCIeコントローラ。
【請求項10】
前記1つ以上のPCIeストリームは、前記第1のPCIeデバイスによって使用されるレーンの数に比例して配分される、
請求項8のマルチポートPCIeコントローラ。
【請求項11】
前記ステップは、
前記マルチポートPCIeコントローラが、第2のPCIeデバイスによる別のリンクを検出することと、
前記PCIeストリームのプールから第2の1つ以上のPCIeストリームを前記第2のPCIeデバイスに配分することと、を含む、
請求項8のマルチポートPCIeコントローラ。
【請求項12】
前記第2の1つ以上のPCIeストリームを配分することは、前記第1の1つ以上のPCIeストリームのうち少なくとも1つを前記第1のPCIeデバイスから前記第2のPCIeデバイスに再配分することを含む、
請求項11のマルチポートPCIeコントローラ。
【請求項13】
前記ステップは、
前記第1のPCIeデバイスの除去を検出することと、
前記第1の1つ以上のPCIeストリームを解放することと、を含む、
請求項8のマルチポートPCIeコントローラ。
【請求項14】
前記ステップは、前記第1の1つ以上のPCIeストリームのうち1つ以上を1つ以上の他のPCIeデバイスに再配分することを含む、
請求項13のマルチポートPCIeコントローラ。
【請求項15】
構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための装置であって、
プロセッサと、
前記プロセッサに動作可能に結合されたPCIeコントローラと、を備え、
前記PCIeコントローラは、
第1のPCIeデバイスによるリンクを検出することと、
前記PCIeコントローラと前記第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することと、
を含むステップを実行するように構成されている、
装置。
【請求項16】
前記1つ以上のPCIeストリームを配分することは、
前記第1のPCIeデバイスから、前記第1のPCIeデバイスに対して要求されたストリームの数と、前記第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、
前記1つ以上のPCIeストリームは、前記要求されたストリームの数と、前記PCIeレーンの数と、に基づいて配分される、
請求項8のPCIeコントローラ。
【請求項17】
前記1つ以上のPCIeストリームは、前記第1のPCIeデバイスによって使用されるレーンの数に比例して配分される、
請求項8のPCIeコントローラ。
【請求項18】
前記ステップは、
前記PCIeコントローラが、第2のPCIeデバイスによる別のリンクを検出することと、
前記PCIeストリームのプールから第2の1つ以上のPCIeストリームを前記第2のPCIeデバイスに配分することと、を含む、
請求項8のPCIeコントローラ。
【請求項19】
前記第2の1つ以上のPCIeストリームを配分することは、前記第1の1つ以上のPCIeストリームのうち少なくとも1つを前記第1のPCIeデバイスから前記第2のPCIeデバイスに再配分することを含む、
請求項11のPCIeコントローラ。
【請求項20】
前記ステップは、
前記第1のPCIeデバイスの除去を検出することと、
前記第1の1つ以上のPCIeストリームを解放することと、を含む、
請求項8のPCIeコントローラ。
【発明の詳細な説明】
【背景技術】
【0001】
整合性及びデータ暗号化(Integrity and Data Encryption、IDE)機能を有するペリフェラルコンポーネントインターフェースエクスプレス(Peripheral Component Interface Express、PCIe)デバイスは、コントローラとの暗号化された通信にIDEストリームを使用する。IDEストリームは、2つのPCIeポート間の論理的な暗号化された接続である。PCIeコントローラは、典型的には、全ての接続されたデバイスにわたってサポートされ得るストリームの数が制限される。例えば、PCIeコントローラは、接続されたデバイスに配分される(割り当てられる)ストリームの所定のプールを実装する。
【図面の簡単な説明】
【0002】
【
図1A】いくつかの実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための例示的なペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラのブロック図である。
【
図1B】いくつかの実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための例示的なペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラのブロック図である。
【
図1C】いくつかの実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための例示的なペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラのブロック図である。
【
図2】いくつかの実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための例示的なコンピュータである。
【
図3】いくつかの実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための例示的な方法のフローチャートである。
【
図4】いくつかの実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための別の例示的な方法のフローチャートである。
【
図5】いくつかの実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための別の例示的な方法のフローチャートである。
【発明を実施するための形態】
【0003】
整合性及びデータ暗号化(IDE)機能を有するペリフェラルコンポーネントインターフェースエクスプレス(PCIe)デバイスは、コントローラとの暗号化された通信にIDEストリームを使用する。IDEストリームは、コントローラ及び周辺デバイス等の2つのPCIeポート間の論理的な暗号化された接続である。PCIeコントローラは、典型的には、全ての接続されたデバイスにわたってサポートされ得るストリームの数が制限される。例えば、PCIeコントローラは、接続されたデバイスに配分されるストリームの所定のプールを実装する。
【0004】
その目的で、本明細書は、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための様々な実施形態を明記する。いくつかの実施形態では、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分する(割り当てる)方法は、PCIeコントローラによって、第1のPCIeデバイスによるリンクを検出することを含む。また、本方法は、PCIeコントローラと第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することを含む。
【0005】
いくつかの実施形態では、1つ以上のPCIeストリームを配分することは、第1のPCIeデバイスから、第1のPCIeデバイスについての要求されたストリームの数と、第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、1つ以上のPCIeストリームは、要求されたストリームの数と、PCIレーンの数と、に基づいて配分される。いくつかの実施形態では、1つ以上のPCIeストリームは、第1のPCIeデバイスによって使用されるレーンの数に比例して配分される。いくつかの実施形態では、本方法は、PCIeコントローラによって、第2のPCIeデバイスによる別のリンクを検出することと、第2のPCIeデバイスに、PCIeストリームのプールから第2の1つ以上のPCIeストリームを配分することと、を更に含む。いくつかの実施形態では、第2の1つ以上のPCIeストリームを配分することは、第1の1つ以上のPCIeストリームのうち少なくとも1つを第1のPCIeデバイスから第2のPCIeデバイスに再配分することを含む。いくつかの実施形態では、本方法は、第1のPCIeデバイスの除去を検出することと、第1の1つ以上のPCIeストリームを解放することと、を更に含む。いくつかの実施形態では、本方法は、第1の1つ以上のPCIeストリームのうち1つ以上を1つ以上の他のPCIeデバイスに再配分することを更に含む。
【0006】
また、本明細書は、第1のPCIeデバイスによるリンクを検出することを含むステップを実行するマルチポートPCIコントローラの様々な実施形態について記載する。また、本ステップは、PCIeコントローラと第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することを含む。
【0007】
いくつかの実施形態では、1つ以上のPCIeストリームを配分することは、第1のPCIeデバイスから、第1のPCIeデバイスについての要求されたストリームの数と、第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、1つ以上のPCIeストリームは、要求されたストリームの数と、PCIレーンの数と、に基づいて配分される。いくつかの実施形態では、1つ以上のPCIeストリームは、第1のPCIeデバイスによって使用されるレーンの数に比例して配分される。いくつかの実施形態では、本ステップは、PCIeコントローラによって、第2のPCIeデバイスによる別のリンクを検出することと、第2のPCIeデバイスに、PCIeストリームのプールから第2の1つ以上のPCIeストリームを配分することと、を更に含む。いくつかの実施形態では、第2の1つ以上のPCIeストリームを配分することは、第1の1つ以上のPCIeストリームのうち少なくとも1つを第1のPCIeデバイスから第2のPCIeデバイスに再配分することを含む。いくつかの実施形態では、本ステップは、第1のPCIeデバイスの除去を検出することと、第1の1つ以上のPCIeストリームを解放することと、を更に含む。いくつかの実施形態では、本ステップは、第1の1つ以上のPCIeストリームのうち1つ以上を1つ以上の他のPCIeデバイスに再配分することを更に含む。
【0008】
また、本明細書では、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための装置の様々な実施形態について記載される。そのような装置は、プロセッサと、プロセッサに動作可能に結合されたPCIeコントローラと、を含み、PCIeコントローラは、第1のPCIeデバイスによるリンクを検出することを含むステップを実行するように構成されている。また、本ステップは、PCIeコントローラと第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することを含む。
【0009】
いくつかの実施形態では、1つ以上のPCIeストリームを配分することは、第1のPCIeデバイスから、第1のPCIeデバイスについての要求されたストリームの数と、第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、1つ以上のPCIeストリームは、要求されたストリームの数と、PCIレーンの数と、に基づいて配分される。いくつかの実施形態では、1つ以上のPCIeストリームは、第1のPCIeデバイスによって使用されるレーンの数に比例して配分される。いくつかの実施形態では、本ステップは、PCIeコントローラによって、第2のPCIeデバイスによる別のリンクを検出することと、第2のPCIeデバイスに、PCIeストリームのプールから第2の1つ以上のPCIeストリームを配分することと、を更に含む。いくつかの実施形態では、第2の1つ以上のPCIeストリームを配分することは、第1の1つ以上のPCIeストリームのうち少なくとも1つを第1のPCIeデバイスから第2のPCIeデバイスに再配分することを含む。いくつかの実施形態では、本ステップは、第1のPCIeデバイスの除去を検出することと、第1の1つ以上のPCIeストリームを解放することと、を更に含む。
【0010】
以下の開示は、提供される発明の異なる特徴を実装するための多くの異なる実施形態又は例を提供する。本開示を簡略化するために、コンポーネント及び配置の具体例が以下に説明される。もちろん、これらは単なる例であり、限定することを意図するものではない。例えば、以下の説明における第2の特徴部の上方又は上への第1の特徴部の形成は、第1及び第2の特徴部が直接接触して形成される実施形態を含み、また、第1及び第2の特徴部が直接接触しないように、第1の特徴部と第2の特徴部との間に追加の特徴部が形成される実施形態を含む。更に、「下(beneath)」、「下方(below)」、「下部(lower)」、「上方(above)」、「上部(upper)」、「後部(back)」、「前部(front)」、「上部(top)」、「底部(bottom)」等のような空間的に相対的な用語は、本明細書では、図に示されるような、1つの要素又は特徴の別の要素又は特徴に対する関係を説明する記述を容易にするために使用される。同様に、「前面」及び「裏面」又は「上面」及び「裏面」等の用語は、本明細書では、様々なコンポーネントをより容易に識別するために使用され、それらのコンポーネントが、例えば、別のコンポーネントの対向する側にあることを識別する。空間的に相対的な用語は、図に示される向きに加えて、使用又は動作中のデバイスの異なる向きを包含することが意図される。
【0011】
図1Aは、非限定的な例示的なペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラ100のブロック図である。例示的なPCIeコントローラ100は、モバイルデバイス、パーソナルコンピュータ、周辺ハードウェアコンポーネント、ゲームデバイス、セットトップボックス等を含む様々なコンピューティングデバイスに実装することができる。
図1A~
図1Cに関して明記された説明に加えて、PCIeエクスプレスコントローラ100の機能性は、
図3~
図5に記載される方法において更に詳細に記載されている。PCIeコントローラ100は、PCIe互換デバイス及びコンポーネントをデバイス又はシステムに結合及び統合することを可能にする。一例として、PCIeコントローラ100は、PCIeを使用する周辺コンポーネントをコンピュータ又は他のデバイスに追加することを可能にする。
【0012】
PCIeコントローラ100は、単一のPCIeポートのためのPCIe仕様のトランザクション層及びデータリンク層を実装するのに必要なハードウェアロジックの全てを含む。PCIeポートは、PCIeリンクの一端でデータを送受信するために使用される。この例では、PCIeコントローラ100は、マルチポートPCIeコントローラ100である。マルチポートPCIeコントローラ100は、複数のPCIeポートをサポートするコントローラの実施形態である。いくつかの実施形態では、マルチポートコントローラは、ポート間であるロジックを共有することによって、複数のシングルポートコントローラよりも効率的である。追加的に、いくつかの実施形態では、固定数のPHYレーン(以下で更に詳細に記載されている)が異なる可能なポート構成にマッピングされる様々なリンク細分モードをサポートすることがより効率的である(例えば、16レーンが、単一×16ポート又は2×8ポートの何れかとして使用されている)。いくつかの実施形態では、マルチポートコントローラは、共有受信バッファを分割して、単一の16レーンポート又は2つの8レーンポートの帯域幅を処理することができるのに対して、これは、2つの単一ポートコントローラでは可能でない。
【0013】
PCIeコントローラ100は、1つ以上のソケット102を含む。1つ以上のソケット102は、1つ以上のPCIeデバイスをPCIeコントローラ100に結合又はリンクするための物理インターフェースである。
図1Aに示されるように、単一のデバイス104(例えば、PCIe互換デバイス)が、ソケット102を介してPCIeコントローラ100に結合されている。デバイス104は、コンピュータの周辺コンポーネント、グラフィック処理ユニット(graphics processing unit、GPU)等の並列アクセラレータ、又は、理解され得るような他のデバイス等の任意のPCIe互換デバイスを含む。
【0014】
デバイス104は、1つ以上のレーン106を使用してソケット102に結合されている。レーン106は、2つのエンドポイントの間、この場合ではソケット102とデバイス104との間、の物理的な導電接続である。PCIeで使用される場合、レーン106は、2対の導電性ワイヤ又はトレースを含み、1つは、データを送信するために使用され、1つは、データを受信するために使用される。PCIe互換デバイス104は、デバイス104を接続するために使用されるレーン106の数を使用して記述されるか又は特徴付けられる。例えば、x4デバイス104(例えば、「4単位(by-four)」デバイス104)は、4つのレーン106を使用して、PCIeコントローラ100に接続する。したがって、そのようなデバイス104は、接続するためにソケット102に少なくとも4つの利用可能なレーン106を必要とする。
【0015】
いくつかの実施形態では、ソケット102は、いくつかの利用可能なレーン106(例えば、レーン106の接続点)を有する。したがって、ソケット102は、使用されるレーン106の組み合わせ数がソケット102によって提供されるレーン106の数以下であるいくつかのデバイス104による接続をサポートすることができる。一例として、16レーン106のソケット102は、最大16個のレーン106の単一のデバイス104、又は、合計16個のレーン106の複数のデバイス(例えば、8単位デバイス104及び2つの4単位デバイス104)をサポートすることができる。
【0016】
PCIeコントローラ100とデバイス104との間で暗号化された通信を実行するために、PCIeコントローラ100は、PCIeコントローラ100とデバイス104との間に1つ以上の「ストリーム」を確立する。本明細書に記載されように、「ストリーム」は、PCIeコントローラ100とデバイス104との間の、論理的に定義され、暗号化された通信経路又はセッションである。いくつかの実施形態では、「ストリーム」は、論理的に暗号化された経路を維持するために、PCIeのIDE機能を使用するPCIeの整合性及びデータ暗号化(IDE)ストリームを含む。ストリームを確立するために、PCIeコントローラ100は、ストリーム構成データ110をメモリ108に維持する。ストリーム構成データ110の各部分は、デバイス104と単一のストリームを確立するために、デバイス104に提供される必要なデータを含む。一例として、ストリーム構成データ110は、デバイス104とPCIeコントローラ100との間の通信を暗号化又は復号するために使用される1つ以上の鍵(例えば、暗号鍵、復号鍵等)を含む。例えば、ストリーム構成データ110の一部は、複数のキーを定義するストリングを含み、各キーは、ストリングのサブストリングに対応する。別の例として、ストリーム構成データ110は、デバイス104とPCIeコントローラ100との間の暗号化された通信セッションを開始するための初期化ベクトルを含む。
【0017】
PCIeコントローラ100は、一定量のストリーム構成データ110を維持する。言い換えれば、ストリーム構成データ110の各部分が特定のストリームに対応するため、PCIeコントローラ100は、PCIeコントローラ100とインターフェースするデバイス104に配分されているストリームのコレクション又は「プール(pool)」を維持する。デバイス104がPCIコントローラ100へのストリームをサポートすることができる場合(例えば、デバイス104がPCIeコントローラ100への暗号化された通信を実行することができる場合)、PCIeコントローラ100は、デバイス104に1つ以上のストリームを配分する。当業者は、いくつかの実施形態では、デバイス104が、PCIeコントローラ100への複数のストリームを同時に維持することができることを理解するであろう。デバイス104にストリームを配分するために、PCIeコントローラ100は、デバイス104に配分された各ストリームについて、配分されたストリームに対応するストリーム構成データ110の一部を提供する。次いで、デバイス104は、配分されたストリームごとにストリーム構成データ110を使用するための必要な構成動作を実行する。
【0018】
いくつかの実施形態では、デバイス104にストリームを配分することは、デバイス104から、デバイス104によって要求されたストリームの数を示すデータを受信することを含む。例えば、いくつかの実施形態では、デバイス104は、デバイス104の様々な動作パラメータを示すデータを構成空間112に記憶する。そのようなパラメータは、例えば、デバイス104の一意の識別子、デバイス104によってサポートされる識別されたプロトコル又はバージョン(例えば、PCIeバージョン)、デバイス104によって使用されるレーン106の数、デバイス104によってサポートされるストリームの最大数、接続時にデバイス104によって要求されたストリームの数、及び、理解され得るような他のパラメータを含む。
【0019】
したがって、ソケット102へのデバイス104の接続に応じて、デバイス104は、デバイス104によって要求されたストリームの数を示すデータを提供する。いくつかの実施形態では、デバイス104によって要求されたストリームの数は、デバイス104によってサポートされるストリームの最大数に等しい。この場合、PCIeコントローラ100は、利用可能なストリームのプールから、要求されたストリームの示された数以下のいくつかのストリームを配分し、デバイスに、ストリーム構成データ110の対応する部分を提供する。PCIeコントローラ100上の利用可能なストリームの数は固定され且つ有限であるため、PCIeコントローラ100は、デバイス104が使用することができない、デバイス104に不必要に配分された過剰な数のストリームを有することが防止される。
【0020】
いくつかの実施形態では、デバイス104に配分されるストリームの数は、デバイス104によって使用されるレーン106の数に比例するか又はそれに基づく。いくつかの実施形態では、デバイス104に配分されるストリームの数は、PCIeコントローラ100によって提供されるレーン106の数に対する、デバイス104によって使用されるレーン106の数に比例する。一例として、PCIeコントローラ100がソケット102を介して利用可能な16個のレーン106を有するものとする。PCIeコントローラ100がPCIeコントローラ100のストリームのプールに64個のストリームを有するものとすると、このことは、PCIeコントローラ100が最大64個の同時ストリームをサポートすることができることを意味する。更に、ストリームが現在配分されていないものとすると、このことは、64個のストリーム全てが配分に利用可能であることを意味する。16単位デバイス104(例えば、16個の、レーン106のデバイス104)がPCIeコントローラ100とリンクされている場合、いくつかの実施形態では、デバイス104は、デバイス104が全ての可能なレーン106を使用する際に、64個全てのストリームを配分される。別の例として、8単位デバイス104が取り付けられている場合、デバイス104が、サポートされるレーン106の半分を使用する際に、32個のストリームが配分される(例えば、ストリームのプールの半分)。
【0021】
デバイス104がPCIeコントローラ100に既知である、ある最大数のストリームをサポートする場合、いくつかの実施形態では、配分されるストリームの数が、サポートされるストリームの最大数によって制限されることを当業者は理解するであろう。上記の例を続けると、サポートされるストリームの最大数が32である16単位デバイス104がPCIeコントローラ100に結合されるものとする。使用されるレーン106の数に比例する64個のストリーム全てをデバイス104に配分する代わりに、デバイス104に、サポートされる最大32個のストリームが代わりに配分される。更なる例として、最大16個のストリームを有する8単位デバイス104がPCIコントローラ100に結合される場合、比例する32個のストリームの代わりに、最大16個のストリームが配分される。
【0022】
いくつかの実施形態では、デバイス104に配分されるストリームの数は、PCIコントローラ100に結合された他のデバイスに結合された他のデバイス104に対する、デバイス104によって使用されるレーン106の数に比例するか又はそれに基づく。例えば、16個のレーン106をサポートし且つ64個のストリームのプールを有するPCIeコントローラ100に8単位デバイス104が結合されるものとする。使用されているPCIeコントローラ100の8つのレーン106の全てがデバイス104によって使用されているため、8単位デバイス104には、64個のストリーム全てが配分される。8単位デバイス104が2つの4単位デバイス104とともにPCIeコントローラ100に結合される場合、8単位デバイス104(レーン106の半分を使用する)には、32個のストリーム(ストリームの半分)が配分される一方、4単位デバイス104(各々がレーン106の4分の1を使用する)の各々には、16個のストリーム(各々、ストリームの4分の1)が配分される。
【0023】
いくつかの実施形態では、ストリームのプールが、順序付けられた様式又は構造化された様式で記憶される場合、デバイス104に配分されたストリームは、少なくとも部分的に、ストリームのプールの連続部分として配分される。例えば、いくつかの実施形態では、ストリームは、ストリームのプールの連続部分として優先的に配分される。
【0024】
PCIeコントローラ100は、追加のデバイスがPCIeコントローラ100に結合されるか又はPCIeコントローラ100から除去される際に、ストリームを動的に配分及び再配分することができる。
図1Bの例に移ると、デバイス104を結合し、且つ、ストリームのプールのある部分をデバイス104、デバイス114及び124に配分した後に、それぞれの構成空間122及び132を有する各々が、PCIeコントローラ100に結合されるものとする。この例では、PCIeコントローラ100が16個のレーン106をサポートし且つ64個のストリームのプールを有し、デバイス104が8個のレーン106(例えば、8単位デバイス104)を使用し、デバイス114、124が各々4個のレーン106を使用するものとする。
【0025】
デバイス114、124の接続を検出することに応じて、PCIeコントローラ100は、各デバイス114、124にストリームのプールのある部分を配分する。例えば、デバイス104が、デバイス104によって使用されるレーン106の数(例えば、半分)に対する比例配分として、64個のストリームのうち32個が配分されるものとする。いくつかの実施形態では、デバイス114及びデバイス124の各々には、それらの各々が各々4つのレーン106を使用することに比例して、残りの32個のストリームのうち16個が配分される。
【0026】
別の例として、デバイス104が、(例えば、配分時にPCIeコントローラ100に結合された唯一のデバイスであることによって)64個の利用可能なストリーム全てが配分されたものとする。そのような例では、デバイス104に配分されたストリームのある部分は、デバイス114、124に再配分されなければならない。言い換えれば、デバイス104に配分されたストリームのある部分は、デバイス114、124への再配分に利用可能となるように解放される。
【0027】
いくつかの実施形態では、デバイス104に配分されたストリームの再配分は、デバイス104への接続を論理的に切断することを含む。例えば、デバイス104とPCIeコントローラ100との間の全ての既存の通信セッションが終了される。いくつかの実施形態では、デバイス104は、ストリーム配分プロセスを再初期化するために、リセット又は再始動される。他の実施形態では、デバイス104は、ストリームの新しい配分が提供されるまで、1つ以上のストリーム又は潜在的に全てのストリームの使用を終了するためのコマンド又は信号が提供される。次いで、PCIeコントローラ100は、各デバイス114、124にストリームを配分する。例えば、いくつかの実施形態では、PCIeコントローラ100は、デバイス114、124に、配分されたストリームに対応するストリーム構成データ110を提供する。デバイス104への接続が再開され、デバイス104へのストリームの新しい配分を必要とする実施形態では、PCIeコントローラ100は、ストリームの新しい配分に対応するストリーム構成データ110を提供する。言い換えれば、いくつかの実施形態では、デバイス104に配分されたストリームの一部が配分されたままである一方、ストリームの別の部分がデバイス114、124に再配分され、他の実施形態では、デバイス104に配分された全てのストリームが(例えば、再開されたリンク又はデバイス104の再始動により)効果的に解放され、デバイス104、114、124へのストリームの新しい配分が実行される。
【0028】
デバイスがPCIeコントローラ100から除去される際、それらのそれぞれの配分されたストリームが解放される。次いで、そのような解放されたストリームは、他のデバイスに再配分されるか、又は、別のデバイスが接続される場合に使用するために未配分のままである。
図1Bの例を続けると、
図1Cに移り、デバイス124がPCIeコントローラ100から切断されたものとする。更に、デバイス124の除去前に、デバイス104には32個のストリームが配分され、デバイス114、124の各々には16個のストリームが配分されていたものとする。いくつかの実施形態では、デバイス124の除去後、デバイス124に配分された16個のストリームは、これらのストリームの何れかが今後の別のデバイスへの配分に利用可能となるように、利用可能なストリームのプールに効果的に戻される。いくつかの実施形態では、デバイス124に以前に配分されたこれらのストリームのうち1つ以上は、デバイス104又はデバイス124に再配分される。
【0029】
当業者は、本明細書に記載された手法が、PCIeデバイスへのストリームをPCIeコントローラに動的に配分するのを可能にすることを理解するであろう。そのような動的な配分は、動作中にデバイスを追加及び除去すること、並びに、相応にストリームを配分することを可能にする。したがって、デバイスが追加される際に、ストリームは、利用可能なストリームのプールから配分されるか、既に結合されたデバイスに配分されたストリームから再配分されるか、又は、それらの組み合わせである。デバイスが除去される際、それらの配分されたストリームが解放される。解放されたストリームは、後で使用するためにストリームのプールに追加し戻されるか、未だ接続されているデバイスに再配分されるか、又は、その両方である。
【0030】
いくつかの実施形態では、
図1のPCIeコントローラ100は、コンピュータ200に実装される。コンピュータ200は、少なくとも1つのプロセッサ202を含む。少なくとも1つのプロセッサ202に加えて、
図2のコンピュータ200は、高速メモリバス206及びバスアダプタ208を介してプロセッサ202に、及び、コンピュータ200の他のコンポーネントに接続されているランダムアクセスメモリ(random access memory、RAM)204を含む。RAM204には、オペレーティングシステム210が記憶されている。
図2の例におけるオペレーティングシステム210は、RAM204内に示されているが、そのようなソフトウェアの多くのコンポーネントは、典型的には、例えば、ディスクドライブ等のデータストレージ212上等の不揮発性メモリにも記憶される。
【0031】
図2のコンピュータ200は、拡張バス218及びバスアダプタ208を介してプロセッサ202及びコンピュータ200の他のコンポーネントに結合されたディスクドライブアダプタ216を含む。ディスクドライブアダプタ216は、不揮発性データストレージを、データストレージ212の形態でコンピュータ200に接続する。そのようなディスクドライブアダプタとしては、インテグレーテドドライブエレクトロニクス(Integrated Drive Electronics、「IDE」)アダプタ、スモールコンピュータシステムインターフェース(Small Computer System Interface、「SCSI」)アダプタ、及び、当業者が着想する他のアダプタが挙げられる。いくつかの実施形態では、不揮発性コンピュータメモリは、当業者が着想するように、光ディスクドライブ、電気的消去可能プログラマブル読み取り専用メモリ(electrically erasable programmable read-only memory、いわゆる「EEPROM」又は「フラッシュ」メモリ)、RAMドライブ等として実装される。
【0032】
図2の例示的なコンピュータ200は、1つ以上の入出力(input/output、「I/O」)アダプタ220を含む。I/Oアダプタは、例えば、コンピュータディスプレイスクリーン等のディスプレイデバイスへの出力、並びに、キーボード及びマウス等のユーザ入力デバイス222からのユーザ入力を制御するためのソフトウェアドライバ及びコンピュータハードウェアを通して、ユーザ指向入力/出力を実現する。
図2の例示的なコンピュータ200は、ディスプレイスクリーン又はコンピュータモニタ等のディスプレイデバイス226へのグラフィック出力のために特別に設計されたI/Oアダプタの一例であるビデオアダプタ224を含む。ビデオアダプタ224は、高速ビデオバス228、バスアダプタ208、及び、同じく高速バスであるフロントサイドバス230を介してプロセッサ202に接続される。
【0033】
図2の例示的なコンピュータ200は、他のコンピュータとのデータ通信及びデータ通信ネットワークとのデータ通信のための通信アダプタ232を含む。そのようなデータ通信は、RS-232接続を通して、ユニバーサルシリアルバス(Universal Serial Bus、「USB」)等の外部バスを通して、IPデータ通信ネットワーク等のデータ通信ネットワークを通して、及び/又は、当業者が着想する他の方式で、シリアルに行われる。通信アダプタ232は、あるコンピュータが別のコンピュータに直接的に又はデータ通信ネットワークを介してデータ通信を送信する、ハードウェアレベルのデータ通信を実現する。そのような通信アダプタ232としては、有線ダイヤルアップ通信用のモデム、有線データ通信用のイーサネット(登録商標)(IEEE802.3)アダプタ、及び、無線データ通信用の802.11アダプタが挙げられる。
【0034】
図1A~
図1Cに関する構成可能マルチポートPCIeコントローラにおいてペリフェラルコンポーネントインターフェースエクスプレス(PCIe)ストリームを配分するために記載される手法は、
図3~
図5のフローチャートにおける方法としても記載される。したがって、更なる説明のために、
図3は、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための例示的な方法を示すフローチャートを明記している。
図3の方法は、例えば、PCIeコントローラ100で実施される。
図3の方法は、第1のPCIeデバイス104によってリンクを検出すること302を含む。いくつかの実施形態では、リンクを検出すること302は、PCIeコントローラ100が動作可能に結合されたバックプレーンコンポーネントからリンクの指標を受信することを含む。いくつかの実施形態では、PCIeコントローラ100は、基本入出力システム(Basic Input/Output System、BIOS)からリンクの指標を受信する。一例として、PCIeコントローラ100は、デバイス104が始動時にPCIeコントローラ100に結合されるシステム始動中に、BIOSから指標を受信する。他の実施形態では、PCIeコントローラ100は、PCIeコントローラ100を含むデバイスがアクティブである間に第1のPCIeデバイス104が(例えばソケット102を介して)PCIeコントローラ100に結合されることに応じて、第1のPCIeデバイス104によるリンクを検出する。
【0035】
また、
図3の方法は、PCIeストリームのプールから第1の1つ以上のPCIeストリームを(例えば、第1のPCIeデバイス104に)配分すること304を含む。上記に明記されたように、「ストリーム」は、PCIeコントローラ100とデバイス104との間の論理的に定義され、暗号化された通信経路又はセッションである。PCIeコントローラ100は、PCIeコントローラ100によって使用可能なストリームの「プール」を具現化するストリーム構成データ110をメモリ108(例えば、読み出し専用メモリ(read-only memory、ROM)又は何らかの他のタイプのメモリ)に維持する。ストリーム構成データ110の各部分は、デバイス104と単一のストリームを確立するために、デバイス104に提供される必要なデータを含む。一例として、ストリーム構成データ110は、デバイス104とPCIeコントローラ100との間の通信を暗号化又は復号するために使用される1つ以上の鍵(例えば、暗号鍵、復号鍵等)を含む。例えば、ストリーム構成データ110の一部は、複数のキーを定義するストリングを含み、各キーは、ストリングのサブストリングに対応する。別の例として、ストリーム構成データ110は、デバイス104とPCIeコントローラ100との間の暗号化された通信セッションを開始するための初期化ベクトルを含む。
【0036】
PCIeコントローラ100は、一定量のストリーム構成データ110を維持する。言い換えれば、ストリーム構成データ110の各部分が特定のストリームに対応するため、PCIeコントローラ100は、PCIeコントローラ100とインターフェースするデバイス104への配分に利用可能なストリームのコレクション又は「プール」を維持する。デバイス104がPCIコントローラ100へのストリームをサポートすることができる場合(例えば、デバイス104がPCIeコントローラ100への暗号化された通信を実行することができる場合)、PCIeコントローラ100は、デバイス104に1つ以上のストリームを配分する。次いで、特定のデバイス104に配分されたストリームが、特定のデバイス104に配分されている間に別のデバイス104に配分することができないという点で、ストリームのプールから効果的に「除去」される。当業者は、いくつかの実施形態では、デバイス104が、PCIeコントローラ100への複数のストリームを同時に維持することができることを理解するであろう。デバイス104にストリームを配分するために、PCIeコントローラ100は、デバイス104に配分された各ストリームについて、配分されたストリームに対応するストリーム構成データ110の一部を提供する。次いで、デバイス104は、配分されたストリームごとにストリーム構成データ110を使用するための必要な構成動作を実行する。
【0037】
いくつかの実施形態では、デバイス104に配分されたストリームの数は、デバイス104によって使用されるレーン106の数に比例するか又はそれに基づく。いくつかの実施形態では、デバイス104に配分されるストリームの数は、PCIeコントローラ100によって提供されるレーン106の数に対する、デバイス104によって使用されるレーン106の数に比例する。一例として、PCIeコントローラ100がソケット102を介して利用可能な16個のレーン106を有するものとする。PCIeコントローラ100がそのストリームのプールに128個のストリームを有するものとすると、このことは、PCIeコントローラ100が最大128個の同時ストリームをサポートすることができることを意味する。更に、ストリームが現在配分されていないものとすると、このことは、128個のストリーム全てが配分に利用可能であることを意味する。16単位デバイス104(例えば、16個の、レーン106のデバイス104)がPCIeコントローラ100とリンクされている場合、いくつかの実施形態では、デバイス104は、デバイス104が全ての可能なレーン106を使用する際に、128個全てのストリームを配分される。別の例として、8単位デバイス104が取り付けられている場合、デバイス104が、サポートされるレーン106の半分を使用する際に、64個のストリームが配分される(例えば、ストリームのプールの半分)。
【0038】
デバイス104がPCIeコントローラ100に既知である、ある最大数のストリームをサポートする場合、いくつかの実施形態では、配分されるストリームの数が、サポートされるストリームの最大数によって制限されることを当業者は理解するであろう。上記の例を続けると、サポートされるストリームの最大数が32である16単位デバイス104がPCIeコントローラ100に結合されるものとする。使用されるレーン106の数に比例する128個のストリーム全てをデバイス104に配分する代わりに、デバイス104に、サポートされる最大32個のストリームが代わりに配分される。更なる例として、最大16個のストリームを有する8単位デバイス104がPCIコントローラ100に結合される場合、比例する64個のストリームの代わりに、最大16個のストリームが配分される。
【0039】
いくつかの実施形態では、デバイス104に配分されるストリームの数は、PCIコントローラ100に結合された他のデバイスに結合された他のデバイス104に対する、デバイス104によって使用されるレーン106の数に比例するか又はそれに基づく。例えば、16個のレーン106をサポートし且つ128個のストリームのプールを有するPCIeコントローラ100に8単位デバイス104が結合されるものとする。使用されているPCIeコントローラ100の8つのレーン106の全てがデバイス104によって使用されているため、8単位デバイス104には、128個のストリーム全てが配分される。8単位デバイス104が2つの4単位デバイス104とともにPCIeコントローラ100に結合される場合、8単位デバイス104(レーン106の半分を使用する)には64個のストリーム(ストリームの半分)が配分される一方、4単位デバイス104(各々がレーン106の4分の1を使用する)の各々には32個のストリーム(各々、ストリームの4分の1)が配分される。
【0040】
別の例として、8単位デバイス104が最初にPCIeコントローラ100に結合された唯一のデバイスであり、それによって、128個のストリーム全てが配分されるものとする。更に、2つの4単位デバイス104が続いて接続されるものとする。いくつかの実施形態では、2つの4単位デバイス104を接続することに応じて、8単位デバイス104に配分された64個のストリームが解放され、次いで、2つの4単位デバイス104に再配分される。したがって、ストリームの比例分配は、以前に配分されたストリームの再配分を通じて維持される。
【0041】
いくつかの実施形態では、第1の1つ以上のPCIeストリームを配分すること304は、第1のPCIeデバイス104から、第1のPCIeデバイス104についての要求されたストリームの数と、第1のPCIeデバイス104によって使用されるPCIeレーン106の数と、を示すデータを受信すること306を含む。例えば、いくつかの実施形態では、デバイス104は、例えば、デバイス104の一意の識別子、デバイス104によってサポートされる識別されたプロトコル又はバージョン(例えば、PCIeバージョン)、デバイス104によって使用されるレーン106の数、デバイス104によってサポートされるストリームの最大数、接続時に要求されたストリームの数、及び、理解され得る他のパラメータを含む様々な動作パラメータを示すデータを構成空間112に記憶する。
【0042】
したがって、デバイス104がソケット102に接続されることに応じて、デバイス104は、デバイス104によってサポートされる要求されたストリームの数と、デバイス104によって使用されるレーン106の数と、を示すデータをPCIeコントローラ100に提供する。次いで、PCIeコントローラ100は、利用可能なストリームのプールから、サポートされるストリームの要求された数以下のいくつかのストリームを配分し、デバイスに、ストリーム構成データ110の対応する部分を提供する。PCIeコントローラ100上の利用可能なストリームの数は固定され且つ有限であるため、PCIeコントローラ100は、デバイス104が使用することができない、デバイス104に不必要に配分された過剰な数のストリームを有することが防止される。
【0043】
更なる説明のために、
図4は、本開示の実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための別の例示的な方法を示すフローチャートを明記している。
図4の方法は、第1のPCIeデバイス104によるリンクを検出すること302と、第1のPCIeデバイスから、第1のPCIeデバイス104についての要求されたストリームの数と、第1のPCIeデバイス104によって使用されるPCIeレーン106の数と、を示すデータを受信すること306によって、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分すること304と、を含むという点で、
図3の方法と同様である。
【0044】
図4の方法は、第2のPCIeデバイス114による別のリンクを検出すること402を含むという点で、
図3とは異なる。いくつかの実施形態では、他のリンクを検出すること402は、PCIeコントローラ100によるソケット102への物理的接続を検出することを含む。いくつかの実施形態では、他のリンクを検出すること402は、PCIeコントローラ100によって、バックプレーンコンポーネントから信号又は他の指標を受信することを含む。
【0045】
また、
図4の方法は、第2のPCIeデバイス114に、PCIeストリームのプールから第2の1つ以上のPCIeストリームを配分すること404を含む。いくつかの実施形態では、デバイス114に配分された第2の1つ以上のPCIeストリームは、別のデバイス(例えば、第1のPCIeデバイス104)に以前に配分されていない1つ以上のストリームを含む。
【0046】
いくつかの実施形態では、第2の1つ以上のPCIeストリームを配分すること404は、第1の1つ以上のPCIeストリームのうち少なくとも1つを第1のPCIeデバイス104から第2のPCIeデバイス114に再配分すること406を含む。例えば、いくつかの実施形態では、第2のPCIeデバイス114は、ストリームのプールに未配分のストリームが残っていない場合に接続される。別の例として、いくつかの実施形態では、PCIeコントローラ100は、第2のPCIeデバイス114がストリームのプールにおける利用可能なストリームの数よりも大きいいくつかのストリームを配分されるべきであると判定する。したがって、いくつかの実施形態では、第1のPCIeデバイス104に配分されたストリームのうち1つ以上が、第1のPCIeデバイス104から第2のPCIeデバイス104に再配分される。
【0047】
例えば、いくつかの実施形態では、PCIeコントローラ100は、ストリームのうち1つ以上が再配分されるべきであるというコマンド又は信号を第1のPCIeデバイス104に提供する。これに応じて、第1のPCIeデバイス104は、再配分されたストリームの使用を停止し、他の配分されたストリームを使用し続ける。次いで、PCIeコントローラ100は、PCIeコントローラ100と第2のPCIeデバイス114との間にストリームを確立するために、再配分されたストリームについてのストリーム構成データ110を第2のPCIeデバイス114に提供する。他の実施形態では、PCIeコントローラ100は、第1のPCIeデバイス104を再始動するか、又は、PCIeコントローラ100と第1のPCIeデバイス104との間のリンクを別様に終了及び再始動し、第1のPCIeデバイス104に以前に配分された全てのストリームを効果的に解放する。次いで、第1のPCIデバイス104は、PCIeコントローラ100によってストリームのプールの新しいサブセットを配分される。
【0048】
更なる説明のために、
図5は、本開示の実施形態による、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための別の例示的な方法を示すフローチャートを明記している。
図5の方法は、第1のPCIeデバイス104によるリンクを検出すること302と、第1のPCIeデバイスから、第1のPCIeデバイス104についての要求されたストリームの数と、第1のPCIeデバイス104によって使用されるPCIeレーン106の数と、を示すデータを受信すること306によって、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分すること304と、を含むという点で、
図3の方法と同様である。
【0049】
図5の方法は、第1のPCIeデバイス104の除去を検出すること502を含むという点で、
図3とは異なる。いくつかの実施形態では、除去を検出すること502は、ソケット102への物理的接続が存在しなくなったことを検出することを含む。いくつかの実施形態では、除去を検出すること502は、PCIeコントローラ100によって、バックプレーンコンポーネントから信号又は他の指標を受信することを含む。
【0050】
また、
図5の方法は、第1の1つ以上のPCIeストリームを解放すること504を含む。第1の1つ以上のPCIeストリームを解放すること504は、第1の1つ以上のPCIeストリームが配分されなくなり、したがって、他のデバイス(例えば、現在接続されているデバイス、又は、後に接続されるデバイス)に配分することができるという指標をPCIeコントローラ100に記憶することを含む。例えば、解放されたストリームについてのストリーム構成データ110に関連付けられたテーブル又は他のデータ構造は、解放されたストリームが配分に利用可能であることを示すように更新される。
【0051】
いくつかの実施形態では、1つ以上の他のデバイス(例えば、デバイス114、124)がPCIeコントローラ100に結合されている場合、第1の1つ以上のPCIeストリームを解放すること504は、第1の1つ以上のPCIeストリームのうち1つ以上を1つ以上の他のPCIeデバイスに再配分すること506を含む。例えば、いくつかの実施形態では、PCIeコントローラ100は、再配分されたストリームについてのストリーム構成データ110を別のデバイス114、124に提供し、それによって、デバイス114、124がPCIeコントローラ100への別の暗号化されたストリームを確立することを可能にする。他の実施形態では、他のデバイスへのリンク又は接続が再開され、PCIeコントローラ100に接続された全てのデバイスへのストリームの新しい配分を強制する。したがって、以前に配分されたストリームは、接続されたデバイス間でのストリームの新しい完全な再配分によって再配分される。
【0052】
上述された説明を考慮して、読者は、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分することの利益が、PCIeデバイスに対するPCIeストリームの動的な配分及び再配分によるコンピューティングシステムの性能の改善を含むことを認識するであろう。
【0053】
本開示の例示的な実施形態は、主に、構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分するための完全に機能的なコンピュータシステムのコンテキストで記載される。しかしながら、当業者は、本開示が、任意の好適なデータ処理システムとともに使用するためにコンピュータ可読記憶媒体に配置されたコンピュータプログラム製品に具現化され得ることを認識するであろう。そのようなコンピュータ可読記憶媒体は、磁気媒体、光学媒体又は他の好適な媒体を含む、機械可読情報のための任意の記憶媒体であり得る。そのような媒体の例としては、ハードドライブ又はディスケット内の磁気ディスク、光学ドライブのためのコンパクトディスク、磁気テープ、及び、当業者に着想されるような他のものを含む。当業者であれば、好適なプログラミング手段を有する任意のコンピュータシステムが、コンピュータプログラム製品で具現化された本開示の方法のステップを実行することが可能であろうことを直ちに認識するであろう。当業者は、本明細書に記載の例示的な実施形態のいくつかがコンピュータハードウェア上でインストール及び実行されるソフトウェアに向けられているが、それにもかかわらず、ファームウェアとして又はハードウェアとして実装される代替的な実施形態が本開示の範囲に十分に含まれることも認識するであろう。
【0054】
本開示は、システム、方法及び/又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0055】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持及び記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は、これらの任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、以下を含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM若しくはフラッシュメモリ)、静的ランダムアクセスメモリ(static random access memory、SRAM)、携帯型コンパクトディスク専用メモリ(compact disc read-only memory、CD-ROM)、デジタル多用途デバイス(digital versatile disk、DVD)、メモリスティック、フロッピー(登録商標)ディスク、パンチカード又はその上に記録された命令を有する溝内の隆起構造等の機械的にコード化されたデバイス、及び、これらの任意の好適な組み合わせ。本明細書で使用される場合、コンピュータ可読記憶媒体は、電波若しくは他の自由に伝播する電磁波等、導波管若しくは他の伝送媒体(例えば、光ファイバケーブルを通過する光パルス)を通って伝播する電磁波、又は、ワイヤを通って伝送される電気信号等の一時的な信号それ自体であると解釈されるべきではない。
【0056】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、又は、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、広域ネットワーク及び/若しくは無線ネットワーク)を介して外部コンピュータ若しくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために伝送する。
【0057】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture、ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C等のオブジェクト配向プログラミング言語、並びに、「C」プログラミング言語又は同様のプログラミング言語等の従来の手続きプログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれたソースコード又はオブジェクトコードの何れかとすることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で完全に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(local area network、LAN)若しくは広域ネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続することができるか、又は、外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続することができる。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)又はプログラマブルロジックアレイ(programmable logic array、PLA)を含む電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
【0058】
本開示の態様は、本開示の実施形態による方法、装置(システム)及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して本明細書に記載されている。フローチャート及び/又はブロック図の各ブロック、並びに、フローチャート及び/又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実現することができることが理解されよう。
【0059】
これらのコンピュータ可読プログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為を実施するための手段を生成するような機械を製造するように、汎用コンピュータ、専用コンピュータ又は他のプログラマブルデータ処理装置のプロセッサに提供することができる。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャート及び/又はブロック図のブロックで指定された機能/行為の態様を実行する命令を含む製造物品を含むように、コンピュータ、プログラマブルデータ処理装置及び/又は他のデバイスに特定の態様で機能するように指示することができる、コンピュータ可読記憶媒体に記憶することができる。
【0060】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置又は他のデバイスにロードされ、コンピュータ、他のプログラマブル装置又は他のデバイス上で実行される命令がフローチャート及び/又はブロック図のブロックで指定された機能/行為を実行するようにコンピュータによって実行されるプロセスを生成するために、コンピュータ、他のプログラマブル装置又は他のデバイス上で一連の動作ステップを行わせることができる。
【0061】
図中のフローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法及びコンピュータプログラム製品の可能な実施形態のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント又は部分を表すことができる。いくつかの代替的な実施形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する可能性がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、又は、ブロックは、関与する機能に応じて、逆の順序で実行されてもよい。ブロック図及び/又はフロー図の各ブロック、並びに、ブロック図及び/又はフロー図におけるブロックの組み合わせは、指定された機能若しくは行為を行うか、又は、専用ハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実行することができることにも留意されたい。
【0062】
本開示の様々な実施形態において修正及び変更を行うことができることは、上述した記載から理解されるであろう。本明細書における記載は、例示のみを目的としており、限定的な意味で解釈されるべきではない。本開示の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
【手続補正書】
【提出日】2024-08-16
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
構成可能マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラにおいてPCIeストリームを配分する方法であって、
PCIeコントローラが、第1のPCIeデバイスによるリンクを検出することと、
前記PCIeコントローラと前記第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することと、を含む、
方法。
【請求項2】
前記1つ以上のPCIeストリームを配分することは、
前記第1のPCIeデバイスから、前記第1のPCIeデバイスに対して要求されたストリームの数と、前記第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、
前記1つ以上のPCIeストリームは、前記要求されたストリームの数と、前記PCIeレーンの数と、に基づいて配分される、
請求項1の方法。
【請求項3】
前記1つ以上のPCIeストリームは、前記第1のPCIeデバイスによって使用されるレーンの数に比例して配分される、
請求項1の方法。
【請求項4】
前記PCIeコントローラが、第2のPCIeデバイスによる別のリンクを検出することと、
前記PCIeストリームのプールから第2の1つ以上のPCIeストリームを前記第2のPCIeデバイスに配分することと、を含む、
請求項1の方法。
【請求項5】
前記第2の1つ以上のPCIeストリームを配分することは、前記第1の1つ以上のPCIeストリームのうち少なくとも1つを前記第1のPCIeデバイスから前記第2のPCIeデバイスに再配分することを含む、
請求項4の方法。
【請求項6】
前記第1のPCIeデバイスの除去を検出することと、
前記第1の1つ以上のPCIeストリームを解放することと、を含む、
請求項1の方法。
【請求項7】
前記第1の1つ以上のPCIeストリームのうち1つ以上を1つ以上の他のPCIeデバイスに再配分することを含む、
請求項6の方法。
【請求項8】
マルチポートペリフェラルコンポーネントインターフェースエクスプレス(PCIe)コントローラであって、
第1のPCIeデバイスによるリンクを検出することと、
前記PCIeコントローラと前記第1のPCIeデバイスとの間のリンクについて、PCIeストリームのプールから第1の1つ以上のPCIeストリームを配分することと、
を
行うように構成されている、
マルチポートPCIeコントローラ。
【請求項9】
前記1つ以上のPCIeストリームを配分することは、
前記第1のPCIeデバイスから、前記第1のPCIeデバイスに対して要求されたストリームの数と、前記第1のPCIeデバイスによって使用されるPCIeレーンの数と、を示すデータを受信することを含み、
前記1つ以上のPCIeストリームは、前記要求されたストリームの数と、前記PCIeレーンの数と、に基づいて配分される、
請求項8のマルチポートPCIeコントローラ。
【請求項10】
前記1つ以上のPCIeストリームは、前記第1のPCIeデバイスによって使用されるレーンの数に比例して配分される、
請求項8のマルチポートPCIeコントローラ。
【請求項11】
前記マルチポートPCIeコントローラが、第2のPCIeデバイスによる別のリンクを検出することと、
前記PCIeストリームのプールから第2の1つ以上のPCIeストリームを前記第2のPCIeデバイスに配分することと、
を
行うように構成されている、
請求項8のマルチポートPCIeコントローラ。
【請求項12】
前記第2の1つ以上のPCIeストリームを配分することは、前記第1の1つ以上のPCIeストリームのうち少なくとも1つを前記第1のPCIeデバイスから前記第2のPCIeデバイスに再配分することを含む、
請求項11のマルチポートPCIeコントローラ。
【請求項13】
前記第1のPCIeデバイスの除去を検出することと、
前記第1の1つ以上のPCIeストリームを解放することと、
を
行うように構成されている、
請求項8のマルチポートPCIeコントローラ。
【国際調査報告】