(58)【調査した分野】(Int.Cl.,DB名)
前記周辺機器は第1の周辺機器を備え、前記プロトコルは第1のプロトコルを含み、前記プロトコルに固有のコントローラは第1のプロトコルに固有のコントローラを備え、
前記方法は、前記第1のプロトコルと異なる第2のプロトコルについて、前記マルチプロトコルの相互接続によって、第2の周辺機器から第2のプロトコルに固有のコントローラへと、前記第2の周辺機器の第2のプロトコルの複数のパケットをルーティングする段階を更に備える、請求項1に記載の方法。
前記第2のプロトコルの前記複数のパケットをルーティングする段階は、前記第1の通信パスを介して前記第2のプロトコルの前記複数のパケットをルーティングする段階を備える、請求項2に記載の方法。
前記第1のプロトコルの前記複数のパケットをルーティングする段階および前記第2のプロトコルの前記複数のパケットをルーティングする段階は、同時に行われる、請求項2または3に記載の方法。
前記プロトコルは、USBプロトコル、DisplayPortプロトコル、HDMI(登録商標)プロトコル、またはPCI Express(登録商標)プロトコルを含む、請求項1〜8のいずれか一項に記載の方法。
前記周辺機器は第1の周辺機器を備え、前記プロトコルは第1のプロトコルを含み、前記プロトコルに固有のコントローラは第1のプロトコルに固有のコントローラを備え、
前記装置に、前記第1のプロトコルと異なる第2のプロトコルについて、前記マルチプロトコルの相互接続によって、第2の周辺機器から第2のプロトコルに固有のコントローラへと、前記第2の周辺機器の第2のプロトコルの複数のパケットをルーティングする手順を実行させる、
請求項10に記載のプログラム。
前記第1のプロトコルの前記複数のパケットをルーティングする手順および前記第2のプロトコルの前記複数のパケットをルーティングする手順は、同時に行われる、請求項11に記載のプログラム。
前記システムは、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、ネットブックコンピュータ、サーバ、セットトップボックス、デジタル記録装置、ゲームコンソール、スマートフォン、携帯情報端末、携帯電話、デジタルメディアプレーヤ、およびデジタルカメラから選択される、請求項15に記載のシステム。
バスによって前記I/O複合体に動作可能に結合され、無線ネットワークの1つまたは複数のコンポーネントとの無線通信リンクを確立する1つまたは複数のアンテナを更に備える、請求項15または16に記載のシステム。
【発明を実施するための形態】
【0004】
例示的な実施形態の様々な態様は、当業者が当業他者に作業の要旨を伝達するために共通に使用する用語を用いて説明する。しかし、説明される態様のいくつかのみを用いて別の実施形態を実施してもよいことは当業者には明らかであろう。説明上、具体的な数、材料、および構成は例示的な実施形態の完全な理解を提供するべく記述される。しかし、個別の詳細を用いずに別の実施形態を実施してもよいことは当業者には明らかであろう。他の例において、例示的な実施形態を不明瞭にしないように周知の特徴を省き、または単純化する。
【0005】
更に、様々な動作は例示的な実施形態を理解するのに最も役立つ態様で順次、個別の複数の動作として記載される。しかし、説明の順序はこれらの動作が必ず順序に依存することを示唆するものとして解釈されるべきではない。具体的には、これらの動作を提示の順序で行う必要はない。更に、本開示の範囲内の方法は、説明するよりも多いか、または少ない段階を含むとしてもよい。
【0006】
文言「いくつかの実施形態において」は繰り返して用いられる。一般に、当該文言は同一の実施形態を指さないが、その場合もある。用語「備える」、「有する」、および「含む」は、文脈が別途指示しない限り、同義である。文言「Aおよび/またはB」は(A)、(B)、または(AおよびB)を意味する。文言「A/B」は文言「Aおよび/またはB」と同様に、(A)、(B)、または(AおよびB)を意味する。文言「A、B、およびCのうちの少なくとも1つ」は(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または(A、B、およびC)を意味する。文言「(A)B」は(B)または(AおよびB)を意味し、すなわちAは任意選択である。
【0007】
図1は、様々な実施形態によるマルチプロトコルのトンネリングI/O相互接続108を含むコンピュータ装置100を記載する。多くの実施形態において、コンピュータ装置100は1つまたは複数のプロセッサ102を含んでもよい。異なる実施形態において、1つまたは複数のプロセッサ102は1つのコアまたはマルチコアを含んでもよい。いくつかの実施形態において、装置100はマルチプロセッサシステム(図示せず)であってもよく、この場合、プロセッサの各々は1つのコアまたはマルチコアを有する。
【0008】
図1に示すように、1つまたは複数のプロセッサ102は、1つまたは複数のリンク(例えば相互接続、バス等)を介してシステムメモリ104に動作可能に結合してもよい。システムメモリ104は、1つまたは複数のプロセッサ100がプログラムおよびオペレーティングシステムを動作させ、実行するために使用する情報を記憶可能としてもよい。異なる実施形態において、システムメモリ104は、ダイナミックランダムアクセスメモリ(DRAM)の方式のような、使用可能な任意のタイプの読取可能かつ書込み可能なメモリであってもよい。
【0009】
先に実装されたコンピュータ装置では、周辺機器をコンピュータシステムに接続するI/Oリンクはプロトコルに固有のコネクタポートについてプロトコルに固有であり、プロトコルに固有のコネクタポートは、プロトコルに固有のケーブルを用いて、プロトコルに固有のコネクタポート(すなわち、USBキーボードデバイスはUSBポートにプラグ接続され、ルーターデバイスはLAN/イーサネット(登録商標)ポートにプラグ接続される、等である)に互換性のある周辺機器を取り付けることを可能にする。任意の単一コネクタポートは、互換性のあるプラグおよび互換性のあるプロトコルを有する周辺機器に限定される。一度互換性のある周辺機器をコネクタポートにプラグ接続すると、周辺機器とプロトコルに固有のコントローラとの間に通信リンクが確立される。
【0010】
図1に示す実施形態において記載するコンピュータ装置では、1つまたは複数のプロセッサ102はI/O複合体106に動作可能に結合されるとしてもよく、I/O複合体106は、1つまたは複数のI/Oリンクを制御するように構成した1つまたは複数のマルチプロトコルのI/O相互接続108を収容し、1つまたは複数のI/Oリンクは、1つまたは複数のプロセッサ102が1つまたは複数のI/O周辺機器110と通信することを可能にするとしてもよい。マルチプロトコル機能を提供するために、少なくとも部分的に、I/O相互接続108は、複数のI/Oプロトコルを通すように構成したマルチプロトコルのスイッチングファブリック114を含んでもよい。様々な実施形態において、マルチプロトコルのスイッチングファブリック114は複数のクロスバースイッチを備えてもよい。I/O周辺機器110の例としては、デバイスの中でもとりわけ、表示装置、キーボードデバイス、拡張ポート、デスクトップもしくはモバイルコンピュータシステム、またはルーターが挙げられ得る。
【0011】
プロトコルに固有でないコネクタポート112は、デバイス110のコネクタポート112(図示せず)を有するI/O相互接続108を結合するように構成し、単一の物理的コネクタポート112を介して複数のデバイスタイプをコンピュータシステム100に取り付けることを可能にしてもよい。更に、デバイス110とI/O複合体106との間のI/Oリンクは、複数のI/Oプロトコル(例えばPCI Express(登録商標)、USB、DisplayPort、HDMI(登録商標)等)を同時に通すように構成してもよい。様々な実施形態において、コネクタポート112はポート間、またはアップストリーム方向とダウンストリーム方向との間の帯域幅を共有することなく、両方向にフル帯域幅のリンクを提供してもよい。様々な実施形態において、I/O相互接続108とデバイス110との間の接続は電気的接続、光学的接続、または両方をサポートしてもよい。
【0012】
装置100はスタンドアロンデバイスであってもよく、またはデスクトップコンピューティングデバイス、モバイルコンピューティングデバイス(例えばラップトップコンピューティングデバイス、ハンドヘルドコンピューティングデバイス、タブレット、ネットブック等)、携帯電話、スマートフォン、携帯情報端末、サーバ、ワークステーション、セットトップボックス、デジタル記録装置、ゲームコンソール、デジタルメディアプレーヤ、およびデジタルカメラ等、様々なコンピューティングデバイスおよび/または民生用電子デバイス/器具を含むが、これらに限定されない様々なシステム内に組み込まれてもよい。例示のシステム200のブロック図は
図2に示す。システム200は、1つまたは複数のプロセッサ202、システムメモリ204、およびI/O複合体206を備え、これらの全てはバス115によって動作可能に結合するとしてもよい。I/O複合体206は1つまたは複数のマルチプロトコルのI/O相互接続208を含んでもよく、それらの各々はスイッチングファブリック214を含み、1つまたは複数のプロセッサ202が1つまたは複数のI/O周辺機器210と通信することを可能にする1つまたは複数のI/Oリンクを制御する。様々な実施形態において、システム200は、より多いかまたはより少ないコンポーネント、ならびに/もしくは異なるアーキテクチャを有してもよい。
【0013】
システム200は、通信用インターフェース217を含み、通信用インターフェース217はバス215に動作可能に結合され、システム200用のインターフェースを提供し、1つまたは複数のネットワークを介して、および/またはその他の任意の好適なデバイスを用いて通信するとしてもよい。通信用インターフェース217は、任意の好適なハードウェアおよび/またはファームウェアを含むとしてもよい。一実施形態のための通信用インターフェース217は、例えばネットワークアダプタ、無線ネットワークアダプタ、電話モデム、及び/または無線モデムを含むとしてもよい。無線通信については、一実施形態のための通信用インターフェース217は、1つまたは複数のアンテナ221を有する無線ネットワークインターフェースコントローラ219を含み、無線ネットワークの1つまたは複数のコンポーネントとの無線通信リンクを確立および維持するとしてもよい。システム200は、1つまたは複数の無線ネットワークの規格および/またはプロトコルのうちの任意のものにより、無線ネットワークのうちの1つまたは複数のコンポーネントと無線で通信してもよい。
【0014】
システム100は、例えばブラウン管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)、または他の好適な表示装置等の表示装置223を含み、表示装置223は情報を表示するためにバス215に動作可能に結合されるとしてもよい。様々な実施形態において、表示装置223はシステム200と相互接続された周辺機器であってもよい。これらの実施形態の様々なものにおいて、そのような表示装置はマルチプロトコルポート212によってI/O複合体206と相互接続してもよい。
【0015】
本明細書に説明するように、複数のI/Oプロトコルを通すことができるI/O相互接続を提供すべく、本明細書に説明される様々なI/O相互接続のうちの1つまたは複数は、とりわけ、
図3に示す複数のクロスバースイッチを備えるマルチプロトコルのスイッチングファブリック314を含むとしてもよい。マルチプロトコルのスイッチングファブリック314は、本明細書に説明される他のマルチプロトコルのスイッチングファブリックと類似してもよい。一般に、スイッチ316a、316bは、任意の入力ポートから任意の出力ポートへとパケットをルーティングする能力を有する複数のポート320a、320b、322aを備えるデバイスである。様々な実施形態において、スイッチ316a、316bは任意の数のポート320a、320b、322aを備え、その各々は内部制御ポート326a、326bを更に含むとしてもよい。本明細書でより詳細に説明するように、スイッチ316a、316bはそれぞれ、マルチプロトコルのスイッチングファブリック314全体で時間を配分および同期化するときに使用すべく、時間管理ユニット330a、330bを任意選択で含んでもよい。
【0016】
スイッチ316aは単一の光学的リンクまたは電気的リンクに接続するように構成したヌルポート320を含む第1のタイプのスイッチを表すとしてもよいが、一方でアダプタポート322aは1つまたは複数のマッピングされたI/Oプロトコルリンクに接続するとしてもよい。アダプタポート322aは、マッピングされたI/Oプロトコルのエンティティをマルチプロトコルのスイッチングファブリック314に接続するように用いてもよい。本明細書で使用するように、用語「アダプタ」はマッピングされたI/Oプロトコルパケットを、マルチプロトコルのスイッチングファブリック314を介して流れるI/Oパケットにカプセル化するスイッチポートに構築することができる、プロトコル適合機能を指すものとして使用してもよい。
【0017】
スイッチ316bは、単一の光学的または電気的リンクに接続するように構成したヌルポート320b(ヌルポート320aと同様の)のみを含む第2のタイプのスイッチを表すとしてもよい。
【0018】
図3に図示するスイッチ316a、316bはそれぞれ、4つのアダプタポート322a、および4つのヌルポート320a、320bを含むが、ポート320a、320b、322aの実際の数は示すものよりも少ないか、または多くてもよい。スイッチ316aとスイッチ316bとの間に接続性を提供するべく、一般に、スイッチ実装は少なくとも1つのヌルポートおよび少なくとも1つのアダプタポート、または少なくとも2つのヌルポートのいずれかを最低限含む。
【0019】
様々な実施形態において、マルチプロトコルのスイッチングファブリック314は、1つまたは複数の第1のタイプのスイッチ316aおよび1つまたは複数の第2のタイプのスイッチ316bを備えるとしてもよい。
【0020】
本開示の範囲内において、スイッチングファブリックのアダプタポート間に様々なマルチプロトコルのトンネリングを実装するべく、接続マネージャー(図示せず)を提供するとしてもよい。接続マネージャーは、ソフトウェアまたはファームウェア内で、I/O複合体内の論理として、システムBIOSの一部として、またはコンピュータ装置、またはI/O複合体が含まれるシステム上で走るオペレーティングシステム内で実装するとしてもよい。
【0021】
I/O複合体のマルチプロトコル相互接続アーキテクチャ用の例示的なプロトコルスタックは、
図4に示す。電気的および光学的サブレイヤ、論理サブレイヤ、トランスポート層、およびフレーム層はI/O複合体のベースのマルチプロトコル相互接続アーキテクチャを定義し、物理層は、電気的サブレイヤ、光学的サブレイヤ、および論理サブレイヤを備えるとしてもよい。マッピングされたプロトコル層は、マルチプロトコル相互接続アーキテクチャへの個別のI/Oプロトコルのマッピングを記載し得る。
【0022】
様々な実施形態で、
図3および
図4を参照すると、トランスポート層は、マルチプロトコルのスイッチングファブリック314のスイッチ316a、316bの全てのポート320a、320b、322aによって実装するとしてもよく、物理層は全てのヌルポート320a、320bによって実装するとしてもよく、アダプタポート322aは単一のマッピングされたプロトコル層またはフレーム層を実装するとしてもよい。
【0023】
プロトコル階層化の例示的な実装を
図5に示す。示す例において、2つのプロトコルはスイッチ516a、516b、516c、516dを用いて実装する。スイッチ516a、516b、516c、516dの各々は、制御ポート526a、526b、526c、526d、および時間管理ユニット530a、530b、530c、530dを含む。
【0024】
示すように、アダプタポート522a1、522cは第1のプロトコル層(またはフレーム層)「プロトコル1」を実装し、アダプタポート522a2、522dは第2のプロトコル層(またはフレーム層)「プロトコル2」を実装する。全てのポートはトランスポート層を実装するが、一方で物理層は全てのヌルポート520a、520b、520c、520dによって実装する。
【0025】
従って、スイッチのポート間のリンク(例えばリンク532)は、マルチプロトコルのスイッチングファブリックのアダプタポート間のファブリックを横断する複数のパスによって有効に共有することができる。様々な実施形態において、マルチプロトコル相互接続アーキテクチャは接続指向であり、従って、パスは、データ転送を行う前に、エンドツーエンドで構成するとしてもよい。パスはマルチプロトコルのスイッチングファブリックを介して1つまたは複数のリンクを横断するとしてもよく、各ホップ、パスは全てのパケットのヘッダーで運ばれ得るローカルに一意な識別子を割り当てられてもよく、全てのパケットはパスに関連付けられる。様々な実施形態において、パスに属するパケットはマルチプロトコルのスイッチングファブリック内で再度順序付けられない場合がある。バッファ割振り(フロー制御)およびサービスの品質は1パス毎のベースで実装してもよい。従って、パスは、マルチプロトコルのスイッチングファブリック全体でマッピングされたI/Oプロトコルのための仮想ワイヤセマンティクスを提供するとしてもよい。
【0026】
様々な実施形態において、スイッチ(ドメイン)の集合の物理トポロジは任意に相互接続したグラフであってもよい。
図6Aはスイッチ1〜6のドメインの物理トポロジの例を示す。ドメインは運用のコンセプトというよりはむしろ管理のコンセプトであることに留意されたい。様々な実施形態において、先に説明したように、接続マネージャーはスイッチングファブリックのドメインを構成してもよい。更なる管理のために、マルチプロトコル装置はスパニングツリーを作成するように構成してもよい(例えば接続マネージャーによって)。
図6Bは
図6Aのドメインを管理するために作成された例示的なスパニングツリーを示し、スパニングツリーの上部のスイッチ1はルートスイッチと呼ばれることがある。
【0027】
スパニングツリーは好適な任意の数のレベルを含むとしてもよいことに留意されたい。様々な実施形態において、スパニングツリーのレベルの最大数は7である場合がある。
【0028】
図7はドメイン内のスパニングツリーの例を示す。ドメイン内のスイッチのそれぞれに対する一意なトポロジIDの例示的な割り当ても示す。例えば、スイッチJは0、4、1、1、2、1、8のトポロジIDを有する。様々な実施形態において、一意なトポロジIDはドメインのあらゆるスイッチに割り当てるとしてもよく、各トポロジIDはドメインのスパニングツリー内のスイッチ位置を表すとしてもよい。様々な実施形態において、トポロジIDの割り当ては初期化中に接続マネージャーによって行ってもよく、そのときにドメインは到達可能なスイッチを列挙して作成してもよく、トポロジIDは各スイッチについて割り当ててもよい。
【0029】
図7に示すように、ドメインは7つのレベル(レベル0〜6)を含み、スイッチのそれぞれのトポロジIDは7つのポート番号のシーケンスであり、ルートスイッチから自身に向かうパス上のツリーの各レベルにおけるイグレスポートを表す。Xの深度におけるスイッチのトポロジID(この例ではXは0〜6である)は、レベル0〜X‐1についてはゼロでないポート番号を含むとしてもよい。深度Xでのポート番号は0としてもよく、深度Xにおけるスイッチの制御ポートを示す。深度X+1〜6のポート番号は、「考慮しない」ものとして扱うとしてもよく、0に設定してもよい。従って、以下に示す例において、ルートスイッチにおける制御ポートは0、0、0、0、0、0のトポロジIDを有する。
【0030】
様々な実施形態において、ダウンストリームを流れる構成パケットのルーティング(スパニングツリーに対して)は、対象スイッチのトポロジIDに基くとしてもよい。構成パケットはトランスポート層パケットのヘッダーでルーティングしてもよい。様々な実施形態において、アップストリームを流れる構成パケットはトポロジIDを用いなくてもよく、簡単に言えば、各スイッチのアップストリームポートを介して転送するとしてもよい。通常、あらゆる構成パケットは自身のペイロードに含まれるルートストリングを運ぶ。ルートストリングの例示的なフォーマットを
図8に示す。示すように、ルートストリングは本質的にはスイッチのトポロジIDであり、スイッチに対して構成要求を送信し、またはスイッチから構成応答が出されるとしてもよい。ルートストリングのMSBビット(CMビット)は、構成メッセージがダウンストリームを(接続マネージャーからスイッチに)流れるときに0に設定し、メッセージがアップストリーム方向に流れるときに1に設定するとしてもよい。
【0031】
様々な実施形態において、各スイッチは接続マネージャーにより、自身のトポロジIDおよびスパニングツリー内のレベルと共に構成するとしてもよい。また、各スイッチは、ハードウェアストラッピングまたは他の類似のメカニズムにより、アップストリームをドメインの接続マネージャーに向けさせるポート番号と共に構成するとしてもよい。様々な実施形態において、トポロジID、深度(ツリー内の)、およびポートに向かうアップストリームは、列挙する間に接続マネージャーによって初期化されるあらゆるスイッチのスイッチ構成スペース内の構成レジスタであってもよい。トポロジID構成レジスタの例示的なフォーマットを
図9に示す。図示する例において、トポロジIDのMSBは有効なフラッグであってもよく、有効なフラッグは接続マネージャーにより、リセット時に0に設定され、トポロジIDが初期化されるときには1に設定されるとしてもよい。トポロジIDの予約したビットは0に設定されるとしてもよい。
【0032】
ツリーを下に流れる構成パケットは、1つまたは複数の規則に従ってスイッチの制御ポートによりルーティングするとしてもよい。例えば、様々な実施形態で、スイッチの制御ポートには、ツリー内での構成レベルに対応するルートストリングからポートを抽出するように要求するとしてもよい。様々な実施形態において、ポートが0である場合、制御ポートにパケットを消費するように要求するとしてもよい。様々な実施形態において、ポートがゼロでない場合、制御ポートにルートストリングから抽出したポートに一致するスイッチポートを介してパケットを転送するように要求するとしてもよい。
【0033】
様々な実施形態において、スパニングツリーを上に流れる構成パケットは簡単に言えば、ポートに向かう構成アップストリームを介して転送してもよい。
【0034】
多重ドメインは、様々な実施形態において相互接続されるとしてもよい。
図10は多重ドメイン間で確立され得る例示的接続を示す。示すように、ドメイン1のスイッチ1〜6は、ドメイン2のスイッチA〜Eと相互接続されるとしてもよい。
【0035】
様々な実施形態において、ドメイン間リンクは、接続マネージャーが電源をオンにした後にトポロジの初期検出を行うとき、またはホットプラグイベントを処理することによるかのいずれかで検出するとしてもよい。リンク全体でスイッチのスイッチ構成スペースを読み取ると、エラーパケットが生じて送信され、トポロジIDフィールドが以前に割り当てられたことを示す場合に、リンクはドメイン間リンクとなるように指定するとしてもよい。ドメイン間リンクを検出すると、接続マネージャーはシステムソフトウェアに通知するとしてもよい。通知を配信するために用いるメカニズムは、実装により定義してもよい。
【0036】
様々な実施形態において、トランスポート層は、ドメイン間リンクによって接続されるドメインの2つの接続マネージャー間のドメイン間構成パケットのルーティングを定義するのみであってもよい。多重ドメイン全体での構成パケットのルーティングは、システムソフトウェアによって制御するとしてもよい。ドメインがデージーチェーン接続されるとき、元のドメインから進む構成パケットは、ターゲットドメインへのパスに沿うあらゆるドメインの接続マネージャーに配信するとしてもよい。中間ドメインの接続マネージャーは、ターゲットドメインに向かうドメイン間リンク全体でパケットを中継する役割を担い得るシステムソフトウェアに、構成パケットを渡すとしてもよい。
【0037】
ドメイン間要求パケットのルーティングは1つまたは複数の規則に従ってもよい。例えば、様々な実施形態で、元のドメイン上のシステムソフトウェアは、ドメイン間リンクに接続するドメインのイグレスポートを指し示すルートストリングで要求パケットを形成するとしてもよく、パケットはドメイン間リンクを介して転送しなければならず、CMビットは0に設定するとしてもよい。パケットがドメイン内の各ホップにおけるルートストリングに基いてルーティングされ、かつ、ドメイン間リンク全体でイグレスポートを介して転送されるように要求するとしてもよい。受信ドメインのイングレスポートで、制御ポートは、パケットが受信されたイングレスポートを指し示すルートストリングを再マッピングするとしてもよく、CMビットを1に設定してもよい。様々な実施形態において、その後、他のドメイン内構成パケットと同様に、パケットが受信ドメインの接続マネージャーにルーティングされるように要求してもよい。パケットが受信ドメインの接続マネージャーによってシステムソフトウェアに配信されるように要求してもよい。
【0038】
ドメイン間応答パケットのルーティングは、1つまたは複数の上記の段階に従うとしてもよい。様々な実施形態において、応答パケットを確立するシステムソフトウェアは、対応する要求パケットでのルートストリングを用いてもよく、CMビットは0に設定される。
【0039】
様々な実施形態において、トランスポート層は、マルチプロトコルのスイッチングファブリックを通したフローに対する階層状の信用ベースのフロー制御スキームを使用して、輻輳による受信バッファの過剰なフローを阻止または最小化するとしてもよい。様々な実施形態において、フロー制御スキームは、受信機が1パス毎の専用バッファから複数のパスが動的に共有する共有バッファプールに及ぶ、様々なバッファ割振り戦略を実装することを可能にしてもよい。様々な実施形態において、フロー制御は1パス毎のベースでオフにするとしてもよい。1つのパスについてフロー制御をオフにするとき、当該パスに、各リンクで少なくとも1つの最大サイズのトランスポート層パケット保持することができる受信バッファを提供するように要求するとしてもよい。
【0040】
図11は、様々な実施形態による、例示的なI/O複合体1106を示す。I/O複合体1106は、デバイス1110と結合するように構成したI/O相互接続1108を含む
図1のI/O複合体106に類似してもよい。デバイス1110は、1つまたは複数のI/Oプロトコル(例えばPCI Express(登録商標)、USB、DisplayPort、HDMI(登録商標)等)を用いて構成してもよい。
【0041】
様々な実施形態において、I/O複合体1106は、トンネルしたI/OプロトコルのOSソフトウェアスタックにトランスペアレントな態様で共通のリンクを介して複数のI/Oプロトコルをトンネルすべく、I/O相互接続1108を介してデバイス1110を1つまたは複数のプロトコルに固有のコントローラ1109a、1109b,...,1109nに接続するように構成するとしてもよい。その後、プロトコルに固有のコントローラ1109a、1109b,...,1109nは、デバイス1110がプロトコルに固有のコントローラ1109a、1109b,...,1109nに直接接続される場合と同様に、デバイス1110を構成するOS内のそれぞれのプロトコルに固有のドライバと通信するように構成するとしてもよい。
【0042】
図12は、トンネルしたI/Oプロトコルのオペレーティングシステムソフトウェアスタックにトランスペアレントな態様で、共通のリンクを介して複数のI/Oプロトコルをトンネルするように構成したマルチプロトコル装置(例えば
図1の装置100等)の例示的なハードウェアおよびソフトウェア実装を示す。様々な実施形態において、マルチプロトコル装置は、マルチレベルのホットプラグシグナリングスキームを使用して、ソフトウェアトランスペアレントな態様で、共通の相互接続を介して複数のI/Oプロトコルのトンネリングをサポートするとしてもよい。
【0043】
図12に示す実装のために、I/Oホットプラグ表示は、デバイス1210を装置1200のプロトコルに固有でないコネクタポート1212にプラグ接続するとき、I/O相互接続1208によってOS内のI/Oドライバに(または埋め込みI/Oファームウェアに)送信するとしてもよい。次いで、ホットプラグ表示は、OS/ファームウェア内のI/Oドライバ1213によって処理し、I/O相互接続1208とデバイス1210との間に確立される通信パスをもたらすとしてもよい。様々な実施形態において、通信パスを確立する段階は、ドメイン内のソースアダプタと行先アダプタとの間に1つまたは複数のパスを構成する段階を含むとしてもよい(別により詳細に説明する)。一度パスを確立すると、関連するプロトコル固有のコントローラ1209a、1209b,...,1209nがOS/ファームウェア内のそれぞれのプロトコルに固有のドライバ1211a、1211b,...,1211nにプロトコルに固有のホットプラグ表示を送信し得る、マッピングされたI/Oプロトコルに固有の構成を実行するとしてもよい。その後、プロトコルに固有のドライバ1211a、1211b,...,1211nは、デバイス1210がプロトコルに固有のコントローラ1209a、1209b,...,1209nに直接接続されるのと同様に、関連するプロトコル固有のコントローラ1209a、1209b,...,1209nを構成するとしてもよい。この時点で、周辺機器1210はシステムソフトウェアに可視となり、アプリケーションによって使用ように構成するとしてもよい。
【0044】
様々な実施形態において、装置1200は、デバイス1210をポート1212から切断すると、逆シーケンスのイベントが発生し得るように構成してもよい。具体的には、プロトコルに固有のドライバ1211a、1211b,...,1211nはプロトコルに固有のアンプラグイベントを処理するとしてもよく、次いでプロトコルに固有の処理後に、I/Oドライバ1213はI/Oアンプラグイベントを処理するとしてもよい。
【0045】
本明細書に記載する周辺機器(例えばデバイス110、210、1110、または1210)は、先に注記したように、様々なタイプのデバイスのうちの任意の1つであってもよい。様々な実施形態において、周辺機器は拡張ポート(または他のマルチプロトコルの周辺機器)であってもよく、拡張ポートに1つまたは複数の他のデバイスが1つまたは複数のI/Oプロトコルを用いて結合されるとしてもよい。例えば、周辺機器が拡張ポートである実施形態については、デバイスはPCI Express(登録商標)デバイスおよびDisplayPortデバイスと同時に結合するとしてもよく、PCI Express(登録商標)デバイスおよびDisplayPortデバイスは拡張ポートデバイスを介してI/O複合体と結合するとしてもよい。別の例において、周辺機器はモバイルまたはデスクトップコンピュータシステムであってもよく、1つまたは複数の他のデバイスは、モバイルまたはデスクトップコンピュータシステムと、そして周辺機器を介してI/O複合体と結合するとしてもよい。様々な実施形態において、複数の周辺機器はデバイスを一緒にデージーチェーン接続して、一緒に結合するとしてもよい。
【0046】
様々な実施形態において、周辺機器および/または周辺機器に結合した他のデバイスは、本明細書に記載するI/O相互接続108、208、1108、1208のうちの1つまたは複数に類似するI/O相互接続も含むとしてもよい。例えば
図13に示すように、マルチプロトコルの相互接続1301を含むデバイス1310は、マルチプロトコルのスイッチングファブリック1303を同様に含み、マルチプロトコルの相互接続1308およびスイッチングファブリック1314をやはり含むコンピュータ装置1300と相互接続するように構成するとしてもよい。他の1つまたは複数の周辺機器1305a、1305b,...,1305nは、1つまたは複数の対応するプロトコルに固有でないポート1312を介してI/O相互接続1301と相互接続してもよい。
【0047】
図14は、本開示の様々な実施形態による、マルチプロトコルのトンネリングI/O相互接続を構成する例示的な方法1400の流れ図である。方法1400は、ブロック1402〜1410が例示する1つまたは複数の機能、動作、またはアクションを含むとしてもよい。
【0048】
方法1400の処理は、プロトコルに固有でないコントローラのスイッチングファブリックの複数のスイッチを識別し、ブロック1402から開始することができる。
【0049】
方法1400は、複数のスイッチのスパニングツリー表現を作成し、ブロック1404に進むことができる。
【0050】
方法1400は、スパニングツリーの複数のスイッチのスイッチに一意な識別(ID)を割り当て、ブロック1406に進むことができる。様々な実施形態において、IDはスパニングツリー内のスイッチの相対的位置を表すことができる。
【0051】
方法1400は、スイッチのそれぞれの1つまたは複数のレジスタにおけるスイッチ(スパニングツリー内)のIDおよび深度を記憶して、ブロック1408に進むことができる。
【0052】
方法1400は、それぞれのIDに少なくとも部分的に基いて、構成パケットをスパニングツリーを介してスイッチにルーティングして、ブロック1410に進むことができる。
【0053】
図15は、本開示の様々な実施形態による、マルチプロトコルのトンネリングI/O相互接続を含むコンピュータ装置を操作する例示的な方法の流れ図である。方法1500は、ブロック1502〜1522が例示する1つまたは複数の機能、動作、またはアクションを含むとしてもよい。
【0054】
方法1500の処理は、周辺機器がマルチプロトコルのトンネリングI/O相互接続を含むコンピュータ装置のプロトコルに固有でないポートにプラグ接続されたかどうかを判断して、ブロック1502から開始することができる。プラグ接続は、プロトコルに固有でないポートと直接に結合する周辺機器、および/またはプロトコルに固有でないポートと直接に結合する、他のいくつかの周辺機器に直接に結合するターゲット周辺機器を指すことがある。後者の実施形態において、1つまたは複数の他の周辺機器は、ターゲット周辺機器とプロトコルに固有でないポートとの間に動作可能に配置するとしてもよい。周辺機器がプラグ接続されていない場合、ブロック1502の処理を反復するとしてもよい。様々な実施形態において、コンピュータ装置は、周辺機器がいつプラグ接続(例えばホットプラグ接続)されたかを表示する割込み信号を発するように構成するとしてもよい。
【0055】
方法1500の処理は、データパケットを受信したかどうかを判断してブロック1504に進むことができる。データパケットを受信しない場合、ブロック1504の処理を反復するとしてもよい。様々な実施形態において、データパケットを周辺機器またはコンピュータ装置内部から受信するとしてもよい。様々な実施形態において、コンピュータ装置内のデータパケットは、マルチプロトコルのトンネリングI/O相互接続により、コンピュータ装置のプロトコルに固有のコントローラ(「ホストプロトコルに固有なコントローラ」)から受信するとしてもよい。
【0056】
方法1500の処理は、データパケットを周辺機器またはホストプロトコルに固有のコントローラから受信したかどうかを判断して、ブロック1506に進むことができる。データパケットを受信しなかった場合、ブロック1506の処理を反復するとしてもよい。
【0057】
周辺機器からデータパケットを受信した場合、方法1500の処理は第1のプロトコルのパケットを、I/O相互接続のスイッチングファブリックを介してルーティングされるように構成した第1のトランスポート層パケット内にカプセル化して、ブロック1508に進むことができる。様々な実施形態において、第1のプロトコルと異なる第2のプロトコルのパケットは、スイッチングファブリックを介してルーティングする第2のトランスポート層パケット内にもカプセル化するとしてもよい。
【0058】
方法1500の処理は、I/O相互接続のスイッチングファブリックを介して第1および第2のトランスポート層パケットを同時にルーティングして、ブロック1510に進むことができる。
【0059】
方法1500の処理は、トランスポート層パケットをデカプセル化して、ブロック1512に進むことができる。様々な実施形態において、デカプセル化はスイッチングファブリックのスイッチのアダプタポートで行うとしてもよい。
【0060】
方法1500の処理は、コンピュータ装置の異なるホストプロトコルに固有なコントローラにデカプセル化したパケットをルーティングして、ブロック1514に進むことができる。
【0061】
データパケットを周辺機器から受信した場合、方法1500の処理は、第1のプロトコルのパケットを、I/O相互接続のスイッチングファブリックを介してルーティングされるように構成した第1のトランスポート層パケット内にカプセル化してブロック1506からブロック1516に進むことができる。様々な実施形態において、第1のプロトコルと異なる第2のプロトコルのパケットも、スイッチングファブリックを介してルーティングする第2のトランスポート層パケットにカプセル化するとしてもよい。
【0062】
方法1500の処理は、I/O相互接続のスイッチングファブリックを介して第1および第2のトランスポート層パケットを同時にルーティングして、ブロック1518に進むことができる。
【0063】
方法1500の処理は、トランスポート層パケットをデカプセル化してブロック1520に進むことができる。様々な実施形態において、デカプセル化は、スイッチングファブリックのスイッチのアダプタポートで行うとしてもよい。
【0064】
方法1500の処理は、コンピュータ装置のプロトコルに固有でないポートを介して周辺機器にデカプセル化したパケットをルーティングして、ブロック1522に進むことができる。
【0065】
図16は、本開示の様々な実施形態による、マルチプロトコルのトンネリングI/O相互接続を含むコンピュータ装置をホットプラグ接続する例示的な方法の流れ図である。方法1600は、ブロック1602〜1606が例示する1つまたは複数の機能、動作、またはアクションを含むとしてもよい。
【0066】
方法1600の処理は、コンピュータ装置に接続された周辺機器に応答してコンピュータ装置のマルチプロトコルの相互接続のスイッチングファブリックのポート間に第1の通信パスを確立して、ブロック1602から開始することができる。様々な実施形態において、周辺機器は、プラグまたは類似のコネクタによってコンピュータ装置に接続することができる。様々な実施形態において、周辺機器は、コンピュータ装置のプロトコルに固有でないポートでコンピュータ装置に直接接続するとしてよく、および/またはターゲット周辺装置は、プロトコルに固有でないポートと直接結合されたいくつかの他の周辺機器に直接結合されるとしてもよい。後者の実施形態において、1つまたは複数の他の周辺機器は、ターゲット周辺装置とプロトコルに固有でないポートとの間に動作可能に配置するとしてもよい。
【0067】
様々な実施形態において、第1の通信パスの確立は、マルチプロトコルの相互接続がコンピュータ装置のI/Oドライバに送信した第1のホットプラグ表示に少なくとも部分的に基いて行うとしてもよい。
【0068】
方法1600の処理は、スイッチングファブリックとコンピュータ装置のプロトコルに固有のコントローラとの間に第2の通信パスを確立して、ブロック1604に進むことができる。
【0069】
様々な実施形態において、第2の通信パスの確立は、プロトコルに固有のコントローラがそれぞれのプロトコルに固有のドライバに送信した第2のホットプラグ表示に少なくとも部分的に基いて行うとしてもよい。
【0070】
方法1600の処理は、マルチプロトコルの相互接続によって、第1および第2の通信パスを介して周辺機器からプロトコルに固有のコントローラへと、周辺機器のプロトコルのパケットをルーティングし、ブロック1606に進むことができる。
【0071】
様々な実施形態において、プロトコルは第1のプロトコルであってもよく、方法1600は、マルチプロトコルの相互接続によって、他の周辺機器から第2のプロトコルに固有のコントローラへと、別の周辺機器の第2のプロトコルのパケットをルーティングする段階を更に備えるとしてもよい。第2のプロトコルのパケットをルーティングする段階は、第1の通信パスを介して第2のプロトコルのパケットをルーティングする段階を含むとしてもよい。第1のプロトコルのパケットをルーティングする段階および第2のプロトコルのパケットをルーティングする段階は、本明細書に記載するように同時に行うとしてもよい。第1のプロトコルおよび第2のプロトコルは、同一または異なるプロトコルであってもよい。
【0072】
様々な実施形態において、ブロック1602〜1606が例示する機能、動作、またはアクションの1つまたは複数は、
図14および
図15に例示する機能、動作、またはアクションの1つまたは複数と共に行うとしてもよい。例えば、様々な実施形態において、ブロック1602および1604は、
図15に記載する方法のブロック1506とブロック1508との間で行うとしてもよい。
【0073】
様々な実施形態において、製造物を使用し、本明細書に開示する1つまたは複数の方法を実装するとしてもよい。
図17は例示的な製造物1700を記載する。示すように、製造物1700は、コンピュータ読取可能な非一時的記憶媒体1702および記憶媒体1702を含むとしてもよい。記憶媒体1702は装置に、本開示の実施形態によるマルチプロトコルのトンネリングのいくつかまたは全ての態様を実施させるように構成したプログラミング命令1704を含むとしてもよい。
【0074】
記憶媒体1702は、フラッシュメモリ、光学ディスク、または磁気ディスクを含むがこれらに限定されない、当技術分野で既知の広範な持続性記憶媒体を表し得る。具体的には、プログラミング命令1704は、装置が、装置による実行に応答して本明細書に記載する様々な動作を行うことを可能にするとしてもよい。例えば、記憶媒体1702は、本開示の実施形態により、例えば
図14、
図15、および
図17の方法のマルチプロトコルのトンネリングのいくつかまたは全ての態様を装置に実施させるように構成したプログラミング命令1704を含むとしてもよい。
【0075】
様々な例示的方法、装置、システム、および製造物を本明細書で説明したが、本開示が包含する範囲はこれらに限定されるものではない。むしろ、本開示は字義通りまたは均等論の下で添付の特許請求の範囲内にほぼ含まれる全ての方法、装置、製造物を包含する。例えば、上記はコンポーネントの中でもとりわけ、ハードウェア上で実行されるソフトウェアまたはファームウェアを含む例示的なシステムを開示するが、そのようなシステムは例示的であるのみであり、限定的とはみなされるべきでないことに留意されたい。具体的には、開示されるハードウェアコンポーネント、ソフトウェアコンポーネント、および/またはファームウェアコンポーネントのいずれかまたは全ては、ハードウェアのみで、ソフトウェアのみで、ファームウェアのみで、またはハードウェア、ソフトウェア、および/またはファームウェアのいくつかを組み合わせて実施し得ることを企図する。